(57)【要約】【課題】ホストバスアダプタのドライバの検証の効率化を図ること。【解決手段】ホストバスドライバ検証装置１０２は、正常に動作すると保証された上位システム上で動作するＯＳの種別、ＨＢＡの種別、およびＨＢＡドライバの種別を対応付けた対応関係情報１１１を予め記憶する。ＨＢＡ１０３を介して接続情報１１２を受信したホストバスドライバ検証装置１０２は、接続情報１１２と対応関係情報１１１とに基づいて、上位システム１０１に設定されるべきＨＢＡドライバの種別を求める。続けて、ホストバスドライバ検証装置１０２は、求められたＨＢＡの種別が、上位システム１０１に設定されたＨＢＡドライバの種別と一致するかを検証する。【選択図】図１
2015056021.tif 000002
【特許請求の範囲】
【請求項１】
上位システムに対してホストバスアダプタを介して接続されるホストバスドライバ検証装置であって、
上位システム上で動作するオペレーティングシステムの種別、ホストバスアダプタの種別、およびホストバスアダプタのドライバの種別を対応付けた対応関係情報を予め記憶する記憶部と、
接続先の前記上位システムから前記ホストバスアダプタを介して受信した、オペレーティングシステムの種別およびホストバスアダプタの種別に関係する情報を含む接続情報と、前記記憶部に格納された前記対応関係情報とに基づいて、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の前記上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証する制御部と、
を有することを特徴とするホストバスドライバ検証装置。
【請求項２】
前記対応関係情報は、さらに、ホストバスアダプタのドライバの種別に対応するホストバスアダプタのドライバを有しており、
前記制御部は、
求められた前記ホストバスアダプタのドライバの種別と、前記上位システムに設定されたホストバスアダプタのドライバの種別が異なると検証した場合に、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバを前記上位システムに送信することを特徴とする請求項１に記載のホストバスドライバ検証装置。
【請求項３】
前記制御部は、
ホストバスアダプタのドライバの種別に対応するホストバスアダプタのドライバを外部装置からダウンロードして、前記ホストバスアダプタのドライバの種別に対応付けて前記記憶部に格納することを特徴とする請求項２に記載のホストバスドライバ検証装置。
【請求項４】
前記接続情報は、接続先の前記上位システムのマルチパスドライバから送信されるホストバスアダプタのドライバの検証依頼に含まれており、
前記制御部は、
前記マルチパスドライバから、ホストバスアダプタのドライバの検証依頼を受信した場合、前記検証依頼に含まれる前記接続情報と前記対応関係情報とに基づいて、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の前記上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証することを特徴とする請求項１〜３のいずれか一つに記載のホストバスドライバ検証装置。
【請求項５】
上位システムと前記上位システムに対してホストバスアダプタを介して接続されるホストバスドライバ検証装置とを有するホストバス検証システムであって、
前記ホストバスドライバ検証装置は、
上位システム上で動作するオペレーティングシステムの種別、ホストバスアダプタの種別、およびホストバスアダプタのドライバの種別を対応付けた対応関係情報を予め記憶する記憶部と、
接続先の前記上位システムから前記ホストバスアダプタを介して受信した、オペレーティングシステムの種別およびホストバスアダプタの種別に関係する情報を含む接続情報と、前記記憶部に格納された前記対応関係情報とに基づいて、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の前記上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証する第１の制御部と、を有し、
前記上位システムは、
前記ホストバスドライバ検証装置と接続するホストバスアダプタと、
前記上位システム上で動作するオペレーティングシステムの種別および前記ホストバスアダプタの種別に関係する情報を含む接続情報を含む前記ホストバスアダプタのドライバの検証依頼を前記ホストバスドライバ検証装置に前記ホストバスアダプタを介して送信したことにより前記ホストバスドライバ検証装置から受信した検証結果に基づいて、前記ホストバスアダプタのドライバを設定する第２の制御部と、
を有することを特徴とするホストバス検証システム。
【請求項６】
上位システムに対してホストバスアダプタを介して接続されるホストバスドライバ検証装置のプログラムであって、
前記ホストバスドライバ検証装置に、
上位システム上で動作するオペレーティングシステムの種別、ホストバスアダプタの種別、およびホストバスアダプタのドライバの種別を対応付けた対応関係情報を予め記憶する記憶部に格納された前記対応関係情報と、接続先の前記上位システムから前記ホストバスアダプタを介して受信した、オペレーティングシステムの種別およびホストバスアダプタの種別に関係する情報を含む接続情報とに基づいて、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の前記上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証する、
処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストバスドライバ検証装置、ホストバス検証システム、およびプログラムに関する。
【背景技術】
【０００２】
サーバのホストバスアダプタ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ：ＨＢＡ）のドライバは、ＨＢＡに接続される装置に応じて設定される。関連する先行技術として、たとえば、ホストがスイッチに接続されると、ＨＢＡの属性情報およびスイッチの属性情報の組合せの信頼性について管理装置が判定するものがある。また、被管理システムにおいて基本装置が交換された場合には、基本装置を制御対象とする管理システムが、交換された基本装置と関連する基本装置を特定した後、基本装置の相性を管理システムが有する相性情報から取得する技術がある。さらに、ディスクアレイ装置が、サーバ装置、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）スイッチ装置およびストレージ装置との間の接続情報を、ＦＣスイッチ装置を介して取得して接続情報を組み合わせて管理するＨＢＡ情報管理用ＤＢ（ＤａｔａＢａｓｅ）から情報を取得する技術がある。（たとえば、下記特許文献１〜３を参照。）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１７８７２０号公報
【特許文献２】特開２０００−３５３１０８号公報
【特許文献３】特開２００５−３２２０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、あるシステムが有するＨＢＡに接続された装置に対するＨＢＡのドライバの検証を行うことが困難である。たとえば、あるシステムのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の版数、ＨＢＡの種別、接続された装置の種別、接続された装置のファームウェアの版数の組合せに応じた適切なＨＢＡのドライバの情報をあるシステムが記憶することになり、組合せが増加するほど情報量が膨大となる。
【０００５】
１つの側面では、本発明は、ホストバスアダプタのドライバを効率的に検証できるホストバスドライバ検証装置、ホストバス検証システム、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、上位システム上で動作するオペレーティングシステムの種別、ホストバスアダプタの種別、およびホストバスアダプタのドライバの種別を対応付けた対応関係情報を予め記憶する記憶部を有し、接続先の上位システムからホストバスアダプタを介して受信した、オペレーティングシステムの種別およびホストバスアダプタの種別に関係する情報を含む接続情報と、記憶部に格納された対応関係情報とに基づいて、接続先の上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証するホストバスドライバ検証装置、ホストバス検証システム、およびプログラムが提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、ホストバスアダプタのドライバを効率的に検証するという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかるホストバス検証システムの動作例を示す説明図である。
【図２】図２は、ストレージシステムの第１の例を示す説明図である。
【図３】図３は、ストレージシステムの第２の例を示す説明図である。
【図４】図４は、ストレージシステムの第３の例を示す説明図である。
【図５】図５は、サーバのハードウェア構成例を示すブロック図である。
【図６】図６は、ストレージ装置のハードウェア構成例を示すブロック図である。
【図７】図７は、サーバの機能構成例を示すブロック図である。
【図８】図８は、ストレージ装置の機能構成例を示すブロック図である。
【図９】図９は、ＨＢＡ  ＤＢの記憶内容の一例を示す説明図である。
【図１０】図１０は、ＨＢＡドライバの検証処理の動作例を示す説明図（その１）である。
【図１１】図１１は、ＨＢＡドライバの検証処理の動作例を示す説明図（その２）である。
【図１２】図１２は、サーバによるＨＢＡドライバ検証処理手順の一例を示すフローチャート（その１）である。
【図１３】図１３は、サーバによるＨＢＡドライバ検証処理手順の一例を示すフローチャート（その２）である。
【図１４】図１４は、ＨＢＡ問い合わせコマンド応答処理手順の一例を示すフローチャートである。
【図１５】図１５は、ストレージ装置によるＨＢＡドライバ検証処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のホストバスドライバ検証装置、ホストバス検証システム、およびプログラムの実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかるホストバス検証システムの動作例を示す説明図である。本実施の形態にかかるホストバス検証システム１００は、上位システム１０１と、上位システム１０１より下位のホストバスドライバ検証装置１０２とを有する。ホストバス検証システム１００は、上位システム１０１が有するホストバスアダプタのドライバを検証するシステムである。以下、ホストバスアダプタを「ＨＢＡ」と称する。また、ＨＢＡのドライバを「ＨＢＡドライバ」と称する。
【００１１】
上位システム１０１は、ホストバス検証システム１００全体を制御するシステムである。上位システム１０１は、たとえば、ユーザにサービスを提供するサーバである。また、上位システム１０１は、ＨＢＡ１０３を有する。ホストバスドライバ検証装置１０２は、ホストバスドライバ検証装置１０２が接続する装置に対する上位システム１０１上で動作するＨＢＡドライバを検証する装置である。ホストバスドライバ検証装置１０２は、ストレージ装置、プリンタ、スイッチ等に適用される。たとえば、ホストバスドライバ検証装置１０２がストレージ装置に適用されるならば、ホストバスドライバ検証装置１０２は、ストレージ装置に対する上位システム１０１上で動作するＨＢＡドライバを検証する。また、ホストバスドライバ検証装置１０２がストレージ装置、プリンタ、スイッチ等のいずれか一つに接続されており、接続された装置に対する上位システム１０１上で動作するＨＢＡドライバを検証してもよい。
【００１２】
ＨＢＡは、上位システム１０１に搭載されるインターフェースカードである。ＨＢＡは、接続された装置とのデータのやり取りを行う。ＨＢＡの接続形態により、ＦＣ、ｉＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）等がある。
【００１３】
ＨＢＡドライバは、接続されるホストバスドライバ検証装置との接続が正常に動作すると検証された版数を使用することが求められる。検証されていない版数のＨＢＡドライバが使用された場合、正しく動作せず、障害がおこる可能性がある。
【００１４】
ＨＢＡドライバは、上位システムのＯＳ、ＯＳの版数の更新、ＨＢＡのベンダーによる機能追加や障害修正、等に伴って複数存在することが多い。また、たとえば、正常に動作すると検証されたＨＢＡのドライバの数は、ＨＢＡに接続された装置のモデルや、ＨＢＡに接続された装置のファームウェアの版数ごとに異なるため、複数存在する。
【００１５】
ここで、正常に動作すると検証されたＨＢＡのドライバか否かを検証する手順としては、たとえば、ＨＢＡを有する上位システムの管理者が、ＨＢＡに接続された装置のサポート情報を閲覧して、設定されたＨＢＡのドライバが正しいかを確認することになる。設定されたＨＢＡのドライバが異なる場合、上位システムの管理者は、設定すべき版数のドライバを、ＨＢＡに接続された装置のベンダーのＷｅｂサイト等から入手し、インストールする。ＨＢＡに接続された装置が設置された環境は、一般的に外界から遮断されていることが多いので、管理者は、上位システムの動作環境、ＨＢＡに接続される装置の情報を調べ、ＨＢＡのドライバを入手し、事前に用意しておくことになる。
【００１６】
前述の手順は、管理者による作業工数がかかってしまう。また、適切なドライバを選定するにも、管理者にノウハウが要求される。さらに、管理者が多忙であったり、管理者の注意力が不足していたりして、設定されたＨＢＡドライバが正しいかの管理者による確認が誤ってしまい、ＨＢＡに添付されているドライバや、既にＯＳに組み込まれているドライバを使用してしまう恐れがある。
【００１７】
そこで、本実施の形態にかかるホストバスドライバ検証装置１０２は、正常動作が保証される上位システムのＯＳとＨＢＡとドライバの組合せを参照して、上位システム１０１のＯＳとＨＢＡを基にＨＢＡドライバを検証する。これにより、ホストバスドライバ検証装置１０２は、検証において、ＨＢＡ接続される装置に関する場合分けが不要になる。場合分けが不要となる分、適切なＨＢＡのドライバの情報を記憶する記憶量を減らすことができるとともに、適切なＨＢＡのドライバの情報の検索にかかる処理量を減らすことができるため、効率的に検証を行うことができる。
【００１８】
図１の例では、上位システム１０１には、ＨＢＡ１０３用に添付されているＨＢＡドライバとして、ＨＢＡドライバ１０４が設定されているものとする。
【００１９】
ホストバスドライバ検証装置１０２は、正常に動作すると保証された上位システム上で動作するＯＳの種別、ＨＢＡの種別、およびＨＢＡドライバの種別を対応付けた対応関係情報１１１を予め記憶する。本実施の形態におけるＯＳの種別は、ＯＳの名称と、ＯＳの版数とにより区別されるものとする。たとえば、ＯＳの名称が“ＯＳ−Ａ”であり、版数が“ｖ１．０．０”である“ＯＳ−Ａ”と、版数が“ｖ１．１．０”である“ＯＳ−Ａ”とは、異なる種別となる。本実施の形態におけるＨＢＡの種別は、ＨＢＡのモデル名により区別されるものである。ＨＢＡドライバの種別は、ＨＢＡドライバの版数により区別されるものである。
【００２０】
上位システム１０１は、ＨＢＡドライバ１０４の検証依頼として、ＨＢＡ１０３を介して、上位システム１０１のＯＳ種別およびＨＢＡ１０３の種別に関係する情報を含む接続情報１１２を、ホストバスドライバ検証装置１０２に送信する。ＨＢＡ１０３の種別に関係する情報として、ＨＢＡ１０３の種別そのものでもよいし、検証対象となるＨＢＡドライバの版数が含まれていてもよい。
【００２１】
ＨＢＡ１０３を介して接続情報１１２を受信したホストバスドライバ検証装置１０２は、接続情報１１２と対応関係情報１１１とに基づいて、上位システム１０１に設定されるべきＨＢＡドライバの種別を求める。たとえば、ホストバスドライバ検証装置１０２は、対応関係情報１１１から、接続情報１１２のＯＳの種別とＨＢＡの種別に対応するＨＢＡドライバの種別を、上位システム１０１に設定されるべきＨＢＡドライバの種別として求める。具体的な求め方については、図１１で後述する。
【００２２】
続けて、ホストバスドライバ検証装置１０２は、求められたＨＢＡの種別が、上位システム１０１に設定されたＨＢＡドライバの種別と一致するかを検証する。２つの種別が一致する場合、ホストバスドライバ検証装置１０２は、検証結果として、正常なＨＢＡドライバが設定されているとする。一方、２つの種別が異なる場合、ホストバスドライバ検証装置１０２は、検証結果として、正常に動作する保証がないＨＢＡドライバが設定されているとする。
【００２３】
次に、ホストバス検証システム１００を、ストレージシステムに適用した例として、第１の例を、図２を用いて説明する。また、第２の例を、図３を用いて説明する。さらに、第３の例を、図４を用いて説明する。ストレージシステムは、ストレージ装置が有する記憶領域をユーザに提供するシステムである。ストレージシステムに含まれるサーバが、上位システム１０１に相当する。また、ストレージシステムに含まれるストレージ装置が、ホストバスドライバ検証装置１０２に相当する。
【００２４】
図２は、ストレージシステムの第１の例を示す説明図である。第１の例におけるストレージシステム２００は、１サーバと１ストレージ装置とが直結するシステムである。具体的に、ストレージシステム２００は、サーバ２０１と、ストレージ装置２０２とを有する。サーバ２０１と、ストレージ装置２０２とは、ホストポートにより接続される。
【００２５】
サーバ２０１は、ユーザに対してストレージシステム２００の機能を提供する装置である。ストレージ装置２０２は、大容量の記憶領域を有する装置である。ストレージ装置２０２が有する記憶領域には、ストレージシステム２００のユーザが利用するユーザデータを記憶するユーザデータ領域と、ストレージシステム２００の管理のために用いられるシステム領域とがある。
【００２６】
サーバ２０１は、２つのＨＢＡとして、ＨＢＡ２０３＃１とＨＢＡ２０３＃２とを有する。また、サーバ２０１は、ソフトウェアとして、ＯＳ２１１と、マルチパスドライバ２１２と、ＨＢＡドライバ２１３＃１と、ＨＢＡドライバ２１３＃２とを実行する。
【００２７】
ＯＳ２１１は、サーバ２０１全体の制御を行う。マルチパスドライバ２１２は、サーバシステムに複数のＨＢＡに搭載されており、複数のＨＢＡのそれぞれに接続する装置とサーバシステムとの間のパスが複数ある場合、複数のパスを制御するソフトウェアである。マルチパスドライバは、サーバシステムにインストールされるソフトウェアである。具体的に、マルチパスドライバは、サーバシステムがホストバスアダプタに接続する装置にアクセスする場合に、複数のパスのうちのいずれのパスを使用するかを決定する。ＨＢＡドライバ２１３＃１は、ＨＢＡ２０３＃１の制御を行う。ＨＢＡドライバ２１３＃２は、ＨＢＡ２０３＃２の制御を行う。
【００２８】
図３は、ストレージシステムの第２の例を示す説明図である。第２の例におけるストレージシステム３００は、１サーバと２ストレージ装置とが直結するシステムである。具体的に、ストレージシステム３００は、サーバ３０１と、ストレージ装置３０２＃１と、ストレージ装置３０２＃２と、を有する。サーバ３０１と、ストレージ装置３０２＃１と、ストレージ装置３０２＃２とは、ホストポートにより接続される。
【００２９】
サーバ３０１は、ユーザに対してストレージシステム３００の機能を提供する装置である。ストレージ装置３０２＃１、＃２は、大容量の記憶領域を有する装置である。ストレージ装置３０２＃１、＃２は、それぞれ、ユーザデータ領域と、システム領域とを有する。
【００３０】
サーバ３０１は、４つのＨＢＡとして、ＨＢＡ３０３＃１〜ＨＢＡ３０３＃４を有する。ＨＢＡ３０３＃１とＨＢＡ３０３＃２とは、ストレージ装置３０２＃１に接続する。ＨＢＡ３０３＃３とＨＢＡ３０３＃４とは、ストレージ装置３０２＃２に接続する。このように、ストレージシステム３００は、１つのＨＢＡが１つのストレージ装置と接続する例である。
【００３１】
また、サーバ３０１は、ソフトウェアとして、ＯＳ３１１と、マルチパスドライバ３１２と、ＨＢＡドライバ３１３＃１〜ＨＢＡドライバ３１３＃４と、を実行する。ＯＳ３１１は、サーバ３０１全体の制御を行う。ＨＢＡドライバ３１３＃１は、ＨＢＡ３０３＃１の制御を行う。ＨＢＡドライバ３１３＃２は、ＨＢＡ３０３＃２の制御を行う。ＨＢＡドライバ３１３＃３は、ＨＢＡ３０３＃３の制御を行う。ＨＢＡドライバ３１３＃４は、ＨＢＡ３０３＃４の制御を行う。
【００３２】
図４は、ストレージシステムの第３の例を示す説明図である。第３の例におけるストレージシステム４００は、１サーバと２ストレージ装置とを有し、ＦＣスイッチ経由で接続するシステムである。具体的に、ストレージシステム４００は、サーバ４０１と、ストレージ装置４０２＃１と、ストレージ装置４０２＃２と、ＦＣスイッチ４０３とを有する。サーバ４０１と、ストレージ装置４０２＃１と、ストレージ装置４０２＃２と、ＦＣスイッチ４０３とは、ホストポートにより接続される。
【００３３】
サーバ４０１は、ユーザに対してストレージシステム４００の機能を提供する装置である。ストレージ装置４０２＃１、＃２は、大容量の記憶領域を有する装置である。ストレージ装置４０２＃１、＃２は、それぞれ、ユーザデータ領域と、システム領域とを有する。
【００３４】
サーバ４０１は、２つのＨＢＡとして、ＨＢＡ４０４＃１と、ＨＢＡ４０４＃２を有する。ＨＢＡ４０４＃１とＨＢＡ４０４＃２とは、ストレージ装置４０２＃１とストレージ装置４０２＃２とにそれぞれ接続する。このように、ストレージシステム４００は、１つのＨＢＡが２つのストレージ装置と接続する例である。
【００３５】
また、サーバ４０１は、ソフトウェアとして、ＯＳ４１１と、マルチパスドライバ４１２と、ＨＢＡドライバ４１３＃１と、ＨＢＡドライバ４１３＃２と、を実行する。ＯＳ４１１は、サーバ４０１全体の制御を行う。ＨＢＡドライバ４１３＃１は、ＨＢＡ４０４＃１の制御を行う。ＨＢＡドライバ４１３＃２は、ＨＢＡ４０４＃２の制御を行う。
【００３６】
本実施の形態は、ストレージシステム２００、３００、４００のいずれであっても適用することができる。以下の説明では、第３の例におけるストレージシステム４００を例に挙げる。
【００３７】
図５は、サーバのハードウェア構成例を示すブロック図である。図５において、サーバ４０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３と、を含む。また、サーバ４０１は、ディスクドライブ５０４およびディスク５０５と、通信インターフェース５０６と、ＨＢＡ４０４＃１と、ＨＢＡ４０４＃２と、を含む。また、ＣＰＵ５０１〜通信インターフェース５０６、ＨＢＡ４０４＃１、ＨＢＡ４０４＃２はバス５０７によってそれぞれ接続される。
【００３８】
ＣＰＵ５０１は、サーバ４０１の全体の制御を司る演算処理装置である。ＲＯＭ５０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される揮発性メモリである。
【００３９】
ディスクドライブ５０４は、ＣＰＵ５０１の制御に従ってディスク５０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ５０４には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク５０５は、ディスクドライブ５０４の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ５０４が磁気ディスクドライブである場合、ディスク５０５には、磁気ディスクを採用することができる。また、ディスクドライブ５０４がソリッドステートドライブである場合、ディスク５０５には、半導体素子メモリを採用することができる。
【００４０】
通信インターフェース５０６は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース５０６は、通信回線を通じてネットワークを介して、ストレージシステム４００を利用するユーザが操作する装置に接続される。通信インターフェース５０６には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。
【００４１】
また、サーバ４０１は、ストレージシステム４００の管理者等から直接操作される際には、キーボード、マウスを有する。次に、図６において、ストレージ装置のハードウェア構成例について、ストレージ装置４０２＃１を例にして説明を行う。ストレージ装置４０２＃２も、ストレージ装置４０２＃１と同様のハードウェア構成を有する。
【００４２】
図６は、ストレージ装置のハードウェア構成例を示すブロック図である。図６では、ストレージ装置４０２＃１を例にして、ハードウェア構成例を説明する。ストレージ装置４０２＃２も、ストレージ装置４０２＃１と同一のハードウェア構成を有する。図６において、ストレージ装置４０２＃１は、ＣＰＵ６０１と、ＲＯＭ６０２と、ＲＡＭ６０３と、を含む。また、ストレージ装置４０２＃１は、磁気ディスクドライブ６０４および磁気ディスク６０５と、インターフェース６０６と、を含む。また、ＣＰＵ６０１〜インターフェース６０６はバス６０７によってそれぞれ接続される。
【００４３】
ＣＰＵ６０１は、ストレージ装置４０２＃１の全体の制御を司る演算処理装置である。ＲＯＭ６０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ６０３は、ＣＰＵ６０１のワークエリアとして使用される揮発性メモリである。
【００４４】
磁気ディスクドライブ６０４は、ＣＰＵ６０１の制御に従って磁気ディスク６０５に対するデータのリードおよびライトを制御する制御装置である。磁気ディスク６０５は、磁気ディスクドライブ６０４の制御で書き込まれたデータを、磁性体を塗布した円盤に記憶する装置である。インターフェース６０６は、ホストポートを経由して、サーバ４０１からのデータの入出力を制御する制御装置である。
【００４５】
図７は、サーバの機能構成例を示すブロック図である。サーバ４０１は、制御部７００を含む。制御部７００は、送信部７０１と、受信部７０２と、設定部７０３とを有する。制御部７００は、マルチパスドライバ４１２に含まれる機能である。制御部７００は、記憶装置に記憶されたプログラムをＣＰＵ５０１が実行することにより、制御部７００の機能を実現する。記憶装置とは、具体的には、たとえば、図５に示したＲＯＭ５０２、ＲＡＭ５０３、ディスク５０５などである。各部の結果は、サーバ４０１のＲＡＭ５０３、ディスク５０５等に格納される。
【００４６】
送信部７０１は、ＨＢＡドライバ４１３の検証依頼をストレージ装置４０２に送信する。ＨＢＡドライバ４１３の検証依頼は、以下「ＨＢＡ問い合わせコマンド」と称する。ＨＢＡ問い合わせコマンドには、ＯＳ種別と、ＨＢＡモデル種別と、検証対象となるＨＢＡドライバ４１３の版数とが含まれる。ＨＢＡ問い合わせコマンドの詳細は、図１１で後述する。たとえば、送信部７０１は、ＨＢＡドライバ４１３＃１のＨＢＡ問い合わせコマンドを、ＨＢＡドライバ４１３＃１に接続するストレージ装置４０２＃１、＃２に送信する。
【００４７】
受信部７０２は、送信部７０１がＨＢＡ問い合わせコマンドを送信したことにより、ストレージ装置４０２から検証結果を受信する。以下、検証結果を、「ＨＢＡ問い合わせコマンドの応答」と称する。ＨＢＡ問い合わせコマンドの応答には、検証結果が正しいか否かを示す復帰コードが含まれる。さらに、復帰コードが正しくないことを示す場合、ＨＢＡ問い合わせコマンドの応答には、設定すべきＨＢＡドライバ４１３の種別が含まれてもよい。さらに、復帰コードが正しくないことを示す場合、ＨＢＡ問い合わせコマンドの応答には、設定すべきＨＢＡドライバ４１３が含まれてもよい。ＨＢＡ問い合わせコマンドの応答の詳細は、図１１で後述する。たとえば、受信部７０２は、ストレージ装置４０２＃１、＃２からＨＢＡ問い合わせコマンドの応答を受信する。
【００４８】
設定部７０３は、受信部７０２が受信したＨＢＡ問い合わせコマンドの応答に基づいて、ＨＢＡドライバ４１３を設定する。たとえば、ＨＢＡ問い合わせコマンドの応答に、設定すべきＨＢＡドライバ４１３の種別として、ある版数が含まれていたとする。このとき、設定部７０３は、ある版数に対応するＨＢＡドライバ４１３をインストールすることにより、ある版数に対応するＨＢＡドライバ４１３を設定する。ある版数に対応するＨＢＡドライバ４１３の取得例として、設定部７０３は、ネットワークを経由してＨＢＡドライバ４１３のサポート情報を格納した装置に接続して、ある版数に対応するＨＢＡドライバ４１３を取得してもよい。また、ＨＢＡ問い合わせコマンドの応答に、設定すべきＨＢＡドライバ４１３が含まれる場合は、設定部７０３は、ＨＢＡ問い合わせコマンドの応答から取得してもよい。
【００４９】
また、１つのＨＢＡ４０４＃１に、複数のストレージ装置４０２が接続しており、受信部７０２が複数のＨＢＡ問い合わせコマンドの応答を受信したとする。このとき、設定部７０３は、ＨＢＡ問い合わせコマンドの応答ごとに設定されるべきＨＢＡドライバ４１３が異なる版数である場合に、異なる版数のうちの小さい版数のドライバを設定する。具体的な設定例については、図１１で後述する。版数は、数値で表されることが一般的であるが、アルファベット等の文字が含まれる場合もある。文字が含まれる場合、たとえば、設定部７０３は、文字の部分に関しては辞書順により異なる版数の大小を判定して、小さい版数のドライバを設定してもよい。たとえば、２つの版数が“ｖ１．０ａ”と“ｖ１．０ｂ”であれば、設定部７０３は、“ｖ１．０ａ”の版数のＨＢＡドライバ４１３を設定する。
【００５０】
図８は、ストレージ装置の機能構成例を示すブロック図である。図８では、ストレージ装置４０２＃１を例にして、機能構成例を説明する。ストレージ装置４０２＃２も、ストレージ装置４０２＃１と同一の機能構成を有する。ストレージ装置４０２は、制御部８００を含む。制御部８００は、受信部８０１と、特定部８０２と、検証部８０３と、送信部８０４とを有する。制御部８００は、記憶装置に記憶されたプログラムをＣＰＵ６０１が実行することにより、制御部８００の機能を実現する。記憶装置とは、具体的には、たとえば、図６に示したＲＯＭ６０２、ＲＡＭ６０３、磁気ディスク６０５などである。各部の結果は、ストレージ装置４０２＃１のＲＡＭ６０３、磁気ディスク６０５等に格納される。
【００５１】
また、ストレージ装置４０２＃１は、ＨＢＡ  ＤＢ８１１＃１にアクセス可能である。ＨＢＡ  ＤＢ８１１＃１は、磁気ディスク６０５内のシステム領域に格納されている。ＨＢＡ  ＤＢ８１１の記憶内容が、図１で説明した対応関係情報１１１に相当する。ＨＢＡ  ＤＢ８１１の記憶内容の詳細については、図９で後述する。
【００５２】
受信部８０１は、ＨＢＡ問い合わせコマンドを受信する。ＨＢＡ問い合わせコマンドには、図１で説明した、接続情報１１２が含まれる。
【００５３】
特定部８０２は、受信部８０１が受信したＨＢＡ問い合わせコマンドに含まれる接続情報１１２と、ＨＢＡ  ＤＢ８１１に含まれる対応関係情報１１１とに基づいて、サーバ４０１に設定されるべきＨＢＡドライバ４１３の種別を特定する。たとえば、特定部８０２は、対応関係情報１１１から、接続情報１１２に含まれるＯＳの種別とＨＢＡの種別とが同一のレコードを検出する。そして、特定部８０２は、検出したレコードのＨＢＡドライバ４１３の種別を、サーバ４０１に設定されるべきＨＢＡドライバ４１３の種別として特定する。
【００５４】
検証部８０３は、特定部８０２が特定したＨＢＡドライバ４１３の種別がサーバ４０１に設定されたＨＢＡドライバ４１３の種別と一致するかを検証する。たとえば、検証部８０３は、特定したＨＢＡドライバ４１３の版数と、サーバ４０１に設定されたＨＢＡドライバ４１３の版数が一致する場合、検証結果として、正常なＨＢＡドライバが設定されているとする。
【００５５】
送信部８０４は、特定部８０２が特定したＨＢＡドライバ４１３の種別と、サーバ４０１に設定されたＨＢＡドライバ４１３の種別が異なると検証した場合に、サーバ４０１に設定されるべきＨＢＡドライバ４１３をサーバ４０１に送信する。
【００５６】
また、制御部８００は、ＨＢＡドライバの種別に対応するＨＢＡドライバ４１３を外部装置からダウンロードして、ＨＢＡドライバ４１３の種別に対応付けてＨＢＡ  ＤＢ８１１に格納してもよい。ここで、外部装置は、ストレージシステム４００以外の外部の装置であり、たとえば、ＨＢＡドライバ４１３のベンダーの管理により、ＨＢＡドライバ４１３を記憶するサーバである。
【００５７】
図９は、ＨＢＡ  ＤＢの記憶内容の一例を示す説明図である。図９に示すＨＢＡ  ＤＢ８１１は、レコード９０１−１と、レコード９０１−２とを有する。ＨＢＡ  ＤＢ８１１は、ＯＳ種別と、ＨＢＡモデル種別と、推奨ＨＢＡドライバ版数と、ＨＢＡドライバモジュールと、いう４つのフィールドを含む。
【００５８】
ＯＳ種別フィールドには、ＨＢＡ  ＤＢ８１１を有するストレージ装置が正常に動作することが検証できた際の、ＨＢＡのドライバモジュールがサーバにインストールされたＯＳの種別が格納される。ＯＳの種別は、ＯＳの名称および版数により区別される。たとえば、あるＯＳについて、版数１のＯＳと、版数２のＯＳとは異なるＯＳの種別となる。
【００５９】
ＨＢＡモデル種別フィールドには、ＨＢＡ  ＤＢ８１１を有するストレージ装置が正常に動作することが検証できた際の、ＨＢＡのモデル種別が格納される。推奨ＨＢＡドライバ版数フィールドには、ＨＢＡ  ＤＢ８１１を有するストレージ装置が正常に動作することが検証できた際の、サーバが有するＨＢＡのドライバの版数が格納される。ＨＢＡドライバモジュールフィールドには、ＨＢＡ  ＤＢ８１１を有するストレージ装置が正常に動作することが検証できた際の、ＨＢＡドライバ４１３が格納される。以下の説明において、ＨＢＡドライバ４１３のプログラムコードを、「ＨＢＡドライバモジュール」と呼称する場合がある。また、ＨＢＡドライバモジュールフィールドには、ＨＢＡドライバモジュールが格納されたファイル名やファイルパスが格納されてもよい。
【００６０】
たとえば、レコード９０１−１は、ＨＢＡ  ＤＢ８１１を有するストレージ装置が正常に動作することが検証できた際の、サーバにインストールされたＯＳ種別が、“ＯＳ−Ａｖ１．０”であり、サーバが有するＨＢＡモデル種別がＡ社モデル１であることを示す。また、レコード９０１−１は、ＨＢＡ  ＤＢ８１１を有するストレージ装置が正常に動作することが検証できた際の、ＨＢＡのドライバの版数がｖ１．３．５であることを示す。さらに、レコード９０１−１は、ＨＢＡ  ＤＢ８１１を有するストレージ装置が正常に動作することが検証できた際の、ＨＢＡのドライバモジュールの実体が、“ＯＳ−Ａ＿ＨＢＡ＿Ａ１＿ｄｒｖ＿ｖ１．３．５．ｍｏｄ”であることを示す。
【００６１】
このように、ＨＢＡ  ＤＢ８１１は、サーバのＯＳの種別とＨＢＡの種別と組合せごとに、ＨＢＡドライバモジュールを含むため、データ量が無視できない量になる。したがって、サーバ４０１が通常アクセスできる領域に配置すると、ユーザ資源を圧迫することになるので、ストレージ装置４０２は、サーバ４０１が通常アクセスできるユーザ領域ではなく、システム領域にＨＢＡ  ＤＢ８１１を配置する。マルチパスドライバ４１２は、サーバ４０１が通常アクセスできないシステム領域にアクセスするため、ストレージ装置４０２との通信に、固有の特殊インターフェースを使用する。
【００６２】
次に、図１０において、ＨＢＡドライバの検証処理の動作例を説明する。ＨＢＡドライバの検証処理は、マルチパスドライバ４１２がマルチパスを構築する処理を行う前に行う処理である。また、ＳＡＮ  ｂｏｏｔ時点では、まだマルチパスドライバ４１２が動作できないため、ＨＢＡドライバの検証処理が行われない。また、ＳＡＮ  ｂｏｏｔ時点において、ＨＢＡドライバが正常に動作する版数でなく問題が発生した場合、ストレージシステム４００の起動が完了しない。この場合、ストレージシステム４００の管理者がＨＢＡドライバの版数を含めた各種設定を見直すため、最終的に正常なＨＢＡドライバが使用されることになる。また、全く動作しないＨＢＡドライバが使用された場合、サーバ４０１はストレージ装置４０２にアクセスできない。この場合も、ＳＡＮ  ｂｏｏｔの場合と同様に、ストレージシステム４００の管理者が、ＨＢＡドライバの版数を含めた各種設定を見直すため、最終的に正常なＨＢＡドライバが使用されることになる。
【００６３】
図１０は、ＨＢＡドライバの検証処理の動作例を示す説明図（その１）である。図１０に示すストレージシステム４００は、ＨＢＡ４０４＃２を制御するＨＢＡドライバ４１３＃２の検証を行う。図１０では、検証前のストレージシステム４００の状態について説明する。
【００６４】
サーバ４０１は、版数がｖ１．０となるＯＳ−Ａを実行する。また、サーバ４０１は、サーバ４０１にインストールされていたＨＢＡドライバとして、版数がｖ２．１．０となるＨＢＡドライバ４１３＃２を実行する。ＨＢＡ４０４＃２のモデル種別は、“Ａ社モデル２”である。
【００６５】
ストレージ装置４０２＃１のＨＢＡ  ＤＢ８１１＃１には、レコード９０１＃１−１と、９０１＃１−２とを記憶する。また、ストレージ装置４０２＃２のＨＢＡ  ＤＢ８１１＃２には、レコード９０１＃２−１、９０１＃２−２とを記憶する。
【００６６】
図１１は、ＨＢＡドライバの検証処理の動作例を示す説明図（その２）である。マルチパスドライバ４１２は、版数がｖ２．１．０となるＨＢＡドライバ４１３＃２が正しく動作すると保証されたドライバか否かを検証する。ＨＢＡドライバの検証処理を行う際に、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数を０としておく。推奨ＨＢＡドライバ版数が０である場合、初回のＨＢＡ問い合わせコマンドの応答をまだ受信していない状態であることを示し、推奨ＨＢＡドライバ版数が０以外の値である場合、初回のＨＢＡ問い合わせコマンドが受信済であることを示す。
【００６７】
図１１の（１）の処理として、マルチパスドライバ４１２は、ストレージ装置４０２＃１に対してＨＢＡ問い合わせコマンドを発行する。ＨＢＡ問い合わせコマンドは、ＨＢＡ問い合わせコマンドに含まれる版数で示されるＨＢＡドライバが、正しく動作すると保証されたドライバであるかを問い合わせるコマンドである。ＨＢＡ問い合わせコマンドには、ＯＳ種別と、ＨＢＡモデル種別と、検証対象となるＨＢＡドライバの版数とが含まれる。図１１の（１）の処理で発行されるＨＢＡ問い合わせコマンドには、ＯＳ種別として“ＯＳ−Ａｖ１．０”と、ＨＢＡモデル種別として“Ａ社モデル２”と、検証対象となるＨＢＡドライバの版数として“ｖ２．１．０”とが含まれる。
【００６８】
次に、図１１の（２）の処理として、ＨＢＡ問い合わせコマンドを受信したストレージ装置４０２＃１は、ＨＢＡ問い合わせコマンドのＯＳ名、ＨＢＡモデル名をキーとして、ＨＢＡ  ＤＢ８１１＃１を検索する。この場合、ストレージ装置４０２＃１は、レコード９０１＃１−２を検出する。そして、ストレージ装置４０２＃１は、ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数の値と、検出したレコードの推奨ＨＢＡドライバ版数との値が一致したかを判断する。図１１の（２）の処理の例では、ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数が“ｖ２．１．０”であり、検出したレコードの推奨ＨＢＡドライバ版数が“ｖ１．２．０”であるため、ストレージ装置４０２＃１は、ドライバ版数が一致しないと判断する。
【００６９】
ドライバ版数が一致しなかったため、図１１の（３）の処理として、ストレージ装置４０２＃１は、ＨＢＡ問い合わせコマンドの応答をサーバ４０１に送信する。ＨＢＡ問い合わせコマンドの応答には、復帰コードと、通知推奨ＨＢＡドライバ版数と、通知推奨ＨＢＡドライバとを含む。復帰コードには、以下の３つの識別子のいずれかが格納される。第１の識別子は、ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数の値と、検出したレコードの推奨ＨＢＡドライバ版数との値が一致したことを示す“０”である。第２の識別子は、ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数の値と、検出したレコードの推奨ＨＢＡドライバ版数との値が異なることを示す“４”である。第３の識別子は、ＨＢＡ問い合わせコマンドのＯＳ種別およびＨＢＡモデル種別に対応するレコードがＨＢＡ  ＤＢ８１１＃１にないことを示す“８”である。
【００７０】
通知推奨ＨＢＡドライバ版数は、ストレージ装置４０２＃１から通知された、正しく動作すると保証されたＨＢＡドライバの版数である。通知推奨ＨＢＡドライバは、ストレージ装置４０２＃１から通知された、正しく動作すると保証された推奨ＨＢＡドライバのモジュールである。
【００７１】
図１１の（３）の処理で送信されるＨＢＡ問い合わせコマンドの応答には、復帰コードとして“４”と、通知推奨ＨＢＡドライバ版数として“ｖ１．２．０”と、“ＯＳ−Ａ＿ＨＢＡ＿Ａ２＿ｄｒｖ＿ｖ１．２．０．ｍｏｄ”という名称のモジュールとが含まれる。
【００７２】
ＨＢＡ問い合わせコマンドの応答を受信したマルチパスドライバ４１２は、応答に含まれる復帰コードに応じた処理を行う。復帰コードに応じた処理については、図１３で説明する。図１１の（３）の処理では、応答に含まれる復帰コードが“４”であり、初回のＨＢＡ問い合わせコマンドの応答であるため、マルチパスドライバ４１２は、以降に発行するＨＢＡ問い合わせコマンドのＨＢＡドライバの版数を、“ｖ１．２．０”に設定する。また、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数を、“ｖ１．２．０”に設定する。２回目以降のＨＢＡ問い合わせコマンドの応答である場合については、図１１の（６）の処理を説明する際に併せて説明する。
【００７３】
続けて、図１１の（４）の処理として、マルチパスドライバ４１２は、ストレージ装置４０２＃２に対してＨＢＡ問い合わせコマンドを発行する。図１１の（４）の処理で発行されるＨＢＡ問い合わせコマンドには、ＯＳ種別として“ＯＳ−Ａｖ１．０”と、ＨＢＡモデル種別として“Ａ社モデル２”と、ＨＢＡドライバの版数として“ｖ１．２．０”とが含まれる。
【００７４】
次に、図１１の（５）の処理として、ＨＢＡ問い合わせコマンドを受信したストレージ装置４０２＃２は、ＨＢＡ問い合わせコマンドのＯＳ名、ＨＢＡモデル名をキーとして、ＨＢＡ  ＤＢ８１１＃２を検索する。この場合、ストレージ装置４０２＃２は、レコード９０１＃２−２を検出する。そして、ストレージ装置４０２＃２は、ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数の値と、検出したレコードの推奨ＨＢＡドライバ版数との値が一致したかを判断する。図１１の（５）の処理の例では、ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数が“ｖ１．２．０”であり、検出したレコードの推奨ＨＢＡドライバ版数が“ｖ２．０．０”であるため、ストレージ装置４０２＃２は、ドライバ版数が一致しないと判断する。
【００７５】
ドライバ版数が一致しなかったため、図１１の（６）の処理として、ストレージ装置４０２＃２は、ＨＢＡ問い合わせコマンドの応答をサーバ４０１に送信する。図１１の（６）の処理で送信されるＨＢＡ問い合わせコマンドの応答には、“４”と、“ｖ２．０．０”と、“ＯＳ−Ａ＿ＨＢＡ＿Ａ２＿ｄｒｖ＿ｖ２．０．０．ｍｏｄ”というファイル名のドライバモジュールとが含まれる。
【００７６】
ＨＢＡ問い合わせコマンドの応答を受信したマルチパスドライバ４１２は、応答に含まれる復帰コードに応じた処理を行う。復帰コードに応じた処理については、図１４で説明する。図１１の（６）の処理では、応答に含まれる復帰コードが“４”であり、２回目以降のＨＢＡ問い合わせコマンドの応答であるため、マルチパスドライバ４１２は、応答を行ったストレージ装置４０２全てが共通して正常に使用できるＨＢＡドライバ版数を特定する。ここで、あるＨＢＡドライバに対して、ストレージ装置４０２のファームウェアは、通常上位互換である。上位互換とは、機能や性能で上位に位置づけられるソフトウェアなどの製品が、下位の製品と互換性を持つことである。たとえば、ＨＢＡドライバ版数が“ｖ２．０．０”となるＨＢＡドライバに対して正常に動作すると検証されたストレージ装置４０２は、“ｖ２．０．０”以下の版数に対するＨＢＡドライバに対しても正常に動作する。
【００７７】
本実施の形態では、マルチパスドライバ４１２は、上位互換の性質を利用して、ＨＢＡ問い合わせコマンドの応答に含まれる推奨ＨＢＡドライバ版数のうち、最も下位のＨＢＡドライバ版数を用いる。具体的には、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数と応答に含まれる通知推奨ＨＢＡドライバ版数との大小を比較する。
【００７８】
推奨ＨＢＡドライバ版数が通知推奨ＨＢＡドライバ版数より大きい場合、現在より前に応答したストレージ装置４０２が正常に動作すると保証された版数が、現在応答したストレージ装置４０２が正常に動作すると保証された版数より上位であることを示す。現在より前に応答したストレージ装置４０２は、上位互換により、通知推奨ＨＢＡドライバ版数であっても正常に動作する。したがって、現在より前に応答したストレージ装置４０２を正常に動作させるとともに、現在応答したストレージ装置４０２も正常に動作させるため、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数を通知推奨ＨＢＡドライバ版数に変更する。
【００７９】
推奨ＨＢＡドライバ版数が通知推奨ＨＢＡドライバ版数より小さい場合、現在より前に応答したストレージ装置４０２が正常に動作すると保証された版数が、現在応答したストレージ装置４０２が正常に動作すると保証された版数より下位であることを示す。現在応答したストレージ装置４０２は、上位互換により、推奨ＨＢＡドライバ版数であっても正常に動作する。したがって、マルチパスドライバ４１２は、現在応答したストレージ装置４０２を正常に動作させるとともに、現在より前に応答したストレージ装置４０２も正常に動作させるため、推奨ＨＢＡドライバ版数を変更しない。
【００８０】
図１１の（６）の処理では、推奨ＨＢＡドライバ版数が“ｖ１．２．０”であり、通知推奨ＨＢＡドライバ版数が“ｖ２．０．０”であるから、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数の値を変更しない。
【００８１】
ストレージ装置４０２全てから応答を受信した場合、マルチパスドライバ４１２は、図１１の（７）の処理として、推奨ＨＢＡドライバ版数が、現在インストールされているＨＢＡドライバ版数に一致するかを判断する。一致しない場合、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数に対応するＨＢＡドライバをインストールする。図１１の（７）の処理では、推奨ＨＢＡドライバ版数が“ｖ１．２．０”であり、現在インストールされているＨＢＡドライバ版数が“ｖ２．１．０”であるから、マルチパスドライバ４１２は、“ｖ１．２．０”のＨＢＡドライバをインストールする。
【００８２】
以上により、ストレージシステム４００は、ストレージ装置４０２＃１、＃２が正常に動作できることが保証された、版数が“ｖ１．２．０”であるＨＢＡドライバを用いて、ＨＢＡ４０４＃２を動作させることができる。
【００８３】
次に、ストレージシステム４００が実行する動作のフローチャートについて、図１２〜図１５を用いて説明する。
【００８４】
図１２は、サーバによるＨＢＡドライバ検証処理手順の一例を示すフローチャート（その１）である。また、図１３は、サーバによるＨＢＡドライバ検証処理手順の一例を示すフローチャート（その２）である。サーバによるＨＢＡドライバ検証処理は、サーバ４０１にインストールされたＨＢＡドライバ４１３の検証を行う処理である。
【００８５】
マルチパスドライバ４１２は、複数のＨＢＡ４０４のうち、１つ目のＨＢＡ４０４を選択する（ステップＳ１２０１）。ステップＳ１２０１の処理終了後、または、後述するステップＳ１３０４の処理終了後、マルチパスドライバ４１２は、選択したＨＢＡ４０４に接続する複数のストレージ装置４０２のうち、１つ目のストレージ装置４０２を選択する（ステップＳ１２０２）。続けて、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数に０を設定する（ステップＳ１２０３）。続けて、マルチパスドライバ４１２は、ＨＢＡドライバ版数に、現在インストールされているＨＢＡドライバ版数を設定する（ステップＳ１２０４）。
【００８６】
次に、マルチパスドライバ４１２は、選択したストレージ装置４０２へ、ＨＢＡ問い合わせコマンドを発行する（ステップＳ１２０５）。続けて、マルチパスドライバ４１２は、選択したストレージ装置４０２にＨＢＡ問い合わせコマンドが受け付けられたか否かを判断する（ステップＳ１２０６）。選択したストレージ装置４０２にＨＢＡ問い合わせコマンドが受け付けられた場合（ステップＳ１２０６：Ｙｅｓ）、マルチパスドライバ４１２は、ＨＢＡ問い合わせコマンド応答処理を実行する（ステップＳ１２０７）。ＨＢＡ問い合わせコマンド応答処理は、図１４で後述する。
【００８７】
選択したストレージ装置４０２にＨＢＡ問い合わせコマンドが拒否された場合（ステップＳ１２０６：Ｎｏ）、マルチパスドライバ４１２は、“未サポートのストレージ装置”を示すメッセージを出力する（ステップＳ１２０８）。ステップＳ１２０６：Ｎｏとなる場合とは、たとえば、選択したストレージ装置がＨＢＡドライバ検証処理に対応していない時である。また、ステップＳ１２０６：Ｎｏとなる場合、マルチパスドライバ４１２は、ステップＳ１２０８の処理をしなくてもよい。
【００８８】
ステップＳ１２０７、またはステップＳ１２０８の処理終了後、マルチパスドライバ４１２は、選択したＨＢＡ４０４に接続する全てのストレージ装置４０２を選択したか否かを判断する（ステップＳ１２０９）。選択したＨＢＡ４０４に接続するストレージ装置４０２のうちまだ選択していないストレージ装置４０２がある場合（ステップＳ１２０９：Ｎｏ）、マルチパスドライバ４１２は、次のストレージ装置を選択する（ステップＳ１２１０）。そして、マルチパスドライバ４１２は、ステップＳ１２０５の処理に移行する。
【００８９】
選択したＨＢＡ４０４に接続する全てのストレージ装置を選択した場合（ステップＳ１２０９：Ｙｅｓ）、マルチパスドライバ４１２は、図１３で示すステップＳ１３０１の処理に移行する。
【００９０】
ステップＳ１２０９：Ｙｅｓの場合、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数が現在インストールされているＨＢＡドライバ版数に一致するか否かを判断する（ステップＳ１３０１）。推奨ＨＢＡドライバ版数が現在インストールされているＨＢＡドライバ版数とは異なる場合（ステップＳ１３０１：Ｎｏ）、マルチパスドライバ４１２は、推奨ＨＢＡドライバに設定されたドライバを選択したＨＢＡ４０４のドライバとして設定する（ステップＳ１３０２）。ステップＳ１３０２の処理について、具体的には、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数と併せて送信されたＨＢＡドライバのモジュールをインストールすることにより、選択したＨＢＡ４０４のドライバとして設定する。
【００９１】
ステップＳ１３０２の処理終了後、または、推奨ＨＢＡドライバ版数が現在インストールされているＨＢＡドライバ版数に一致する場合（ステップＳ１３０１：Ｙｅｓ）、マルチパスドライバ４１２は、全てのＨＢＡ４０４を選択したか否かを判断する（ステップＳ１３０３）。まだ選択していないＨＢＡ４０４がある場合（ステップＳ１３０３：Ｎｏ）、マルチパスドライバ４１２は、次のＨＢＡを選択する（ステップＳ１３０４）。そして、マルチパスドライバ４１２は、ステップＳ１２０２の処理に移行する。
【００９２】
全てのＨＢＡ４０４を選択した場合（ステップＳ１３０３：Ｙｅｓ）、マルチパスドライバ４１２は、サーバによるＨＢＡドライバ検証処理を終了する。サーバによるＨＢＡドライバ検証処理を実行することにより、ストレージシステム４００は、サーバ４０１にインストールされたＨＢＡドライバ４１３の検証を行うことができる。また、ストレージシステム４００は、ＨＢＡ４０４に接続する全てのストレージ装置４０２が正しく動作すると保証されたＨＢＡドライバ４１３に設定することができる。
【００９３】
図１４は、ＨＢＡ問い合わせコマンド応答処理手順の一例を示すフローチャートである。ＨＢＡ問い合わせコマンド応答処理は、ストレージ装置４０２による応答に対する処理である。ストレージ装置４０２からＨＢＡ問い合わせコマンドの応答を受信した場合、マルチパスドライバ４１２は、応答に含まれる復帰コードが次に示す識別子のいずれに一致するかを判断する（ステップＳ１４０１）。識別子は、“０”と、“４”と、“８”とである。
【００９４】
応答に含まれる復帰コードが“０”である場合（ステップＳ１４０１：０）、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数が０であるか否かを判断する（ステップＳ１４０２）。推奨ＨＢＡドライバ版数が０である場合（ステップＳ１４０２：Ｙｅｓ）、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数を、現在インストールされているＨＢＡドライバ版数に設定する（ステップＳ１４０３）。ステップＳ１４０３の処理終了後、または、推奨ＨＢＡドライバ版数が０でない場合（ステップＳ１４０２：Ｎｏ）、マルチパスドライバ４１２は、ＨＢＡ問い合わせコマンド応答処理を終了する。
【００９５】
応答に含まれる復帰コードが“４”である場合（ステップＳ１４０１：４）、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数が０であるか否かを判断する（ステップＳ１４０４）。推奨ＨＢＡドライバ版数が０でない場合（ステップＳ１４０４：Ｎｏ）、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数が応答に含まれる通知推奨ＨＢＡドライバ版数より大きいか否かを判断する（ステップＳ１４０５）。
【００９６】
推奨ＨＢＡドライバ版数が０である場合（ステップＳ１４０４：Ｙｅｓ）、または、推奨ＨＢＡドライバ版数が応答に含まれる通知推奨ＨＢＡドライバ版数より大きい場合（ステップＳ１４０５：Ｙｅｓ）、マルチパスドライバ４１２は、推奨ＨＢＡドライバ版数を応答に含まれる通知推奨ＨＢＡドライバ版数に設定する（ステップＳ１４０６）。続けて、マルチパスドライバ４１２は、推奨ＨＢＡドライバを応答に含まれる通知推奨ＨＢＡドライバに設定する（ステップＳ１４０７）。次に、マルチパスドライバ４１２は、ＨＢＡドライバ版数を応答に含まれる通知推奨ＨＢＡドライバ版数に設定する（ステップＳ１４０８）。ステップＳ１４０８の処理終了後、マルチパスドライバ４１２は、ＨＢＡ問い合わせコマンド応答処理を終了する。
【００９７】
一方、推奨ＨＢＡドライバ版数が応答に含まれる通知推奨ＨＢＡドライバ版数以下である場合（ステップＳ１４０５：Ｎｏ）、マルチパスドライバ４１２は、ＨＢＡ問い合わせコマンド応答処理を終了する。
【００９８】
応答に含まれる復帰コードが“８”である場合（ステップＳ１４０１：８）、マルチパスドライバ４１２は、“ＨＢＡはサポート対象外”を示すメッセージを出力する（ステップＳ１４０９）。ステップＳ１４０９の処理終了後、マルチパスドライバ４１２は、ＨＢＡ問い合わせコマンド応答処理を終了する。ＨＢＡ問い合わせコマンド応答処理を実行することにより、マルチパスドライバ４１２は、選択したＨＢＡに対して、ストレージ装置４０２が正しく動作すると保証された版数を特定することができる。
【００９９】
図１５は、ストレージ装置によるＨＢＡドライバ検証処理手順の一例を示すフローチャートである。ストレージ装置によるＨＢＡドライバ検証処理は、ＨＢＡ問い合わせコマンドを受信した際に、サーバ４０１にインストールされたＨＢＡドライバの検証を行う処理である。
【０１００】
ＨＢＡ問い合わせコマンドを受信した場合、ストレージ装置４０２は、通知推奨ＨＢＡドライバ版数を０に設定する（ステップＳ１５０１）。次に、ストレージ装置４０２は、通知推奨ＨＢＡドライバをｎｕｌｌに設定する（ステップＳ１５０２）。続けて、ストレージ装置４０２は、ＨＢＡ問い合わせコマンドのＯＳ名、ＨＢＡモデル名をキーとして、ＨＢＡ  ＤＢ８１１を検索する（ステップＳ１５０３）。次に、ストレージ装置４０２は、ＨＢＡ  ＤＢ８１１に、ＨＢＡ問い合わせコマンドのＯＳ名、ＨＢＡモデル名と同一のレコードを検出したか否かを判断する（ステップＳ１５０４）。
【０１０１】
ＨＢＡモデル名と同一のレコードを検出した場合（ステップＳ１５０４：Ｙｅｓ）、続けて、ストレージ装置４０２は、ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数と、検出したレコードの推奨ＨＢＡドライバ版数との値が一致したか否かを判断する（ステップＳ１５０５）。ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数と検出したレコードの推奨ＨＢＡドライバ版数との値が一致した場合（ステップＳ１５０５：Ｙｅｓ）、ストレージ装置４０２は、復帰コードを０に設定する（ステップＳ１５０６）。
【０１０２】
ＨＢＡ問い合わせコマンドのＨＢＡドライバ版数と検出したレコードの推奨ＨＢＡドライバ版数との値が一致していない場合（ステップＳ１５０５：Ｎｏ）、ストレージ装置４０２は、復帰コードを４に設定する（ステップＳ１５０７）。続けて、ストレージ装置４０２は、通知推奨ＨＢＡドライバ版数を検出したレコードの推奨ＨＢＡドライバ版数に設定する（ステップＳ１５０８）。次に、ストレージ装置４０２は、通知推奨ＨＢＡドライバを検出したレコードのＨＢＡドライバモジュールに設定する（ステップＳ１５０９）。
【０１０３】
ＨＢＡモデル名と同一のレコードが検出できなかった場合（ステップＳ１５０４：Ｎｏ）、ストレージ装置４０２は、復帰コードを８に設定する（ステップＳ１５１０）。ステップＳ１５０６、ステップＳ１５０９、ステップＳ１５１０のうちのいずれかの処理終了後、ストレージ装置４０２は、復帰コードと、通知推奨ＨＢＡドライバ版数と、通知推奨ＨＢＡドライバと、をマルチパスドライバ４１２に通知する（ステップＳ１５１１）。ステップＳ１５１１の処理終了後、ストレージ装置４０２は、ストレージ装置によるＨＢＡドライバ検証処理を終了する。ストレージ装置によるＨＢＡドライバ検証処理を実行することにより、ストレージ装置４０２は、マルチパスドライバ４１２から通知されたＨＢＡドライバ版数を検証することができる。
【０１０４】
以上説明したように、ストレージ装置４０２によれば、正常動作が保証される上位システムのＯＳとＨＢＡとドライバの組合せを参照して、上位システム１０１のＯＳとＨＢＡを基にＨＢＡドライバを検証する。これにより、ストレージ装置４０２は、検証において、ＨＢＡ接続される装置に関する場合分けが不要になる。場合分けが不要となる分、適切なＨＢＡのドライバの情報を記憶する記憶量を減らすことができるとともに、適切なＨＢＡのドライバの情報の検索にかかる処理量を減らすことができるため、効率的に検証を行うことができる。また、検証結果が正しいＨＢＡドライバ４１３が設定されていると出力されている場合、管理者は検証結果を確認するだけでよいので、ストレージシステム４００は、管理者が行うＨＢＡドライバ４１３の設定にかかる作業工数を低減させることができる。
【０１０５】
また、ストレージ装置４０２によれば、サーバ４０１に設定されるべきＨＢＡドライバ４１３の種別と、サーバ４０１に設定されたＨＢＡドライバ４１３の種別が異なる場合、サーバ４０１に設定されるべきＨＢＡドライバ４１３をサーバ４０１に送信してもよい。これにより、サーバ４０１は、サーバ４０１に設定されるべきＨＢＡドライバ４１３を設定して、ＨＢＡドライバ４１３の設定不良により生じる動作不良の発生を防止できる。また、検証結果が設定すべきＨＢＡドライバ４１３が設定されていないと出力された場合でも、管理者は設定すべきＨＢＡドライバ４１３の入手が容易になるため、管理者が行うＨＢＡドライバ４１３の設定にかかる作業工数を低減させることができる。
【０１０６】
また、ストレージ装置４０２によれば、ＨＢＡドライバの種別に対応するＨＢＡドライバ４１３を外部装置からダウンロードして、ＨＢＡドライバ４１３の種別に対応付けてＨＢＡ  ＤＢ８１１に格納してもよい。これにより、ストレージシステム４００は、ＨＢＡドライバ４１３の種別に対応するＨＢＡドライバ４１３の入手にかかるストレージシステム４００の管理者の手間を省くことができる。
【０１０７】
また、ストレージ装置４０２によれば、ＨＢＡドライバ４１３の検証依頼を受信した場合に、サーバ４０１に設定されたＨＢＡドライバ４１３を検証してもよい。ＨＢＡドライバ４１３の検証依頼は、ストレージシステム４００立ち上げ時に発行される。これにより、管理者がサーバ４０１を操作して検証依頼を発行しなくてもよいので、ストレージシステム４００は、管理者の手間を省くことができる。
【０１０８】
また、サーバ４０１によれば、ＨＢＡドライバ４１３の検証依頼を送信したことにより受信した検証結果に基づいて、ＨＢＡドライバ４１３を設定してもよい。これにより、サーバ４０１は、検証結果が検証済でない場合、検証済である、正常動作が保証されるＨＢＡドライバ４１３に自動的に訂正することができる。
【０１０９】
また、サーバ４０１によれば、１つのＨＢＡ４０４に、複数のストレージ装置４０２が存在して、ＨＢＡドライバ４１３の検証依頼を送信したことにより受信した検証結果が複数ある場合、版数が低いＨＢＡドライバ４１３を設定してもよい。これにより、サーバ４０１は、複数のストレージ装置４０２全てが正常に動作するＨＢＡドライバ４１３を設定することができる。
【０１１０】
なお、本実施の形態で説明したホストバスドライバ検証処理を行うプログラムは、パーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１１１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１１２】
（付記１）上位システムに対してホストバスアダプタを介して接続されるホストバスドライバ検証装置であって、
上位システム上で動作するオペレーティングシステムの種別、ホストバスアダプタの種別、およびホストバスアダプタのドライバの種別を対応付けた対応関係情報を予め記憶する記憶部と、
接続先の前記上位システムから前記ホストバスアダプタを介して受信した、オペレーティングシステムの種別およびホストバスアダプタの種別に関係する情報を含む接続情報と、前記記憶部に格納された前記対応関係情報とに基づいて、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の前記上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証する制御部と、
を有することを特徴とするホストバスドライバ検証装置。
【０１１３】
（付記２）前記対応関係情報は、さらに、ホストバスアダプタのドライバの種別に対応するホストバスアダプタのドライバを有しており、
前記制御部は、
求められた前記ホストバスアダプタのドライバの種別と、前記上位システムに設定されたホストバスアダプタのドライバの種別が異なると検証した場合に、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバを前記上位システムに送信することを特徴とする付記１に記載のホストバスドライバ検証装置。
【０１１４】
（付記３）前記制御部は、
ホストバスアダプタのドライバの種別に対応するホストバスアダプタのドライバを外部装置からダウンロードして、前記ホストバスアダプタのドライバの種別に対応付けて前記記憶部に格納することを特徴とする付記２に記載のホストバスドライバ検証装置。
【０１１５】
（付記４）前記接続情報は、接続先の前記上位システムのマルチパスドライバから送信されるホストバスアダプタのドライバの検証依頼に含まれており、
前記制御部は、
前記マルチパスドライバから、ホストバスアダプタのドライバの検証依頼を受信した場合、前記検証依頼に含まれる前記接続情報と前記対応関係情報とに基づいて、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の前記上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証することを特徴とする付記１〜３のいずれか一つに記載のホストバスドライバ検証装置。
【０１１６】
（付記５）ホストバスドライバ検証装置と接続するホストバスアダプタと、
自システム上で動作するオペレーティングシステムの種別および前記ホストバスアダプタの種別に関係する情報を含む接続情報を含む前記ホストバスアダプタのドライバの検証依頼を前記ホストバスドライバ検証装置に前記ホストバスアダプタを介して送信したことに応じて前記ホストバスドライバ検証装置から受信した検証結果に基づいて、前記ホストバスアダプタのドライバを設定する制御部と、
を有することを特徴とするシステム。
【０１１７】
（付記６）前記ホストバスアダプタに接続する前記ホストバスドライバ検証装置が複数存在しており、
前記制御部は、
前記検証依頼を複数のホストバスドライバ検証装置の各々のホストバスドライバ検証装置に前記ホストバスアダプタを介して送信したことに応じて前記各々のホストバスドライバ検証装置から受信した検証結果の前記自システムに設定されるべきホストバスアダプタのドライバが異なる版数である場合に、前記異なる版数のうちの小さい版数のドライバを設定することを特徴とする付記５に記載のシステム。
【０１１８】
（付記７）上位システムと前記上位システムに対してホストバスアダプタを介して接続されるホストバスドライバ検証装置とを有するホストバス検証システムであって、
前記ホストバスドライバ検証装置は、
上位システム上で動作するオペレーティングシステムの種別、ホストバスアダプタの種別、およびホストバスアダプタのドライバの種別を対応付けた対応関係情報を予め記憶する記憶部と、
接続先の前記上位システムから前記ホストバスアダプタを介して受信した、オペレーティングシステムの種別およびホストバスアダプタの種別に関係する情報を含む接続情報と、前記記憶部に格納された前記対応関係情報とに基づいて、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の前記上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証する第１の制御部と、を有し、
前記上位システムは、
前記ホストバスドライバ検証装置と接続するホストバスアダプタと、
前記上位システム上で動作するオペレーティングシステムの種別および前記ホストバスアダプタの種別に関係する情報を含む接続情報を含む前記ホストバスアダプタのドライバの検証依頼を前記ホストバスドライバ検証装置に前記ホストバスアダプタを介して送信したことにより前記ホストバスドライバ検証装置から受信した検証結果に基づいて、前記ホストバスアダプタのドライバを設定する第２の制御部と、
を有することを特徴とするホストバス検証システム。
【０１１９】
（付記８）上位システムに対してホストバスアダプタを介して接続されるホストバスドライバ検証装置のプログラムであって、
前記ホストバスドライバ検証装置に、
上位システム上で動作するオペレーティングシステムの種別、ホストバスアダプタの種別、およびホストバスアダプタのドライバの種別を対応付けた対応関係情報を予め記憶する記憶部に格納された前記対応関係情報と、接続先の前記上位システムから前記ホストバスアダプタを介して受信した、オペレーティングシステムの種別およびホストバスアダプタの種別に関係する情報を含む接続情報とに基づいて、接続先の前記上位システムに設定されるべきホストバスアダプタのドライバの種別を求め、求められた種別が接続先の前記上位システムに設定されたホストバスアダプタのドライバの種別と一致するかを検証する、
処理を実行させることを特徴とするプログラム。
【符号の説明】
【０１２０】
１００  ホストバス検証システム
１０１  上位システム
１０２  ホストバスドライバ検証装置
２００、３００、４００  ストレージシステム
２０１、３０１、４０１  サーバ
２０２、３０２、４０２  ストレージ装置
７００、８００  制御部
７０１、８０４  送信部
７０２、８０１  受信部
７０３  設定部
８０２  特定部
８０３  検証部
【図１】
2015056021.tif 000003
【図２】
2015056021.tif 000004
【図３】
2015056021.tif 000005
【図４】
2015056021.tif 000006
【図５】
2015056021.tif 000007
【図６】
2015056021.tif 000008
【図７】
2015056021.tif 000009
【図８】
2015056021.tif 000010
【図９】
2015056021.tif 000011
【図１０】
2015056021.tif 000012
【図１１】
2015056021.tif 000013
【図１２】
2015056021.tif 000014
【図１３】
2015056021.tif 000015
【図１４】
2015056021.tif 000016
【図１５】
2015056021.tif 000017