(57)【特許請求の範囲】
【請求項１】
第一のユニットと、第一のユニットと冗長構成で稼動する第二のユニットと、ファームウェアの更新制御を行う制御部と、各版数のファームウェアを記憶する記憶部とを備えるディスクアレイ装置であって、
第一ユニットおよび第二ユニットは、各々
第一の記憶領域と、第二の記憶領域と、
第一の記憶領域に格納のファームウェアの版数、第二の記憶領域に格納のファームウェアの版数、第一ユニットおよび第二ユニットを稼働させるためのファームウェアを格納する稼働領域が第一の記憶領域か第二の記憶領域かを示す識別番号を格納する第三の記憶領域と、を有し、かつ第一ユニットの稼動領域は、書き込み不可であり、
前記制御部は、
故障により、前記第一のユニットが交換された場合、
交換対象の第一のユニットと、第二ユニットとの各稼働領域の識別番号が両方とも第一の記憶領域を示し同一の場合、第一のユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数と第二ユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数とを比較し、稼働領域のファームウェアの版数が異なっている場合で、かつ第一のユニットの稼動領域の指定のない第二の記憶領域に格納のファームウェアの版数と第二ユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数と比較し、異なっている場合は、交換対象の第一のユニットに対し、第二ユニットの稼働領域のファームウェア版数に対応するファームウェアを前記記憶部から取得して稼働領域の指定のない第一のユニットの第二の記憶領域に格納するとともに第一のユニットの稼働領域の識別番号を第一の記憶領域から第二の記憶領域に書き換えたのち第一のユニットを再起動し、再起動後に、交換対象の第一のユニットと、第二ユニットの稼働領域の識別番号が異なるため、第二ユニットの稼働領域のファームウェア版数に対応するファームウェアを前記記憶部から取得して、稼働領域の指定のない第一の記憶領域に格納するとともに第一のユニットの稼働領域の識別番号を第二の記憶領域から第一の記憶領域に書き換えたのち、第一のユニットを再起動し、再起動後に、第一のユニットと第二ユニットの稼働領域の識別番号および稼働領域のファームウェア版数が同一のため、第一のユニットと第二のユニットの稼働領域の指定のない各第二の記憶領域のファームウェア版数を比較して異なるときには、第二のユニットの第二の記憶領域に格納されているファームウェア版数に対応するファームウェアを前記記憶部から取得して第一ユニットの第二の記憶領域に格納することを特徴とするディスクアレイ装置。
【請求項２】
交換対象の第一のユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数と第二ユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数とを比較し、稼働領域のファームウェアの版数が異なっている場合で、かつ第一のユニットの稼動領域の指定のない第二の記憶領域に格納のファームウェアの版数と第二ユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数と比較し、同一の場合には、第二ユニットの稼働領域のファームウェア版数に対応するファームウェアを稼働領域の指定のない第一のユニットの第二の記憶領域に格納せずに、第一のユニットの稼働領域の識別番号を第一の記憶領域から第二の記憶領域に書き換えたのち第一のユニットを再起動することを特徴とする請求項１記載のディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスクアレイ装置に関する。特にディスクアレイ装置を構成するユニットを交換するときの保守技術に関する。
【背景技術】
【０００２】
ディスクアレイ装置は複数のユニットを有する。それぞれのユニットはユニットの機能を実現するためのファームウェアを記憶する。それぞれのユニットがファームウェアを実行することによりディスクアレイ装置が動作する。それぞれのユニットは故障する場合がある。ディスクアレイ装置内の故障したユニットは交換される。
【０００３】
ディスクアレイ装置は連続した動作が要求されるため、ディスクアレイ装置のユニットは同じ機能を実現するユニットを複数有した冗長な構成となる。また、ディスクアレイ装置は故障したユニットを交換した後でディスクアレイ装置全体の動作する性能が低下することを避けることを必要とする。性能の低下とは、例えば、ユニットが誤動作することにより、ユニットが本来の機能を発揮せず、装置全体に影響を及ぼす状態である。ディスクアレイ装置の処理の動作する性能が低下することを避けるためには、交換の対象のユニットがディスクアレイ装置内で動作中の他のユニットと同じファームウェアの版数で稼動することにより可能である。
【０００４】
従来のディスクアレイ装置に交換の対象のユニットを組み込む際の方法として、交換の対象のユニットのファームウェアの版数とディスクアレイ装置内で動作中のユニットのファームウェアの版数とを一致させるファームウェアのダウンロードの方法がある。例えば、装置内のファームウェアを内蔵した第一のユニットから他の第二のユニットに交換する場合は以下の方法で行っていた。まず、第二のユニットのファームウェアの版数と装置で稼働している第三のユニットのファームウェアの版数とを比較する。第二のユニットと第三のユニットとの版数が一致しなかった場合、第二のユニットのファームウェアを記憶する記憶領域に装置で稼働している第三のユニットが有する版のファームウェアをダウンロードする。第二のユニットは記憶領域にダウンロードされた版のファームウェアが実行されることによってファームウェアに従った所定の動作を行なう（例えば特許文献１参照）。
【０００５】
ディスクアレイ装置が運用中のときに不具合が発生すると、不具合の原因を調査するために、ディスクアレイ装置で不具合が発生した状況を再現する必要がある。しかし、従来技術ではユニットが実行しないファームウェアについては考慮していない。したがって、従来技術では不具合が発生した状況を正確に再現することができない問題があった。
【０００６】
また、従来技術ではユニットが実行しないファームウェアについては考慮していない。従って、記憶領域に複数のファームウェアを格納することが可能なユニットを有するディスクアレイ装置を再起動した場合、各ユニットは再起動後に再起動前とは異なるファームウェアを実行する問題があった。
【特許文献１】特開２００５−７１０４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は上記のような問題点を解決するために、ディスクアレイ装置内の機能毎の各ユニットに格納された各ファームウェアの版数および稼動するファームウェアを統一させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明のディスクアレイ装置は、第一のユニットと、第一のユニットと冗長構成で稼動する第二のユニットと、ファームウェアの更新制御を行う制御部と、各版数のファームウェアを記憶する記憶部とを備えるディスクアレイ装置であって、第一ユニットおよび第二ユニットは、各々第一の記憶領域と、第二の記憶領域と、第一の記憶領域に格納のファームウェアの版数、第二の記憶領域に格納のファームウェアの版数、第一ユニットおよび第二ユニットを稼働させるためのファームウェアを格納する稼働領域が第一の記憶領域か第二の記憶領域かを示す識別番号を格納する第三の記憶領域と、を有し、かつ第一ユニットの稼動領域は、書き込み不可であり、前記制御部は、故障により、前記第一のユニットが交換された場合、交換対象の第一のユニットと、第二ユニットとの各稼働領域の識別番号が両方とも第一の記憶領域を示し同一の場合、第一のユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数と第二ユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数とを比較し、稼働領域のファームウェアの版数が異なっている場合で、かつ第一のユニットの稼動領域の指定のない第二の記憶領域に格納のファームウェアの版数と第二ユニットの稼動領域である第一の記憶領域に格納のファームウェアの版数と比較し、異なっている場合は、交換対象の第一のユニットに対し、第二ユニットの稼働領域のファームウェア版数に対応するファームウェアを前記記憶部から取得して稼働領域の指定のない第一のユニットの第二の記憶領域に格納するとともに第一のユニットの稼働領域の識別番号を第一の記憶領域から第二の記憶領域に書き換えたのち第一のユニットを再起動し、再起動後に、交換対象の第一のユニットと、第二ユニットの稼働領域の識別番号が異なるため、第二ユニットの稼働領域のファームウェア版数に対応するファームウェアを前記記憶部から取得して、稼働領域の指定のない第一の記憶領域に格納するとともに第一のユニットの稼働領域の識別番号を第二の記憶領域から第一の記憶領域に書き換えたのち、第一のユニットを再起動し、再起動後に、第一のユニットと第二ユニットの稼働領域の識別番号および稼働領域のファームウェア版数が同一のため、第一のユニットと第二のユニットの稼働領域の指定のない各第二の記憶領域のファームウェア版数を比較して異なるときには、第二のユニットの第二の記憶領域に格納されているファームウェア版数に対応するファームウェアを前記記憶部から取得して第一ユニットの第二の記憶領域に格納する構成である。
【発明の効果】
【０００９】
本発明によって、交換の対象のユニットのファームウェアの版数とディスクアレイ装置内で動作するユニットのファームウェアの版数とを統一させることができる。更に、交換の対象のユニットの記憶手段の稼動領域の番号とディスクアレイ装置内で動作するユニットの交換の対象のユニットの記憶手段の稼動領域の番号とを統一させることができる。交換の対象のユニットのファームウェアの版数が異なることによるユニットの誤動作を防ぐディスクアレイ装置を提供することができる。
【発明を実施するための最良の形態】
【００１０】
図１は、本実施例のディスクアレイ装置１の構成図である。ディスクアレイ装置１を構成するユニットは多くの種類を有する。ＣＭ（Ｃｏｎｔｒｏｌｌｅｒ  Ｍｏｄｕｌｅ）ユニット２、３はディスクアレイ装置１の全体の制御を行う。ＳＶＣ（Ｓｅｒｖｉｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）ユニット４１，４２は装置全体の電源監視、制御を行う。ＣＡ（Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）ユニット４３，４４は外部装置とＣＭ２，３との間で情報の送受信を行う。外部装置とは例えばホスト装置である。ＤＥ（Ｄｅｖｉｃｅ  Ｅｎｃｌｏｓｕｒｅ）４７，４８は磁気ディスク装置を複数個格納する。ＰＢＣ（Ｐｏｒｔ  Ｂｙｐａｓｓ  Ｃｉｒｃｕｉｔ）ユニット４５，４６はＤＥの制御、監視を行う。ＰＳＵ（Ｐｏｗｅｒ  Ｓｕｐｌｙ  ｕｎｉｔ）ユニット４９，５０は他の各ユニットに電源を供給する。ＢＵ（Ｂａｔｔｅｒｙ  ｕｎｉｔ）ユニット５１，５２は停電時に電源を供給する。ＲＴ（Ｒｏｕｔｅｒ）ユニット５３、５４はディスクアレイ装置１のＣＭ２とＣＭ３との間、ＣＭ２およびＣＭ３とＰＢＣ４５およびＰＢＣ４６との間を接続し、ルーティングを行う。各ユニットはバス４により接続されている。
【００１１】
ディスクアレイ装置１はＣＡ４３、ＣＡ４４を経由してホスト装置に応答するため常に動作することを要求される。したがって、ディスクアレイ装置１の各ユニットは同一の機能を実行するユニットを複数有した冗長な構成となる。例えば、ディスクアレイ装置１はＣＭ２とＣＭ３の２つのＣＭを有する。この構成により一方のユニットが故障した場合でも故障していないユニットが継続して動作することによりディスクアレイ装置１全体としての動作が停止することはない。また、同一の機能を実行するユニット間では、ユニットに格納されたファームウェアの版数、実行するファームウェア、再起動後に実行するファームウェアが全て一致するように設定される。したがって、同一の機能を実行するユニット間の設定は統一される。ファームウェアはユニットの基本的な制御を行なうためにユニットに組み込まれたソフトウェアである。ユニットに固定的に搭載され、本来はあまり変更が加えられない。ユニットに内蔵されたＲＯＭやフラッシュメモリに記憶される。ファームウェアは、ユニットの機能の追加や不具合の修正のため、後から変更できるようになっているものが多い。改版されたファームウェアを識別するために付す数字を版数という。したがって、版数が異なるファームウェアを実行するユニットは異なる処理を実行する。
【００１２】
ディスクアレイ装置１はＤＥ４７および４８内の磁気ディスク装置にシステムディスク９０、システムディスク９１を有する。システムディスク９０、システムディスク９１にはディスクアレイ装置１内の各ユニットにダウンロードするファームウェアのファイル９２およびファイル９３が格納される。システムディスクおよびファイルも冗長な構成となる。各ユニットはファームウェアをダウンロードして、ファームウェアの命令群に応じた動作することにより機能する。ファイル９２には各版数のファームウェアが格納される。
したがって、ファイル９２は同じユニットのファームウェアであっても複数の版数のファームウェアを有する構成となる。ディスクアレイ装置１を構成するそれぞれのユニットは、２つの種類に分類可能である。１つ目の種類のユニットは、記憶手段の稼動領域にファームウェアのダウンロードが可能なユニットである。２つ目の種類のユニットは、記憶手段の稼動領域にファームウェアのダウンロードが不可能なユニットである。以降の説明のために、交換の対象となるユニットをユニット７０とし、ディスクアレイ装置１内で動作するユニットをユニット８０とする。
【００１３】
本実施例で交換の対象となるディスクアレイ装置１内のユニットについて説明する。図２はユニットの構成図である。ユニット６０は実行部６１と主記憶６２と記憶手段６３とインターフェース部６４を有する。実行部６１と主記憶６２と記憶手段６３とインターフェース部６４はバス６５により接続される。
【００１４】
実行部６１は主記憶６２に展開されたファームウェアに従った処理を実行する。実行部６１は記憶手段６３からファームウェアを呼び出して主記憶６２に展開する。ユニット６０は主記憶６２に読出したファームウェアに応じた処理を実行する。従って、ファームウェアの版数が異なるとユニット６０は異なる処理を実行することとなる。ディスクアレイ装置１内の各ユニットが有する主記憶の記憶容量は異なる。大容量の主記憶を搭載したユニットは、記憶手段に圧縮形式で保存されているファームウェアを主記憶上に展開する。大容量の主記憶を搭載したユニットは主記憶上に全てのファームウェアを展開して稼動する。大容量の主記憶を有するユニットは、例えばＣＭである。大容量の主記憶を有するユニットは、主記憶にファームウェアを展開した後、記憶手段に対する読込処理は発生しない。したがって、記憶手段内のファームウェアの更新が可能である。大容量の主記憶を搭載したユニットは高価である。一方、小容量の主記憶を搭載したユニットは、記憶手段に保存されているファームウェアを主記憶上にすべて展開することはできない。主記憶の容量が足りないためである。小容量主記憶を搭載したユニットは、例えば、制御を行うユニットであるＰＢＣ（Ｐｏｒｔ  Ｂｙｐａｓｓ  Ｃｉｒｃｕｉｔ）ユニットおよび装置全体の電源監視や制御を行うＳＶＣ（ＳｅｒＶｉｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）ユニット等がある。小容量の主記憶を搭載したユニットは安価である。また、小容量の主記憶を搭載したユニットは記憶手段内にファイルシステムを有するものもある。ファイルシステムを有するユニットは複数のファームウェアをユニットの機能ごとに分割して管理する。ディスクアレイ装置内でユニットが稼動するとき、ユニットの実行部は、ユニットの現在の稼動に必要なファームウェアのみを記憶手段内のファイルシステムから主記憶に展開する。従って、ファイルシステムを採用したユニットは、ユニットの稼動中は記憶手段内の稼動するファームウェアが格納された領域に対する読み込み処理が常に発生する。
【００１５】
主記憶６２は、記憶手段６３に格納されたファームウェアが展開されるメモリである。例えばＲＡＭである。インターフェース部６４はＣＭ２及びＣＭ３と接続する。ＣＭ２又はＣＭ３から情報を受信すると実行部６１に受け渡す。またユニット６０の実行部６１が処理をした結果をＣＭ２またはＣＭ３に受け渡す。
【００１６】
記憶手段６３はファームウェアを格納する。記憶手段６３は複数の記憶領域を有する。記憶手段６３は、第一の記憶領域６３１、第二の記憶領域６３２、第三の記憶領域６３３を有する。ユニット６０を機能させる一つのまとまりからなるファームウェアは記憶領域に格納される。具体的には、記憶手段６３は第一の記憶手段６３１にファームウェアを格納し、第二の記憶手段６３２に別のファームウェアを格納する。複数のファームウェアを記憶することにより、例えば一方のファームウェアに不具合があることが判明した場合に、ユニットに格納された他の版数のファームウェアを実行することにより、不具合を回避することが可能となる。したがって、ユニット６０は、記憶手段６３の第一の記憶領域６３１あるいは第二の記憶領域６３２から主記憶６２に展開するファームウェアを選択することが可能である。ユニット６０の実行部６１が主記憶６２に展開して実行するファームウェアが格納される記憶領域を稼動領域６３４とする。一方、ユニットが主記憶に展開しないファームウェアが格納されている領域を非稼動領域６３５とする。稼動領域６３４となる記憶領域は第三の記憶手段６３３に格納された稼動領域を識別する番号に応じて切り替わる。したがって、稼動領域６３４は稼動領域を識別する番号に応じて第一の記憶領域６３１または第二の記憶領域６３２のどちらかとなる。記憶手段６３は例えば、フラッシュメモリである。
【００１７】
以降の説明のために、図３（ｂ）に交換の対象となるユニット７０の構成を示し、図３（ａ）にディスクアレイ装置内で動作するユニット８０の構成を示す。交換の対象となるユニット７０は、実行部７１、主記憶７２、記憶手段７３およびインターフェース部７４を有する。実行部７１、主記憶７２、記憶手段７３およびインターフェース部７４は、バス７５により接続される。記憶手段は第一の記憶領域７３１、第二の記憶領域７３２、第三の記憶領域７３３を有する。また、稼動領域は稼動領域７３４、非稼動領域は非稼動領域７３５とする。ディスクアレイ装置内で動作するユニット８０は、実行部８１、主記憶８２、記憶手段８３およびインターフェース部８４を有する。実行部８１、主記憶８２、記憶手段８３およびインターフェース部８４は、バス８５により接続される。記憶手段は第一の記憶領域８３１、第二の記憶領域８３２、第三の記憶領域８３３を有する。また、稼動領域は稼動領域８３４、非稼動領域は非稼動領域８３５とする。
【００１８】
次にＣＭユニットの説明をする。ディスクアレイ装置１は複数のＣＭユニットを有する。図１ではＣＭ２及びＣＭ３である。以下はＣＭ２について説明するがＣＭ３も同様の構成である。図４にＣＭの構成図を示す。ＣＭ２は、実行部２０１、主記憶２０２、記憶手段２０３、インターフェース部２０４を有する。実行部２０１、主記憶２０２、記憶手段２０３およびインターフェース部２０４は、バス２０５により接続される。ＣＭ２の実行部２０１は、書込判別部、版数判別部、第一の記憶領域のファームウェア版数一致部、第二の記憶領域のファームウェア版数一致部、稼働領域一致部、および、次稼動領域一致部として機能する。ＣＭ２の実行部２０１は、ＣＭ２の記憶手段２０３に格納された書込判別プログラム２１１、版数判別プログラム２２２、第一の記憶領域のファームウェア版数一致プログラム２３３、第二の記憶領域のファームウェア版数一致プログラム２４４、稼働領域一致プログラム２５５、および、次稼動領域一致プログラム２６６をＣＭ２の主記憶２０２に展開して実行する。
【００１９】
書込判別部は交換の対象のユニット７０の記憶手段７３の稼働領域７３４にファームウェアを書き込み不可能であるかどうかを判別する。
【００２０】
版数判別部は、ディスクアレイ装置１内で動作中のユニット８０の記憶手段８３に格納されるファームウェアの版数および交換の対象のユニット７０の記憶手段７３に格納されているファームウェアの版数を検出する。また、版数判別部は、ディスクアレイ装置１内で動作中のユニット８０の記憶手段８３の稼動領域８３４を識別する番号および交換の対象のユニット７０の記憶手段７３の稼動領域７３４を識別する番号を検出する。また、版数判別部は、ディスクアレイ装置１内で動作中のユニット８０の記憶手段８３の次稼動領域を識別する番号および交換の対象のユニット７０の記憶手段７３の次稼動領域を識別する番号を検出する。
【００２１】
稼働領域一致部は、版数判別部におけるディスクアレイ装置１内で動作中のユニット８０の記憶手段８３の稼働領域８３４の識別番号と交換の対象のユニット７０の記憶手段７３の稼働領域７３４の識別番号とが不一致であった場合に、交換の対象のユニット７０の記憶手段７３の稼動領域７３４に対応する識別番号とディスクアレイ装置１内で動作中のユニット８０の記憶手段８３の稼動領域８３４に対応する識別番号とを一致させる。
【００２２】
第一の記憶領域のファームウェア版数一致部は、ディスクアレイ装置１内で動作中のユニット８０の記憶手段８３の第一の記憶領域８３１に格納されるファームウェアの版数と交換の対象のユニット７０の記憶手段７３の第一の記憶領域７３１に格納されるファームウェアの版数とを一致させる。
【００２３】
第二の記憶領域のファームウェア版数一致部は、ディスクアレイ装置１内で動作中のユニット８０の記憶手段８３の第二の記憶領域８３２に格納されるファームウェアの版数と交換の対象のユニット７０の記憶手段７３の第二の記憶領域７３２に格納されるファームウェアの版数とを一致させる。
次稼動領域一致部は、ディスクアレイ装置１内で動作中のユニット８０が再起動した後に主記憶８２に展開するファームウェアが記憶された記憶手段８３の稼動領域８３４に対応する識別番号と交換の対象のユニット７０が再起動した後に主記憶７２に展開するファームウェアが記憶された記憶手段７３の稼動領域７３４に対応する識別番号とを一致させる。
【００２４】
ＣＭ２の記憶手段２０３はファームウェア制御テーブル２７が記憶される。ファームウェア制御テーブル２７はＣＭ２がディスクアレイ装置１内の各ユニットの記憶手段に格納されたファームウェアを管理する情報を記憶する。次にファームウェア制御テーブル２７について説明する。
【００２５】
図５は、ＣＭが有するファームウェア制御テーブル２７の構成である。なお、図５のファームウェア制御テーブル２７は本発明の特徴に関連した部分の項目のみの構成であり、従来のファームウェアの制御に関する部分は省略する。ファームウェア制御テーブルには、ディスクアレイ装置１内で動作するユニット８０の状態、交換の対象のユニット７０の状態、交換の対象のユニットに対する処理条件の設定値が格納される。ファームウェア制御テーブル２７は、動作ユニット領域１ファームウェア版数２７０１、動作ユニット領域２ファームウェア版数２７０２、動作ユニット稼働領域識別番号２７０３、動作ユニット次稼働領域識別番号２７０４、交換ユニット領域１ファームウェア版数２７０５、動作ユニット領域２ファームウェア版数２７０６、交換ユニット稼働領域識別番号２７０７、交換ユニット次稼働領域識別番号２７０８を有する。
【００２６】
動作ユニット領域１ファームウェア版数２７０１は、ディスクアレイ装置１内で動作するユニット８０の記憶手段８３の第一の記憶領域８３１に格納されたファームウェアの版数の情報である。動作ユニット領域２ファームウェア版数２７０２は、ディスクアレイ装置１内で動作するユニット８０の記憶手段８３の第二の記憶領域８３２に格納されたファームウェアの版数の情報である。動作ユニット稼働領域識別番号２７０３は、ディスクアレイ装置１内で動作するユニット８０の記憶手段８３の稼動領域８３４に対応する記憶領域を識別する番号である。動作ユニット次稼働領域識別番号２７０４は、ディスクアレイ装置１内で動作するユニット８０がリブートした後に稼動領域とする記憶領域を識別する番号である。
【００２７】
交換ユニット領域１ファームウェア版数２７０５は、交換の対象のユニット７０の記憶手段７３の第一の記憶領域７３１に格納されたファームウェアの版数の情報である。動作ユニット領域２ファームウェア版数２７０６は、交換の対象のユニット７０の記憶手段７３の第二の記憶領域７３２に格納されたファームウェアの版数の情報である。交換ユニット稼働領域識別番号２７０７は、交換の対象のユニット７０の記憶手段７３の稼動領域７３４に対応する記憶領域を識別する番号である。交換ユニット次稼働領域識別番号２７０８は、交換の対象のユニット７０がリブートした後に稼動領域とする記憶領域を識別する番号である。
【００２８】
本実施例は動作ユニット領域１ファームウェア版数２７０１、動作ユニット領域２ファームウェア版数２７０２、動作ユニット稼働領域識別番号２７０３、動作ユニット次稼働領域識別番号２７０４を元に、ディスクアレイ装置１内で動作中のすべてのユニットの記憶手段の各記憶領域に格納されたファームウェアの版数、および、記憶手段の稼働領域、および、ユニットがリブートした後の稼働領域を一致させる。
【００２９】
なお、ディスクアレイ装置１内で動作中のユニットの種類を基準としてユニットの記憶手段の各記憶領域に格納されたファームウェアの版数、および、記憶手段の稼働領域、および、ユニットがリブートした後の稼働領域を一致させるためには、以下の構成とする。ユニットの種類毎に動作ユニット領域１ファームウェア版数２７０１、動作ユニット領域２ファームウェア版数２７０２、動作ユニット稼働領域識別番号２７０３、動作ユニット稼働領域識別番号２７０４を設ける。
【００３０】
モードパラメタ２７０９は、リブートＢＩＴ、稼働領域変更ＢＩＴおよびファームウェアダウンロードＢＩＴを有する。リブートＢＩＴは、交換の対象のユニット７０をリブートするか否かを判定するビットである。稼働領域変更ＢＩＴは、ユニット７０の記憶手段７３の稼動領域７３４を変更するか否かを判定するビットである。ファームウェアダウンロードＢＩＴは、ユニット７０の記憶手段７３の第一の記憶領域７３１あるいは第二の記憶領域７３２にファームウェアをダウンロードするか否かを判定するビットである。モードパラメタ２７０９は、図８に示す「稼働領域にファームウェアを書き込み可能なユニットの場合のファームウェアの版数のチェック」のフローチャート、及び図７に示す「稼働領域にファームウェアを書き込み不可能なユニットの場合のファームウェアの版数のチェック」のフローチャートで示される処理においてＣＭ２の実行部２０１が設定する。設定されたモードパラメタ２７０９は、図６に示す「ユニットのファームウェアの版数の一致」のフローチャートで示される処理中でＣＭ２の実行部２０１が処理の判断に使用する。
【００３１】
ダウンロード先指定パラメタ２７１０は、交換の対象のユニット７０の記憶手段７３のファームウェアをダウンロードする先の記憶領域を識別する番号を記憶する。版数指定パラメタ２７１１は、交換の対象のユニット７０の記憶手段７３の記憶領域にダウンロードするファームウェアの版数を記憶する。稼働領域変更指定パラメタ２７１２は、交換の対象のユニット７０がリブートした後に稼働領域７３４となる記憶領域を識別する番号が設定される。
【００３２】
図６は、本発明に係るディスクアレイ装置１に新たにユニットを組み込むときの処理のフローチャートである。なお、ディスクアレイ装置１全体は、新たなユニットを組み込む間も継続して動作する。新たなユニットを組み込むときディスクアレイ装置１のＣＭ２は以下の３つの状態を装置で稼動するユニットと一致させる。一つ目の状態は、交換の対象のユニット７０の記憶手段７３の第一の記憶領域７３１及び第二の記憶領域７３２のファームウェアの版数をディスクアレイ装置１内で動作するユニット８０の記憶手段８３の第一の記憶領域８３１及び第二の記憶領域８３２に格納されたファームウェアの版数に一致させる。二つ目は、交換の対象のユニット７０の記憶手段７３の稼動領域７３４をディスクアレイ装置１内で動作するユニット８０の記憶手段８３の稼動領域８３４に一致させる。三つ目は、交換の対象のユニット７０が再起動した後に稼動する記憶手段７３の稼動領域７３４をディスクアレイ装置１内で動作するユニット８０が再起動した後に稼動する記憶手段８３の稼動領域８３４に一致させる。
【００３３】
ＣＭ２の実行部２０１は、ＣＭ２の記憶手段２０３に格納された書込判別プログラム２１１、版数判別プログラム２２２、第一の記憶領域のファームウェア版数一致プログラム２３３、第二の記憶領域のファームウェア版数一致プログラム２４４、稼働領域一致プログラム２５５、および、次稼動領域一致プログラム２６６をＣＭ２の主記憶２０２に展開して実行する。ＣＭ２は交換の対象のユニット７０をディスクアレイ装置１が認識したときに、交換の対象のユニット７０の状態とディスクアレイ装置１内で動作するユニット８０の状態とを一致させるために、書込判別部、版数判別部、第一の記憶領域のファームウェア版数一致部、第二の記憶領域のファームウェア版数一致部、稼働領域一致部、および、次稼動領域一致部として機能する。
【００３４】
まず、ＣＭ２の実行部２０１は交換の対象のユニット７０を確認する（Ｓ３０１）。具体的には、ＣＭ２の実行部２０１は交換の対象のユニット７０の記憶手段７３の第三の記憶領域からユニット７０の種類情報、ユニット７０の記憶手段７３の稼働領域７３４に該当する記憶領域を識別する番号、ユニット７０がリブートした後に稼動領域となる記憶手段７３の記憶領域を識別する番号、ユニット７０の記憶手段７３の第一の記憶領域７３１に格納されたファームウェアの版数、ユニット７０の記憶手段７３の第二の記憶領域７３２に格納されたファームウェアの版数、ユニット７０のシリアルナンバ、ユニット７０のＯＳ情報、ユニット７０のファイルシステム情報を取得する。ＣＭ２の実行部２０１は取得した情報をＣＭ２のファームウェア制御テーブル２７に登録する。
【００３５】
次に、ＣＭ２の実行部２０１は交換の対象のユニット７０から取得したＯＳ情報とファイルシステム情報とから、交換の対象のユニット７０は記憶手段７３の稼動領域７３４にファームウェアをダウンロードすることが可能か否かを判定する（Ｓ３０２）。例えば、Ｓ３０２の判定は、ＣＭ２が稼動領域に直接ファームウェアをダウンロード可能か否かの情報とＯＳ情報とを予め関連付けた情報、および、稼動領域に直接ファームウェアをダウンロード可能か否かの情報とファイルシステム情報とを関連付けた情報を予め記憶手段２０３に記憶しておくことにより可能である。
【００３６】
なお、Ｓ３０２の判定は、交換の対象のユニット７０の種別のみによりユニット７０の記憶手段７３の稼動領域７３４にファームウェアをダウンロードすることができるユニットか否かを判断することが可能な場合は、交換の対象のユニット７０の種別の情報と稼動領域に直接ファームウェアをダウンロード可能か否かの情報とを関連付けた情報を基準とすることも可能である
また、交換の対象のユニット７０の種別、版数情報及びシリアルナンバなどの組合せにより交換の対象のユニット７０の記憶手段７３の稼動領域７３４にファームウェアをダウンロードすることができるユニットか否かを判断することが可能な場合には、交換の対象のユニット７０の種別、版数情報及びシリアルナンバなどの組合せにより判定することも可能である。
【００３７】
書込判別部は、交換の対象のユニット７０のＯＳ情報及びファイルシステム情報から交換の対象のユニット７０の稼動領域にファームウェアが書き込み可能であるかどうかを判別する。したがって、仮にあらかじめ登録したＯＳ情報及びファイルシステム情報の範囲内であれば記憶手段の稼動領域に書き込み可能なユニットが開発途中でユニット仕様が変わり、ユニットが記憶手段の稼動領域に書き込み不可能になったとしても、ファームウェアダウンロード制御プログラム側に影響がない。
【００３８】
交換の対象のユニット７０が記憶手段７３の稼動領域７３４にファームウェアをダウンロードすることができる場合は、ＣＭ２の実行部２０１は「稼働領域にファームウェア書き込み可能なユニットの版数チェック」処理（Ｓ３０３）を実行する。Ｓ３０３の処理の詳細は図８に示す。一方、交換の対象のユニット７０が記憶手段７３の稼動領域７３４にファームウェアをダウンロードすることができない場合は、ＣＭ２の実行部２０１は「稼働領域にファームウェアの書き込みが不可能なユニットの版数チェック」処理（Ｓ３０４）を実行する。Ｓ３０４の処理の詳細は図７に示す。
【００３９】
ＣＭ２の実行部２０１は、Ｓ３０３あるいはＳ３０４により、交換の対象のユニット７０のファームウェアの版数のチェックが完了するとＣＭ２のファームウェア制御テーブル２７を参照する。ＣＭ２の実行部２０１はファームウェア制御テーブル２７のモードパラメタ２７０９のファームウェアダウンロードＢＩＴがＯＮになっているかどうかを判定する（Ｓ３０５）。
【００４０】
ファームウェアダウンロードＢＩＴがＯＮの場合（Ｓ３０５：Ｙｅｓ）には、ＣＭ２の実行部２０１は版数指定パラメタ２７１１によって特定される交換の対象のユニット７０の記憶手段７３の記憶領域に対してダウンロード先指定パラメタ２７１０によって特定されるファームウェアのダウンロードを行う（Ｓ３０６）。
【００４１】
次にＣＭ２の実行部２０１はモードパラメタ２７０９の稼働領域変更ＢＩＴがＯＮになっているかどうかを判定する（Ｓ３０７）。稼働領域変更ＢＩＴがＯＮの場合（Ｓ３０７：Ｙｅｓ）には、実行部２０１は交換の対象のユニット７０の記憶手段７３の稼働領域変更指定パラメタ２７１２に合致する識別番号に対応する記憶領域を稼動領域７３４に変更する（Ｓ３０８）。具体的には、ＣＭ２の実行部２０１は、設定情報を交換の対象のユニット７０に送信する。ユニット７０の実行部７１は受け取った設定情報を第三の記憶領域７３３に記憶する。
【００４２】
次にＣＭ２の実行部２０１はモードパラメタ２７０９のリブートＢＩＴがＯＮになっているかどうかを判定する（Ｓ３０９）。リブートＢＩＴがＯＮの場合（Ｓ３０９：Ｙｅｓ）は、実行部２０１は交換の対象のユニット７０に対してリブート指示を発信する（Ｓ３１０）。リブートＢＩＴがＯＦＦの場合（Ｓ３０９：Ｎｏ）は、実行部２０１は処理を終了する。したがって、ＣＭ２の実行部２０１は、モードパラメタ２７０９のリブートＢＩＴがＯＮの場合、交換の対象のユニット７０がリブートした後にＳ３０１からＳ３０９までの処理を再度実行する。ＣＭ２の実行部２０１は、モードパラメタ２７０９のリブートＢＩＴがＯＮにならなくなるまで実行することとなる。
【００４３】
なお、交換の対象のユニット７０が記憶手段７３の稼動領域７３４にファームウェアをダウンロードすることができる場合は、最大で１回のリブートによりディスクアレイ装置１内で動作中のユニット８０と交換の対象のユニット７０との間で記憶手段の各記憶領域に格納されたファームウェアの版数および記憶手段の稼動領域を一致させることが可能である。また、交換の対象のユニット７０が記憶手段７３の稼動領域７３４にファームウェアをダウンロードすることができない場合は、最大で２回のリブートによりディスクアレイ装置１内で動作中のユニット８０と交換の対象のユニット７０との間で記憶手段の各記憶領域に格納されたファームウェアの版数および記憶手段の稼動領域を一致させることが可能である。
【００４４】
したがって、図６のフローチャートが実施される場合にリブートが最大の回数を超えたにもかかわらずモードパラメタ２７０９のリブートＢＩＴがＯＮである場合は、交換の対象のユニット７０が想定通りにファームウェアの版数および記憶手段の面をディスクアレイ装置１内で動作中のユニット８０と一致させることができていない可能性がある。したがって、対象となる交換の対象のユニット７０を異常とみなして検出することも可能である。
【００４５】
図７は、交換の対象のユニット７０の記憶手段７３の稼動領域７３４にファームウェアをダウンロードすることができない場合のファームウェアの版数をチェックする処理のフローチャートである。図７のフローチャートの各表記を説明する。「７０」は装置に取付けるユニットを示す。「８０」は装置で稼動するユニットを示す。「稼動領域７３４」は装置に取付けるユニットの稼動するファームウェアが格納された領域を示す。「稼動領域８３４」は装置内で稼動するユニットの稼動するファームウェアが格納された領域を示す。「稼動版数７０」は、稼動領域７３４に格納されたファームウェアの版数を示す。「稼動版数８０」は稼動領域８３４に格納されたファームウェアの版数を示す。「非稼動版数７０」は、装置に取付けるユニットの記憶領域の内、稼動領域ではない領域に格納されたファームウェアの版数を示す。「非稼動版数８０」は、装置内で稼動するユニットの記憶領域の内、稼動領域ではない領域に格納されたファームウェアの版数を示す。「次稼動領域７０」はユニット７０が再起動した後に稼動するファームウェアが格納された領域を示す。「次稼動領域８０」はユニット８０が再起動した後に稼動するファームウェアが格納された領域を示す。
【００４６】
ＣＭ２の実行部２０１はファームウェア制御テーブル２７に登録した動作ユニット稼働領域識別番号２７０３と交換ユニット稼働領域識別番号２７０７とを比較する（Ｓ４０１）。Ｓ４０１で比較した番号が一致している場合は、実行部はＳ４０７の処理を実行する。
【００４７】
ＣＭ２の実行部２０１は、ファームウェア制御テーブル２７のモードパラメタ２７０９のリブートＢＩＴをＯＮにする（Ｓ４０２）。現在、交換の対象のユニット７０の稼動領域７３４に対応する識別番号とディスクアレイ装置１内で動作中のユニット８０の稼動領域８３４に対応する識別番号とが異なるため、ユニット７０をリブートさせる処理が必要だからである。
【００４８】
次にＣＭ２の実行部２０１は動作ユニット稼働領域識別番号２７０３と交換ユニット次稼働領域識別番号２７０８とが一致しているか判定する（Ｓ４０３）。Ｓ４０３で比較する番号が不一致であると判断した場合（Ｓ４０３：Ｙｅｓ）、ＣＭ２の実行部２０１はファームウェア制御テーブル２７の稼働領域変更指定パラメタ２７１２にディスクアレイ装置１内で動作中のユニット８０の稼動領域８３４に対応する識別番号を設定する（Ｓ４０４）。現在、交換の対象のユニット７０の稼動領域７３４に対応する識別番号とディスクアレイ装置１内で動作中のユニット８０の稼動領域８３４に対応する識別番号が異なるためである。また、ＣＭ２の実行部２０１はモードパラメタ２７０９の稼働領域変更ＢＩＴをＯＮにする（Ｓ４０４）。交換の対象のユニット７０の稼動領域７３４に対応する記憶領域を変更させるためである。
【００４９】
次にＣＭ２の実行部２０１は、交換の対象のユニット７０の記憶手段７３の非稼働領域７３５に格納されたファームウェアの版数とディスクアレイ装置１内で動作中のユニット８０の稼動領域８３４に格納されたファームウェアの版数とが一致しているかどうかを判定する（Ｓ４０５）。
【００５０】
具体的には、交換の対象のユニット７０の非稼働領域７３５のファームウェアの版数は、交換ユニット稼働領域識別番号２７０７が「１」である場合は、交換の対象のユニット７０の記憶手段７３の第二の記憶領域７３２に格納されたファームウェアの版数である。
【００５１】
また、交換の対象のユニット７０の非稼働領域７３５のファームウェアの版数は、交換ユニット稼働領域識別番号２７０７が「２」である場合は、交換の対象のユニット７０の記憶手段７３の第一の記憶領域７３１に格納されたファームウェアの版数が交換の対象のユニット７０の非稼働領域７３５のファームウェアの版数である。また、動作ユニット稼働領域識別番号２７０３が「１」である場合は、ディスクアレイ装置１内で動作中のユニット８０の非稼働領域８３５のファームウェアの版数は、ディスクアレイ装置１内で動作するユニット８０の記憶手段８３の第二の記憶領域８３２に格納されたファームウェアの版数である。また、動作ユニット稼働領域識別番号が「２」である場合は、ディスクアレイ装置１内で動作中のユニット８０の非稼働領域８３５のファームウェアの版数は、ディスクアレイ装置１内で動作するユニット８０の記憶手段８３の第一の記憶領域８３１に格納されたファームウェアの版数である。
【００５２】
Ｓ４０５で比較したファームウェアの版数が不一致である場合、ＣＭ２の実行部２０１はファームウェア制御テーブル２７のダウンロード先指定パラメタ２７１０に交換の対象のユニット７０の非稼働領域７３５に対応する識別番号を設定する。さらに、実行部２０１はディスクアレイ装置１内で動作するユニット８０の稼働領域８３４に対応する識別番号に格納されたファームウェアの版数を版数指定パラメタ２７１１に設定する。実行部２０１は、交換の対象のユニット７０の非稼動領域７３５にディスクアレイ装置１内で動作するユニット８０の稼動領域８３４に格納された版数のファームウェアをダウンロードさせるためにモードパラメタ２７０９のファームウェアダウンロードＢＩＴをＯＮに設定する（Ｓ４０６）。
【００５３】
次にＳ４０１の判定結果が、交換の対象のユニット７０稼働領域７３４に対応する識別番号とディスクアレイ装置１内で動作するユニット８０の稼働領域８３４に対応する識別番号とが一致した場合の処理について説明する。
【００５４】
ファームウェア制御テーブル２７の動作ユニット稼働領域識別番号２７０３と交換ユニット稼働領域識別番号２７０７とが一致する場合（Ｓ４０１：Ｎｏ）、ＣＭ２の実行部２０１は交換の対象のユニット７０の稼働領域７３４に格納されたファームウェアの版数とディスクアレイ装置１内で動作するユニット８０の稼働領域８３４に格納されたファームウェアの版数とを比較する（Ｓ４０７）。ユニット７０の稼動領域７３４およびユニット８０の稼動領域８３４のファームウェアの版数が一致する場合にはユニット７０をリブートさせることなく、交換の対象のユニット７０の状態とディスクアレイ装置１内で動作するユニット８０の状態とを合致させることができるためである。状態とはユニット７０の記憶手段７３の第一の記憶領域７３１および第二の記憶領域７３２に格納されたファームウェアの版数、ユニット７０の記憶手段７３の稼動領域７３４、および、ユニット７０がリブート後に展開する記憶領域を識別する番号である。
【００５５】
Ｓ４０７で比較する版数が不一致である場合（Ｓ４０７：Ｙｅｓ）には、ＣＭ２の実行部２０１はファームウェア制御テーブル２７内のモードパラメタ２７０９のリブートＢＩＴをＯＮにする（Ｓ４０８）。以降の設定後にユニット７０をリブートすることを必要とするためである。すなわち、ユニット７０はリブート処理を行い、リブート前のユニット７０の稼動領域７３４をリブート後に非稼動領域７３５として、非稼動領域７３５にディスクアレイ装置１で動作中のユニット８０の稼動領域８３４のファームウェアを書き込む必要があるからである。
【００５６】
次にＣＭ２の実行部２０１は交換の対象のユニット７０がリブート後に稼動領域７３４とする識別番号とディスクアレイ装置１内で動作中のユニット８０の記憶手段８３の稼働領域８３４に対応する識別番号とが一致しているか判定する。実行部２０１はファームウェア制御テーブル２７の交換ユニット次稼働領域識別番号２７０８と動作ユニット稼働領域識別番号２７０３とが一致しているかを判定する（Ｓ４０９）。
【００５７】
Ｓ４０９で比較した番号が一致していれば、ＣＭ２の実行部２０１はファームウェア制御テーブル２７の稼働領域変更指定パラメタ２７１２にディスクアレイ装置１内で動作するユニット８０の記憶手段８３の非稼動領域８３５に対応する識別番号を設定する。実行部２０１はモードパラメタ２７０９の稼働領域変更ＢＩＴをＯＮに設定する（Ｓ４１０）。
【００５８】
次にＣＭ２の実行部２０１は交換の対象のユニット７０の非稼働領域７３５に格納されたファームウェアの版数とディスクアレイ装置１内で動作中のユニット８０の稼働領域８３４に格納されたファームウェアの版数が一致しているかどうかを判定する（Ｓ４１１）。実行部２０１は、交換ユニット稼働領域識別番号２７０７ではない識別番号に対応する交換ユニット領域１ファームウェア版数２７０５あるいは交換ユニット領域２ファームウェア版数２７０６から交換の対象のユニット７０の非稼動領域７３５のファームウェアの版数を特定する。また、実行部２０１は、動作ユニット稼働領域識別番号２７０３に対応する動作ユニット領域１ファームウェア版数２７０１あるいは動作ユニット領域２ファームウェア版数２７０２からディスクアレイ装置１内で動作中のユニット８０の稼動領域８３４のファームウェアの版数を特定する。
【００５９】
ＣＭ２の実行部２０１は、Ｓ４１１で比較する版数が不一致の場合には、ファームウェア制御テーブル２７のダウンロード先指定パラメタ２７１０に交換の対象のユニット７０の非稼働領域７３５に対応する識別番号を設定する。実行部２０１は版数指定パラメタ２７１１にディスクアレイ装置１内で動作するユニット８０の稼働領域８３４に格納されたファームウェアの版数を設定する。実行部２０１はモードパラメタ２７０９のファームウェアダウンロードＢＩＴをＯＮに設定する（Ｓ４１２）。
【００６０】
次にＳ４０７で比較する版数が一致している場合の処理を説明する。Ｓ４０７で比較する版数が一致する場合（Ｓ４０７：Ｎｏ）は、ＣＭ２の実行部２０１は交換の対象のユニット７０の非稼働領域７３５のファームウェアの版数とディスクアレイ装置１内で動作中のユニット８０の非稼働領域８３５のファームウェアの版数が一致しているかどうかを判定する（Ｓ４１３）。ＣＭ２の実行部２０１は、Ｓ４１３で比較した版数が一致していれば、Ｓ４１５を実行する。ＣＭ２の実行部２０１は、Ｓ４１３で比較した版数が不一致の場合には、ファームウェア制御テーブル２７のダウンロード先指定パラメタ２７１０に交換の対象のユニット７０の非稼働領域７３５に対応する識別番号を設定する。非稼働領域７３５に対応する識別番号はファームウェア制御テーブル２７の交換ユニット稼働領域識別番号２７０７とは異なる値となる。実行部２０１は、ファームウェア制御テーブル２７の版数指定パラメタ２７１１にディスクアレイ装置１内で動作するユニット８０の非稼働領域８３５に格納されたファームウェアの版数を設定する。実行部２０１は、モードパラメタ２７０９のファームウェアダウンロードＢＩＴをＯＮに設定する（Ｓ４１４）。
【００６１】
次に実行部２０１は交換の対象のユニット７０がリブート後に稼動領域７３４とする記憶領域の識別番号とディスクアレイ装置１内で動作するユニット８０がリブート後に稼動領域８３４とする記憶領域の識別番号とが一致しているか判定する（Ｓ４１５）。具体的には、実行部２０１は動作ユニット次稼働領域識別番号２７０４と交換ユニット次稼働領域識別番号２７０８とが一致するかを判定する。実行部２０１は、Ｓ４１５で比較する番号が一致していれば、処理を終了する。実行部２０１は、Ｓ４１５で比較する番号が不一致の場合には、ファームウェア制御テーブル２７の稼働領域変更指定パラメタ２７１２に動作ユニット次稼働領域識別番号を設定する。また実行部２０１は、モードパラメタ２７０９の稼働領域変更ＢＩＴをＯＮに設定する（Ｓ４１６）。図８は、ユニットの記憶手段の稼動領域にファームウェアをダウンロードすることができるユニットである場合のファームウェアの版数をチェックする処理のフローチャートである。図８のフローチャートの各表記を説明する。「７０」は装置に取付けるユニットを示す。「８０」は装置で稼動するユニットを示す。「稼動領域７３４」は装置に取付けるユニットの稼動するファームウェアが格納された領域を示す。「稼動領域８３４」は装置内で稼動するユニットの稼動するファームウェアが格納された領域を示す。「稼動版数７０」は、稼動領域７３４に格納されたファームウェアの版数を示す。「稼動版数８０」は稼動領域８３４に格納されたファームウェアの版数を示す。「非稼動版数７０」は、装置に取付けるユニットの記憶領域の内、稼動領域ではない領域に格納されたファームウェアの版数を示す。「非稼動版数８０」は、装置内で稼動するユニットの記憶領域の内、稼動領域ではない領域に格納されたファームウェアの版数を示す。「次稼動領域７０」はユニット７０が再起動した後に稼動するファームウェアが格納された領域を示す。「次稼動領域８０」はユニット８０が再起動した後に稼動するファームウェアが格納された領域を示す。
【００６２】
ＣＭ２の実行部２０１は、交換の対象のユニット７０の稼働領域７３４に対応する識別番号とディスクアレイ装置１内で動作するユニット８０の稼働領域８３４に対応する識別番号とを比較する（Ｓ５０１）。実行部２０１は、Ｓ５０１で比較した番号が一致している場合は、Ｓ５０７の処理を実行する。
【００６３】
一方、実行部２０１は、Ｓ５０１で比較した番号が不一致の場合には、Ｓ５０２以降の処理を実行する。まず実行部２０１は、ファームウェア制御テーブル２７内のモードパラメタ２７０９のリブートＢＩＴをＯＮに設定する（Ｓ５０２）。次に実行部２０１は、交換ユニット次稼働領域識別番号２７０８と動作ユニット稼働領域識別番号２７０３とが一致しているか判定する（Ｓ５０３）。Ｓ５０３で比較した番号が一致していれば、実行部はＳ５０５の処理を実行する。一方、Ｓ５０３で比較した番号が不一致の場合には、実行部２０１はファームウェア制御テーブル２７の稼働領域変更指定パラメタ２７１２に動作ユニット稼働領域識別番号２７０３を設定する。実行部は、モードパラメタ２７０９の稼働領域変更ＢＩＴをＯＮに設定する（Ｓ５０４）。
【００６４】
次に、ＣＭ２の実行部２０１は交換の対象のユニット７０の非稼働領域７３５に格納されたファームウェアの版数とディスクアレイ装置１内で動作中のユニット８０の稼働領域８３４に格納されたファームウェアの版数とが一致しているか判定する（Ｓ５０５）。実行部２０１は、交換ユニット稼働領域識別番号２７０７ではない識別番号に対応する非稼動領域７３５のファームウェアの版数を交換ユニット領域１ファームウェア版数２７０５あるいは交換ユニット領域２ファームウェア版数２７０６から抽出する。また、実行部２０１は動作ユニット稼働領域識別番号２７０３に対応するディスクアレイ装置１内で動作するユニット８０の稼動領域８３４のファームウェアの版数を動作ユニット領域１ファームウェア版数２７０１あるいは動作ユニット領域２ファームウェア版数２７０２から抽出する。
【００６５】
ＣＭ２の実行部２０１は、Ｓ５０５で比較した版数が一致していれば処理を終了する。一方、Ｓ５０５で比較した版数が不一致の場合、実行部２０１はファームウェア制御テーブル２７のダウンロード先指定パラメタ２７１０に交換の対象のユニット７０の非稼働領域７３５に対応する識別番号を設定する。また、実行部２０１は、版数指定パラメタ２７１１に動作ユニット稼働領域識別番号２７０３に対応する稼動領域７３４のファームウェアの版数を設定する。また、実行部２０１は、モードパラメタ２７０９のファームウェアダウンロードＢＩＴをＯＮに設定する（Ｓ５０６）。その後、処理を終了する。
【００６６】
Ｓ５０１の判定結果、実行部２０１は交換の対象のユニット７０の稼働領域７３４に対応する識別番号とディスクアレイ装置１内で動作中のユニット８０の稼働領域８３４に対応する識別番号とが一致した場合は、実行部２０１は交換の対象のユニット７０の稼働領域７３４に格納されたファームウェアの版数とディスクアレイ装置１内で動作中のユニット８０の稼働領域８３４に格納されたファームウェアの版数とを判定する（Ｓ５０７）。
【００６７】
実行部２０１は、Ｓ５０７で比較した版数が一致している場合にはＳ５１１の処理を行う。一方、Ｓ５０７で比較した版数が不一致の場合には、実行部２０１はファームウェア制御テーブル２７のダウンロード先指定パラメタ２７１０に交換の対象のユニット７０の稼働領域７３４に対応する識別番号を設定する。また、実行部２０１は、動作ユニット稼働領域識別番号２７０３と動作ユニット領域１ファームウェア版数２７０１と動作ユニット領域２ファームウェア版数２７０２とから特定されるディスクアレイ装置１内で動作するユニット８０の稼働領域８３４に格納されたファームウェアの版数を版数指定パラメタ２７１１に設定する。さらに実行部２０１は、モードパラメタ２７０９のファームウェアダウンロードＢＩＴおよびリブートＢＩＴをＯＮに設定する（Ｓ５０８）。
【００６８】
次に実行部２０１は交換ユニット次稼働領域識別番号２７０８とディスクアレイ装置１内で動作中のユニット８０の稼働領域８３４に対応する識別番号とが一致しているか判定する（Ｓ５０９）。
【００６９】
実行部２０１は、Ｓ５０９で比較した番号が一致していれば処理を終了する。一方、Ｓ５０９で比較した番号が不一致の場合には、実行部２０１はファームウェア制御テーブル２７の稼働領域変更指定パラメタ２７１２に動作ユニット稼働領域識別番号２７０３を設定する。実行部２０１は、モードパラメタ２７０９の稼働領域変更ＢＩＴをＯＮに設定する（Ｓ５１０）。その後、処理を終了する。
【００７０】
次に、Ｓ５０７の判定結果、交換の対象のユニット７０の稼働領域７３４に格納されたファームウェアの版数とディスクアレイ装置１内で動作中のユニット８０の稼働領域８３４に格納されたファームウェアの版数とが一致する場合を説明する。
【００７１】
ＣＭ２の実行部２０１は交換の対象のユニット７０の非稼働領域７３５に格納されたファームウェアの版数とディスクアレイ装置１内で動作中のユニット８０の非稼働領域８３５に格納されたファームウェアの版数とが一致しているか判定する（Ｓ５１１）。実行部２０１は、Ｓ５１１で比較した版数が一致していればＳ５１３の処理を行う。実行部２０１は、Ｓ５１１で比較した版数が不一致の場合にはファームウェア制御テーブル２７のダウンロード先指定パラメタ２７１０に交換の対象のユニット７０の非稼働領域７３５に対応する識別番号を設定する。実行部２０１は、版数指定パラメタ２７１１にディスクアレイ装置１内で動作中のユニット８０の非稼働領域８３５に格納されたファームウェアの版数を設定する。実行部２０１は、モードパラメタ２７０９のファームウェアダウンロードＢＩＴをＯＮに設定する（Ｓ５１２）。次に実行部２０１は交換ユニット次稼働領域識別番号２７０８が動作ユニット次稼働領域識別番号２７０４と一致しているか判定する（Ｓ５１３）。実行部２０１は、Ｓ５１３で比較した番号が一致していれば処理を終了する。一方、実行部２０１はＳ５１３で比較した番号が不一致の場合には、ファームウェア制御テーブル２７の稼働領域変更指定パラメタ２７１２に動作ユニット次稼働領域識別番号２７０４を設定する。また、実行部２０１は、モードパラメタ２７０９の稼働領域変更ＢＩＴをＯＮに設定する（Ｓ５１４）。その後処理を終了する。
【００７２】
以上の処理により、ディスクアレイ装置１が動作中でのユニットを交換する作業において、稼動領域にファームウェアをダウンロードすることが可能であるユニットと稼動領域にファームウェアをダウンロードすることが不可能であるユニットとがディスクアレイ装置１内に混在する場合でも、交換の対象のユニット７０とディスクアレイ装置１内で動作するユニット８０の各記憶領域に格納されたファームウェアの版数を一致させることが可能となる。また、ディスクアレイ装置１内で動作するユニット８０の記憶手段８３の稼動領域８３４に対応する識別番号が一致し、交換の対象のユニット７０がリブート後に稼動領域７３４とする記憶領域も一致する。一般にユニットは新しい版数のファームウェアを稼動領域に格納し、旧い版数のファームウェアを非稼動領域に格納する。したがって、例えば障害が発生したときなどにディスクアレイ装置１全体のファームウェアの版数を容易に切り替えることが可能となる。
【００７３】
なお、本実施例では、ディスクアレイ装置１内のユニットを同時に複数交換する構成ではない。同時に複数のユニットを交換することを可能にするためには以下の構成とする。ファームウェア制御テーブル２７の動作ユニット領域１ファームウェア版数２７０１、動作ユニット領域２ファームウェア版数２７０２、動作ユニット稼働領域識別番号２７０３、動作ユニット次稼働領域識別番号２７０４、交換ユニット領域１ファームウェア版数２７０５、交換ユニット領域２ファームウェア版数２７０６、交換ユニット稼働領域識別番号２７０７、交換ユニット次稼働領域識別番号２７０８、モードパラメタ２７０９、ダウンロード先指定パラメタ２７１０、版数指定パラメタ２７１１、および稼働領域変更指定パラメタ２７１２のユニットに固有の情報を、ユニット毎に用意する。ＣＭ２の実行部２０１がファームウェア制御テーブル２７を参照する際に、現在の処理の対象である交換の対象のユニット７０から取得した固有の情報の部分を参照する。以上の構成により同時に複数のユニットを交換することが可能となる。
【００７４】
本発明のユニットの記憶手段は複数のファームウェアを格納する領域を有する。ユニットの記憶手段の稼動領域に書き込み可能なユニットとユニットの記憶手段の稼動領域に書き込み不可能なユニットがあった場合で、かつ、ディスクアレイ装置内で稼動中のユニットのファームウェアの版数と交換の対象のユニットのファームウェアの版数とが不一致であった場合、ＣＭは記憶手段の非稼動側領域にディスクアレイ装置内で稼動中のユニットのファームウェアの版数が同じファームウェアを書き込む。その後、ＣＭが交換の対象のユニットの稼動側領域と非稼動側領域とを切り替えて、非稼動側に格納されたファームウェアを稼動側領域のファームウェアとすることにより、装置で稼動するユニットの稼動領域に格納されたファームウェアの版数と交換の対象のユニットの稼動領域に格納されたファームウェアの版数とを一致させる方法が考えられる。しかしながら、従来技術は、記憶手段の稼動領域の識別番号を揃えることについて考慮しない。ディスクアレイ装置は１００個以上ユニットを搭載する場合がある。ディスクアレイ装置の開発時にディスクアレイ装置の全ユニットにファームウェアをダウンロードし、ディスクアレイ装置を再起動した後に、ユニットが本当に正常に立ち上がってきたかどうかを判断する際に、ユニットが再起動する前に記憶手段のいずれの領域で処理を実行していたのかをユニット毎に比較して判断する必要がある。ユニットが再起動する前に記憶手段のいずれの領域で処理を実行していたのかが不明である。実際に記憶手段のいずれの領域で処理を実行していたのかを比較する場合は多大な労力を必要とする。本発明は稼動領域を揃える構成を有しているためデバッグの作業効率が向上する。
【００７５】
また、従来技術では、交換の対象のユニットの記憶手段にファームウェアをダウンロードした後にユニットの再起動をした場合、ダウンロードしたファームウェアに応じた処理をユニットが実行するとディスクアレイ装置が動作しない場合がある。例えば、ディスクアレイ装置の開発時のファームウェアの場合、ユニットのファームウェアであってもディスクアレイ装置全体が起動しない不具合を持つ場合がある。したがって、ディスクアレイ装置を復旧させるために各ユニットの記憶手段の稼動領域を装置リブート前状態に戻す作業が発生し、多大な労力を必要とする。本発明では、再起動後に稼動する記憶手段の領域も一致させる構成を有する。したがって、装置を再起動した後であっても、各ユニットを再起動前の状態に戻すことが容易である。
【００７６】
また、ディスクアレイ装置が運用中のときに不具合が発生すると、不具合の原因を調査する必要がある。ディスクアレイ装置で不具合が発生した状況を再現するためには、不具合が発生した時のディスクアレイ装置の状態にあわせる必要がある。したがって、ディスクアレイ装置の各ユニットの記憶手段の稼動領域も一致させる必要がある。ディスクアレイ装置で不具合が発生した状況を人間が解析するには多大な労力と時間がかかる。本発明は、稼動領域に記憶された各ファームウェアの版数、稼動するファームウェア、および、再起動後に実行するファームウェアを一致させることができる。また、各ユニットの稼動領域も一致して動作する。したがって、デバッグ時の状態を再現する作業数を減少させることが可能となる。
（付記１）
複数のファームウェアを格納したユニットを複数使用するディスクアレイ装置の制御方法であって、該ディスクアレイ装置の同一の機能を実行する複数のユニットの複数のファームウェアの版数を統一し、該複数のユニットで実行するファームウェアを統一することを特徴とするディスクアレイ装置の制御方法。
（付記２）
該ディスクアレイ装置の同一の機能を実行する複数のユニットの複数のファームウェアの版数の情報を取得し、該取得したファームウェアの版数の情報が異なる場合に該複数のユニットに同一の版数のファームウェアを送信し、該ディスクアレイ装置の同一の機能を実行する複数のユニットの実行するファームウェアの情報を取得し、該実行するファームウェアの情報が異なる場合に同一のファームウェアを実行させる情報を該複数のユニットに送信することを特徴とする付記１に記載のディスクアレイ装置の制御方法。
（付記３）
該複数のユニットは記憶手段を有し、該複数のユニットの記憶手段の複数のファームウェアを格納する領域を統一することを特徴とする付記１に記載のディスクアレイ装置の制御方法。
（付記４）
該ディスクアレイ装置が新たにユニットを認識した場合に、該ディスクアレイ装置の該新たに認識したユニットと同一の機能を実行するユニット間の複数のファームウェアの版数を統一し、該新たに認識されたユニットで実行するファームウェアと該同一の機能を実行するユニット間で実行するファームウェアを統一することを特徴とする付記１に記載のディスクアレイ装置の制御方法。
（付記５）
該ディスクアレイ装置が新たにユニットを認識すると該ディスクアレイ装置の同一の機能を実行する複数のユニットの複数のファームウェアの版数に統一し、該新たに認識されたユニットで実行するファームウェアを該ディスクアレイ装置の同一の機能を実行する複数のユニットで実行するファームウェアに統一することを特徴とする付記４に記載のディスクアレイ装置の制御方法。
（付記６）
該新たに認識したユニットが実行中のファームウェアが記憶された記憶領域にダウンロードできないユニットの場合、該新たに認識したユニットの記憶領域の実行中ではないファームウェアが記憶された領域と該ディスクアレイ装置の同一の機能を実行するユニットが実行する版数のファームウェアとを統一し、該新たに認識したユニットが該変更後の該ディスクアレイ装置の同一の機能を実行するユニットが実行する版数のファームウェアにより再起動した後で、該新たに認識したユニットの記憶領域の実行中ではないファームウェアが記憶された領域と該ディスクアレイ装置の同一の機能を実行するユニットが実行する版数のファームウェアとを統一することを特徴とする付記１に記載のディスクアレイ装置の制御方法。
（付記７）
該ディスクアレイ装置の同一の機能を実行する複数のユニットが再起動したときに実行するファームウェアを統一することを特徴とする付記１に記載のディスクアレイ装置の制御方法。
（付記８）
複数のファームウェアを格納したユニットを複数使用するディスクアレイ装置であって該ディスクアレイ装置の同一の機能を実行する複数のユニットの複数のファームウェアの版数を統一する統一手段と、該複数のユニットで実行するファームウェアを統一する第二の統一手段とを有することを特徴とするディスクアレイ装置。
（付記９）
複数のファームウェアを格納したユニットを複数使用するディスクアレイ装置のコンピュータの制御プログラムであって、該コンピュータを、該ディスクアレイ装置の同一の機能を実行する複数のユニットの複数のファームウェアの版数を統一する統一手段、該複数のユニットで実行するファームウェアを統一する第二の統一手段として機能させることを特徴とするディスクアレイ装置の制御プログラム。
【図面の簡単な説明】
【００７７】
【図１】実施例の全体構成図
【図２】ユニットの構成図
【図３】交換の対象となるユニット７０及びディスクアレイ装置内で動作するユニット８０の構成図
【図４】ＣＭ２の構成図
【図５】ファームウェア制御テーブル２７の構成図
【図６】活性保守ファームウェア版数一致処理のフローチャート
【図７】稼働側にファームウェア書き込み不可な保守ユニットの場合の版数チェックのフローチャート
【図８】稼働側にファームウェア書き込み可能な保守ユニットの場合の版数チェックのフローチャート
【符号の説明】
【００７８】
１  ディスクアレイ装置
２、３  ＣＭ
４１、４２  ＳＶＣ
４３、４４  ＣＡ
４７、４８  ＤＥ
４５、４６  ＰＢＣ
４９、５０  ＰＳＵ
５１、５２  ＢＵ
５３、５４  ＲＴ
６０  ユニット
６１  実行部
６２  主記憶
６３  記憶手段
６３１  第一の記憶領域
６３２  第二の記憶領域
６３３  第三の記憶領域
６３４  稼動領域
６３５  非稼動領域
６４  インターフェース部
６５  バス
７０  ユニット
７１  実行部
７２  主記憶
７３  記憶手段
７３１  第一の記憶領域
７３２  第二の記憶領域
７３３  第三の記憶領域
７３４  稼動領域
７３５  非稼動領域
７４  インターフェース部
７５  バス
８０  ユニット
８１  実行部
８２  主記憶
８３  記憶手段
８３１  第一の記憶領域
８３２  第二の記憶領域
８３３  第三の記憶領域
８３４  稼動領域
８３５  非稼動領域
８４  インターフェース部
８５  バス
９０、９１  システムディスク
９２、９３  ファームウェアファイル
２０１  実行部
２０２  主記憶
２０３  記憶手段
２０４  インターフェース部
２０５  バス
２１１  書込判別プログラム
２２２  版数判別プログラム
２３３  第一の記憶領域のファームウェア版数一致プログラム
２４４  第二の記憶領域のファームウェア版数一致プログラム
２５５  稼働領域一致プログラム
２６６  次稼動領域一致プログラム
２７  ファームウェア制御テーブル
２７０１  動作ユニット領域１ファームウェア版数
２７０２  動作ユニット領域２ファームウェア版数
２７０３  動作ユニット稼働領域識別番号
２７０４  動作ユニット次稼働領域識別番号
２７０５  交換ユニット領域１ファームウェア版数
２７０６  交換ユニット領域２ファームウェア版数
２７０７  交換ユニット稼働領域識別番号
２７０８  交換ユニット次稼働領域識別番号
２７０９  モードパラメタ
２７１０  ダウンロード先指定パラメタ
２７１１  版数指定パラメタ
２７１２  稼働領域変更指定パラメタ
【図１】
0005360311.tif 000002
【図２】
0005360311.tif 000003
【図３】
0005360311.tif 000004
【図４】
0005360311.tif 000005
【図５】
0005360311.tif 000006
【図６】
0005360311.tif 000007
【図７】
0005360311.tif 000008
【図８】
0005360311.tif 000009