(57)【要約】【課題】マルチコアプロセッサを備えたディスクアレイ装置において，トランスポート制御用のプロセッサコアの障害発生時に，障害情報データを採取する技術を提供する。【解決手段】トランスポートコア１１２の障害発生が検出されると，障害情報格納ルーチン１５０は，トランスポートファームウェア障害情報をメモリ１２０に退避し，その退避領域をメモリ管理テーブル１２２で格納対象領域，不揮発対象領域に設定する。また，トランスポートファームウェア障害判定フラグ１２１を“１”に設定し，ＣＭ１００を再起動する。再起動時に，トランスポートファームウェア障害判定フラグ１２１が“１”であれば，パワーオンルーチン１６０は障害情報格納ルーチン１５０に処理を渡す。障害情報格納ルーチン１５０は，メモリ管理テーブル１２２で格納対象領域に設定されたメモリ１２０上の領域のデータを障害情報データとしてシステムディスク２００に格納する。【選択図】図１
2008262438.tif 000002
【特許請求の範囲】
【請求項１】
１つのプロセッサコアがトランスポート制御用プロセッサコアであり，トランスポート制御用プロセッサコア以外の少なくとも１つのプロセッサコアが障害情報データ採取機能を有するプロセッサコアであるマルチコアプロセッサと，マルチコアプロセッサのメモリと，メモリから採取されたメモリダンプデータを障害情報データとして格納するシステムディスクとを備えたディスクアレイ装置であって，
前記マルチコアプロセッサの再起動時にデータが初期化されない前記メモリの不揮発対象領域には，前記メモリを領域ごとに管理する情報であり，少なくとも不揮発対象領域か否かを示す情報と障害発生時にデータが採取される格納対象領域であるか否かを示す情報とを有するメモリ管理情報と，前記トランスポート制御用プロセッサコアの障害か否かを示す情報とが記憶され，
前記障害情報データ採取機能を有するプロセッサコアは，
前記トランスポート制御用プロセッサコアの障害発生時に，前記メモリの不揮発対象領域でありかつ格納対象領域である領域に，前記トランスポート制御用プロセッサコアの障害情報を退避する手段と，
前記トランスポート制御用プロセッサコアの障害か否かを示す情報に前記トランスポート制御用プロセッサコアの障害である旨を設定し，前記マルチコアプロセッサを再起動する手段と，
再起動時に，前記トランスポート制御用プロセッサコアの障害か否かを示す情報が前記トランスポート制御用プロセッサコアの障害である旨を示している場合に，前記メモリ管理情報で格納対象領域に設定されている前記メモリの領域に記録されたデータを採取し，前記トランスポート制御用プロセッサコアを介して，前記システムディスクに格納する手段とを備える
ことを特徴とするディスクアレイ装置。
【請求項２】
請求項１に記載されたディスクアレイ装置において，
前記トランスポート制御用プロセッサコアの障害情報を退避する手段は，前記トランスポート制御用プロセッサコアの障害情報を退避する前記メモリ上の領域を動的に確保し，確保された領域を前記メモリ管理情報に不揮発対象領域かつ格納対象領域として登録し，確保された領域に前記トランスポート制御用プロセッサコアの障害情報を退避する
ことを特徴とするディスクアレイ装置。
【請求項３】
１つのプロセッサコアがトランスポート制御用プロセッサコアであり，トランスポート制御用プロセッサコア以外の少なくとも１つのプロセッサコアが障害情報データ採取機能を有するプロセッサコアであるマルチコアプロセッサと，マルチコアプロセッサのメモリと，メモリから採取されたメモリダンプデータを障害情報データとして格納するシステムディスクとを備え，マルチコアプロセッサの再起動時にデータが初期化されないメモリの不揮発対象領域には，メモリを領域ごとに管理する情報であり，少なくとも不揮発対象領域か否かを示す情報と障害発生時にデータが採取される格納対象領域であるか否かを示す情報とを有するメモリ管理情報と，トランスポート制御用プロセッサコアの障害か否かを示す情報とが記憶されたディスクアレイ装置におけるトランスポート制御用プロセッサコアの障害情報データ採取方法であって，
前記障害情報データ採取機能を有するプロセッサコアが，
前記トランスポート制御用プロセッサコアの障害発生時に，前記メモリの不揮発対象領域でありかつ格納対象領域である領域に，前記トランスポート制御用プロセッサコアの障害情報を退避する過程と，
前記トランスポート制御用プロセッサコアの障害か否かを示す情報に前記トランスポート制御用プロセッサコアの障害である旨を設定し，前記マルチコアプロセッサを再起動する過程と，
再起動時に，前記トランスポート制御用プロセッサコアの障害か否かを示す情報が前記トランスポート制御用プロセッサコアの障害である旨を示している場合に，前記メモリ管理情報で格納対象領域に設定されている前記メモリの領域に記録されたデータを採取し，前記トランスポート制御用プロセッサコアを介して，前記システムディスクに格納する過程とを有する
ことを特徴とするトランスポート制御用プロセッサコアの障害情報データ採取方法。
【請求項４】
請求項３に記載されたトランスポート制御用プロセッサコアの障害情報データ採取方法において，
前記トランスポート制御用プロセッサコアの障害情報を退避する過程では，前記トランスポート制御用プロセッサコアの障害情報を退避する前記メモリ上の領域を動的に確保し，確保された領域を前記メモリ管理情報に不揮発対象領域かつ格納対象領域として登録し，確保された領域に前記トランスポート制御用プロセッサコアの障害情報を退避する
ことを特徴とするトランスポート制御用プロセッサコアの障害情報データ採取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ディスクアレイ装置に搭載されたプロセッサの障害発生時にそのメモリダンプデータを採取する技術に関するものであり，特にマルチコアプロセッサにおいて，その１つのプロセッサコアがトランスポート制御用のプロセッサコアであり，そのトランスポート制御用のプロセッサコアに障害が発生した場合に，そのトランスポート制御用プロセッサコアの障害情報を含むメモリダンプデータを採取することが可能となるディスクアレイ装置およびトランスポート制御用プロセッサコアの障害情報データ採取方法に関するものである。
【背景技術】
【０００２】
近年，情報インフラが発達したことにより，取り扱うデータ量が日々増加し続けている情報化社会において，高信頼，高可用性に富んだ情報システムを実現することが要求されている。このような情報システムを実現するため，常時大容量のデータアクセス，データバックアップ可能なディスクアレイ装置が，急速に普及している。
【０００３】
急速な普及にともない，著しく性能向上したディスクアレイ装置には，多数の装置コンポーネントが搭載されており，それらのコンポーネントは複雑に関連している。そのため，何らかの問題が発生した場合に，その原因箇所を特定することや影響範囲を認識することなどに，多大な資源や時間，労力がかかるようになってきている。そのため，限られた資源や時間の中で，問題発生原因に関する有用な障害情報データ（ＣＰＵメモリのメモリダンプデータ等）を採取することが必要とされる。
【０００４】
図７は，故障発生時の障害情報データの採取を説明するための図である。ディスクアレイ装置５０において，ＣＭ（Controller Module ）５００（ａ，ｂ）は，ホストＩ／Ｏ制御や装置保守制御などストレージシステム全体を管理するコンポーネントである。ＣＰＵ５１０（ａ，ｂ）は，ＣＭ５００（ａ，ｂ）を制御するプロセッサである。エキスパンダ（Expander）７００（ａ，ｂ）は，ディスク（Disk）６００（ａ，ｂ）が搭載されるＤＥ（Drive Enclosure ）の監視・制御を行うコンポーネントである。図示されたディスク６００（ａ，ｂ）のうち，ディスク６００ｂは，あらかじめシステムディスクとして設定されているものとする。
【０００５】
なお，図７のディスクアレイ装置５０では，説明を簡単にするために，ＣＭ５００，ディスク６００等のコンポーネントが２つずつしか記載されていないが，実際には様々なコンポーネントが冗長化されて複雑に関連している。
【０００６】
例えば，ＣＭ５００ｂのＣＰＵ５１０ｂにおいて障害が発生すると，ＣＰＵ５１０ｂは，通常状態から障害情報格納状態に遷移する。障害情報格納状態では，障害情報格納機能によって，ＣＰＵ５１０ｂのメモリ５２０上のメモリダンプ対象データ５２５を，問題発生原因に関する有用な障害情報データ６１０として，自動的にシステムディスク（ディスク６００ｂ）に格納する。
【０００７】
障害要因がファーム要因（ソフトウェア要因）であれば，障害情報データ６１０の格納後に，障害が発生したＣＭ５００ｂをリセットし，自動組込みする制御が働く。この制御により，障害が発生したＣＭ５００ｂは復旧し，動作可能な通常状態となる。
【０００８】
システムディスク（ディスク６００ｂ）に格納された障害情報データ６１０は，ディスクアレイ装置５０に接続された保守用のパソコン（保守ＰＣ８００）などで採取することができる。例えば，ディスクアレイ装置５０が設置された現場において，ＣＭ５００ｂに障害が発生した場合，現場のＣＥ（Customer Engineer ）やＳＥ（System Engineer ）は，ディスクアレイ装置５０に保守ＰＣ８００を接続し，保守用のＣＧＩ画面を介して，ディスクアレイ装置５０のシステムディスク（ディスク６００ｂ）に格納された障害情報データ６１０を，保守ＰＣ８００のディスク８０１に採取する。採取された障害情報データ６１０は，開発元に発信され，障害解析が行われる。
【０００９】
なお，障害情報データの採取に関する技術が記載された文献としては，例えば特許文献１，特許文献２などがある。
【００１０】
特許文献１には，障害時における障害解析を迅速に行うために，オペレーションシステムとは切り離されたモジュールであるメモリダンプルーチンを処理装置上に用意し，ダンプスイッチが押下された場合には，メモリ上にデータを残したまま処理装置を再起動してダンプルーチンを実行し，メモリダンプを採取する技術が記載されている。
【００１１】
特許文献２には，障害発生時のコンピュータシステムの停止時間を短縮するために，ダンプ採取の対象となる被ダンプ採取プロセッサのダンプデータを，退避プロセッサの記憶装置上に一時退避し，ダンプデータの出力を待たずに被ダンプ採取プロセッサを再起動し，退避プロセッサの記憶装置上のダンプデータを外部記憶装置に出力する技術が記載されている。
【特許文献１】特開２０００−１３７６３０号公報
【特許文献２】特開２００１−３４５０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
図８は，本発明の課題を説明する図である。近年，１つのパッケージに複数のプロセッサコアが集積されたマルチコアプロセッサが普及してきている。マルチコアプロセッサにおいては，それぞれのプロセッサコアは，他のプロセッサコアに影響されることなく，独立に機能する。図８において，ＣＭ５００ｂのＣＰＵ５１０ｂは，２つのプロセッサコア（アプリケーションコア（Application Core）５１１，トランスポートコア（Transport Core）５１２）を備えるデュアルコアプロセッサであるものとする。
【００１３】
ＣＰＵ５１０ｂにおいて，アプリケーションコア５１１は，ホストＩ／Ｏ制御に関するＲＡＩＤ制御やコピー制御機能，装置保守制御などストレージシステム全体を管理するアプリケーションファームウェア（Application Firmware）が載せられたプロセッサコアである。トランスポートコア５１２は，ホストインタフェースやディスクインタフェースにおけるＳＡＳ／ＳＡＴＡや，ＦＣ（Fibre Channel ）のトランスポート層プロトコルを司るトランスポートファームウェア（Transport Firmware）が載せられたプロセッサコアである。
【００１４】
アプリケーションコア５１１で障害が発生した場合には，図７で説明した場合と同様に，アプリケーションコア５１１が，通常状態から障害情報格納状態に遷移し，障害情報格納機能によって，メモリダンプ対象データ５２５を障害情報データ６１０としてシステムディスク（ディスク６００ｂ）に格納する。このときのデータ転送は，トランスポートコア５１２が制御する。
【００１５】
トランスポートコア５１２で障害が発生した場合には，アプリケーションコア５１１が通常状態から障害情報格納状態に遷移し，障害情報格納機能によって，障害が発生したトランスポートコア５１２からその障害情報をメモリ５２０に吸い出し，そのトランスポートコア５１２の障害情報を含むメモリダンプ対象データ５２５を障害情報データ６１０としてシステムディスク（ディスク６００ｂ）に格納しようとする。
【００１６】
しかし，この場合には，データ転送を制御するトランスポートコア５１２に障害が発生しているため，障害情報格納機能を備えたアプリケーションコア５１１からシステムディスク（ディスク６００ｂ）にアクセスできず，トランスポートコア５１２の障害情報を含むメモリダンプ対象データ５２５をシステムディスク（ディスク６００ｂ）に転送できない可能性が高い。
【００１７】
このように，マルチコアプロセッサ構成において，その１つのプロセッサコアがトランスポート制御用のプロセッサコアである場合に，そのトランスポート制御用のプロセッサコアに障害が発生すると，メモリ上のメモリダンプ対象データを障害情報格納用のシステムディスクに転送できない問題が発生する可能性がある。
【００１８】
なお，上記の特許文献１に記載された技術は，シングルプロセッサシングルコア構成におけるメモリダンプ採取の技術である。また，上記の特許文献２に記載された技術は，コンピュータシステムの停止時間を短縮することを目的とし，マルチプロセッサ構成において，すべてのプロセッサがシステム管理プロセッサ，ダンプデータ退避プロセッサ，障害プロセッサ，関連プロセッサになり得る構成となっており，その目的や装置構成が異なる。
【００１９】
すなわち，上記の特許文献１，特許文献２に記載された技術には，マルチコアプロセッサ構成における特定のトランスポート制御用のプロセッサコアに障害が発生するという概念がなく，上記の特許文献１，特許文献２に記載された技術では，上記の問題を解決することはできない。
【００２０】
本発明は，上記の問題点の解決を図り，マルチコアプロセッサを備えるディスクアレイ装置において，その１つのプロセッサコアがトランスポート制御用のプロセッサコアである場合に，そのトランスポート制御用のプロセッサコアで障害が発生しても，そのトランスポート制御用のプロセッサコアの障害情報を含むメモリダンプデータを，問題発生原因に関する有用な障害情報データとして自動的にシステムディスクに格納することが可能となる技術を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明は，上記の課題を解決するために，マルチコアプロセッサ構成において，トランスポート制御用プロセッサコアの障害発生時に，そのトランスポート制御用プロセッサコアの障害情報をメモリ上の不揮発対象領域でありかつ格納対象領域である領域に退避し，再起動後に，トランスポート制御用プロセッサコアの障害情報が退避された領域を含むメモリ上の格納対象領域のデータを，問題発生原因に関する有用な障害情報データとして，トランスポート制御用プロセッサコアを介して自動的にシステムディスクに格納することを特徴とする。
【００２２】
具体的には，本発明は，１つのプロセッサコアがトランスポート制御用プロセッサコアであり，トランスポート制御用プロセッサコア以外の少なくとも１つのプロセッサコアが障害情報データ採取機能を有するプロセッサコアであるマルチコアプロセッサと，マルチコアプロセッサのメモリと，メモリから採取されたメモリダンプデータを障害情報データとして格納するシステムディスクとを備えたディスクアレイ装置であって，マルチコアプロセッサの再起動時にデータが初期化されないメモリの不揮発対象領域には，メモリを領域ごとに管理する情報であり，少なくとも不揮発対象領域か否かを示す情報と障害発生時にデータが採取される格納対象領域であるか否かを示す情報とを有するメモリ管理情報と，トランスポート制御用プロセッサコアの障害か否かを示す情報とが記憶され，障害情報データ採取機能を有するプロセッサコアは，トランスポート制御用プロセッサコアの障害発生時に，メモリの不揮発対象領域でありかつ格納対象領域である領域に，トランスポート制御用プロセッサコアの障害情報を退避する手段と，トランスポート制御用プロセッサコアの障害か否かを示す情報にトランスポート制御用プロセッサコアの障害である旨を設定し，マルチコアプロセッサを再起動する手段と，再起動時に，トランスポート制御用プロセッサコアの障害か否かを示す情報がトランスポート制御用プロセッサコアの障害である旨を示している場合に，メモリ管理情報で格納対象領域に設定されているメモリの領域に記録されたデータを採取し，トランスポート制御用プロセッサコアを介して，システムディスクに格納する手段とを備えることを特徴とする。
【００２３】
これにより，マルチコアプロセッサを備えるディスクアレイ装置において，その１つのプロセッサコアがトランスポート制御用のプロセッサコアである場合に，そのトランスポート制御用のプロセッサコアで障害が発生しても，そのトランスポート制御用のプロセッサコアの障害情報を含むメモリダンプデータを，問題発生原因に関する有用な障害情報データとして自動的にシステムディスクに格納することができるようになる。
【００２４】
また，本発明は，上記のディスクアレイ装置において，トランスポート制御用プロセッサコアの障害情報を退避する手段は，トランスポート制御用プロセッサコアの障害情報を退避するメモリ上の領域を動的に確保し，確保された領域をメモリ管理情報に不揮発対象領域かつ格納対象領域として登録し，確保された領域にトランスポート制御用プロセッサコアの障害情報を退避することを特徴とする。
【００２５】
これにより，メモリにあらかじめトランスポート制御用プロセッサコアの障害情報を退避する領域を設定しておく必要がないので，通常動作時にメモリ領域を有効に活用することができるようになる。
【発明の効果】
【００２６】
本発明により，マルチコアプロセッサを備えるディスクアレイ装置において，その１つのプロセッサコアがトランスポート制御用のプロセッサコアである場合に，そのトランスポート制御用のプロセッサコアで障害が発生しても，そのトランスポート制御用のプロセッサコアの障害情報を含むメモリダンプデータを，問題発生原因に関する有用な障害情報データとして，トランスポート制御用のプロセッサコアを介して自動的にシステムディスクに格納することが可能となる。
【発明を実施するための最良の形態】
【００２７】
以下，本発明の実施の形態について，図を用いて説明する。
【００２８】
図１は，本発明の実施の形態によるディスクアレイ装置の構成例を示す図である。図１に示すディスクアレイ装置１０は，特にＣＭ１００の１つに着目した構成となっている。ディスクアレイ装置１０において，ＣＭ１００およびＣＭ１００’は，ホストＩ／Ｏ制御や装置保守制御などストレージシステム全体を管理するコンポーネントである。ＣＰＵ１１０は，ＣＭ１００を制御するプロセッサである。エキスパンダ３００は，ディスク（図示省略）が搭載されるＤＥ（図示省略）の監視・制御を行うコンポーネントである。なお，図１のディスクアレイ装置１０の例では，説明を簡単にするために，ＣＭ１００等の一部のコンポーネントしか記載されていないが，実際には様々なコンポーネントが冗長化されて複雑に関連した構成となっている。
【００２９】
システムディスク２００は，障害発生時に採取された障害情報データを，ディスクアレイ装置１０内部で格納するディスクである。システムディスク２００として専用のディスクが用意されていてもよいし，ユーザホストからのデータが格納されるディスクの一部領域があらかじめシステムディスク２００領域として設定されていてもよい。
【００３０】
ＣＭ１００において，ＣＰＵ１１０は，アプリケーションコア１１１とトランスポートコア１１２の２つのプロセッサコアを持つデュアルコアプロセッサである。アプリケーションコア１１１は，ホストＩ／Ｏ制御に関するＲＡＩＤ制御やコピー制御機能，装置保守制御などストレージシステム全体を管理するアプリケーションファームウェア１３０が載せられたプロセッサコアである。トランスポートコア１１２は，ホストインタフェースやディスクインタフェースにおけるＳＡＳ／ＳＡＴＡや，ＦＣのトランスポート層プロトコルを司るトランスポートファームウェア１７０が載せられたプロセッサコアである。
【００３１】
アプリケーションファームウェア１３０は，通常ルーチン１４０，障害情報格納ルーチン１５０，パワーオンルーチン１６０を持つ。通常ルーチン１４０は，ＣＭ１００の通常動作時に実行されているプログラムである。障害情報格納ルーチン１５０は，ＣＰＵ１１０の障害発生時に実行されるプログラムである。パワーオンルーチン１６０は，ＣＭ１００の起動時や再起動時に実行されるプログラムである。
【００３２】
ＣＰＵ１１０のメモリ１２０には，トランスポートファームウェア障害判定フラグ１２１と，メモリ管理テーブル１２２が記憶されている。トランスポートファームウェア障害判定フラグ１２１は，ＣＭ１００の起動時に，その起動がトランスポートファームウェアの障害発生による再起動か否かを示すフラグである。ここでは，“１”がトランスポートファームウェアの障害発生による再起動を示し，“０”がそれ以外を示す。メモリ管理テーブル１２２は，メモリ１２０の管理情報が記録されたテーブルである。
【００３３】
図２は，メモリ管理テーブルの例を示す図である。メモリ管理テーブル１２２は，メモリ１２０を領域ごとに管理するためのテーブルであり，ＣＭ１００の起動時に，メモリディスクリプタをもとに構築される。メモリディスクリプタでは，メモリ１２０上に割り当てる必要がある領域のサイズ等が指示されている。
【００３４】
メモリ管理テーブル１２２は，テーブル番号，プールネーム（Pool name ），アロケートアドレス（Allocate address），アロケートサイズ（Allocate size ），格納フラグ，不揮発フラグ等の情報を持つ。
【００３５】
テーブル番号は，メモリ管理テーブル１２２の各レコードに割り当てられた識別番号である。プールネームは，そのメモリ領域の名称を示す。アロケートアドレスは，そのメモリ領域のアドレスを示す。アロケートサイズは，そのメモリ領域のサイズを示す。
【００３６】
格納フラグは，そのメモリ領域がシステムディスク２００への格納対象領域であるか否かを示す情報である。ここでは，“１”がシステムディスク２００への格納対象領域であることを示し，“０”がシステムディスク２００への格納対象領域でないことを示す。システムディスク２００への格納対象領域に指定されたメモリ領域のデータは，障害発生時に，障害情報データとしてシステムディスク２００に転送される。
【００３７】
不揮発フラグは，そのメモリ領域が不揮発対象領域であるか否かを示す情報である。ここでは，“１”が不揮発対象領域であることを示し，“０”が不揮発対象領域でないことを示す。不揮発対象領域に指定されたメモリ領域は，トランスポートファームウェアの障害発生によるＣＭ１００の再起動時には初期化されず，データが保持される。逆に，不揮発対象領域に指定されていないメモリ領域は，トランスポートファームウェアの障害発生によるＣＭ１００の再起動時でも，初期化される。
【００３８】
図２に示すメモリ管理テーブルにおいて，プールネーム“ＳＹＳ−ＭＥＭ−ＤＥＳＣ”のメモリ領域が，メモリ管理テーブル１２２の領域である。図２に示すように，プールネーム“ＳＹＳ−ＭＥＭ−ＤＥＳＣ”の不揮発フラグは“１”であるので，トランスポートファームウェアの障害発生によるＣＭ１００の再起動時に初期化されない。すなわち，トランスポートファームウェアの障害発生によるＣＭ１００の再起動時には，メモリディスクリプタから新たにメモリ管理テーブル１２２を構築し直さず，再起動前のメモリ管理テーブル１２２がそのまま残ることになる。なお，特に図２には示されていないが，トランスポートファームウェア障害判定フラグ１２１が記録された領域も，不揮発対象領域に指定される。
【００３９】
図３は，アプリケーションファームウェアの各ルーチンの機能構成例を示す図である。障害情報格納ルーチン１５０は，障害情報格納状態通知処理部１５１，トランスポートファームウェア障害情報退避処理部１５２，ＣＭ再起動処理部１５３，障害情報データ格納処理部１５４を備える。
【００４０】
障害情報格納状態通知処理部１５１は，他のＣＭ１００’やエキスパンダ３００に，自ＣＭ１００のアプリケーションコア１１１が通常状態から障害情報格納状態に遷移したことを通知する処理を行う。トランスポートファームウェア障害情報退避処理部１５２は，トランスポートファームウェア１７０に障害が発生したときに，その障害情報をメモリ１２０に退避する処理を行う。ＣＭ再起動処理部１５３は，ＣＭ１００を再起動するための処理を行う。障害情報データ格納処理部１５４は，メモリ１２０の格納対象領域のデータを，障害情報データとしてシステムディスク２００に格納する処理を行う。
【００４１】
パワーオンルーチン１６０は，トランスポートファームウェア障害判定処理部１６１を備える。トランスポートファームウェア障害判定処理部１６１は，ＣＭ１００の起動が，トランスポートファームウェア１７０の障害発生による再起動か否かを判定する処理を行う。
【００４２】
ここで，図１から図３を用いて，本実施の形態によるトランスポートファームウェアの障害発生時の一連の動作の例を説明する。
【００４３】
トランスポートコア１１２におけるトランスポートファームウェア１７０の障害発生を検出したアプリケーションコア１１１は，通常状態から障害情報格納状態に遷移する。すなわち，アプリケーションコア１１１は，通常ルーチン１４０の処理を停止し，障害情報格納ルーチン１５０を起動する。障害情報格納ルーチン１５０の障害情報格納状態通知処理部１５１は，自ＣＭ１００のアプリケーションコア１１１が障害情報格納状態となったことを，他のＣＭ１００’やエキスパンダ３００等に通知する。
【００４４】
ＣＭ１００のアプリケーションコア１１１が障害情報格納状態となったことを他のＣＭ１００’やエキスパンダ３００等に通知する理由は，他のＣＭ１００’やエキスパンダ３００では，ＣＭ１００からの応答がなくなると，ＣＭ１００にハードウェア要因による障害が発生した可能性があると判断し，その危険性を回避するために応答がないＣＭ１００の切り離しを行ってしまうからである。ソフトウェア要因の障害が発生したＣＭ１００が障害情報格納状態になれば，その障害情報データの格納中に，他のＣＭ１００’やエキスパンダ３００から切り離されることはない。
【００４５】
障害が発生したＣＭ１００のアプリケーションコア１１１は，インターナルバスによる制御によって，障害が発生したトランスポートコア１１２からトランスポートファームウェア障害情報を採取し，メモリ１２０上に退避する。すなわち，障害情報格納ルーチン１５０のトランスポートファームウェア障害情報退避処理部１５２は，メモリ１２０上の退避領域を指定する情報を含むトランスポートファームウェア障害情報の採取指示を，トランスポートコア１１２に送る。
【００４６】
図２に示すメモリ管理テーブル１２２において，プールネーム“ＴＦＷ−ＩＮＦＯ”が，トランスポートファームウェア障害情報の退避領域を示している。図２に示すように，プールネーム“ＴＦＷ−ＩＮＦＯ”の不揮発フラグは“１”であるので，トランスポートファームウェア障害情報の退避領域は，トランスポートファームウェアの障害発生によるＣＭ１００の再起動時に初期化されない。また，プールネーム“ＴＦＷ−ＩＮＦＯ”の格納フラグは“１”であるので，そのメモリ領域に退避されたトランスポートファームウェア障害情報は，障害情報データとしてシステムディスク２００に格納される。
【００４７】
メモリ１２０上のトランスポートファームウェア障害情報を退避する領域は，あらかじめ設定されていてもよいし，動的に確保するようにしてもよい。トランスポートファームウェア障害情報を退避する領域をあらかじめ設定しておく場合には，メモリディスクリプタで指示しておけばよい。
【００４８】
トランスポートファームウェア障害情報を退避する領域を動的に確保する場合には，障害情報格納ルーチン１５０のトランスポートファームウェア障害情報退避処理部１５２が，メモリ管理テーブル１２２を参照し，ファストブート（Fastboot）等の制御に影響を及ぼさず，システムディスク２００への格納対象領域になっていない（格納フラグが“０”）メモリ１２０上の領域を確保し，トランスポートファームウェア障害情報を退避する領域とする。このとき，メモリ管理テーブル１２２にトランスポートファームウェア障害情報を退避する領域のレコードを生成し，その格納フラグ，不揮発フラグをともに“１”に設定する。
【００４９】
障害情報格納ルーチン１５０のＣＭ再起動処理部１５３は，メモリ１２０上の不揮発対象領域のトランスポートファームウェア障害判定フラグ１２１を“１”に設定し，他のＣＭ１００’やエキスパンダ３００に自ＣＭ１００のリセットを依頼する。リセットの依頼を受けた他のＣＭ１００’やエキスパンダ３００は，リセットの依頼を行った障害発生ＣＭ１００をリセットする。
【００５０】
リセットを受けた障害発生ＣＭ１００では，アプリケーションコア１１１，トランスポートコア１１２がそれぞれ再起動する。このとき，アプリケーションコア１１１は，ファストブート起動を行う。ファストブート起動により，メモリ管理テーブル１２２で不揮発対象領域（不揮発フラグが“１”）に指定されたメモリ１２０上の領域のデータが，初期化されずに残された状態でＣＭ１００を起動することができる。
【００５１】
パワーオンルーチン１６０のトランスポートファームウェア障害判定処理部１６１は，問題発生原因に関する有用な障害情報が触られない起動の早い段階で，トランスポートファームウェア障害判定フラグ１２１を確認し，トランスポートファームウェア障害判定フラグ１２１が“１”である場合には，それを“０”にした後，障害情報格納ルーチン１５０をトランスポートファームウェア障害の旨で呼び出す。なお，トランスポートファームウェア障害判定フラグが“０”であった場合には，通常のパワーオン処理の後，通常ルーチン１４０を呼び出す。
【００５２】
トランスポートコア１１２がリセットされ，動作可能な状態となっているため，アプリケーションコア１１１は，システムディスク２００にアクセスすることができる。障害情報格納ルーチン１５０の障害情報データ格納処理部１５４は，トランスポートファームウェア障害によるＣＭ１００の再起動を確認すると，メモリ管理テーブル１２２を参照し，格納フラグが“１”であるメモリ領域に保持されているメモリ１２０上のデータを，障害情報データとしてシステムディスク２００に格納する。このときシステムディスク２００に格納されるデータには，トランスポートファームウェア障害情報が含まれている。
【００５３】
なお，障害がアプリケーションファームウェアの通常ルーチン１４０で発生した場合には，障害情報格納ルーチン１５０において，トランスポートファームウェア障害情報の退避や，ＣＭ１００の再起動を行わずに，障害情報データ格納処理部１５４が，メモリ管理テーブル１２２で格納フラグが“１”であるメモリ領域に保持されているメモリ１２０上のデータを，障害情報データとしてシステムディスク２００に格納する。
【００５４】
以下，図４〜図６のフローチャートを用いて，本実施の形態におけるトランスポートファーム障害発生時の一連の処理の流れを説明する。
【００５５】
図４は，アプリケーションコアによるトランスポートファームウェア障害発生時における障害情報格納処理フローチャート（１）である。図４のフローチャートに示す処理は，障害情報データのシステムディスク２００への格納のための準備段階の処理である。
【００５６】
アプリケーションコア１１１は，トランスポートファームウェア１７０の障害発生を検出すると（ステップＳ１０），それまでの通常状態から障害情報格納状態に遷移する（ステップＳ１１）。このとき，自らが障害情報格納状態であることを，他のＣＭ１００’やエキスパンダ３００等に通知する（ステップＳ１２）。
【００５７】
メモリ管理テーブル１２２を参照し，他の制御に影響がなく，格納フラグが“０”であるメモリ１２０上の領域を，トランスポートファームウェア障害情報退避領域として確保し（ステップＳ１３），確保された領域を，格納フラグ“１”，不揮発フラグ“１”でメモリ管理テーブル１２２に登録する（ステップＳ１４）。トランスポートファームウェア障害情報を，トランスポートコア１１２からトランスポートファームウェア障害情報退避領域に退避する（ステップＳ１５）。
【００５８】
トランスポートファームウェア障害判定フラグ１２１を“１”に設定し（ステップＳ１６），自ＣＭ１００をファストブートで再起動する（ステップＳ１７）。
【００５９】
図５は，アプリケーションコアによるトランスポートファームウェア障害発生時における障害情報格納処理フローチャート（２）である。図５のフローチャートに示す処理は，ＣＭ１００再起動段階の処理である。実際には，さまざまな初期化処理が行われるが，ここでは，トランスポートファームウェア障害判定処理についてのみ説明する。
【００６０】
アプリケーションコア１１１は，ファストブート起動が行われると，初期化処理の比較的早い段階で，トランスポートファームウェア障害判定フラグ１２１を確認する（ステップＳ２０）。トランスポートファームウェア障害判定フラグ１２１が“１”でなければ（ステップＳ２１），通常通りの初期化処理を行い，通常ルーチン１４０に移る。トランスポートファームウェア障害判定フラグ１２１が“１”であれば（ステップＳ２１），トランスポートファームウェア障害判定フラグ１２１を“０”に設定し（ステップＳ２２），その他必要な初期化処理を行い，障害情報格納ルーチン１５０に移る。
【００６１】
図６は，アプリケーションコアによるトランスポートファームウェア障害発生時における障害情報格納処理フローチャート（３）である。図６のフローチャートに示す処理は，トランスポートファームウェア障害情報を含む障害情報データのシステムディスク２００への格納段階の処理である。
【００６２】
アプリケーションコア１１１は，ＣＭ１００再起動後に障害情報格納ルーチン１５０の動作に移ると，メモリ管理テーブル１２２を確認し（ステップＳ３０），メモリ１２０上の格納フラグが“１”に設定されているメモリ領域のデータを，システムディスク２００に格納する（ステップＳ３１）。
【００６３】
以上，本発明の実施の形態について説明したが，本発明はこれに限るものではない。例えば，本実施の形態では，１つのプロセッサコアがトランスポート制御用のプロセッサコアであるデュアルコアプロセッサ構成について説明したが，１つのプロセッサコアがトランスポート制御用のプロセッサコアである３つ以上のプロセッサコアを持つマルチコアプロセッサ構成であってもよい。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施の形態によるディスクアレイ装置の構成例を示す図である。
【図２】メモリ管理テーブルの例を示す図である。
【図３】アプリケーションファームウェアの各ルーチンの機能構成例を示す図である。
【図４】アプリケーションコアによるトランスポートファームウェア障害発生時における障害情報格納処理フローチャート（１）である。
【図５】アプリケーションコアによるトランスポートファームウェア障害発生時における障害情報格納処理フローチャート（２）である。
【図６】アプリケーションコアによるトランスポートファームウェア障害発生時における障害情報格納処理フローチャート（３）である。
【図７】故障発生時の障害情報データの採取を説明するための図である。
【図８】本発明の課題を説明する図である。
【符号の説明】
【００６５】
１０  ディスクアレイ装置
１００，１００’  ＣＭ
１１０  ＣＰＵ
１１１  アプリケーションコア
１１２  トランスポートコア
１２０  メモリ
１２１  トランスポートファームウェア障害判定フラグ
１２２  メモリ管理テーブル
１３０  アプリケーションファームウェア
１４０  通常ルーチン
１５０  障害情報格納ルーチン
１５１  障害情報格納状態通知処理部
１５２  トランスポートファームウェア障害情報退避処理部
１５３  ＣＭ再起動処理部
１５４  障害情報データ格納処理部
１６０  パワーオンルーチン
１６１  トランスポートファームウェア障害判定処理部
１７０  トランスポートファームウェア
２００  システムディスク
３００  エキスパンダ
【図１】
2008262438.tif 000003
【図２】
2008262438.tif 000004
【図３】
2008262438.tif 000005
【図４】
2008262438.tif 000006
【図５】
2008262438.tif 000007
【図６】
2008262438.tif 000008
【図７】
2008262438.tif 000009
【図８】
2008262438.tif 000010