JP7266067B2 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP7266067B2
JP7266067B2 JP2021105377A JP2021105377A JP7266067B2 JP 7266067 B2 JP7266067 B2 JP 7266067B2 JP 2021105377 A JP2021105377 A JP 2021105377A JP 2021105377 A JP2021105377 A JP 2021105377A JP 7266067 B2 JP7266067 B2 JP 7266067B2
Authority
JP
Japan
Prior art keywords
controller
software
management controller
management
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021105377A
Other languages
English (en)
Other versions
JP2023003966A (ja
Inventor
まどか 福島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2021105377A priority Critical patent/JP7266067B2/ja
Priority to US17/687,756 priority patent/US20220413981A1/en
Publication of JP2023003966A publication Critical patent/JP2023003966A/ja
Application granted granted Critical
Publication of JP7266067B2 publication Critical patent/JP7266067B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Hardware Redundancy (AREA)
  • Storage Device Security (AREA)

Description

本発明は、ストレージシステムに関し、より具体的には、ストレージシステムにおけるソフトウェアの検証に関する。
データストレージは、コンピュータシステムの基本的な機能である。多くのコンピュータシステムでは、大量のデータを扱う場合、それをストレージ装置に格納する。ストレージシステムは、データをHDD(Hard Disk Drive)やSSD(Solid State Drive)といった内蔵記憶媒体(記憶ドライブ)に格納し、外部からの命令に応じて、データの書き込みや読み出し処理を行う。
近年、サプライチェーンセキュリティに準拠することが重要になっており、サーバにファームウェア改ざん防止機能を実装することが行われている。例えば、特許文献1は、同様の機能を実行することができる第1及び第2のコントローラを含むコンピューティングシステムを開示する。第1のコントローラは、第1のルートオブトラスト(ROT)の整合性を検証し、結果を示す整合性信号を生成する。第2のコントローラは、第2のROTの整合性を検証し、ファームウェアイメージを第1のコントローラに書き込み、書き込まれたファームウェアイメージの整合性を検証する。
米国特許第10740468号
365日24時間稼働し続けることが要求されるストレージシステムでは、重要部品の故障時であっても、通常時と略同様に動作し続けられることが要求される。そのため、サーバと比較して、障害発生時においてもシステムの再起動の許容度は非常に低い。これは、セキュリティレベルの担保という点においても同様である。セキュリティに対する意識が高まっている昨今、特に従来のI/O性能に加えてセキュリティレベルも担保したまま、ストレージシステムが動作し続けられることが求められる。
本開示の一態様は、ストレージシステムであって、第1ストレージコントローラと、
第2ストレージコントローラと、を含む。前記第1ストレージコントローラは、ホストデータの入出力処理を実行する第1入出力コントローラと、第1管理コントローラと、を含む。前記第2ストレージコントローラは、ホストデータの入出力処理を実行する第2入出力コントローラと、第2管理コントローラと、を含む。前記第1管理コントローラは、前記第1管理コントローラで実行するソフトウェア及び前記第1入出力コントローラで実行するソフトウェアの検証を実行する。前記第2管理コントローラは、前記第2管理コントローラで実行するソフトウェア及び前記第2入出力コントローラで実行するソフトウェアの検証を実行する。前記第1管理コントローラは、前記第2管理コントローラの障害を検出すると、前記第2入出力コントローラで実行されるソフトウェアの検証を、前記第2管理コントローラに代わって実行する。
本開示の一態様によれば、ストレージシステムを停止することなく、ストレージシステムが実行するプログラムの改ざんから、ストレージシステムを保護することができる。
ストレージシステム及びその関連装置のハードウェア構成例を説明する。 管理コントローラが格納しているソフトウェア(プログラム)の構成例を示す。 ディスクコントローラが格納しているソフトウェア(プログラム)の構成例を示す。 管理コントローラ及びディスクコントローラのプログラムが、ストレージコントローラの起動において実行する処理の概要を説明するためのブロック図である。 ソフトウェア情報テーブルの構成例を示す。 チェック結果管理テーブルの構成例を示す。 ハートビート情報テーブルの構成例を示す。 監視対象DKC管理テーブルの構成例を示す。 ログ管理テーブルの構成例を示す。 通報記録管理テーブルの構成例を示す。 図4を参照して説明した、ストレージコントローラの起動における改ざん検証方法例のフローチャートを示す。 ストレージコントローラの起動における、管理コントローラに格納されているソフトウェアの検証方法例を示すシーケンス図である。 ストレージコントローラの起動における、ディスクコントローラに格納されているソフトウェアの検証方法例を示すシーケンス図である。 ストレージコントローラによる、ソフトウェアの定期的な改ざんチェック(検証)の処理例を示すフローチャートである。 冗長構成の複数の管理コントローラの協調動作の例を示すフローチャートである。 他のディスクコントローラにおいてソフトウェアの改ざんが検出された場合の処理の例を示すフローチャートである。
以下、本発明の実施形態を図面に基づいて詳細に説明する。以下の説明において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、以下に説明する実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
本明細書の一実施形態のストレージシステムにおいて、複数のストレージコントローラが実装される。各ストレージコントローラは、管理コントローラ及びディスクコントローラを含む。ディスクコントローラは、ホストデータの入出力を処理する。管理コントローラは、それ自体が保持するソフトウェア及び同一ストレージコントローラ内のディスクコントローラのソフトウェアの検証を実行する。これにより、ストレージシステムの信頼性が向上する。
一つ管理コントローラで故障が発生すると、他の管理コントローラがディスクコントローラの検証処理の担当を引き継ぐ。このように、故障時でもシステム内で協調管理をすることにより、システムを停止することなく、通常動作時と同様にセキュリティレベルを担保し続けることができる。
[システム構成]
図1を用いて、本明細書の一実施形態に係るストレージシステム100及びその関連装置のハードウェア構成例を説明する。1以上の不図示のホストは、不図示のネットワークを経由してストレージシステム100と接続する。それぞれのホストは、ホストデータを管理するために、ストレージシステム100に対して、ネットワークを介してリード要求又はライト要求(I/O要求)等の各種要求を行う。ネットワークは、例えば、FC(Fibre Channel)やEthernet等のプロトコルを利用することができる。
管理装置102は、ネットワーク101を経由してストレージシステム100と接続する。システムの管理者は、管理装置102を操作することで、ストレージシステム100を管理する。ネットワーク101は、例えば、LAN(Local Area Network)を利用することができる。後述するように、ストレージシステム100において、ソフトウェアの改ざんが検出されると、その情報が管理装置102に送信される。管理装置102は、図1において不図示の表示装置において、その情報を管理者に提示する。
管理装置102は、例えば、計算機構成を有することができる。具体的には、管理装置102は、演算デバイス、主記憶デバイス、補助記憶デバイス、入力デバイス、出力デバイス及び通信インタフェースを含むことができる。演算デバイスは、主記憶デバイスに格納されているプログラムを実行することで所定の機能を実現し、それらプログラムは例えば補助記憶デバイスから主記憶装置にロードされる。
一般的に、主記憶デバイスは揮発性記憶媒体を含み、補助記憶デバイスは不揮発性記憶媒体を含む。なお、管理装置102の構成に特に限定はない。入力デバイスは、例えば、マウスやキーボード又はそれらの組み合わせであり、出力デバイスは、例えば、表示デバイスや印刷デバイスである。
ストレージシステム100は、同一の機能を有する2台のストレージコントローラ(STGC)110A、110Bを、システムの高信頼化のために搭載する。ストレージシステム100は、ホストからのデータ(ホストデータと呼ぶ)を保持する記憶媒体として、不図示の1以上の記憶ドライブを搭載してよい。記憶ドライブは、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などである。
以下において、ストレージシステム100における2台のストレージコントローラ110A、110Bの例について説明するが。ストレージコントローラの数は、特に限定されない。ストレージシステムは、3以上のストレージコントローラを含むことができ、また、ストレージコントローラは、ネットワークを介して通信を行う複数のノードに搭載されていてもよい。
ストレージコントローラ110Aは、管理コントローラ(MGC)120A及びディスクコントローラ(DKC)130Aを含む。これらは異なるハードウェアデバイスである。ディスクコントローラは、入出力コントローラとも呼ぶ。ストレージコントローラ110Aは、さらに、管理ポート151A、ホストポート153A、及び内部通信インタフェース155Aを含む。
管理ポート151Aは、ストレージコントローラ110Aが管理装置102と通信を行うためのインタフェースであり、ホストポート153Aは、ストレージコントローラ110Aがホストとホストデータの送受信を行うためにインタフェースである。内部通信インタフェース155Aは、ストレージコントローラ110Aが、他のストレージコントローラ110Bと通信を行うためのインタフェースである。内部通信インタフェース155Aは、システム内の環境情報及び環境設定等を格納し、デバイス間の通信を可能とする。
管理コントローラ120Aは、管理者からの指示に従ってストレージシステム100を管理する。例えば、管理コントローラ120Aは、ボリュームの作成及び設定を含む、ストレージシステム100の設定を実行する。
管理コントローラ120Aは、管理処理を実行する演算デバイスであるCPU(Central Processing Unit)121A、フラッシュメモリ123A、及びSSD125Aを含む。これらは異なるハードウェアデバイスである、それぞれの数は限定されない。管理コントローラ120Aは、さらに、主記憶デバイスとして利用される、DRAM126Aを含む。DRAMは、揮発性記憶媒体を含むメモリである。
CPU121Aは、DRAM126Aに格納されているプログラムを実行することで所定の管理機能を実現する。CPU121Aが実行する処理は、管理コントローラ120Aが実行する処理である。CPU121Aは、管理ポート151Aを介して、管理装置102と通信する。
後述するように、CPU121Aは、それ自身が格納及び実行するソフトウェアの検証及び起動を行うと共に、ディスクコントローラ130Aが格納しているソフトウェアの一部の検証及び起動を行う。検証は、ソフトウェアの改ざんの有無を判定する。ソフトウェアの改ざんは、例えば、電子署名を使用する公知の技術を利用できる。これにより、ストレージシステム100の信頼性を向上できる。なお、ディスクコントローラ130Aが実行する検証を、管理コントローラ120が実行してもよく、ディスクコントローラ130Aのソフトウェアの検証の少なくとも一部が、管理コントローラ120Aにより実行される。
フラッシュメモリ123A及びSSD125Aは、異なるインタフェースプロトコルの記憶デバイスである。例えば、フラッシュメモリ123AはSPI(Serial Peripheral Interface)を利用し、SSD125はNVMe(Non-Volatile Memory Express)を利用することができる。このように、異なる種類の記憶デバイスを利用することで、効率的なソフトウェアの保持が可能となる。本明細書の一実施形態において、SSD125Aの容量はフラッシュメモリ123Aの容量より大きい。なお、1種類の記憶デバイスに全てのソフトウェアが格納されていてもよい。
管理コントローラ120Aの起動において、CPU121Aは、まず、フラッシュメモリ123Aにアクセスし、格納されているソフトウェア(プログラム)を起動する。その後、CPU121Aは、SSD125Aにアクセスして、SSD125Aのソフトウェアを起動する。後述するように、CPU121Aは、SSD125Aのソフトウェアを検証して、改ざんの有無を判定する。後述するように、CPU121Aは、ディスクコントローラ130Aのソフトウェアの検証も実行する。これにより、ストレージシステム100のセキュリティ信頼性を向上する。
ディスクコントローラ130Aは、ホストデータの入出力を処理する。ディスクコントローラ130Aは、ホストからのライト要求に応じてホストから受信したホストデータを記憶ドライブに格納し、ホストからのリード要求に応じて記憶ドライブから指定されたデータを読み出し、ホストに転送する。ホストデータは、論理的にはボリュームに格納される。ボリュームは、記憶ドライブの記憶領域と対応付けられる。
ディスクコントローラ130Aは、ホストデータの入出力処理を実行する演算デバイスであるCPU131A、フラッシュメモリ(第1記憶デバイス)133A、及びSSD(第2記憶デバイス)135Aを含む。これらは異なるハードウェアデバイスである。ディスクコントローラ130Aは、さらに、主記憶デバイスとして利用される、DRAM136Aを含む。
CPU131Aは、主記憶デバイスに格納されているプログラムを実行することで所定の管理機能を実現する。CPU131Aが実行する処理は、ディスクコントローラ130Aが実行する処理である。CPU131Aは、ホストポート153Aを介して、ホストと通信する。
後述するように、CPU131Aは、それ自身が格納及び実行するソフトウェアの検証及び起動を行う。検証は、ソフトウェアの改ざんの有無を判定する。これにより、ストレージシステム100の信頼性を向上できる。
フラッシュメモリ133A及びSSD135Aは、異なるインタフェースプロトコルの記憶デバイスである。例えば、フラッシュメモリ133AはSPIを利用し、SSD135AはNVMeを利用することができる。このように、異なる種類の記憶デバイスを利用することで、効率的なソフトウェアの保持が可能となる。本明細書の一実施形態において、SSD135Aの容量はフラッシュメモリ133Aの容量より大きい。なお、1種類の記憶デバイスに全てのソフトウェアが格納されていてもよい。
ディスクコントローラ130Aは、管理コントローラ120Aの通知に応じて起動する。ディスクコントローラ130Aの起動前に、ディスクコントローラ130Aのソフトウェアの一部は、管理コントローラ120Aに検証される。改ざんが検出されないと、ディスクコントローラ130Aの起動が開始する。
本明細書の一実施形態において、管理コントローラ120Aは、フラッシュメモリ133Aに格納されているソフトウェアを検証する。管理コントローラ120Aは、内部通信インタフェース155Aを介して、CPU131Aを介することなく、フラッシュメモリ123Aにアクセスできる。本明細書の一実施形態において、内部通信インタフェース155Aは、フラッシュメモリ133Aと配線されているが、SSD135Aとは配線されていない。これにより、回路構成をシンプルにすることができる。
管理コントローラ120Aによる検証後、ディスクコントローラ130Aは、フラッシュメモリ133Aにアクセスして、検証されたソフトウェアを起動し、さらに、ソフトウェアの残りの部分を検証して、改ざんの有無を判定する。本明細書の一実施形態において、残りの部分はSSD135Aに格納されているソフトウェアである。これにより、ストレージシステム100のセキュリティ信頼性を向上する。
後述するように、本明細書の一実施形態において、フラッシュメモリ133Aのソフトウェアの起動とSSD135Aのソフトウェアの検証及び起動は並列に実行される。これにより、ディスクコントローラ130Aの起動完了までの時間を短縮できる。
本明細書の一実施形態において、ストレージコントローラ110Bは、ストレージコントローラ110Aと同様の構成を有しており、同一種類の構成要素を含む。具体的には、ストレージコントローラ110Bは、管理コントローラ120B及びディスクコントローラ130Bを含む。ストレージコントローラ110Bは、さらに、管理ポート151B、ホストポート153B、及び内部通信インタフェース155Bを含む。ストレージコントローラ110A、110B間の通信は、内部通信インタフェース155A、155Bを介して実行される。
管理コントローラ120Aと同様に、管理コントローラ120Bは、CPU121B、フラッシュメモリ(第1記憶デバイス)123B、及びSSD(第2記憶デバイス)125Bを含む。管理コントローラ120Aは、さらに、主記憶デバイスとして利用される、DRMA126Bを含む。ディスクコントローラ130Aと同様に、ディスクコントローラ130Bは、CPU131B、フラッシュメモリ133B、及びSSD135Bを含む。ディスクコントローラ130Bは、さらに、主記憶デバイスとして利用される、不図示のDRMA136Bを含む。
管理コントローラ120BのCPU121Bは、内部通信インタフェース155Bを介して、ディスクコントローラ130Bのフラッシュメモリ133Bにアクセスすることができる。内部通信インタフェース155Bは、フラッシュメモリ133Bと配線されているが、SSD135Bとは配線されていない。
管理コントローラ120B及びディスクコントローラ130Bは、それぞれ、上記管理コントローラ120A及びディスクコントローラ130Aの動作を実行する。なお、管理コントローラ120A、120Bは異なる構成を有してもよく、ディスクコントローラ130A、130Bは異なる構成を有してもよい。
ストレージコントローラ110A、110Bは冗長構成を有しており、一方の故障時に、他方が、故障した一方が実行すべき処理を引き継ぐ。後で詳述するように、二つの管理コントローラ120A、120Bの一方が故障すると、他方がその処理を引き継ぐ。
上述のように、管理コントローラ120A、120Bは、それ自体が実行するソフトウェア及び同一ストレージコントローラ内のディスクコントローラのソフトウェアを検証する。そのため、一つの管理コントローラ、例えば、管理コントローラ120Bが故障すると、冗長構成の管理コントローラ120Aが、管理コントローラ120Bに代わって、ディスクコントローラ130Bのソフトウェアの検証を実行する。管理コントローラ120AのCPU121Aは、内部通信インタフェース155A及び155Bを介して、ディスクコントローラ130Bのフラッシュメモリ133Bにアクセスする。
図2は、管理コントローラ120Aが格納しているソフトウェア(プログラム)の構成例を示す。ストレージコントローラ110Bの管理コントローラ120Bは、管理コントローラ120Aと同様のソフトウェアを格納している。管理コントローラ120Aのフラッシュメモリ123Aは、MGCファームウェア210を格納している。MGCファームウェア210は、MGC起動プログラム211を含む。
管理コントローラ120AのSSD125Aは、MGCファームウェア220並びに、OS(Operating System)及び管理ソフトウェア230を格納している。管理ソフトウェアは、OS上で動作する。MGCファームウェア220は、MGC起動プログラム221及びMGC検証プログラム222を含む。OS及び管理ソフトウェア230は、DKC検証プログラム231及びDKC起動指示プログラム232を含む。
図3は、ディスクコントローラ130Aが格納しているソフトウェア(プログラム)の構成例を示す。ストレージコントローラ110Bのディスクコントローラ130Bは、ディスクコントローラ130Aと同様のソフトウェアを格納している。
ディスクコントローラ130Aのフラッシュメモリ133Aは、DKCファームウェア250を格納している。DKCファームウェア250は、DKC初期フェーズ起動プログラム251及びDKC検証プログラム252を含む。ディスクコントローラ130AのSSD135Aは、DKCファームウェア250を格納している。DKCファームウェア260は、DKC後期フェーズ起動プログラム261を含む。
[起動処理の概要]
図4は、管理コントローラ120A及びディスクコントローラ130Aのプログラムが、ストレージコントローラ110Aの起動において実行する処理の概要を説明するためのブロック図である。なお、管理コントローラ120B及びディスクコントローラ130Bも同様の処理を実行する。
ストレージコントローラ110Aの起動が開始すると、管理コントローラ120AのCPU121Aは、フラッシュメモリ123Aに格納されているMGCファームウェア210のMGC起動プログラム211を起動する。MGC起動プログラム211は、MGCファームウェア210の他のプログラムを起動する。
MGC起動プログラム211は、さらに、SSD125Aに格納されているMGCファームウェア220のMGC起動プログラム221を起動する。MGC起動プログラム221は、MGC検証プログラム222を含む、MGCファームウェア220内の他のプログラムを起動する。
MGC検証プログラム222は、SSD125Aに格納されているOS及び管理ソフトウェア230の検証を実行する。OS及び管理ソフトウェア230の検証が完了し、改ざんが無いと判定されると、MGC起動プログラム221は、OS及び管理ソフトウェア230のプログラムを起動する。
上述のように、OS及び管理ソフトウェア230は、DKC検証プログラム231及びDKC起動指示プログラム232を含む。DKC検証プログラム231は、ディスクコントローラ130Aのフラッシュメモリ133Aに、内部通信インタフェース155A及び155Bを介してアクセスし、DKCファームウェア250の検証を実行する。
DKCファームウェア250の検証が完了し、それが正常であると判定されると、DKC起動指示プログラム232は、ディスクコントローラ130AのCPU131Aに、起動を指示する。CPU131Aは、フラッシュメモリ133AのDKCファームウェア250に含まれるDKC初期フェーズ起動プログラム251を実行する。
DKC初期フェーズ起動プログラム251は、検証済みDKCファームウェア250に含まれる、DKC検証プログラム252を起動する。DKC検証プログラム252は、ディスクコントローラ130AのSSD135Aにアクセスし、そこに格納されているDKCファームウェア260の検証を実行する。DKC初期フェーズ起動プログラム251は、DKCファームウェア260の検証と並列に、DKCファームウェア250の他のプログラムの起動を実行する。
DKCファームウェア260の検証が完了し、それが正常であると判定されると、DKCファームウェア260内のDKC後期フェーズ起動プログラム261が実行される。DKC後期フェーズ起動プログラム261は、DKCファームウェア260内の他のプログラムを起動する。DKCファームウェア260は、ディスクコントローラ130Aによるホストデータの入出力を規定する、メインファームウェアである。
[管理情報]
図5から10は、管理コントローラ120A及び120Bが保持している管理情報に含まれるテーブルを示す。これらテーブルは、システム内で冗長構成の管理コントローラ及びディスクコントローラが、共通の情報として、それぞれ保持している。管理情報は、例えば、管理コントローラ及びディスクコントローラのSSDに格納されている。
図5は、ソフトウェア情報テーブル310の構成例を示す。ソフトウェア情報テーブル310は、システム内の管理コントローラ及びディスクコントローラが実行すべきソフトウェアのバージョン情報を示す。Device欄311は、コントローラの種類、つまり、管理コントローラ又はディスクコントローラを示す。LocationID欄312は、管理コントローラ又はディスクコントローラが存在しているストレージコントローラを同定する。SWver欄313は、管理コントローラ又はディスクコントローラが実行するソフトウェアのバージョンを示す。
図6は、チェック結果管理テーブル320の構成例を示す。チェック結果管理テーブル320は、ストレージコントローラのソフトウェアの検証結果を格納している。Date欄321は検証の日時を示し、Device欄322は、検証対象のコントローラの種類、つまり、管理コントローラ又はディスクコントローラを示す。LocationID欄323は、管理コントローラ又はディスクコントローラが存在しているストレージコントローラを同定する。Result欄324は、検証結果を示す。
図7は、ハートビート情報テーブル330の構成例を示す。管理コントローラ間の死活監視の結果を格納している。Date欄331は、ハートビート信号を受信した日時を示し、MGC Location ID欄332は、ハートビート信号の送信元を示す。
図8は、監視対象DKC管理テーブル340の構成例を示す。監視対象DKC管理テーブル340は、管理コントローラがソフトウェアの検証を実行すべき(監視すべき)ディスクコントローラを示す。MGCID欄341は、管理コントローラのIDを示し、DKCID欄342は、ディスクコントローラのIDを示す。本例において、管理コントローラ及びディスクコントローラのIDは、それらのLocationIDと一致する。
図9は、ログ管理テーブル350の構成例を示す。ログ管理テーブル350は、システム内で発生したイベントログを管理する。ログ管理テーブル350は、改ざんが発生した際のログ情報を含む。Date欄351はイベント発生日時を示し、EventID欄352は発生したイベントのIDを示し、EventName欄353は発生したイベントの名称を示す。Severity欄354は、イベントの重要度を示す。Device欄355は、イベントが発生したデバイスの種類を示す。LocationID欄356は、イベントが発生したストレージコントローラのIDを示す。
図10は、通報記録管理テーブル360の構成例を示す。通報記録管理テーブル360は、改ざんが発生した際の通報記録を格納する。通報は、例えば、管理装置102に送信される。
Date欄361は通報対象のイベント発生日時を示し、EventID欄362は対象イベントのIDを示し、EventName欄363は対象イベントの名称を示す。Severity欄364は、対象イベントの重要度を示す。Device欄365は、改ざんが検出されたデバイスの種類を示す。LocationID欄366は、改ざんが検出されたストレージコントローラのIDを示す。
[改ざん検出及びリカバリ処理]
図11は、図4を参照して説明した、ストレージコントローラ110Aの起動における改ざん検証方法例のフローチャートを示す。ストレージコントローラ110Bも同様の処理を実行する。
まず、管理コントローラ120Aの起動が開始される(S11)。管理コントローラ120AのCPU121Aは、管理コントローラ120Aが格納しているソフトウェアの改ざんをチェックする(S12)。具体的には、CPU121Aは、フラッシュメモリ123Aに格納されているMGC起動プログラム211の実行を起点として、SSD125Aに格納されているMGCファームウェア220のMGC起動プログラム221を起動し、さらにMGC検証プログラム222を実行することでSSD125Aに格納されているOS及び管理ソフトウェア230の検証を実行する。検証結果は、チェック結果管理テーブル320に記録される。
改ざんが検出されないと(S12:OK)、CPU121Aは、MGC起動プログラム221に従って、OS及び管理ソフトウェアを起動する(S13)。管理ソフトウェアはOSの後に起動される。
CPU121Aは、管理ソフトウェア内のDKC検証プログラム231に従って、DKC初期フェーズ改ざんチェックを実行する(S14)。具体的には、CPU121AはDKC検証プログラム231を実行し、ディスクコントローラ130Aのフラッシュメモリ133Aに、内部通信インタフェース155A、155Bを介してアクセスし、DKCファームウェア250を検証する。検証対象のディスクコントローラは、監視対象DKC管理テーブル340により指定される。検証結果は、チェック結果管理テーブル320に記録される。
DKCファームウェア250の改ざんが検出されない場合(S14:OK)、DKC初期フェーズ起動が開始する(S15)。具体的には、CPU121Aは、DKC起動指示プログラム232に従って、ディスクコントローラ130AのCPU131Aに、起動を指示する。CPU131Aは、検証済みのDKCファームウェア250のDKC初期フェーズ起動プログラム251を起動する。CPU131Aは、DKC初期フェーズ起動プログラム251に従って、DKC検証プログラム252を含むプログラムを起動する。
CPU131Aは、DKC初期フェーズ起動と並列に、DKC後期フェーズ改ざんチェックを実行する(S16)。具体的には、CPU131Aは、DKC検証プログラム252に従って、SSD135Aに格納されているDKCファームウェア260の改ざんを検証する。検証結果は、チェック結果管理テーブル320に記録される。
DKCファームウェア260の改ざんが検出されない場合(S16:OK)、CPU131Aは、DKC後期フェーズ起動プログラム261に従って、DKCファームウェア260のプログラムの順次起動する(DKC後期フェーズ起動)。これにより、ストレージコントローラ110Aの起動が完了する。
ステップS12を参照して、管理コントローラ120Aが格納しているソフトウェアに改ざんが検出された場合(S12:NG)、管理コントローラ120Aの信頼性が低下しているため、ストレージコントローラ110Aの起動は中止される。これにより、より高い信頼性を得ることができる。
ステップS14を参照して、DKC初期フェーズ改ざんチェックにおいて改ざんが検出された場合(S14:NG)、管理コントローラ120AのCPU121Aは、DKC検証プログラム231に従って、ディスクコントローラ130Aのリカバリを実行する(S17)。
具体的には、CPU121Aは、ソフトウェア情報テーブル310を参照して、ディスクコントローラ130Aのソフトウェアバージョンを同定し、そのバージョンのDKCファームウェアのバックアップによって、改ざんが検出されたDKCファームウェア250を更新する。バックアップは、例えば、ディスクコントローラ130Aのフラッシュメモリ133Aに格納されている。
CPU121Aは、さらに、DKC検証プログラム231に従って、リカバリ処理の実行を示す改ざんログを、ログ管理テーブル350に記録する(S18)。続いて、CPU121Aは、DKC検証プログラム231に従って、管理装置102に改ざんが検出され、リカバリが実行されたことを通報する(S19)。通報の情報は、通報記録管理テーブル360に記録される。その後、フローはステップS14に戻る。リカバリされたソフトウェアで改ざんが検出された場合、他のバックアップソフトウェアによりリカバリが実行されるか又は起動が中止される。
ステップS16を参照して、DKC後期フェーズ改ざんチェックにおいて改ざんが検出された場合(S16NG)、ディスクコントローラ130AのCPU131Aは、DKC検証プログラム252に従って、ディスクコントローラ130Aのリカバリを実行する(S20)。
CPU131Aは、DKCファームウェア260のリカバリを行う。本明細書の一実施形態において、DKCファームウェア260は、複数のソフトウェアコアに分割されており、ソフトウェアコア単位でバックアップが管理されている。CPU131Aは、ソフトウェアコア単位で改ざんのチェック及び必要なリカバリを実行する。これにより、効率的なリカバリが可能となる。なお、DKCファームウェア260に代えて又は共に、DKCファームウェア250がソフトウェアコアに分割されていてもよい。
CPU131Aは、ソフトウェア情報テーブル310を参照して、ディスクコントローラ130Aのソフトウェアバージョンを同定し、そのバージョンのDKCファームウェアのバックアップによって、DKCファームウェア260において改ざんが検出されたコアを更新する。バックアップは、例えば、ディスクコントローラ130AのSSD135Aに格納されている。
CPU131Aは、さらに、DKC検証プログラム252に従って、リカバリ処理の実行を示す改ざんのログを、ログ管理テーブル350に記録する(S21)。続いて、CPU131Aは、DKC検証プログラム252に従って、管理装置102に改ざんが検出され、リカバリが実行されたことを通報する(S22)。通報の情報は、通報記録管理テーブル360に記録される。その後、フローはステップS16に戻る。リカバリされたソフトウェアで改ざんが検出された場合、他のバックアップソフトウェアによりリカバリが実行されるか又は起動が中止される。
図12Aは、ストレージコントローラの起動における、管理コントローラに格納されているソフトウェアの検証方法例を示すシーケンス図である。図12Bは、ストレージコントローラの起動における、ディスクコントローラに格納されているソフトウェアの検証方法例を示すシーケンス図である。上述のように、図12Aに示す管理コントローラのソフトウェア検証が完了した後に、ディスクコントローラのソフトウェア検証が開始する。以下において、ストレージコントローラ110Aの処理を説明するが、他のストレージコントローラも同様の処理を実行する。
図12Aを参照して、管理コントローラ120AのMGC起動プログラム211は、セキュアブートにより、フラッシュメモリ123A内のMGCファームウェア210の他のプログラムを起動する(S31)。MGC起動プログラム211は、さらに、SSD125A内のMGCファームウェア220のMGC起動プログラム221をセキュアブートで起動する。
MGC起動プログラム221は、セキュアブートにより、MGCファームウェア220の他のプログラムを起動する(S32)。管理コントローラ120Aのファームウェア210、220の起動が完了すると(S33)、MGC検証プログラム222は、SSD125A内のOS及び管理ソフトウェア230を検証する(S34)。検証結果が改ざん無を示すと(S35)、MGC起動プログラム221は、OS及び管理ソフトウェア230において、OSを起動し(S36)、その後、管理ソフトウェアを起動する(S37)。
次に、図12Bを参照して、ディスクコントローラ130Aの起動を説明する。管理コントローラ120AのDKC検証プログラム231は、ディスクコントローラ130Aのフラッシュメモリ133Aに格納されている、DKCファームウェア250を検証する(S38)。検証結果が改ざん無を示すと(S39)、管理コントローラ120AのDKC起動指示プログラム232は、ディスクコントローラ130Aに起動の許可を通知する(S40)。
ディスクコントローラ130Aのフラッシュメモリ133Aに格納されているDKC初期フェーズ起動プログラム251は、ディスクコントローラ130の電源をONする(S41)。さらに、DKC初期フェーズ起動プログラム251は、フラッシュメモリ133A内のDKCファームウェア250の他のプログラムを順次起動する(S42)。
起動されたDKC検証プログラム252は、DKC初期フェーズ起動プログラム251からの検証指示(S43)に応じて、SSD135A内のDKCファームウェア260を検証する(S44)。検証結果が改ざん無を示すと(S45)、DKCファームウェア260内のDKC後期フェーズ起動プログラム261が、DKCファームウェア260の他プログラムを起動する。検証及びDKCファームウェア260の起動は、DKCファームウェア250の起動と並列に実行される。DKCファームウェア260の全てプログラムの起動が完了すると(S47)、ディスクコントローラ130Aの起動が完了する。
図13は、ストレージコントローラ110Aによる、ソフトウェアの定期的な改ざんチェック(検証)の処理例を示すフローチャートである。これにより、ストレージコントローラの起動後の信頼性を維持することができる。ストレージコントローラ110Bも同様の処理を実行する。例えば、定期的改ざんチェックは、ストレージコントローラ110Aの起動度、所定の期間が経過する毎に実行される。改善チェックの方法は、基本的に起動時の改ざんチェックと同様である。定期的チェックにおいて、管理コントローラは、ディスクコントローラが稼働している間に、ディスクコントローラによるホストデータの入出力処理と独立して処理を実行する。ディスクコントローラによるホストデータの入出力処理は、管理コントローラによる改善チェック及びリカバリ処理と並列に実行され得る。
管理コントローラ120AのCPU121Aは、管理コントローラ120Aが格納しているソフトウェアの改ざんをチェックする(S51)。具体的には、CPU121Aは、MGC検証プログラム222を実行して、SSD125Aに格納されているOS及び管理ソフトウェア230の検証を実行する。検証結果は、チェック結果管理テーブル320に記録される。
改ざんが検出されないと(S51:OK)、CPU121Aは、DKC検証プログラム231に従って、DKC初期フェーズ改ざんチェックを実行する(S52)。具体的には、CPU121Aは、ディスクコントローラ130Aのフラッシュメモリ133Aに、内部通信インタフェース155A、155Bを介してアクセスし、DKCファームウェア250を検証する。検証対象のディスクコントローラは、監視対象DKC管理テーブル340により指定される。検証結果は、チェック結果管理テーブル320に記録される。
DKCファームウェア250の改ざんが検出されない場合(S52OK)、CPU131Aは、DKC後期フェーズ改ざんチェックを実行する(S53)。具体的には、CPU131Aは、DKC検証プログラム252に従って、SSD135Aに格納されているDKCファームウェア260の改ざんを検証する。検証結果は、チェック結果管理テーブル320に記録される。DKCファームウェア260の改ざんが検出されない場合(S53:OK)、定期改ざんチェックは終了する。
ステップS51を参照して、管理コントローラ120Aが格納しているソフトウェアに改ざんが検出された場合(S51:NG)、CPU121Aは、MGC検証プログラム222に従って、OS及び管理ソフトウェアのリカバリを実行する(S54)。
CPU121Aは、ソフトウェア情報テーブル310を参照して、管理コントローラ120Aのソフトウェアバージョンを同定し、そのバージョンのOS及び管理ソフトウェアのバックアップによって、改ざんが検出されたOS及び管理ソフトウェアを更新する。バックアップは、例えば、管理コントローラ120AのSSD123Aに格納されている。
ステップS52を参照して、ディスクコントローラ130Aがフラッシュメモリ133Aに格納しているDKCファームウェア250に改ざんが検出された場合(S52:NG)、CPU121Aは、DKC検証プログラム231に従って、そのリカバリを実行する(S55)。DKCファームウェア250と同じバージョンのバックアップによって、DKCファームウェア250全体が更新される。
ステップS53を参照して、ディスクコントローラ130AがSSD135Aに格納しているDKCファームウェア260に改ざんが検出された場合(S53:NG)、CPU131Aは、DKC検証プログラム252に従って、そのリカバリを実行する(S55)。DKCファームウェア260と同じバージョンのバックアップによって、ソフトウェアコア単位で、DKCファームウェア260が更新される。
CPU121A又はCPU131Aは、さらに、リカバリ処理の実行を示す改ざんログを、ログ管理テーブル350に記録する(S56)。続いて、CPU121A又はCPU131Aは、管理装置102に改ざんが検出され、リカバリが実行されたことを通報する(S57)。通報の情報は、通報記録管理テーブル360に記録される。その後、ストレージコントローラ110Aは再起動される(S58)。具体的にはCPU121A又は131Aは、リカバリを行ったソフトウェアコア単位で再起動を実行する。
[協調動作]
これまで、主に各ストレージコントローラが実行する改ざん監視処理を説明した。以下において、複数の管理コントローラの協調動作の例を説明する。協調動作を行うべき他の管理コントローラで障害が発生すると、管理コントローラは、障害が発生した管理コントローラの処理を引き継ぐ。具体的には、管理すべきディスクコントローラの担当を引き継ぐ。
図14は、冗長構成の複数の管理コントローラの協調動作の例を示すフローチャートである。協調動作は、管理コントローラは、ディスクコントローラが稼働している間に、ディスクコントローラによるホストデータの入出力処理と独立して処理を実行する。ディスクコントローラによるホストデータの入出力処理は、管理コントローラによる改善チェック及びリカバリ処理と並列に実行され得る。
以下において、管理コントローラ120Bが管理コントローラ120Aの障害を検出し、管理コントローラ120Aの処理を引き継ぐ例を説明する。なお、一つの管理コントローラの処理を引き継ぐことができる複数の管理コントローラが存在してよく、一つの管理コントローラが複数の障害管理コントローラの処理を引き継いでもよい。
以下の説明において、特に明示がない場合、管理コントローラ120Bは不図示の監視プログラムに従って処理を実行する。管理コントローラ120Bは、監視対象の管理コントローラからのハートビート信号を監視する。監視対象は、例えば、監視対象DKC管理テーブル340内のMGCID欄341が示す他の管理コントローラである。ハートビート信号の受信結果は、ハートビート情報テーブル330に記録される。ハートビート信号により他の管理コントローラを常時監視可能である。
ここで管理コントローラ120Aからのハートビート信号が、所定期間を超えて停止している(受信されていない)ことを検出するとする(S71)。管理コントローラ120Bは、管理コントローラ120Aにリセットを指示する(S72)。
その後、所定期間内にハートビート信号を管理コントローラ120Aから受信できた場合(S73:OK)、管理コントローラ120Bは、監視プログラムに従って、その情報をログ管理テーブル350に記録する(S74)。
リセット指示後の所定期間内にハートビート信号を管理コントローラ120Aから受信できない場合(S73:NG)、管理コントローラ120Bは、管理コントローラ120Aに停止を指示する(S75)。さらに、管理コントローラ120Bは、管理装置102に対して、管理コントローラ120Aの故障を通報する(S76)。通報情報は、通報記録管理テーブル360に記録される。
管理コントローラ120Bは、障害検出された管理コントローラ120Aと同一のストレージコントローラ110Aに含まれるディスクコントローラ130Aを、定期改ざんチェックの対象に追加する(S77)。具体的には、管理コントローラ120Bは、監視対象DKC管理テーブル340を更新して、管理コントローラ120Bの監視対象にディスクコントローラ130Aを追加する。
管理コントローラ120Bは、DKC検証プログラム231及びDKC検証プログラム252によって、ディスクコントローラ130Bに加えて、ディスクコントローラ130Aの定期改ざんチェックを実行する(S78)。定期改ざんチェックの方法は、図13を参照して説明した通りである。
図15は、追加された他のディスクコントローラにおいてソフトウェアの改ざんが検出された場合の処理の例を示すフローチャートである。他のストレージコントローラのディスクコントローラのリカバリ処理は、同一ストレージコントローラ内の処理と略同様である。リカバリ処理において、管理コントローラは、ストレージシステム100によるホストデータの入出力処理と独立して、処理を実行する。図14を参照した説明と同様に、管理コントローラ120Bが、ディスクコントローラ130Aのソフトウェアをリカバリする例を説明する。
図15は、フラッシュメモリ133AのDKCファームウェア250又はSSD135AのDKCファームウェア260の一方で、改ざんが検出された場合の処理を示す。図15の処理は、フラッシュメモリ133A及びSSD135Aで検出された改ざんそれぞれに対して実行される。
管理コントローラ120B又はディスクコントローラ130Aが、ディスクコントローラ130Aのソフトウェアの改ざんを検出したとする(S91)。改ざん箇所が、フラッシュメモリ133A内のDKCファームウェア250内であるとする(S92:NO)。つまり、管理コントローラ120BのDKC検証プログラム231が、DKCファームウェア250の改ざんを検出した場合である。
管理コントローラ120Bは、DKC検証プログラム231に従って、ディスクコントローラ130Aにおけるフラッシュメモリ133A内のソフトウェアバックアップから、DKCファームウェア250を読み出す(S93)。ロードするバックアップのバージョンは、ソフトウェア情報テーブル310を参照して決定される。
管理コントローラ120Bは、DKC検証プログラム231に従って、読み出したDKCファームウェア250のバックアップによって、フラッシュメモリ133AのDKCファームウェア250の全体を更新する(S94)。
改ざん箇所が、SSD135A内のDKCファームウェア260内であるとする(S92:YES)。つまり、ディスクコントローラ130AのDKC検証プログラム252が、DKCファームウェア260の改ざんを検出した場合である。ディスクコントローラ130Aは、DKC検証プログラム252に従って、SSD135A内のソフトウェアバックアップから、DKCファームウェア260を読み出す(S95)。
ディスクコントローラ130Aは、DKC検証プログラム252に従って、ソフトウェアコア単位で、改ざん箇所を読み出したDKCファームウェア260で更新する(S96)。
ソフトウェアの更新(S94又はS96)の後、更新されたDKCファームウェア250又は260全体の改ざんが、再度チェックされる(S97)。改ざんが再検出されると(S97:NG)、フローはステップS92に戻る。なお、読み出し可能なバックアップが存在しない場合、リカバリ不能として処理が終了する。
改ざん箇所が見つからない場合(S97:OK)、管理コントローラ120B又はディスクコントローラ130Aは、DKC検証プログラム231又はDKC検証プログラム252に従って、ログ管理テーブル350に改ざんの情報を記録する(S98)。さらに、管理コントローラ120B又はディスクコントローラ130Aは、DKC検証プログラム231又はDKC検証プログラム252に従って、管理装置102にそれを示す情報を通報する(S99)。通報情報は、通報記録管理テーブル360に記録される。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
110A、110B ストレージコントローラ、120A、120B 管理コントローラ、121A、121B CPU、123A、123B フラッシュメモリ、125A、125B SSD、130A、130B ディスクコントローラ、131A、131B CPU、133A、133B フラッシュメモリ、135A、135B SSD、222 MGC検証プログラム、230 OS及び管理ソフトウェア、231 DKC検証プログラム、250、260 DKCファームウェア、252 DKC検証プログラム

Claims (9)

  1. ストレージシステムであって、
    第1ストレージコントローラと、
    第2ストレージコントローラと、
    を含み、
    前記第1ストレージコントローラは、ホストデータの入出力処理を実行する第1入出力コントローラと、第1管理コントローラと、を含み、
    前記第2ストレージコントローラは、ホストデータの入出力処理を実行する第2入出力コントローラと、第2管理コントローラと、を含み、
    前記第1管理コントローラは、前記第1管理コントローラで実行するソフトウェア及び前記第1入出力コントローラで実行するソフトウェアの検証を実行し、
    前記第2管理コントローラは、前記第2管理コントローラで実行するソフトウェア及び前記第2入出力コントローラで実行するソフトウェアの検証を実行し、
    前記第1管理コントローラは、前記第2管理コントローラの障害を検出すると、前記第2入出力コントローラで実行されるソフトウェアの検証を、前記第2管理コントローラに代わって実行する、ストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記第1入出力コントローラ及び前記第2入出力コントローラが稼働している間に、前記第1入出力コントローラ及び前記第2入出力コントローラの入出力処理と独立して、
    前記第1管理コントローラは、前記第1管理コントローラで実行するソフトウェア及び前記第1入出力コントローラで実行するソフトウェアの検証を実行し、
    前記第2管理コントローラは、前記第2管理コントローラで実行するソフトウェア及び前記第2入出力コントローラで実行するソフトウェアの検証を実行し、
    前記第1管理コントローラは、前記第2管理コントローラの障害を検出すると、前記第2入出力コントローラで実行されるソフトウェアの検証を、前記第2管理コントローラに代わって実行する、ストレージシステム。
  3. 請求項1に記載のストレージシステムであって、
    前記第1管理コントローラは、前記第2管理コントローラからハートビート信号を受信し、
    前記第1管理コントローラは、前記第2管理コントローラからのハートビート信号が所定期間を超えて停止している場合、前記第2管理コントローラの障害と判定する、ストレージシステム。
  4. 請求項1に記載のストレージシステムであって、
    前記第1入出力コントローラは、初期フェーズソフトウェアを格納する第1記憶デバイスと、後期フェーズソフトウェアを格納する第2記憶デバイスと、を含み、
    前記初期フェーズソフトウェアは、初期フェーズ起動プログラム及び後期フェーズ検証プログラムを含み、
    前記第1管理コントローラは、前記初期フェーズソフトウェアの検証を実行し、
    前記初期フェーズソフトウェアの前記検証の後、前記第1入出力コントローラは、前記初期フェーズ起動プログラムに従って、前記後期フェーズ検証プログラムを起動し、
    前記第1入出力コントローラは、前記後期フェーズ検証プログラムに従って、前記後期フェーズソフトウェアの検証を実行する、ストレージシステム。
  5. 請求項1に記載のストレージシステムであって、
    前記第1入出力コントローラは、初期フェーズソフトウェア及び後期フェーズソフトウェアを格納し、
    前記初期フェーズソフトウェアは初期フェーズ起動プログラム及び後期フェーズ検証プログラムを含み、
    前記第1管理コントローラは、前記第1管理コントローラ実行するソフトウェアの検証を実行した後に、前記初期フェーズソフトウェアの検証を実行し、
    前記初期フェーズソフトウェアの前記検証の後、前記第1入出力コントローラは、前記初期フェーズ起動プログラムによる前記初期フェーズソフトウェアに含まれるプログラムの起動、及び、前記後期フェーズ検証プログラムによる前記後期フェーズソフトウェアの検証を並列に実行する、ストレージシステム。
  6. 請求項5に記載のストレージシステムであって、
    前記第1入出力コントローラは、前記初期フェーズソフトウェアを格納する第1記憶デバイスと、前記後期フェーズソフトウェアを格納する第2記憶デバイスと、を含む、ストレージシステム。
  7. 請求項1に記載のストレージシステムであって、
    前記第1管理コントローラで実行するソフトウェアは、複数のコアを含み、
    前記第1管理コントローラは、改ざんが検出されたコアを、バックアップされているコアによりリカバリする、ストレージシステム。
  8. 請求項1に記載のストレージシステムであって、
    前記第1管理コントローラにより検証される前記第1管理コントローラが実行するソフトウェアは、オペレーティングシステムを含む、ストレージシステム。
  9. ストレージシステムを管理する方法であって、
    前記ストレージシステムは、
    第1ストレージコントローラと、
    第2ストレージコントローラと、
    を含み、
    前記第1ストレージコントローラは、ホストデータの入出力処理を実行する第1入出力コントローラと、第1管理コントローラと、を含み、
    前記第2ストレージコントローラは、ホストデータの入出力処理を実行する第2入出力コントローラと、第2管理コントローラと、を含み、
    前記方法は、
    前記第1管理コントローラが、前記第1管理コントローラで実行するソフトウェア及び前記第1入出力コントローラで実行するソフトウェアの検証を実行し、
    前記第2管理コントローラが、前記第2管理コントローラで実行するソフトウェア及び前記第2入出力コントローラで実行するソフトウェアの検証を実行し、
    前記第1管理コントローラが、前記第2管理コントローラの障害を検出すると、前記第2入出力コントローラで実行されるソフトウェアの検証を、前記第2管理コントローラに代わって実行する、方法。
JP2021105377A 2021-06-25 2021-06-25 ストレージシステム Active JP7266067B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021105377A JP7266067B2 (ja) 2021-06-25 2021-06-25 ストレージシステム
US17/687,756 US20220413981A1 (en) 2021-06-25 2022-03-07 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021105377A JP7266067B2 (ja) 2021-06-25 2021-06-25 ストレージシステム

Publications (2)

Publication Number Publication Date
JP2023003966A JP2023003966A (ja) 2023-01-17
JP7266067B2 true JP7266067B2 (ja) 2023-04-27

Family

ID=84543271

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021105377A Active JP7266067B2 (ja) 2021-06-25 2021-06-25 ストレージシステム

Country Status (2)

Country Link
US (1) US20220413981A1 (ja)
JP (1) JP7266067B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180096154A1 (en) 2016-09-30 2018-04-05 Hewlett Packard Enterprise Development Lp Multiple roots of trust to verify integrity

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675258B1 (en) * 2000-06-30 2004-01-06 Lsi Logic Corporation Methods and apparatus for seamless firmware update and propagation in a dual raid controller system
US20060080518A1 (en) * 2004-10-08 2006-04-13 Richard Dellacona Method for securing computers from malicious code attacks
US20070180329A1 (en) * 2006-01-31 2007-08-02 Lanus Mark S Method of latent fault checking a management network
JP5531091B2 (ja) * 2009-11-19 2014-06-25 株式会社日立製作所 計算機システム及びその負荷均等化制御方法
EP2360611B1 (en) * 2010-01-22 2014-09-10 ST-Ericsson SA Secure environment management during switches between different modes of multicore systems
JP5441875B2 (ja) * 2010-12-07 2014-03-12 株式会社日立製作所 計算機システム
US9361043B2 (en) * 2012-01-13 2016-06-07 Hitachi, Ltd. Information processing and control system for inter processing apparatus control of storage devices
US9344327B2 (en) * 2012-04-20 2016-05-17 Microsoft Technology Licensing, Llc Wireless-based network management
EP2852113B1 (en) * 2012-06-21 2017-03-08 Huawei Technologies Co., Ltd. Load sharing method and device, and single board
US20180150233A1 (en) * 2015-06-03 2018-05-31 Hitachi, Ltd. Storage system
CN109672544B (zh) * 2017-10-13 2020-12-11 杭州海康威视系统技术有限公司 一种数据处理方法、装置及分布式存储系统
JP6819625B2 (ja) * 2018-01-31 2021-01-27 京セラドキュメントソリューションズ株式会社 画像形成装置
WO2020167283A1 (en) * 2019-02-11 2020-08-20 Hewlett-Packard Development Company, L.P. Recovery from corruption
US11132191B2 (en) * 2019-09-11 2021-09-28 Hewlett Packard Enterprise Development Lp Software and firmware updates of computing systems
JP6935826B1 (ja) * 2020-04-30 2021-09-15 ダイキン工業株式会社 ソフトウェア更新方法、ソフトウェア更新システム及びソフトウェア更新プログラム
US11288122B1 (en) * 2020-10-30 2022-03-29 Pavilion Data System, Inc. High availability storage system
CN112286851B (zh) * 2020-11-06 2023-06-23 百度在线网络技术(北京)有限公司 服务器主板、服务器、控制方法、电子设备及可读介质
US11526599B2 (en) * 2021-04-19 2022-12-13 International Business Machines Corporation Clustered application policy generation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180096154A1 (en) 2016-09-30 2018-04-05 Hewlett Packard Enterprise Development Lp Multiple roots of trust to verify integrity

Also Published As

Publication number Publication date
JP2023003966A (ja) 2023-01-17
US20220413981A1 (en) 2022-12-29

Similar Documents

Publication Publication Date Title
JP5909264B2 (ja) セキュア・リカバリ装置及び方法
US7761732B2 (en) Data protection in storage systems
US7444360B2 (en) Method, system, and program for storing and using metadata in multiple storage locations
US8732121B1 (en) Method and system for backup to a hidden backup storage
TWI494762B (zh) 用於管理快取資料及元資料的方法、電腦儲存媒體與電腦
US7509544B2 (en) Data repair and synchronization method of dual flash read only memory
US7216210B2 (en) Data I/O system using a plurality of mirror volumes
US20110191302A1 (en) Storage system and data management method of the same
JP2008084291A (ja) 記憶装置、制御方法及び制御装置
JP5287980B2 (ja) 情報処理装置,情報処理装置の起動制御方法及び起動プログラム
JP2013041455A (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP2007140962A (ja) ディスクアレイシステム及びセキュリティ方法
US11221927B2 (en) Method for the implementation of a high performance, high resiliency and high availability dual controller storage system
WO2014132373A1 (ja) ストレージシステム及び記憶デバイス障害回復方法
JP2014142852A (ja) ストレージシステムおよび制御装置
US7293138B1 (en) Method and apparatus for raid on memory
US9256372B2 (en) Storage device and method of controlling storage device
KR20130050588A (ko) 나스 서버의 임베디드 시스템 펌웨어 복원 장치 및 방법
WO2012081058A1 (en) Storage subsystem and its logical unit processing method
US8751761B2 (en) Snapback-free logical drive duplication
US20110202719A1 (en) Logical Drive Duplication
JP7266067B2 (ja) ストレージシステム
JP2001075741A (ja) ディスク制御システムおよびデータ保全方法
US20190138407A1 (en) Systems and methods of deploying an operating system from a resilient virtual drive
US20130110789A1 (en) Method of, and apparatus for, recovering data on a storage system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220201

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230417

R150 Certificate of patent or registration of utility model

Ref document number: 7266067

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150