(57)【要約】      （修正有）【課題】ホストを介することなくファームウェアコードの更新を行うことのできる記憶装置を提供する。【解決手段】ネットワーク接続された複数の記憶装置から構成されるストレージシステムにおいて、第一の記憶装置が動作を開始する際に、第一の記憶装置を制御する制御プログラムのデータが破壊されているか否かを診断する。第一記憶装置の制御プログラムのデータが破壊されている場合、ネットワークに制御プログラムのデータが破壊されていることを表す信号を送信する。信号を受信したネットワーク上の第二の該記憶装置が、第一の記憶装置が記憶している制御プログラムと同一の制御プログラムを記憶しているか否かを判定し、同一の制御プログラムを記憶している場合、第二の記憶装置が第一の記憶装置へ制御プログラムを送信する。第一の記憶装置は、第二の記憶装置から受信した制御プログラムで破壊された制御プログラムを書き換える。【選択図】図１
2010039873.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク接続された複数の記憶装置から構成されるストレージシステムの制御方法において、
該記憶装置を起動する起動プログラムを実行することにより、該記憶装置を制御する該制御プログラムを構成するデータが破壊されているか否かを検出し、
該制御プログラムを構成するデータが破壊されている場合、該ネットワークを構成する記憶装置を検出し、
該検出された記憶装置へ該制御プログラムを構成するデータが破壊されていることを表す信号を送信し、
該信号を受信した場合、該信号を送信した記憶装置を特定する第一の特定情報と該信号を受信した記憶装置を特定する第二の特定情報とを比較することにより、該信号を送信した記憶装置と該信号を受信した記憶装置とが同一種類であるか否かを判定し、
同一種類である場合、該信号を送信した記憶装置へ該信号を受信した記憶装置が記憶する制御プログラムを送信し、
該信号を送信した記憶装置に該送信した制御プログラムを記憶させることを特徴とするストレージシステムの制御方法。
【請求項２】
該起動プログラムは、該記憶装置の書き込み不可能な領域に記憶されていることを特徴とする請求項１記載のストレージシステムの制御方法。
【請求項３】
該信号を送信した記憶装置は、該信号を受信した記憶装置が記憶する制御プログラムを受信すると、該受信した制御プログラムを記憶することを特徴とする請求項１記載のストレージシステムの制御方法。
【請求項４】
情報を伝送するネットワークと、
情報を記憶する記憶部に記憶された起動プログラムを実行することにより、第一の記憶媒体に記憶された制御プログラムを構成するデータが破壊されているか否かを検出し、該制御プログラムを構成するデータが破壊されている場合に、破壊されていることを表す信号を該ネットワークに送信する第一の処理部を有する第一の記憶装置と、
該ネットワークに接続され、該第一の記憶装置から該信号を受信した場合、該第一の記憶装置を特定する特定情報に基づいて、該第一の記憶装置が同一種類の装置であるか否かを判定し、同一種類である場合、該第一の記憶装置へ第二の記憶媒体に記憶された制御プログラムを送信する第二の処理部とを有する第二の記憶装置とを有し、
該第一の記憶装置は、該第二の記憶装置から送信された制御プログラムを記憶させることを特徴とするストレージシステム。
【請求項５】
該起動プログラムは、書き込み不可能な領域に記憶されていることを特徴とする請求項４記載のストレージシステム。
【請求項６】
該第一の記憶装置は、該第二の記憶装置から制御プログラムを受信すると、該受信した制御プログラムを記憶することを特徴とする請求項４記載のストレージシステム。
【請求項７】
情報を処理する処理部を制御する制御プログラムを記憶する複数の記憶装置から構成されるネットワークに接続される記憶装置において、
該記憶装置を起動する起動プログラムを実行することにより、該記憶装置を制御する制御プログラムを構成するデータが破壊されているか否かを検出し、該制御プログラムを構成するデータが破壊されている場合、該ネットワークを構成する記憶装置のうち該破壊された制御プログラムを有する記憶装置と同種類の記憶装置から制御プログラムを取得し、該取得した制御プログラムを該記憶媒体に書き込む処理部と、
を有することを特徴とする記憶装置。
【請求項８】
該起動プログラムは、該記憶装置の書き込み不可能な領域に記憶されていることを特徴とする請求項７記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク接続された複数の記憶装置から構成されるストレージシステムに関する。
【背景技術】
【０００２】
記憶装置の１つである磁気ディスク装置を制御するファームウェアコードはフラッシュメモリ及び磁気ディスク媒体に格納されている。ファームウェアコードは電源投入時にフラッシュメモリからＲＡＭに展開され、ＭＰＵはＲＡＭ上のプログラムコードを読み込み実行する。フラッシュメモリは高価であるため、一般的に記憶容量が小さいものが使用される。このため、フラッシュメモリには、スピンドルモータを回して、磁気ディスクに記録されているファームウェアコードを読み込むまでに使用する必要最低限のファームウェアコードしか格納されていない。磁気ディスク装置の制御には、磁気ディスクから読み出されたファームウェアコードが使用される。
【０００３】
磁気ディスク装置にファームウェア動作に起因する不具合が生じた場合、ファームウェアコードを更新して磁気ディスク装置に生じた不具合に対応するため、ファームウェアコードの更新が必要となることがある。ファームウェアコードを更新する場合、ホストは新しいファームウェアコードを磁気ディスク装置に送信する。そして、フラッシュメモリに格納されたファームウェアコードと磁気ディスク媒体に格納されたファームウェアコードは書き換えられる。当該更新作業はファームウェア・ダウンロードと呼ばれる。
【０００４】
ファームウェア・ダウンロード中、システムの電源切断事故やホストの不具合によってダウンロードが中断されると、フラッシュメモリ等に格納されているファームウェアコード途中までしか書き換えられない。フラッシュメモリに格納されているファームウェアコードは書き換えが不完全であるため、磁気ディスク装置は正常に起動できなくなる。磁気ディスク装置を正常に起動できないと、ホストからファームウェアコードを受信することができなくなってしまう。そのため、磁気ディスク装置の復旧作業は、自動操作ではなく手動操作による作業となり、復旧させるまでに時間がかかってしまう。ストレージシステムの様に高可用性が重視されるシステムでは、システムの保守に要する時間の短縮化が求められている。
【０００５】
先行技術文献としては、下記のものがある。
【特許文献１】特開２００１−２１６１６６号公報
【特許文献２】特開２００４−０５４４２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、ホストを介することなくファームウェアコードの更新を行うことのできる記憶装置を提供することである。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、ネットワーク接続された複数の記憶装置から構成されるストレージシステムの制御方法は、該ネットワーク上の第一の該記憶装置が動作を開始する際に、該第一の記憶装置を制御する制御プログラムのデータが破壊されているか否かを診断し、該第一記憶装置の該制御プログラムのデータが破壊されている場合、該ネットワークに該制御プログラムのデータが破壊されていることを表す信号を送信し、該信号を受信した該ネットワーク上の第二の該記憶装置が、該第一の記憶装置が記憶している制御プロ
グラムと同一の制御プログラムを記憶しているか否かを判定し、同一の制御プログラムを記憶している場合、該第二の記憶装置が該第一の記憶装置へ制御プログラムを送信し、該第一の記憶装置は、該第二の記憶装置から受信した制御プログラムで破壊された制御プログラムを書き換えることを特徴とする。
【発明の効果】
【０００８】
本実施形態の一側面によれば、ファームウェアコードに異常があった場合、ネットワーク接続された他の磁気ディスク装置から受信したファームウェアコードで修正することができる。
【発明を実施するための最良の形態】
【０００９】
以下に図面を用いて本実施形態について説明する。図１は、本実施形態における磁気ディスク装置から構成されるストレージシステムを表す。図１に表すように、ストレージシステムは複数の磁気ディスク装置１００Ａ〜１００Ｏ、１００ａ〜１００ｏから構成さる。ここで、各磁気ディスク装置１００に付したアルファベットは、各磁気ディスク装置を区別するために付されている。各磁気ディスク装置１００を接続するネットワーク技術として、光ファイバを利用したネットワークを使用する。光ファイバケーブル上でのインタフェース規格としてファイバチャネルがある。本実施形態におけるシステムでは、各磁気ディスク装置１００は、ネットワークに自身の機種と同種類の磁気ディスク装置を少なくともなくとも１つ有する。ホスト２００は、ポートＡまたはポートＢを通じて、各磁気ディスク装置１００にコマンドを送信する。ポートＡには、磁気ディスク装置１００Ａ〜１００Ｏが接続され、ポートＢには、磁気ディスク装置１００ａ〜１００ｏが接続されている。
【００１０】
フラッシュメモリ１１４は、起動コード１１４２及び第一ファームウェアコード１１４４を格納する。磁気ディスク１２０には、第二ファームウェアコード１２０２が格納される。第一ファームウェアコード１１４４は、磁気ディスク装置１００を初期化するためのコードである。また、第一ファームウェアコード１１４４は、ＤＳＰ１１３に演算処理を実行させるためのコードでもある。一方、第二ファームウェアコード１２０２は、磁気ディスク装置１００を制御するためのコードであり、ホスト２００から命令の受信、データのリード／ライトを行うためのコードである。
【００１１】
起動コード１１４２は、磁気ディスク装置１００を起動するための制御コードである。起動コード１１４２には、第一ファームウェアコード１１４４または第二ファームウェアコード１２０２が破壊されている場合、ネットワークに参加して、当該起動コード１１４２を有する磁気ディスク装置と同機種の磁気ディスク装置を検出する機能を実装する。また、さらに、起動コード１１４２には、同機種の磁気ディスク装置から制御ファームウェアコードを受信してデータバッファ１１８に格納し、磁気ディスク装置の再起動後、データバッファ１１８に格納したファームウェアコードに制御を移す機能を実装する。起動コード１１４２が格納されているフラッシュメモリ１１４の領域は、工場出荷後は書き換えを禁止する。当該領域を書き換え禁止にすることで、ファームウェア・ダウンロード中に、電源切断事故が発生したとしても、起動コード１１４２が破壊されることはない。起動コード１１４２には、システムの電源が投入されたら、フラッシュメモリ１１４の書き換え可能な領域に格納されている第一ファームウェアコード１１４４及び磁気ディスク１２０に格納されている第二ファームウェアコード１２０２が破壊されているか否かを診断する機能を実装する。一方、第一ファームウェアコード１１４４が格納されているフラッシュメモリ１１４の領域は、書き換え可能にしておく。当該領域を書き換え可能にしておくことで、ＤＳＰ１１３にバグが生じた場合などに、第一ファームウェアコード１１４４を更新することで、バグに対応することができる。
【００１２】
データバッファ１１８に格納されたファームウェアコードで起動した後は、通常のＷｒｉｔｅ Ｂｕｆｆｅｒの処理にしたがって、フラッシュメモリ１１４と磁気ディスク１２０にファームウェアコードを記録し直す。
【００１３】
また、ファームウェアコードが壊れていない完全稼働の状態においては、制御コードが破壊されている磁気ディスク装置からログインを受信すると、ログインコマンドとともに受信したデバイス情報から自分と同一機種であることを認識する。次に、その磁気ディスク装置に対して（ＡＣＫ：ＡＣＫｎｏｗｌｅｄｇｅ）の応答後、続けてライト・バッファ（Ｗｒｉｔｅ Ｂｕｆｆｅｒ）とファームウェアコードを送信する。なお、ＡＣＫ及びＷｒｉｔｅ Ｂｕｆｆｅｒは、信号である。
【００１４】
図２は、本実施形態における磁気ディスク装置１００を表す。図２において、磁気ヘッド（図示せず）は、ボイスコイルモータ（ＶＣＭ：Ｖｏｉｃｅ  Ｃｏｉｌ  Ｍｏｔｏｒ）１０２に設けられたアーム（図示せず）の先端に取り付けられる。磁気ヘッドは、リード素子とライト素子とが分離された複合ヘッドで構成される。
【００１５】
リードチャネル回路（ＲＤＣ）１０４は、プリアンプ１０６からの磁気ヘッドの読み取り信号を信号整形し、同期クロックの作成、ゲート信号の作成及び読み取り信号の出力を行う。
【００１６】
サーボコンボ回路（ＳＶＣ）１０８は、マイクロコントローラユニット（ＭＣＵ：Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）１１０から駆動指令値を受け取り、駆動指令値に応じた駆動電流を出力して、ＶＣＭ１０２を駆動する。スピンドルモータ（ＳＰＭＴ：Ｓｐｉｎｄｌｅ  Ｍｏｔｏｒ）１０３の回転軸には、磁気ディスク（図示せず）が装着される。ＳＰＭＴ１０３によって、磁気ディスクの回転が実現される。
【００１７】
ＭＣＵ１１０は、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｏｒ）とサーボコントローラとで構成され、ドライブインタフェース回路（ＤＩＬ：Ｄｒｉｖｅ  Ｉｎｔｅｒｆａｃｅ  Ｌｏｇｉｃ）１１２を介して取得したリードチャネル回路１０４からの読み取り信号から得た位置情報を復調して、現在位置を検出し、検出した現在位置と目標位置との誤差に従い、ＶＣＭ駆動指令値を演算する。即ち、シーク、フォローイングを含むサーボ制御を行う。また、ＭＣＵ１１０は、コマンドの解析、装置の状態監視及び装置の各部の制御を行う。デジタルシグナルプロセッサ（ＤＳＰ：Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１３は、磁気ディスク装置１００を制御するためのコードを演算し、磁気ディスク装置１００を制御する。
【００１８】
フラッシュメモリ１１４は、起動コード１１４２及び第一ファームウェアコード１１４４を格納する。起動コード１１４２は、ＭＣＵ１１０に備えられたＲＡＭに展開され、実行される。起動コード１１４２が実行されると、次は第一ファームウェアコード１１４４がＭＣＵ１１０に備えられたＲＡＭに展開され、実行される。第一ファームウェアコード１１４４が実行されることで、ＳＰＭＴ１０３が回転し、磁気ディスク１２０に格納されている第二ファームウェアコードがＭＣＵ１１０に備えられたＲＡＭに展開され、実行される。第二ファームウェアコードが実行されることで、ホスト２００からの命令の受信、データのリード／ライト等が行われる。
【００１９】
ハードディスクコントローラ（ＨＤＣ：Ｈａｒｄ  Ｄｉｓｃ  Ｃｏｎｔｒｏｌｌｅｒ）１１６は、ホスト２００との通信を行うとともに、リードチャネル回路１０４からのゲート信号、クロックに応じて、リードチャネル回路１０４からのリードデータを受け、データバッファ１１８に格納後、ホスト２００へ転送する。また、ＨＤＣ１１６は、リードチャネル回路１０４のゲート信号、クロックに応じて、ホストからのライトデータをリード
チャネル回路１０４に出力する。
【００２０】
図２の構成では、ＨＤＣ１１６が、ホスト２００とのデータの送受信を行い、ＳＶＣ１０８が、磁気ヘッドのシーク、フォローイングのためのＶＣＭ１０２の駆動電流を出力し、ＭＣＵ１１０が、ＨＤＣ１１６が受信したコマンドに従い、シーク、フォローイングを含めた各部を制御する処理を行う。
【００２１】
図３は、ネットワークの初期化処理を表す。本実施形態では、磁気ディスク装置１００Ｅのファームウェアコードが破壊されたため、起動ができなかった場合について説明する。
【００２２】
磁気ディスク装置１００Ｅの起動コード１１４２が実行されることにより、磁気ディスク装置１００Ｅはネットワークへの接続を開始する。ネットワークは、ループ構成になっており、同一ループ内に複数の磁気ディスク装置が接続されている。システムの電源投入後は、ループ構成はリセットされるため、ループ上の各磁気ディスク装置はループ・イニシャライズ・プリミティブ（ＬＩＰ：Ｌｏｏｐ  Ｉｎｉｔｉａｌｉｚｅ  Ｐｒｉｍｉｔｉｖｅ）を送信することでループ初期化手順に移行し、当該ループ初期化手順の完了をもってネットワークを構成する磁気ディスク装置のアドレスを取得する。なお、ＬＩＰは、ネットワークを構成する各磁気ディスク装置に対してループ初期化手順に移行することを通知する信号である。
【００２３】
図４は、ネットワークの初期化処理完了後の処理を表す。ネットワークの初期化が完了すると、ファームウェアコードが壊れている磁気ディスク装置１００Ｅはネットワークに参加している磁気ディスク装置の存在をアービトレイテッド・ループ・フィジカル・アドレス・マップ（ＡＬＰＡ ＭＡＰ：Ａｒｂｉｔｒａｔｅｄ  Ｌｏｏｐ  Ｐｈｙｓｉｃａｌ
Ａｄｄｒｅｓｓ  Ｍａｐ）１３０によって確認することができる。ＡＬＰＡ ＭＡＰ１３０には磁気ディスク装置のネットワーク上のアドレスが一覧になっている。ＡＬＰＡ ＭＡＰ１３０は、例えば、図４に表すように、ネットワーク上の磁気ディスク装置の名称とアドレスとが対応付けられている。各磁気ディスク装置１００は、ＡＬＰＡ ＭＡＰ１３０を参照し、ネットワークを構成する磁気ディスクから同種類の磁気ディスク装置を検出し、検出した磁気ディスク装置からファームウェアを取得する。ＡＬＰＡ ＭＡＰ１３０は、バッファ１１８に備えられる。
【００２４】
磁気ディスク装置１００Ｅは、ＡＬＰＡ ＭＡＰ１３０を参照して、例えば、任意の磁気ディスク装置１００Ａに対してログインコマンドを送信し、ログインを試みる。ここで、ログインは、例えば、ＡＬＰＡ ＭＡＰ１３０の上段に記載されている磁気ディスク装置Ａから順番に、磁気ディスク装置Ｂ、磁気ディスク装置Ｃを対象として試みればよい。磁気ディスク装置１００Ｅは、ログインコマンドの中に磁気ディスク装置からのログインであることを表すビット（ｂｉｔ）を立てる。そして、磁気ディスク装置１００Ｅは、ｂｉｔを含んだログインコマンドを送信する。磁気ディスク装置１００Ａは、当該ｂｉｔを含むログインコマンドを受信すると、ログイン元がホスト２００ではなく磁気ディスク装置であることを認識する。そして、磁気ディスク装置１００Ａは、ログイン元の磁気ディスク装置１００ＥにＡＣＫを送信する。
【００２５】
図５及び図６は、ライトバッファ処理を表す。図５に表すように、磁気ディスク装置１００Ａは、ログイン元の磁気ディスク装置１００Ｅがファームウェアデータを要求していることを認識するため、磁気ディスク装置１００Ｅに対してＷｒｉｔｅ Ｂｕｆｆｅｒを送信する。磁気ディスク装置１００Ｅは、Ｗｒｉｔｅ Ｂｕｆｆｅｒを受信すると、トランスファー・レディ（Ｔｒａｎｓｆｅｒ Ｒｅａｄｙ）を磁気ディスク装置１００Ａに対して送信し、必要な転送長を要求する。なお、Ｔｒａｎｓｆｅｒ Ｒｅａｄｙは必要な転送
長さを要求するための信号である。
【００２６】
そして、図６に表すように磁気ディスク装置１００Ａはファームウェアデータの磁気ディスク装置１００Ｅへの転送を開始する。ファームウェアのデータ転送完了後、データを受信した磁気ディスク装置１００Ｅは受信したファームウェアによって再起動を開始し、フラッシュメモリ１１４、磁気ディスク１２０へのファームウェアの書き込みを再開する。
【００２７】
図７は、リカバリ対象の磁気ディスク装置１００Ｅにおけるファームウェア更新処理のフローチャートを表す。
【００２８】
ステップＳ１０１において、ＭＣＵ１１０は、起動コード１１４２をＭＣＵ１１０に設けられたＲＡＭに展開することにより、起動コード１１４２を実行する。起動コード１１４２が当該ＲＡＭに展開されることにより、起動コードに実装された機能が実現される。ＭＣＵ１１０は、フラッシュメモリ１１４に格納された第一ファームウェアコード１１４４及び磁気ディスク１２０に格納された第二ファームウェアコード１２０２が破壊されているか否かを判定することができるようになる。ＭＣＵ１１０は、ファームウェアコードが破壊されているか否かを判定する。具体的には、ファームウェアコードに付加された誤り検出符号とファームウェアコードから生成した誤り検出符号とを比較し、ファームウェアコードに付加された誤り検出符号とファームウェアコードから生成した誤り検出符号とが一致するか否かを判定することで行う。誤り検出符号の生成アルゴリズムとして、例えば巡回冗長検査（ＣＲＣ：Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）等の任意のアルゴリズムを使用すれば良い。誤り検出符号の比較の結果、ファームウェアコードが破壊されていないと判定した場合、処理はステップＳ１０２へ移行する。
【００２９】
ステップＳ１０２において、ＭＣＵ１１０は、ＭＣＵ１１０に設けられたＲＡＭに第一ファームウェアコード１１４４を展開することにより、フラッシュメモリ１１４に格納された第一ファームウェアコード１１４４を起動する。処理は終了する。
【００３０】
一方、ステップＳ１０１において、誤り検出符号の比較の結果、ファームウェアコードが破壊されていると判定した場合、処理はステップＳ１０３へ移行する。
【００３１】
ステップＳ１０３において、ネットワークの初期化が行われる。具体的には、ＭＣＵ１１０は、ＬＩＰを送信し、ネットワークを構成する磁気ディスク装置を検出する。さらに、ＭＣＵ１１０は、ネットワークを構成する磁気ディスク装置のアドレスをＡＬＰＡ ＭＡＰ１３０に書き込む。処理はステップＳ１０４へ移行する。
【００３２】
ステップＳ１０４において、ＭＣＵ１１０は、ステップＳ１０３において、ネットワークを構成する磁気ディスク装置のアドレスが書き込まれたＡＬＰＡ ＭＡＰ１３０を参照し、ネットワークを構成する任意の磁気ディスク装置に対してログインを行う。ログインは、磁気ディスク装置からのログインであることを表すｂｉｔを立てたログインコマンドを任意の磁気ディスク装置に対して、送信することで行う。処理はステップＳ１０５へ移行する。
【００３３】
ステップＳ１０５において、ＭＣＵ１１０は、任意の磁気ディスク装置に対してのログインが成功したか否かを判定する。ログインに成功した場合、ログイン先の磁気ディスク装置からログインが成功したことを表すＡＣＫがログイン元の磁気ディスク装置に送信される。ＭＣＵ１１０は、ＡＣＫが送信されてきたか否かを判定することで、ログインが成功したか否かを判定する。ログインに失敗した場合は、処理はステップＳ１０６へ移行する。
【００３４】
ステップＳ１０５において、ＭＣＵ１１０は、ＡＬＰＡ ＭＡＰ１３０を参照し、ログインを実行していない磁気ディスク装置が存在するか否かを判定する。ログインを実行していない磁気ディスク装置が存在しない場合、処理はステップＳ１１１へ移行する。
【００３５】
ステップＳ１１１において、ＭＣＵ１１０は、リカバリを失敗したと判定する。処理は終了する。
【００３６】
一方、ステップＳ１０５において、ログインを実行していない磁気ディスク装置が存在する場合、新たな磁気ディスク装置に対してログインを実行するために、処理はステップＳ１０４に戻る。
【００３７】
ステップＳ１０５において、ログインに成功した場合、処理はステップＳ１０７へ移行する。
【００３８】
ステップＳ１０７において、ＭＣＵ１１０は、ログイン先の磁気ディスク装置からＷｒｉｔｅ Ｂｕｆｆｅｒを受信する。処理はステップＳ１０８へ移行する。
【００３９】
ステップＳ１０８において、ＭＣＵ１１０は、ログイン先の磁気ディスク装置にＴｒａｎｓｆｅｒ Ｒｅａｄｙを送信し、必要なデータ転送長を要求する。処理はステップＳ１０９へ移行する。
【００４０】
ステップＳ１０９において、ＭＣＵ１１０は、ログイン先の磁気ディスク装置からファームウェアデータを受信する。ＭＣＵ１１０は、受信したファームウェアをデータバッファ１１８に格納する。処理はステップＳ１１０へ移行する。
【００４１】
ステップＳ１１０において、ＭＣＵ１１０は、リカバリ処理を実行する。具体的には、ＭＣＵ１１０は、起動コード１１４２によって、装置の再起動を行い、データバッファ１１８に格納したファームウェアに制御を移す。データバッファ１１８に格納したファームウェアによって装置が起動された後、ＭＣＵ１１０は、フラッシュメモリ１１４、磁気ディスク１２０へのファームウェアの書き込みを開始する。処理は終了する。
【００４２】
図８は、磁気ディスク装置１００Ａにおけるファームウェア送信処理のフローチャートを表す。
【００４３】
ステップＳ２０１において、磁気ディスク装置１００は、ネットワーク上の他の磁気ディスク装置１００からログインコマンドを受信する。処理はステップＳ２０２へ移行する。
【００４４】
ステップＳ２０２において、磁気ディスク装置１００は、受信したログインコマンドに含まれるベンダー・アイディー（ＶＩＤ：Ｖｅｎｄｅｒ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ
Ｄａｔａ）と磁気ディスク装置１００のＶｅｎｄｅｒ ＩＤとを比較し、受信したログインコマンドに含まれるＶｅｎｄｅｒ ＩＤと磁気ディスク装置１００のＶｅｎｄｅｒ ＩＤとが一致するか否かを判定する。受信したログインコマンドに含まれるＶｅｎｄｅｒ ＩＤと磁気ディスク装置１００のＶｅｎｄｅｒ ＩＤとが一致しない場合、磁気ディスク装置１００Ａはログイン対象を他社製のホスト２００であると判断し、処理はステップＳ２０３へ移行する。
【００４５】
ステップＳ２０３において、磁気ディスク装置１００は、ホスト２００にＡＣＫを送信する。処理は終了する。
【００４６】
一方、Ｓ２０２において、受信したログインコマンドに含まれるＶｅｎｄｅｒ ＩＤと磁気ディスク装置１００のＶｅｎｄｅｒ ＩＤとが一致する場合、処理はステップＳ２０４へ移行する。
【００４７】
ステップＳ２０４において、磁気ディスク装置１００は、受信したログインコマンドに磁気ディスク装置からのログインであることを表すｂｉｔが含まれているか否かを判定する。ログインコマンドに当該ｂｉｔが含まれていない場合、処理はステップＳ２０５へ移行する。
【００４８】
ステップＳ２０５において、磁気ディスク装置１００は、受信したログインコマンドに磁気ディスク装置からのログインであることを表すｂｉｔが含まれていないため、ログインコマンドの送信元はホスト２００であると判定することができる。磁気ディスク装置１００は、ホスト２００にＡＣＫを送信する。処理は終了する。
【００４９】
一方、ステップＳ２０４において、磁気ディスク装置１００は、受信したログインコマンドに磁気ディスク装置からのログインであることを表すｂｉｔが含まれていると判定した場合、処理はステップＳ２０６に移行する。
【００５０】
ステップＳ２０６において、磁気ディスク装置１００は、受信したログインコマンドに磁気ディスク装置からのログインであることを表すｂｉｔが含まれているため、ログインコマンドの送信元は磁気ディスク装置であると判定することができる。磁気ディスク装置１００は、受信したログインコマンドからログインコマンドの送信元の磁気ディスク装置の機種に関する情報を取得し、ログインコマンドの送信元の磁気ディスク装置の機種と、自身の機種とが同一であるか否かを判定する。ログインコマンドの送信元の磁気ディスク装置の機種が、自身の機種と同一でない場合、処理はステップＳ２０７へ移行する。
【００５１】
ステップＳ２０７において、磁気ディスク装置１００は、ログインコマンドの送信元の磁気ディスク装置の機種が、自身の機種と同一でないため、ＲＪＴをログインコマンドの送信元の磁気ディスク装置１００に送信する。ＲＪＴをログインコマンドの送信元の磁気ディスク装置１００に送信することで、当該磁気ディスク装置１００にファームウェアコードの更新を行えないことを通知することができる。処理は終了する。
【００５２】
一方、ステップＳ２０６において、磁気ディスク装置１００は、ログインコマンドの送信元の磁気ディスク装置の機種と自身の機種とが同一であると判定した場合、処理はステップＳ２０８へ移行する。
【００５３】
ステップＳ２０８において、磁気ディスク装置１００は、ログインコマンドの送信元の磁気ディスク装置に、ＡＣＫを送信する。処理はステップＳ２０９へ移行する。
【００５４】
ステップＳ２０９において、磁気ディスク装置１００は、ログイン元が磁気ディスク装置であることを記憶する。処理はステップＳ２１０へ移行する。
【００５５】
ステップＳ２１０において、磁気ディスク装置１００は、実行中の処理があるか否かを判定する。実行中の処理がある場合、処理はステップＳ２１１へ移行する。
【００５６】
ステップＳ２１１において、磁気ディスク装置１００は、ログイン元の磁気ディスク装置にファームウェアコードを送信するために、実行中の処理を終了する。処理はステップＳ２１２へ移行する。
【００５７】
一方、ステップＳ２１０において、磁気ディスク装置１００は、実行中の処理がないと判定した場合、処理はステップＳ２１２へ移行する。
【００５８】
ステップＳ２１２において、磁気ディスク装置１００は、ログインコマンドの送信元の磁気ディスク装置がファームウェアコードを要求していることを認識するため、ログインコマンドの送信元の磁気ディスク装置に、Ｗｒｉｔｅ Ｂｕｆｆｅｒを送信する。処理はステップＳ２１３へ移行する。
【００５９】
ステップＳ２１３において、磁気ディスク装置１００は、ログインコマンドの送信元の磁気ディスク装置からＴｒａｎｓｆｅｒ Ｒｅａｄｙを受信する。処理はステップＳ２１４へ移行する。
【００６０】
ステップＳ２１４において、磁気ディスク装置１００は、ログインコマンドの送信元の磁気ディスク装置にファームウェアコードを送信する。処理は終了する。ファームウェアコードの送信先の磁気ディスク装置は、受信したファームウェアによって装置の再起動を行い、フラッシュメモリ１１４、磁気ディスク１２０へファームウェアの書き込みを開始する。
【００６１】
本実施形態によれば、ファームウェア・ダウンロード中に電源切断事故が発生しフラッシュメモリ内のファームウェアコードが破壊されても、ファームウェアコードを短時間で修復することができる。ユーザは、ファームウェア・ダウンロードを躊躇する理由がなくなり、常に最新の制御ファームでディスク装置を稼働させられるようになる。また、既知の問題に対する対策した施した最新ファームウェアを常に使用することにより、ストレージシステム全体の信頼性も上げることが可能になる。
【００６２】
以上の説明は、本実施形態をより良く理解させるために具体的に説明したものであって、別形態を制限するものではない。従って、趣旨を変更しない範囲で変更可能である。本実施形態は、磁気ディスク１２０及びフラッシュメモリ１１４それぞれにファームウェアを格納したが、磁気ディスク１２０又はびフラッシュメモリ１１４のいずれか一方にファームウェアを格納する構成にしても良い。
【図面の簡単な説明】
【００６３】
【図１】本実施形態における磁気ディスク装置のシステムを表す図である。
【図２】本実施形態における磁気ディスク装置を表す図である。
【図３】ネットワークの初期化処理を表す図である。
【図４】ネットワークの初期化処理完了後の処理を表す図である。
【図５】ライトバッファ処理を表す図（その１）である。
【図６】ライトバッファ処理を表す図（その２）である。
【図７】ファームウェア更新処理のフローチャートである。
【図８】ファームウェア送信処理のフローチャートである。
【符号の説明】
【００６４】
１００、１００Ａ、１００Ｂ、１００Ｃ、１００Ｄ、１００Ｅ、１００Ｆ、１００Ｇ、１００Ｈ、１００Ｉ、１００Ｊ、１００Ｋ、１００Ｌ、１００Ｍ、１００Ｎ、１００Ｏ、１００ａ、１００ｂ、１００ｃ、１００ｄ、１００ｅ、１００ｆ、１００ｇ、１００ｈ、１００ｉ、１００ｊ、１００ｋ、１００ｌ、１００ｍ、１００ｎ、１００ｏ  磁気ディスク装置
１０２  ＶＣＭ
１０３  ＳＰＭＴ
１０４  ＲＤＣ
１０６  プリアンプ
１０８  ＳＶＣ
１１０  ＭＣＵ
１１２  ドライブインタフェースロジック
１１３  ＤＳＰ
１１４  フラッシュメモリ
１１４２  起動コード
１１４４  第一ファームウェアコード
１１６  ＨＤＣ
１１８  データバッファ
１２０  磁気ディスク
１２０２  第二ファームウェアコード
１３０  ＡＬＰＡ ＭＡＰ
２００  ホスト
【図１】
2010039873.tif 000003
【図２】
2010039873.tif 000004
【図３】
2010039873.tif 000005
【図４】
2010039873.tif 000006
【図５】
2010039873.tif 000007
【図６】
2010039873.tif 000008
【図７】
2010039873.tif 000009
【図８】
2010039873.tif 000010