(57)【要約】  ストレージシステムは、記憶媒体へ書き込むデータを暗号化し、前記記憶媒体から読み出したデータを復号化するモジュールを複数有し、障害を検出し、前記複数のモジュールの少なくとも１つの障害と判定した場合、前記複数のモジュールのいずれを使用してのデータの読み書きも不可とし、前記記憶媒体へのデータの読み書きを制御するアダプタを有する。
2016194222.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムは、
記憶媒体へ書き込むデータを暗号化し、前記記憶媒体から読み出したデータを復号化するモジュールを複数有し、
障害を検出し、前記複数のモジュールの少なくとも１つの障害と判定した場合、前記複数のモジュールのいずれを使用してのデータの読み書きも不可とし、
前記記憶媒体へのデータの読み書きを制御するアダプタを有すること
を特徴とするストレージシステム。
【請求項２】
前記ストレージシステムは、
前記アダプタを複数有し、
前記複数のアダプタの中の第１のアダプタのデータの読み書きの不可としたことに応じて、ホスト計算機からの読み書き要求に基づく制御を前記第１のアダプタ経由から、前記複数のアダプタの中の第２のアダプタ経由へ切り替え、前記ホスト計算機からの読み書き要求を制御するコントローラ
をさらに有することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記コントローラは、
前記アダプタと前記モジュールと前記記憶媒体との関係、およびそれぞれを経由して読み書きが不可であるか可能であるかの情報を格納するメモリを有し、
前記第１のアダプタの読み書きの不可としたことに応じて前記情報を更新すること
を特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記アダプタは、
前記モジュールのそれぞれを搭載するインタフェースを複数搭載し、
前記障害の検出が、前記複数のモジュールのいずれの障害か、前記複数のインタフェースのいずれの障害かを判定すること
を特徴とする請求項３に記載のストレージシステム。
【請求項５】
前記アダプタは、
前記モジュールの障害であると判定した場合、前記コントローラからの読み書きの制御を受け付けず
前記インタフェースの障害であると判定した場合、前記コントローラからの読み書きの制御を受け付けること
を特徴とする請求項４に記載のストレージシステム。
【請求項６】
前記アダプタは、
前記インタフェースの障害であると判定した場合、前記複数のインタフェースの中の障害の検出されたインタフェースを使用してのデータの読み書きを不可とすること
を特徴とする請求項５に記載のストレージシステム。
【請求項７】
前記コントローラは、
前記複数のアダプタの中の第３のアダプタの前記障害の検出されたインタフェースを使用してのデータの読み書きを不可としたことに応じて、ホスト計算機からの読み書き要求に基づく制御を前記第３のアダプタの前記インタフェース経由から、前記複数のアダプタの中の第４のアダプタの前記インタフェース経由へ切り替え、前記ホスト計算機からの読み書き要求を制御すること
を特徴とする請求項６に記載のストレージシステム。
【請求項８】
前記アダプタは、
前記複数のモジュールと前記複数のインタフェースを含む各部の自己テストを起動し、前記自己テストのすべてが成功したかを判定し、
前記自己テストのすべては成功していないと判定した場合、さらに前記複数のモジュールの中の第１のモジュールの自己テストが成功しているか否かを判定し、
前記第１のモジュールの自己テストが成功していると判定し、かつ前記第１のモジュールを搭載する第１のインタフェースに障害が発生していないと判定した場合、前記第１のモジュールと前記第１のインタフェースを使用してのデータの読み書きを可能とすること
を特徴とする請求項７に記載のストレージシステム。
【請求項９】
前記アダプタは、
前記自己テストのすべてが成功したと判定した場合、前記複数のモジュールと前記複数のインタフェースのいずれを使用してのデータの読み書きも可能とすること
を特徴とする請求項８に記載のストレージシステム。
【請求項１０】
前記コントローラは、
前記データの読み書きを可能とする通知を前記アダプタから受け、前記データの読み書きを可能とする通知に基づき、前記メモリに格納された情報を更新すること
を特徴とする請求項９に記載のストレージシステム。
【請求項１１】
ストレージシステムは、
複数の記憶媒体と、
複数のアダプタであって、
前記記憶媒体へ書き込むデータを暗号化し、前記記憶媒体から読み出したデータを復号化するモジュール複数のそれぞれを搭載するインタフェースを複数搭載し、
障害を検出し、前記複数のモジュールの少なくとも１つの障害と判定した場合、前記複数のモジュールのいずれを使用してのデータの読み書きも不可とし、読み書きの制御を受け付けず、前記複数のインタフェースのいずれかの障害と判定した場合、前記障害と判定されたインタフェースを使用してのデータの読み書きを不可とし、読み書きの制御を受け付けるプロセッサを有する
アダプタと、
コントローラであって、
前記アダプタと前記インタフェースと前記モジュールと前記記憶媒体との関係、およびそれぞれを経由して読み書きが不可であるか可能であるかの情報を格納するメモリと、
前記読み書きを不可としたことに応じて前記情報を更新し、
前記複数のアダプタの中の第１のアダプタのデータの読み書きの不可としたことに応じて、ホスト計算機からの読み書き要求に基づく制御を前記第１のアダプタ経由から、前記複数のアダプタの中の第２のアダプタ経由へ切り替え、
前記複数のアダプタの中の第３のアダプタの前記障害の検出されたインタフェースを使用してのデータの読み書きを不可としたことに応じて、ホスト計算機からの読み書き要求に基づく制御を前記第３のアダプタの前記インタフェース経由から、前記複数のアダプタの中の第４のアダプタの前記インタフェース経由へ切り替え、
前記ホスト計算機からの読み書き要求を制御するプロセッサと、
を有するコントローラと、
を備えることを特徴とするストレージシステム。
【請求項１２】
ストレージシステムの制御方法は、
記憶媒体へのデータの読み書きを制御するアダプタが障害発生を検出し、
記憶媒体へ書き込むデータを暗号化し、前記記憶媒体から読み出したデータを復号化するモジュールの複数の中の少なくとも１つに障害と判定した場合、前記アダプタが前記複数のモジュールのいずれを使用してのデータの読み書きも不可とすること
を特徴とするストレージシステムの制御方法。
【請求項１３】
前記アダプタが、モジュールの複数の中の少なくとも１つの障害と判定した場合、前記複数のモジュールのいずれを使用してのデータの読み書きも不可であることを、コントローラへ通知し、前記コントローラからの読み書きの制御を受け付けず、
前記アダプタが、前記モジュールのそれぞれを搭載するインタフェースの障害と判定した場合、前記障害と判定されたインタフェースを使用してのデータの読み書きが不可であることを、前記コントローラへ通知し、前記コントローラからの読み書きの制御を受け付けること
を特徴とする請求項１２に記載のストレージシステムの制御方法。
【請求項１４】
前記アダプタが、前記複数のモジュールと前記複数のインタフェースを含む各部の自己テストを起動し、前記自己テストのすべてが成功したかを判定し、
前記アダプタが、前記自己テストのすべては成功していないと判定した場合、さらに前記複数のモジュールの中の第１のモジュールの自己テストが成功しているか否かを判定し、
前記第１のモジュールの自己テストが成功していると判定し、かつ前記第１のモジュールを搭載する第１のインタフェースに障害が発生していないと判定した場合、前記第１のモジュールと前記第１のインタフェースを使用してのデータの読み書きを可能とすること
を特徴とする請求項１３に記載のストレージシステムの制御方法。
【請求項１５】
前記アダプタが、前記自己テストのすべてが成功したと判定した場合、前記複数のモジュールと前記複数のインタフェースのいずれを使用してのデータの読み書きも可能とすること
を特徴とする請求項１４に記載のストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムおよびその制御方法に関するものである。
【背景技術】
【０００２】
ストレージシステムは、多数のストレージドライブ（例えばHDD：Hard Disk Drive）を有し、多くの情報が格納され、ネットワーク経由で多くのホスト計算機からアクセスされる。このため、ストレージシステム内の障害に対して稼働を継続できる信頼性が重要である。また、情報の漏えいを防ぐセキュリティも重要である。【０００３】
ストレージシステムの信頼性に関し、特許文献１には、障害の発生を検出すると、コネクションパス中の障害部位を特定し、当該障害部位を迂回するように、スイッチデバイスの接続構成を変更する技術が開示されている。また、情報のセキュリティに関しては、格納される情報の暗号化が一般的である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１８７４８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示された技術を用いれば、障害部位を迂回して、ストレージシステムの稼動を継続することは可能となる。しかしながら、障害による影響範囲を考慮した制御に関する技術は開示されておらず、特に暗号化・復号化モジュールの性質に基づく影響範囲に応じた制御に関する技術は見当たらない。【０００６】
そこで、本発明の目的は、ストレージシステムの障害発生部位の影響範囲に応じた制御をすることにある。
【課題を解決するための手段】
【０００７】
本発明に係る代表的なストレージシステムは、記憶媒体へ書き込むデータを暗号化し、前記記憶媒体から読み出したデータを復号化するモジュールを複数有し、障害を検出し、前記複数のモジュールの少なくとも１つの障害と判定した場合、前記複数のモジュールのいずれを使用してのデータの読み書きも不可とし、前記記憶媒体へのデータの読み書きを制御するアダプタを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ストレージシステムの障害発生部位の影響範囲に応じた制御が可能になる。
【図面の簡単な説明】
【０００９】
【図１】計算機システム全体の例を示す図である。
【図２】ストレージシステムのローカルメモリに格納される情報の例を示す図である。
【図３】ストレージシステムのフラッシュメモリに格納される情報の例を示す図である。
【図４】コネクションマップの例を示す図である。
【図５】障害検出に基づく障害制御の例を示すフローチャートである。
【図６】BE IF状態管理テーブルの例を示す図である。
【図７】自己テストに基づく障害制御の例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、各実施例を説明する。説明の明確化のため、以下の記載および図面の詳細は適宜省略がなされており、必要に応じて重複する説明は省略されている。以下の説明で「テーブル」という表現を用いて情報を説明するが、情報は必ずしもテーブルのデータ構造に限定されるものではなく、リストなどのデータ構造で表現されてもよい。
【００１１】
また、以下の説明の中で「プログラム」を主語としての説明を行う場合もあるが、プログラムはプロセッサによって実行されることで所定の処理をメモリおよび通信ポートを用いながら行うため、プログラムの代わりにプロセッサを主語とした説明としてもよい。そして、プログラムを実行するプロセッサの処理の一部またはすべては専用ハードウェアによって実現されてもよい。
【００１２】
また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶媒体によって各システムへインストールされてもよい。
【実施例１】
【００１３】
以下、図１から図５を参照して、実施例１を具体的に説明する。図１は、ストレージシステム10、データ処理と演算を行うホスト計算機20、およびストレージシステム10を管理する管理計算機30を含む計算機システムの例を示す図である。計算機システムは複数のホスト計算機20を含むことができる。【００１４】
ストレージシステム10とホスト計算機20とは、データネットワーク40を介して互いに接続される。データネットワーク40は、例えばSAN(Storage Area Network)であり、IP(Internet Protocol)ネットワークもしくはその他のいかなる種類のデータ通信用のネットワークであってもよい。ホスト計算機20はデータネットワーク40を介してストレージシステム10へI/O要求（主にデータの読み書きの要求）を発行する。【００１５】
ストレージシステム10、ホスト計算機20および管理計算機30は、管理ネットワーク(不図示)を介して互いに接続される。管理ネットワークは、例えばIPネットワークであり、SANもしくはその他のいかなる種類のネットワークであってもよい。データネットワーク40と管理ネットワークとが同一のネットワークであってもよい。【００１６】
ストレージシステム10は、複数のストレージドライブ200を収容する。ストレージドライブ200は、不揮発性の磁気ディスクを有するハードディスクドライブ(HDD)、不揮発の半導体メモリ(例えばフラッシュメモリ)を含むSolid State Drive(SSD)であってもよい。ストレージドライブ200は、ホスト計算機20から送られたデータ(ユーザデータ)を格納する。複数のストレージドライブ200がRAID(Redundant Arrays of Inexpensive Disks)によるデータ冗長化を行うことで、一つのストレージドライブ200に障害が発生した場合のデータ消失を防ぐことができる。【００１７】
ストレージシステム10は、ホスト計算機20と接続するためのフロントエンドパッケージ(FEPK)120、ストレージドライブ200と接続するためのバックエンドパッケージ(BEPK)160、キャッシュメモリ143を備えるキャッシュメモリパッケージ(CMPK)140、内部処理を行うマイクロプロセッサ101を備えるマイクロプロセッサパッケージ(MPPK)100、およびそれらを接続する内部ネットワーク180を有する。【００１８】
図１に示すように、ストレージシステム10は、複数のFEPK120、複数のBEPK160、複数のCMPK140、および複数のMPPK100を含む。
各FEPK120は、ホスト計算機20との接続を行うためのフロントエンドインタフェース(FE IF)121を有する。FE IF121は複数のポートを含むことができ、各ポートがホスト計算機20と接続することができる。FE IF121は、ホスト計算機20とストレージシステム10との間の通信に用いられるプロトコル、例えばFibre Channel Over Ethernet(登録商標)(FCoE)を、内部ネットワーク180で用いられるプロトコル、例えばPCI-Express(登録商標)に変換する。【００１９】
各BEPK160は、ストレージドライブ200と接続するためのバックエンドインタフェース(BE IF)165、ストレージシステム10内のデータ転送制御を行うローカルルータ(LR)161、LR161のプログラムを格納するフラッシュメモリ(FM)163を有する。BE IF165は、複数のポートを含むことができ、各ポートが記憶ドライブ200と接続することができる。【００２０】
各BE IF165は、異なるストレージドライブ200と接続しており、１つのストレージドライブ200は2以上のBEPK160が有するBE IF165と接続し、冗長化されたデータ転送経路を構成する。また、各BE IF165は、ストレージドライブ200に格納するデータを暗号化し、ストレージドライブ200から読み出されたデータを復号化するための暗号化・復号化モジュール1650（ENC/DECと称する場合もある）を有する。【００２１】
各CMPK140は、ホスト計算機20から読み書きされるユーザデータを一時的に格納するキャッシュメモリ(CM)143と、一つまたは複数のMPPK100が必要とする制御情報を格納する共有メモリ(SM)141を有する。異なるボリュームを担当する複数のMPPK100(のマイクロプロセッサ)が、SM141にアクセスすることができる。MPPK100がアクセスするデータやプログラムは、ストレージシステム10内の不揮発メモリ(不図示)またはストレージドライブ200からSM141へロードされる。図１では同一のCMPK140で関連付けられるCM143とSM141とは、別の基板上(パッケージ内)に実装されていてもよい。【００２２】
各MPPK100は、1以上のマイクロプロセッサ(MP)101、ローカルメモリ(LM)105およびそれらを接続するバス103を有する。図１に示した例では、複数のMP101が実装されているが、MP101の数は一つでもよい。複数のMP101は一つのプロセッサを仮想的に構成してもよい。LM105は、MP101が実行するプログラムおよびMP101が使用する制御情報を格納する。【００２３】
図２は、MPPK100内のLM105に格納される情報の例を示す図である。I/O制御プログラム1050はMP101により実行され、ストレージドライブ200への書き込みや、ストレージドライブ200からの読み出しを実施する際に、コネクションマップ1051の情報を利用して、いずれのBEPK160、BE IF165を経由したパスでデータを通信するかを制御する。特にコネクションマップ1051にて使用不可と設定されたパスを迂回するように制御する。【００２４】
また、障害監視プログラム1052はMP101により実行され、各BEPK160の状態を監視し、障害発生を検知する、または、BEPK160からBE IF165などの障害情報の通知を受けると、コネクションマップ1051を更新する。【００２５】
コネクションマップ1051の例は図４を用いて後で説明する。コネクションマップ1051は、障害監視プログラム1052により更新される情報以外に、図示を省略した入力装置から予め設定されたBEPK160、BE IF165、暗号化・復号化モジュール1650、ドライブ200の接続関係の情報を含んでもよい。【００２６】
なお、I/O制御プログラム1050を実行するMP101をI/O制御部とみなし、障害監視プログラム1052を実行するMP101を障害監視部とみなしてもよい。また、MPPK100はストレージシステム10のコントローラとみなしてもよい。【００２７】
図３は、BEPK160の例を示す図である。LR161は、MP1610とスイッチ(SW)1612を有する。バックエンド制御プログラム1630はMP1610により実行され、MPPK100から送付されたI/O要求を、指示されたパスに従い、スイッチ1612を制御して、BE IF165に割り振り、処理結果をMPPK100へ返す。【００２８】
状態監視プログラム1632はMP1610により実行され、BE IF165などBEPK160内の各構成の状態を監視して、障害発生を検知し、障害発生部位が暗号化・復号化モジュール1650の場合、バックエンド制御プログラム1630とMPPK100の障害監視プログラム1052に通知する。バックエンド制御プログラム1630は、状態監視プログラム1632から暗号化・復号化モジュール1650の障害発生の通知を受けると、BEPK160を閉塞してBEPK160への全てのI/O要求の受付を拒否する。【００２９】
これらの処理については図５などを用いて後で説明する。なお、バックエンド制御プログラム1630を実行するMP1610をバックエンド制御部とみなし、状態監視プログラム1632を実行するMP1610を状態監視部とみなしてもよい。また、BEPK160はストレージドライブ200へのアダプタとみなしてもよい。BE IF状態管理テーブル1634については、実施例２で説明する。【００３０】
図４は、コネクションマップ1051の例を示す図である。コネクションマップ1051は、ストレージシステム10内のBEPK160を一意に特定するIDを示す BEPK ID欄10511、BEPK ID欄10511に示されるIDのBEPK160の状態を示すBEPK状態欄10512、ストレージシステム10のBEPK160内のBE IF165を一意に特定可能なIDを示すBE IF ID欄10513、BE IF ID欄10513に示されるIDのBE IF165の状態を示すBE IF状態欄10514を含む。【００３１】
また、コネクションマップ1051は、BE IF ID欄10513に示されるIDのBE IF165に搭載された符号化・復号化モジュール1650の状態を示すENC/DEC状態欄10515、ストレージシステム10に設置されているストレージドライブ200を一意に特定可能なIDを示すドライブID欄10516、ドライブID欄10516に示されるIDのストレージドライブ200の状態を示すドライブ状態欄10517を含む。【００３２】
さらに、コネクションマップ1051は、ドライブID欄10516に示されるストレージドライブ200へのパスの使用可否を示すバス状態欄10517を含む。このパスはBEPK ID欄10511に示されるIDのBEPK160に搭載されたBE IF ID欄10513に示されるIDのBE IF165を通過し、ドライブID欄10516に示されるストレージドライブ200へ至るパスである。パス状態欄10518は、パスが使用可能であると「ENABLE」が格納され、パスが使用不可であると「DISABLE」が格納される。【００３３】
ここで、パスを構成するBEPK160、BE IF165、符号化・復号化モジュール1650、ドライブ200の接続関係および搭載関係にしたがって、BEPK ID欄10511、BE IF ID欄10513、ドライブID欄10516の各欄のIDは、管理計算機30あるいは図示を省略した入力装置により予め設定されてもよい。【００３４】
図４に示す例のように、ドライブID欄10516が「D_1」〜「D_4」のドライブ200はBEPK ID欄10511が「00」のBEPK160経由のパスと「01」のBEPK160経由のパスの２つのパスを有してもよい。【００３５】
BEPK状態欄10512、BE IF状態欄10514、ENC/DEC状態欄10515、ドライブ状態欄10517のそれぞれは、各欄の各IDに示されるBEPK160、BE IF165、符号化・復号化モジュール1650、ストレージドライブ200に障害の発生が検出されると「ERROR」が格納され、障害の発生が検出されないと「NORMAL」が格納される。【００３６】
また、BEPK160、BE IF165、符号化・復号化モジュール1650、ストレージドライブ200のそれぞれは、パス状態欄10518で説明したパスの一部を構成するため、「ERROR」の格納された対象部位に応じた影響範囲のパスのパス状態欄10518に「DISABLE」が格納される。【００３７】
図４に示す例では、BEPK160に搭載されるBE IF1650の障害をBEPK160の障害とせず、BE IF165に搭載される符号化・復号化モジュール1650の障害をBE IF165の障害としていない。すなわち、BE IF165の障害は、そのBE IF165に含まれる符号化・復号化モジュール1650以外の部位の障害である。【００３８】
このため、BEPK ID欄10512が「01」かつBE IF ID欄10513が「BEIF 2」のBE IF165に搭載された符号化・復号化モジュール1650のENC/DEC状態欄10515が「ERROR」であるのに対し、その符号化・復号化モジュール1650を搭載するBE IF165のBE IF状態欄10514は「NORMAL」である。【００３９】
図４の例では、各部位の状態に対する影響範囲の各パスとして、BE IF ID欄10513が「BE IF2」に搭載された暗号化・復号化モジュール1650に障害のある場合（ENC/DEC状態欄10515が「ERROR」の場合）、障害のある暗号化・復号化モジュール1650を含むBEPK ID欄10511が「01」のBEPK160経由のパスをすべて使用不可とし、パス状態10518が「DISABLE」である。【００４０】
ドライブID欄10516が「D_5」のドライブ200に障害のある場合（ドライブ状態10517が「ERROR」の場合）、BE IF ID欄10513が「BE IF4」のBE IF165経由で障害のあるドライブ200へ至るパスと「BE IF6」のBE IF165経由で障害のあるドライブ200へ至るパスとを使用不可とし、パス状態10518が「DISABLE」である。【００４１】
BE IF ID欄10513が「BE IF5」のBE IF165に障害のある場合（BE IF状態欄10514が「ERROR」の場合）、障害のあるBE IF165経由のバスをすべて使用不可とし、パス状態10518が「DISABLE」である。【００４２】
図５を用いて、ストレージシステム10の動作を説明する。図５は、BEPK160のLR161とMPPK100のMP101により、各部位とパスの状態を設定する障害制御の例を示すフローチャートである。BEPK160の状態監視プログラム1632がBEPK160内およびストレージドライブ200の障害発生を検知すると(S1000)、障害発生部位が暗号化・復号化モジュール1650であるかどうかを判定する(S1001)。なお、障害発生の検知により障害発生部位を特定できる場合は、S1000とS1001を分けなくてもよい。【００４３】
S1001で状態監視プログラム1632が、障害発生部位は暗号化・復号化モジュール1650でないと判定した場合、状態監視プログラム1632はBEPK160、BE IF165、ストレージドライブ200の内の障害発生部位と、その障害発生部位の影響範囲となる関連パスの使用不可をMPPK100へ通知する(S1006)。ここで、障害発生部位の影響範囲となる関連パスとは、障害発生部位を通過するパスとしてもよい。また、ストレージドライブ200が障害発生部位の場合は、障害発生部位となったストレージドライブ200へ至るすべてのパスであってもよい。【００４４】
一方、S1001で状態監視プログラム1632が、障害発生部位は暗号化・復号化モジュール1650であると判定した場合、状態監視プログラム1632はバックエンド制御プログラム1630に閉塞すべき障害の発生を通知する(S1002)。通知を受けたバックエンド制御プログラム1630は、BEPK160を閉塞し、全てのI/O要求をMPPK100から受け付けない状態となる(S1003)。【００４５】
そして、状態監視プログラム1632は、障害発生部位としての暗号化・復号化モジュール1650と、BEPK160の全てのパスの使用不可をMPPK100へ通知する(S1004)。【００４６】
MPPK100の障害監視プログラム1052は、BEPK160から障害発生部位と使用不可のパスの通知を受け取ると、受け取った情報でコネクションマップ1051を更新する(S1005)。すなわち、障害監視プログラム1052は、通知された障害発生部位に応じて、BEPK状態欄10512、BE IF状態欄10514、ENC/DEC状態欄10515、ドライブ状態欄10517に「ERROR」を設定し、通知された使用不可のパスに応じて、パス状態欄10518に「DISABLE」を設定する。【００４７】
以上で説明した処理とは別に、MPPK100のI/O制御プログラム1050は、コネクションマップ1051のパス状態欄10518を参照し、パス状態欄10518が「ENABLE」であるパスを使用してストレージドライブ200へアクセスするように、BEPK160へ指示する。【００４８】
例えば、図４に示したBEPK ID欄10511が「01」のBEPK160ではパス状態欄10518がすべて「DISABLE」であるため、BEPK ID欄10511が「01」のBEPK160を使用せず、ドライブID欄10516のIDが同一であるBEPK ID欄10511が「00」のBEPK160を使用するように、I/O制御プログラム0150はBEPK160を制御する。【００４９】
以上で説明したように、符号化・復号化モジュール1650の障害発生を検知した場合、同一のBEPK160に搭載された符号化・復号化モジュール1650にも問題のある可能性があるため、BEPK160単位でパスが使用不可になる。符号化・復号化モジュール1650以外の部位での障害発生を検知した場合、障害発生部位を通過するパスが使用不可になる。また、符号化・復号化モジュール1650の障害発生を検知した場合、BEPK160が閉塞され、MPPK100からの書き込みデータが誤った暗号となることはない。これにより、符号化・復号化モジュール1650に特有の障害対策が可能となる。
【実施例２】
【００５０】
実施例２で説明するストレージシステムは、BEPK160内で自己テストし、図３に示したBEPK160内のFM163の例におけるBE IF状態管理テーブル1634を使用する構成であり、実施例１と同様の構成については、説明を省略する。【００５１】
実施例１では符号化・復号化モジュール1650の障害発生を検知した場合、符号化・復号化モジュール1650の特徴に基づきBEPK160のすべてのパスが使用不可となり、BEPK160が閉塞されたが、実施例２では自己テストによりBEPK160の一部を使用可能とする処理を含む。【００５２】
図６は、BE IF状態管理テーブル1634の例を示す図である。BE IF状態管理テーブル1634は、BE IF状態管理テーブル1634が格納されているBEPK160内のBE IF165に関する情報であり、BE IF165を一意に特定可能なIDとなるBE IF ID欄16341と、BE IF165の状態を示す状態欄16342とから構成される。【００５３】
状態欄16342は、状態監視プログラム1632により検知され、MPPK100に通知されたBE IF165の状態と同じ情報を格納する。例えば、BE IF165が障害の発生が検知された場合には「ERROR」が格納される。【００５４】
図７を用いて、ストレージシステム10の動作を説明する。図７は、各部位とパスの状態を更新する障害制御の例を示すフローチャートである。図５に示したS1005の後で、図7に示したS2000からのフローチャートにしたがい処理が開始される。まず、バックエンド制御プログラム1630は、BE IF状態管理テーブル1634を更新する(S2000)。【００５５】
すなわち、バックエンド制御プログラム1630は、状態監視プログラム1632から障害発生通知のあったBE IF165の状態欄16342に障害が発生したことを示す「ERROR」を格納する。ここで、状態監視プログラム1632からの障害発生通知は、図５を用いて説明したS1004、S1006と同じであり、S2000の代わりにS1004、S1006においてバックエンド制御プログラム1630も障害発生通知を受け、BE IF状態管理テーブル1641を更新してもよい。【００５６】
次に、バックエンド制御プログラム1630はBEPK160の自己テストを起動する(S2001)。ここで、自己テスト起動の前に自己テストの対象部位をリセットしてもよい。自己テストは、例えばソフトウェア・ファームウェアが破損、改竄されていないことを確認するためのMAC(Message Authentication Code)やHMAC(Hashed Massage Authentication Code)による完全性テストや、暗号アルゴリズムが正しく動作することを確認するための既知解テストのプログラムが含まれてもよい。【００５７】
既知解テストでは、所定の暗号化対象のデータと、その暗号化対象のデータを暗号化した暗号化済みデータを既知解として格納しておき、符号化・復号化モジュール1650へそれら格納されたデータを実際に入力して、出力されたデータとそれら格納されたデータとを比較して検証するなどしてもよい。【００５８】
このように、S1000における障害発生の検知が実際のデータなどを対象にして処理の途中で一時記憶するメモリ素子やバスのパリティチェックなどであるのに対し、自己テストはプログラムそのものの正常性のチェックであったり、テスト用のデータを用いたチェックであったりしてもよい。【００５９】
状態監視プログラム1632が自己テストの結果を判定し(S2002)、全ての自己テストに成功したと判定した場合、MPPK100に当該BEPK160の障害発生部位の回復と全パスが使用可能であることを通知する(S2003)。また、バックエンド制御プログラム1630はBE IF状態管理テーブル1634の状態16342の「ERROR」を「NORMAL」へ更新する(S2004)。なお、BE IF状態管理テーブル1634を参照する前に必ずS2000を実行して更新することにより、S2004の更新を省略してもよい。【００６０】
S2002で失敗した自己テストがあると判定した場合、状態監視プログラム1632は失敗した自己テストが暗号アルゴリズムテストであるか否かを判定する(S2006)。失敗したテストが暗号アルゴリズムテストであると判定した場合、状態監視プログラム1632はBE IF状態管理テーブル1634を参照し、自己テストに失敗した暗号化・復号化モジュール1650を搭載したBE IF165の状態欄16342が「ERROR」であるか否かを判定する(S2007)。【００６１】
自己テストに失敗した暗号化・復号化モジュール1650を搭載したBE IF165の状態欄16342に「ERROR」が格納されていると判定した場合、状態監視プログラム1632はMPPK100へ障害の発生していないBE IF165を通過するパスが使用可能であることを通知する(S2008)。【００６２】
あるいは、状態監視プログラム1632は、S2007において障害の発生していないBE IF165のみ暗号化・復号化モジュール1650の自己テストに成功したと判定した場合、S2008において状態監視プログラム1632はMPPK100に障害の発生していないBE IF165を通過するパスが使用可能であることを通知してもよい。【００６３】
MPPK100の障害監視プログラム1052は、S2003あるいはS2008でのBEPK160の状態監視プログラム1632からの通知に従い、コネクションマップ1051を更新し(S2005)、処理を終了する。【００６４】
失敗した自己テストが暗号アルゴリズムテストでないと判定した場合(S2006における判定でNOの場合)、および障害の発生していないBE IF165で暗号化・復号化モジュール1650の自己テストに失敗したと判定した場合(S2007における判定でNOの場合)、コネクションマップ1051を更新せずに、そのまま処理を終了する。【００６５】
以上の説明では、BEPK160のバックエンド制御プログラム1630が自己テストを起動したが、自己テストの起動はMPPK100に障害監視プログラム1052であってもよい。この場合、図７に示したS2000は、図５に示したS1003の後に実施されてもよい。図７に示したS2001は、図５に示したS1005でコネクションマップ1051の更新後に、MPPK100のI/O制御プログラム1050が障害監視プログラム1052へBEPK160に障害が発生したことを通知することで、障害監視プログラム1052がBEPK160の自己テスト起動処理を実施してもよい。【００６６】
以上で説明したように、障害発生を検出してパスを使用不可と設定しても、自己テストにより正しく動作することが確認できれば、バスを使用可能とすることができる。これにより、障害が一時的なものである場合や障害発生の検知に問題のある場合に、パスを使用可能にできる。特に、暗号化・復号化モジュール1650の障害により影響の可能性の高いBEPK160の全てのパスを使用不可と設定しても、自己テストにより正しく動作することが確認できれば、BEPK160の中でも一部のパスを使用可能とすることができる。
【符号の説明】
【００６７】
10：ストレージシステム
20：ホスト計算機
100：マイクロプロセッサパッケージ
160：バックエンドパッケージ
161：ローカルルータ
165：バックエンドインタフェース
1650：符号化・復号化モジュール
【図１】
2016194222.tif 000003
【図２】
2016194222.tif 000004
【図３】
2016194222.tif 000005
【図４】
2016194222.tif 000006
【図５】
2016194222.tif 000007
【図６】
2016194222.tif 000008
【図７】
2016194222.tif 000009
【国際調査報告】
2016194222.tif 000010
2016194222.tif 000011