接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法
【課題】デバイス異常の影響を最小限にし、処理の迅速化や多段接続の利便性を高めることにある。
【解決手段】デバイスを接続する複数のポート(物理ポート40、41、42、43)と、各ポートから得られるデバイス情報を記録する記憶部(8)と、前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部(6)とを備える。
【解決手段】デバイスを接続する複数のポート(物理ポート40、41、42、43)と、各ポートから得られるデバイス情報を記録する記憶部(8)と、前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部(6)とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のデバイスの多段接続制御に関し、例えば、SAS〔Serial Attached SCSI(Small Computer System interface )〕エキスパンダ等の接続拡張装置、該接続拡張装置を含むストレージシステム、接続拡張制御プログラム及び接続拡張制御方法に関する。
【背景技術】
【0002】
記憶装置等の多数のデバイスを多段接続する場合には、接続拡張のために接続拡張装置が用いられる。多段接続される例えば、SASデバイスにあっては、接続拡張のためにSASエキスパンダが用いられる。このエキスパンダの上位装置である入出力(IO)コントローラでは、エキスパンダに接続後、配下にある全てのデバイスをエキスパンダを通してディスカバリ(Discovery )と称する状態確認処理により認識する。このDiscovery 処理にはデバイスの状態を認識するデバイス認識処理が含まれ、この処理ではデバイス故障や接続切れ等のデバイス異常が認識される。
【0003】
このようなストレージシステムにおいて、SASデバイスを多段接続する構成や、SASエキスパンダに対しての情報設定、障害情報の採取等が行われることが知られている(特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−242872公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、多段接続構成では、特定のエキスパンダ配下にあるデバイス異常等で構成変化を生じると、構成変更中状態(Configuring 状態)に移行するが、特定のエキスパンダ以外のエキスパンダもConfiguring 状態となる。この場合、IOコントローラは、Configuring 状態にあるエキスパンダ配下のデバイスに対してIO発行ができない。即ち、Configuring 状態にあるエキスパンダ配下のデバイスに対する入出力アクセスができない。
【0006】
このような状態はエキスパンダの多段接続環境を損ない、多段接続の規模が大きければ、使用できないデバイスが増加することになり、多段接続環境のメリットが得られないこととなる。
【0007】
そこで、本開示の接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法の目的は、デバイス異常の影響を最小限にし、処理の迅速化や多段接続の利便性を高めることにある。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本開示の接続拡張装置は、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる処理部を含む。
【0009】
上記目的を達成するため、本開示のストレージシステムの一側面では例えば、第1の記憶部を含む接続拡張部と、第2の記憶部とを備える。前記接続拡張部では、デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を第1の記憶部に記録する。前記第2の記憶部は、前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第1の記憶部に保持させた際に、これらデバイス情報を記憶する。
【0010】
上記目的を達成するため、本開示の接続拡張制御プログラムの一側面は、接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、例えば、記録機能や記録制御機能を含む。記録機能では、デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する。記録制御機能は、例えば、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる。
【0011】
上記目的を達成するため、本開示の接続拡張制御方法の一側面は、例えば、記録ステップと、記録制御ステップとを含む。前記記録ステップでは、デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する。前記記録制御機能では、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる。
【発明の効果】
【0012】
本開示の接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法によれば、次のような効果が得られる。
【0013】
(1) 異常デバイスが属するポートを絞り込み、そのポートに属するデバイス情報を無効にし、正常デバイスが属するポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性を高めることができる。
【0014】
(2) 異常デバイスが属するポートのみを特定し、各ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性を図ることができる。
【0015】
そして、本発明の他の目的、特徴及び利点は、添付図面及び各実施の形態を参照することにより、一層明確になるであろう。
【図面の簡単な説明】
【0016】
【図1】第1の実施の形態に係るエキスパンダの多段接続の構成例を示す図である。
【図2】デバイス確認処理の処理手順の一例を示すフローチャートである。
【図3】第2の実施の形態に係るストレージシステムの一例を示す図である。
【図4】ストレージシステムの処理手順の一例を示すフローチャートである。
【図5】第3の実施の形態に係るエキスパンダユニットの一例を示す図である。
【図6】ストレージシステムの一例を示す図である。
【図7】ストレージシステムの概要を示す図である。
【図8】エキスパンダを用いた多段接続の構成例を示す図である。
【図9】デバイス認識処理の処理手順の一例を示すフローチャートである。
【図10】ルーティングテーブルの一例を示す図である。
【図11】ブロードキャスト(チェンジ)発行処理の処理手順の一例を示すフローチャートである。
【図12】正常時のルーティングテーブルの一例を示す図である。
【図13】ディスカバリ処理完了前のルーティングテーブルの一例を示す図である。
【図14】ディスカバリ処理完了後のルーティングテーブルを示す図である。
【図15】ルーティングテーブルの再作成の処理手順の一例を示すフローチャートである。
【図16】ディスカバリ処理(通常時)の処理手順の一例を示すフローチャートである。
【図17】デバイスアドレス情報の取得処理の一例を示すフローチャートである。
【図18】デバイス情報取得の処理手順の一例を示すフローチャートである。
【図19】デバイスマップの一例を示す図である。
【図20】構成確認完了後のディスカバリ処理の処理手順を示すフローチャートである。
【図21】ディスカバリ処理後のデバイスマップを示す図である。
【図22】ディスカバリの全処理手順の一例を示すフローチャートである。
【図23】他の実施の形態に係るルーティングテーブルの一例を示す図である。
【図24】デバイス認識処理の比較例を示すフローチャートである。
【図25】ルーティングテーブルの作成手順の比較例を示すフローチャートである。
【図26】ディスカバリの全処理手順の比較例を示すフローチャートである。
【発明を実施するための形態】
【0017】
〔第1の実施の形態〕
【0018】
この第1の実施の形態について、図1を参照する。図1は、エキスパンダの多段接続の構成例を示している。
【0019】
エキスパンダ2は、本開示の接続拡張装置の一例であって、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部8に記憶する。このエキスパンダ2は、複数の記憶装置等のデバイスの多段接続及びその接続切替えに用いられるスイッチデバイスであって、このエキスパンダ(EXP:Expander)2には、図1に示すように、複数の物理ポート(Phy)40、41、42、43と、処理部6と、既述の記憶部8とを備える。
【0020】
Phy40、41、42、43は、それぞれに他のエキスパンダや記憶装置等、単一又は複数のデバイスが接続される接続ポートである。Phy40にはエキスパンダ(EXP)90を介してデバイス101、102・・・10Nが接続され、Phy41にはEXP91を介してデバイス111、112・・・11Nが接続されている。Phy42にはEXP92を介してデバイス121、122・・・12Nが接続され、Phy43にはEXP93を介してデバイス131、132・・・13Nが接続されている。ここで、デバイス101〜13Nは例えば、SASデバイスであり、具体的にはディスク記憶装置である。
【0021】
処理部6は、プロセッサによって実現され、Phy40、41、42、43に接続された下位のEXP90〜93の選択手段として機能する。
【0022】
記憶部8は、既述のデバイスを表すデバイス情報を記憶する記憶手段であって、デバイス確認処理で得られたデバイス情報12を記録している。このデバイス情報12の記憶にはテーブルを作成して格納すればよい。
【0023】
斯かる構成では、EXP2に状態情報の取得処理として例えば、デバイス認識処理により、全デバイス101〜13Nからデバイス情報が通知される。このデバイス情報の通知を受け、EXP2には各デバイスの状態を表すデバイス情報12が記憶部8に書き込まれる。このデバイス情報12は、Phy40〜43を表す物理ポート情報とともに記憶部8に記憶する。
【0024】
この場合、デバイス情報12には、正常デバイス及び異常デバイスの双方の情報が含まれる。そこで、状態情報から異常デバイスが属する物理ポートを絞り込み、異常デバイスが属する物理ポートを単位として異常デバイスを表すデバイス情報を破棄又は無効にし、正常デバイスを表すデバイス情報を記憶部8に保持する。
【0025】
斯かる構成では、デバイス異常が通知された物理ポートを絞り込んで物理ポート単位でデバイス情報を破棄又は無効にするので、異常デバイスが存在しない物理ポートに対しては入出力(「IO発行」と称する)を可能にすることができる。即ち、デバイス異常が通知された物理ポートに限定して構成確認を実行し、異常デバイスが存在しない物理ポートまで構成確認中状態となるのを防止している。このため、デバイス確認処理及び確認デバイス範囲を最小限に止め、正常デバイスに対してはIO発行を可能とするので、EXPによる多段接続の利点を活かすことができる。
【0026】
この処理手順について、図2を参照する。図2は、デバイス確認処理の処理手順の一例を示している。
【0027】
この処理手順は、本開示の接続拡張制御方法又は接続拡張制御プログラムの一例であって、図2に示すように、電源の投入や駆動指示により駆動開始する(ステップS11)。この駆動開始を契機として、デバイスの状態確認が実行され(ステップS12)、状態情報としてデバイス情報12が記憶部8に記録される。このデバイス情報12は例えば、後述のルーティングテーブル等、テーブル形態で格納すればよい。
【0028】
各Phy40〜43から受け取った状態情報を参照し、異常確認を行う(ステップS13)。この異常確認により、異常デバイスが存在しなければ、この処理を終了する。異常デバイスが存在すれば、そのデバイス情報から異常デバイスの属する物理ポート(この場合、Phy40、41、42、43の何れか)を特定する(ステップS14)。
【0029】
異常デバイスが属する物理ポートが特定された場合、デバイス情報の確認処理を実行する(ステップS15)。この場合、異常デバイスが属する物理ポートに属するデバイス情報を破棄又は無効にし、正常デバイスの属する物理ポートに属するデバイス情報は記憶部8に保持する。
【0030】
そこで、異常デバイスに対しては、異常デバイスが属する物理ポートとして例えば、Phy43のみを状態確認対象として状態確認を実行し(即ち、部分状態確認)、他の物理ポートに対してはIO発行を可能にする。そして、異常デバイスが属する物理ポートの状態確認が完了すれば、得られたデバイス情報を以て記憶部8の記録内容を更新すればよい。
【0031】
斯かる構成とすれば、異常デバイスが属する物理ポートを絞り込み、その物理ポートに属するデバイス情報を無効にし、正常デバイスが属する物理ポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性が高められる。
【0032】
また、異常デバイスが属する物理ポートのみを特定し、各物理ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性が図られる。
【0033】
〔第2の実施の形態〕
【0034】
第2の実施の形態について、図3を参照する。図3は、第2の実施の形態に係るストレージシステムの一例を示している。図3において、図1と同一部分には同一符号を付してある。
【0035】
このストレージシステム20は、本開示のストレージシステムの一例であって、既述の接続拡張装置を用いたストレージシステムである。そこで、このストレージシステム20では、既述のEXP2の上位側に入出力制御部22と、ホスト24とを備えている。
【0036】
EXP2は、接続拡張部の一例であって、既述の構成と同一であるので、各機能部の説明を省略する。
【0037】
入出力制御部22は、デバイス情報を格納する記憶部26を備えている。記憶部26は、第1の記憶部(請求項3)の一例である記憶部8に対し、第2の記憶部(請求項3)の一例である。この記憶部26は、EXP2より上位側でデバイス情報12を格納する手段の一例である。ホスト24からの問い合わせに対する応答情報としてデバイス情報12が提供される。
【0038】
ホスト24は、ストレージシステム20のデバイス101、102・・・・・13Nに対するデータの書き込みや読出しを制御する上位装置としてのコンピュータである。
【0039】
斯かる構成によれば、デバイス情報を記録する記憶部8を備える接続拡張部としてのEXP2を備え、デバイス情報により異常デバイスが存在する物理ポートが特定され、その物理ポート及びその異常等を表す情報が記憶部8に格納される。また、記憶部8には状態確認処理後のデバイス情報が格納される。そこで、これらのデバイス情報12が入出力制御部22側にある記憶部26に転送されて格納されている。
【0040】
このデバイス情報12は正常デバイスや異常デバイス等を表すデバイス情報であって、具体的にはデバイス番号、ステータス情報として有効か無効かを表す情報である。このデバイス情報12は、ホスト24等の上位装置側からの問い合わせに対して通知される。
【0041】
次に、ストレージシステム20の処理手順について、図4を参照する。図4は、ストレージシステムの処理手順の一例を示している。
【0042】
この処理手順は、本開示の接続拡張制御方法又は接続拡張制御プログラムの一例であって、図4に示すように、デバイスを接続する複数の物理ポートから得られるデバイス情報12を記憶部8に記録する(ステップS21)。この場合、デバイス情報12により異常デバイスが存在する物理ポートを特定し、該物理ポートに属するデバイス情報12を無効にするとともに、正常デバイスのデバイス情報12を記憶部8に保持させる(ステップS22、S23)。
【0043】
そして、デバイス情報12を入出力制御部22の記憶部26に転送し保持する(ステップS24)。
【0044】
この場合、デバイス情報12に変動があれば、記憶部8のデバイス情報12に連動して記憶部26側のデバイス情報12を修正すればよい。
【0045】
このように、EXP2の上位側にある入出力制御部22の記憶部26にデバイス情報12を保持し、このデバイス情報12が記憶部8に連動している。そこで、ホスト24側からの問い合わせに対し、最新のデバイス情報12を提供できるとともに、既述のEXP2の部分確認処理に応じたデバイス情報であるので、入出力処理の迅速化に寄与する。
【0046】
〔第3の実施の形態〕
【0047】
第3の実施の形態について、図5を参照する。図5はエキスパンダユニットの一例を示している。
【0048】
エキスパンダユニット200は、本開示の接続拡張装置の一例であって、EXPの多段接続によって多数のデバイスの接続を可能にするとともに、状態変化時における部分状態確認として部分ディスカバリ(Discovery )を実現する。このエキスパンダユニット200は、記憶装置等の多数のSASデバイスを接続する場合、SAS接続拡張のために用いられる。このエキスパンダユニット200は、図5に示すように、エキスパンダチップ(Expander Chip )202と、プログラマブル論理デバイス(PLD:Programmable Logic Device )204と、電源206と、スイッチ部208とを備える。
【0049】
エキスパンダチップ202は、プロセッサ210、メモリ212、ポート部(Serial)214、ポート部(Ether )216、物理ポート218を備える。プロセッサ210は、既述の処理部6(第1の実施の形態)に対応する処理手段であって、SASデバイスの選択接続の制御を行う。そこで、プロセッサ210は、SMP(Serial Management Protocol)論理デバイス220、SSP(Serial SCSI Protocol)論理デバイス222を備え、これらの制御や、SASの物理ポート218の制御、ポート部214、216の制御も行う。
【0050】
メモリ212は第1の記憶部の一例であって、このメモリ212には第1のテーブルとして後述するルーティングテーブル224が格納され、このルーティングテーブル224はデバイス情報を格納する手段の一例である。このルーティングテーブル224には、物理ポート毎のデバイスを表すデバイス情報が格納される。
【0051】
PLD204は、常時接続状態(常駐)にある電源206で動作するデバイスであって、エキスパンダチップ202の給電制御等を行う。この場合、PLD204の制御出力がスイッチ部208に加えられ、導通したスイッチ部208を通して電源206からエキスパンダチップ202に給電される。
【0052】
物理ポート218には、複数の物理ポートとして例えば、Phy0〜23を備え、各Phy0〜23にはSASデバイスとして例えば、HDD(Hard Disk Drive )やSSD(Solid State Drive )等の記憶装置が接続される。
【0053】
次に、ストレージシステムについて、図6を参照する。図6は、ストレージシステムの一例を示している。
【0054】
このストレージシステム300は、本開示のストレージシステムの一例であって、既述の複数のエキスパンダユニット200で構成される。
【0055】
そこで、このストレージシステム300では、図6に示すように、既述のエキスパンダユニット200を用いたSASデバイスの多段接続構成であって、サーバ(ホスト)302と、上位側の筐体304と、下位側の複数の筐体からなる筐体群306とが備えられている。筐体群306を構成すEXPは、既述のエキスパンダユニット200で構成すればよい。サーバ302は、既述のホスト24(図3)に対応する上位装置の一例であり、ストレージシステム300の内部に記載しているが、ストレージシステム300の外部装置として構成してもよい。
【0056】
筐体304には、既述の入出力制御部22(図3)の一例として、第1のコントローラモジュール(CM:Controller Module )308と、第2のコントローラモジュール(CM)310とを備えている。CM308には、チャンネルアダプタ(Channel Adapter )312、プロセッサ314、メモリ316、SASIOコントローラ318(IOC 0)、EXP320(EXP00)を備えている。また、他方のCM310も同一構成であって、チャンネルアダプタ412、プロセッサ414、メモリ416、SASIOコントローラ418(IOC 1)、EXP420(EXP01)を備えている。EXP320(EXP00)、EXP420(EXP01)は既述のエキスパンダユニット200で構成される。
【0057】
メモリ316は第2の記憶部の一例であって、このメモリ316にはデバイスマップ422が格納され、メモリ416は第2の記憶部の一例であって、このメモリ416にはデバイスマップ424が格納される。デバイスマップ422、424はルーティングテーブル224(図5)に対して第2のテーブルを構成し、デバイス情報を格納する手段である。そこで、デバイスマップ422にはEXP00側の異常デバイスのデバイス情報が格納され、デバイスマップ424にはEXP01側の異常デバイスのデバイス情報が格納される。
【0058】
そして、筐体群306側には、EXP320(EXP00)に着目すると、EXP10、11、12、13が接続され、その下位側にはEXP20、21、22、23が備えられている。
【0059】
斯かる構成では、サーバ302からFC、iSCSI、SAS等のホストインタフェース(Host Interface)を通して筐体群306のHDDやSSD等の記憶装置へ発行されたIOアクセスは、CM308、310内のチャンネルアダプタ312、412で受けられる。そして、IOC318、418からEXP00又はEXP01を通して対象のSASディスク装置に対してSASのIOが発行される。
【0060】
また、このように複数のEXP00、01、10〜13、20〜23を用いれば、IOC318、418に多数のSASデバイスを多段接続することができる。
【0061】
次に、SAS接続構成について、図7及び図8を参照する。図7は、簡易なSAS接続の構成例を示し、図8は、エキスパンダの多段接続構成の一例を示している。
【0062】
既述の構成例(図6)からIOC318、EXP320(EXP00)及びEXP10〜13を抽出すると、図7に示すように、IOC318にEXP00が接続され、その下位側にEXP10〜13が接続された構成となる。そして、EXP10には例えば、複数のデバイス101・・・10F、EXP11には例えば、複数のデバイス111・・・11Fが接続されている。また、EXP12には例えば、複数のデバイス121・・・12F、EXP13には例えば、複数のデバイス131・・・13Fが接続されている。これらデバイス101〜13Fは例えば、ディスク装置である。この場合、デバイス13Fに付されたXは、デバイス13Fが接続不良等の異常デバイスであることを表している。
【0063】
このような接続構成について、接続完了後、ディスカバリ(Discovery )処理によってEXP10〜EXP13配下の全てのデバイスを認識する。
【0064】
また、既述の構成例(図6)からIOC318、EXP320及びEXP10〜13、20〜23を抽出すると、図8に示すように、IOC318にEXP320が接続されている。その下位側にEXP10〜13が存在し、EXP10にはEXP20、EXP11にはEXP21、EXP12にはEXP22、EXP13にはEXP23が接続されている。このようなEXPの多段構成により、多数のデバイス101〜13F、デバイス201〜23Fが接続され、入出力処理を可能にしている。この図8に示す多段構成において、デバイス13Fに付されたXは、説明の都合上、デバイス13Fが接続不良等の異常デバイスであることを表している。
【0065】
次に、以下の処理手順で使用するコマンド等の用語を説明する。
【0066】
“SMPFunction”について、SMP(SAS Management Protocol)はSASエキスパンダを管理するプロトコルである。物理ポート(Phy)の制御、エキスパンダのルーティング情報の構築、トポロジーの構築、SAS接続のリンクネゴシエーション等に用いられる。後述するリポートジェネラル(Report General)、ディスカバー(Discover)、リポートルートインフォメーション(Report Route Information)はSMPFunctionに含まれる。下位に接続されるEXPに対してIOCや上位EXPから発行される。
【0067】
“Report General”は、EXPに対してConfiguring 中かどうか、また、そのEXPが持っているPhyの数を問い合わせるためのコマンドである。
【0068】
“Discover”は、Phyの接続状態を知りたいEXPに向けて発行するコマンドで、コマンドを受けたEXPのPhyに直接接続されるデバイスのデバイス情報を返す。このデバイス情報は、接続されるデバイスを表す情報であって、例えば、接続されるデバイスが記憶装置であることを表す情報、接続されるデバイスがEXPであることを表す情報等である。
【0069】
“Report Route Information”は、配下即ち、“Report Route Information”を受け取ったEXPに接続された下位側のEXPに接続されるデバイスの接続状態を取得するコマンドである。即ち、コマンドを受けたEXPのPhyに直接接続されるデバイス情報ではなく、そのEXPの先に接続された全てのデバイスの接続情報を返す。
【0070】
“ Broadcast(Change)”は、状態変化が発生したことをEXPが他のデバイスに通知するためのコマンドである。Phyのリンクアップ又はダウン(Link Up 又はDown)、ディスクの抜き挿し等、状態変化があったときに発行される。 Broadcast(Change)を受信したデバイスは、その Broadcast(Change)が何れのデバイスから発行されたものかを識別することはできない。
【0071】
次に、このディスカバリ処理の手順について、図9を参照する。図9は、デバイス認識処理の手順を示している。
【0072】
この処理手順は、ディスカバリ処理によるデバイス認識処理の基本動作であって、次の通りである。
【0073】
1)EXP00及びEXP10〜EXP13に対する電源をONする(ステップS101)。
【0074】
2)給電開始により、EXP10〜EXP13は配下にあるデバイス認識処理を開始する(ステップS102)。Configuring 状態は、構成変更中となる。
【0075】
3)EXP00は EXP10〜EXP13に対してSMP Functionのリポートジェネラル(Report General)によってConfiguring 状態かどうかを確認する(ステップS103)。配下のEXP10〜EXP13が構成変更中であるため、自身も構成が確定せず、Configuring 状態となる。
【0076】
4)EXP10〜EXP13について、配下にあるデバイス認識処理が完了する(ステップS104)(Configuring の終了)。その際、接続されているEXP00に対して Broadcast(Change)を発行する。
【0077】
5)EXP00は Broadcast(Change)を受信すると、EXP10〜EXP13に対してSMPFunctionのReport GeneralによってConfiguring 状態かどうかを確認する(ステップS105)。このステップS105では、Configuring 状態ではないことが確認できると、SMPFunctionのDiscoverやReport Route Informationを、EXP10〜EXP13に対して発行する。また、デバイス情報(SASアドレス、物理ポート情報)を取得して、自身のメモリ領域にルーティングテーブル(Routing Table )を作成する。
【0078】
6)EXP00はEXP10〜EXP13から情報取得完了後、自身のConfiguring 状態を解除し、IOCに対して Broadcast(Change)を発行する(ステップS106)。
【0079】
7)IOCはEXP00からの Broadcast(Change)受信、Configuring 解除に伴い、同様にSMPFunctionをEXP00に発行し、デバイス情報を取得する(ステップS107)。その後、全デバイスに対してIO発行が可能となる。
【0080】
これにより、IOC−エキスパンダ構成でのデバイス認識処理の基本動作が終了する。
【0081】
次に、ルーティングテーブル224について、図10を参照する。図10は、ルーティングテーブルの一例を示す図である。
【0082】
このルーティングテーブル224は、EXPが持つデバイスのIOをルーティングする機能手段であって、メモリ212(図5)に備えている。このルーティングテーブル224に格納されたルーティング情報に基づき、SASアドレスに対するルーティングを実行する。
【0083】
そこで、ルーティングテーブル224には図10に示すように、物理ポート格納部426とインデックス格納部428とが設定されている。この場合、EXPの物理ポート(Phy)の数をM、各Phy毎に記述できるSASアドレスの数をNとすると、物理ポート格納部426には、複数の物理ポート情報を表す物理ポート番号として例えば、Phy0、Phy1・・・PhyM−1が設定され、インデックス格納部428には複数のインデックス情報を表すインデックス番号として例えば、Index 1、Index 2・・・Index Nが設定されている。この実施の形態では、ルーティングテーブル224は、行方向に物理ポート番号、列方向にインデックス番号が設定され、これら2つの情報で特定される項目部430にデバイスアドレスが格納される。
【0084】
このルーティングテーブル224には、EXPのPhy毎に接続されるSASデバイスとして例えば、EXPやディスクのデバイスアドレスが記述される。即ち、インデックス番号と物理ポート番号で指定される各項目部430にデバイスアドレスが例えば、8〔バイト〕で記述される。
【0085】
そして、このルーティングテーブル224は、EXPのディスカバリ処理即ち、デバイス認識処理によって作成される。このデバイス認識処理で実行されるのは、EXPの立ち上がり時、構成変更に伴うブロードキャスト〔 Broadcast(Change)〕の受信時である。このディスカバリ処理では、SMPFunctionのリポートジェネラル(Report General)やディスカバー(Discover)、リポートルートインフォメーション(Report Route Information)を発行し、EXPの配下に接続されるデバイスアドレスを取得する。
【0086】
次に、EXPの Broadcast(Change)発行処理について、図11を参照する。図11は、EXPの Broadcast(Change)発行処理の処理手順の一例を示している。
【0087】
EXPの Broadcast(Change)発行は、Phyの状態変化の検出(ステップS201)や、Phyに接続されたデバイスから Broadcast(Change)の受信(ステップS202)を契機とする。
【0088】
状態変化検出又は Broadcast(Change)で受信したPhy自体の状態が異常状態であるかを判定する(ステップS203)。Phy自体の状態が異常状態でなければ(ステップS203のNO)、上位接続デバイスに対し、 Broadcast(Change)を発行する(ステップS204)。Phy自体の状態が異常状態であれば(ステップS203のYES)、 Broadcast(Change)の発行を抑止する(ステップS205)。換言すれば、斯かる処理は、Phy自体が異常である場合には Broadcast(Change)の発行を抑止し、Phyが正常である場合には Broadcast(Change)の発行を許可することにある。
【0089】
そこで、ディスカバリ処理で作成されたルーティングテーブル224について、図12を参照する。図12は正常時のルーティングテーブルの一例を示している。
【0090】
EXP00において、ディスカバリ処理が発生した結果、EXP00には、図12に示すように、ルーティングテーブル224が作成される。この場合、インデックス番号と物理ポート番号で指定される各項目部430には、指定されたデバイスアドレス(8〔Byte〕)が記述されている。デバイスが接続されていない項目には、値“0”とし、この“0”は無効を意味する。
【0091】
このルーティングテーブル224では、Phy0のIndex 1=デバイス101、Index 2=デバイス102・・・Index F=デバイス10Fが記述され、Index F+1・・・N=0が記述されている。Phy1のIndex 1=デバイス111、Index 2=デバイス112・・・Index F=デバイス11Fが記述され、Index F+1・・・Index N=0が記述されている。Phy2のIndex 1=デバイス121、Index 2=デバイス122・・・Index F=デバイス12Fが記述され、Index F+1・・・Index N=0が記述されている。Phy3のIndex 1=デバイス131、Index 2=デバイス132・・・Index F=デバイス13Fが記述され、Index F+1・・・Index N=0が記述されている。そして、Phy4・・・PhyM−1のIndex 1、Index 2・・・Index N=0が記述されている。
【0092】
この場合、EXP13の配下にあるデバイス13Fが異常となった場合には、EXP13は、既述の処理手順(図11に示すフローチャート)に従い、上位EXPであるEXP00に Broadcast(Change)を発行する。 Broadcast(Change)を受信したEXP00はConfiguring 状態となる。そこで、既述の図9に示すフローチャートにより、ディスカバリ処理にて、接続されている全デバイスの認識処理を実行し、ルーティングテーブル224を再作成する。その際、ルーティングテーブル224に関し、通常は、保持していたルーティングテーブルを全て破棄した後、ルーティングテーブルをディスカバリ処理によって再作成する。そのため、ディスカバリ処理中では、ルーティングテーブル224は全てのPhyについて作成中となり、ルーティングを行うことができない。その結果、EXP00を経由してEXP00の配下のEXPやデバイスにIOを発行することができない。
【0093】
しかし、上記構成では、EXP00が Broadcast(Change)が何れの物理ポート(Phy)から受信したものであるかを認識することができ、このため、異常が発生した箇所をそのPhyから特定し、異常箇所の絞り込みをすることができる。
【0094】
図7に示す構成例では、Phy3の配下に異常が発生すると、EXP320(EXP00)は、Phy3の配下が異常個所であることを認識できる。そして、受信したPhy3に関するルーティングテーブル224のテーブル情報のみを破棄し、それ以外のPhyのルーティングテーブル224については破棄せず又は特定のPhyに属するデバイス情報を無効にし、有効なデバイス情報は保持すればよい。
【0095】
具体的には、 Broadcast(Change)の受信により、この Broadcast(Change)を発行した Configuring状態にあるEXP13が接続されたPhyを特定する。この場合、ルーティングテーブル224上で、そのPhyの列に記述される項目のみを破棄し、即ち、廃棄処理(0 Clear)を実行する。これにより、Phy0、Phy1、Phy2についてのルーティングテーブルは残り、このため、Phy0、Phy1、Phy2の配下にあるデバイスに対しては、常にルーティングすることができる。
【0096】
ここで、Phy3の無効化及びディスカバリ(Discovery )処理の完了について、図13及び図14を参照する。図13はPhy3を無効化した場合のルーティングテーブルを示し、図14は、Phy3のディスカバリ処理完了後のルーティングテーブルを示している。
【0097】
Phy3が無効化されると、図13に示すように、Phy3のIndex 1、Index 2・・・Index Nの値を“0”に更新し、Phy3が破棄されている。既述の通り、“0”は無効化している。この場合、Phy0、Phy1、Phy2は既述の通り、有効なデバイスが記述されている。
【0098】
そして、Phy3のディスカバリが完了すれば、図14に示すように、Phy3には有効なデバイスが記述されている。即ち、Phy3のIndex 1=デバイス131、Index 2=デバイス132、Index F・・・Index N=0が記述されている。この場合、デバイス13F=0であり、Phy3ではデバイス13Fが無効化され、有効であったデバイス131、132は有効であり、ルーティング可能となっている。
【0099】
次に、ルーティングテーブル224の再作成処理について、図15を参照する。図15は、ルーティングテーブルの再作成処理の処理手順を示している。
【0100】
このルーティングテーブル224の再作成の処理手順は、図15に示すように、 Broadcast(Change)受信を契機とする。この Broadcast(Change)は、配下のデバイス異常に伴い、 Configuring状態にあるEXPから発行され、上位のEXPで受信する。そこで、この Broadcast(Change)受信により、 Configuring状態へ遷移し、その際、物理ポート番号をX(=0 )とする(ステップS301)。物理ポート(Phy)について、物理ポートを表す番号をPhy=Xとし、 Broadcast(Change)を受信した物理ポート番号がXかを判定する(ステップS302)。物理ポート番号がXでなければ(ステップS302のNO)、Xをインクリメントし(ステップS303)、ステップS302に戻る。
【0101】
物理ポート番号がXであれば(ステップS302のYES)、 BroadCast(Change)を受信した物理ポート番号はXである(ステップS304)。即ち、この状態情報から異常デバイスが存在する物理ポートはXであることが認識される。
【0102】
そこで、ルーティングテーブル224にあるPhy=Xのテーブルを破棄する処理を実行し、Phy=X に関しては“0”クリアを実施する(ステップS305)。この“0”クリアの実施により、図13の状態となる。
【0103】
これにより、特定された物理ポートであるPhy=Xに対してDiscovery 処理を開始し(ステップS306)、Phy=Xの配下のEXPのDiscovery 処理の完了待ちとなる。Phy=Xについて、 Discovery処理を完了すれば、Phy=Xの配下にあるデバイスアドレスを取得する(ステップS307)。即ち、異常デバイスのアドレスを取得することができる。即ち、部分 Discoveryが完了する。
【0104】
そして、Phy=Xのテーブル(項目)を含むルーティングテーブル224が作成され(図14に示す状態)、Configuring 状態から通常状態へ遷移し(ステップS308)、この処理を終了する。
【0105】
そこで、プロセッサ314、メモリ316及びIOC318の処理について、図16を参照する。図16は、部分 Discoveryの処理手順の一例を示している。
【0106】
この処理手順は、既述の部分 Discoveryの処理手順を含んでいる。そこで、この処理手順では、IOC318がEXP320(EXP00)から Broadcast(Change)を受信することにより、EXP00の配下のデバイス構成に変化があったことを認識し、Discovery 処理を開始する。EXP同様、SMPFunctionのコマンドである“Report General”を発行し、EXP00のConfiguring 状態解除を待ち合わせてから、SMPFunctionのコマンドである“ Discover ”や“ Report Route Information ”により接続されているデバイスアドレスを入手する。
【0107】
このIOC318側のDiscovery 処理は、図16に示すように、 Broadcast(Change)受信を契機とし、Discovery 待ち処理(ステップS401)からDiscovery 処理が開始され(ステップS402)、コマンド“Report General”が発行される(ステップS403)。このコマンド“Report General”を受けた下位EXPであるEXP00は“Report General”の応答をする(ステップS404)。IOC318及びプロセッサ314側では、“Report General”の応答を受け、この“Report General”の応答からEXP00がConfiguring 状態であるかを判定する(ステップS405)。
【0108】
EXP00がConfiguring 状態であれば(ステップS405のYES)、Discovery 待ち処理(ステップS401)に復帰する。EXP00がConfiguring 状態でなければ(ステップS405のNO)、“Report General”の応答から物理ポート番号(NUMBER OF PHYS)で表される数だけコマンド“Discover”を発行する(ステップS406)。この場合、EXP00からDiscoverの応答を受け(ステップS407、S408)、EXP00に直接接続されているデバイスのアドレスを取得する(ステップS406)。
【0109】
そして、IOC318及びプロセッサ314側では、コマンド“Report Route Information”を発行し(ステップS409)、EXP00から“Report Route Information”の応答を受け(ステップS410)、EXP00の更に下位にあるデバイスのアドレスを取得する(ステップS409)。
【0110】
これにより、Discovery 処理を終了し(ステップS411)、EXP00の配下のデバイスアドレスを取得し、この処理を終了する。この処理は、EXP01も同様である。
【0111】
このように、通常のDiscovery 処理では、EXP00に対してSMPFunctionのReport Generalを発行してConfiguring 状態の解除を待ち合わせているが、EXP00がConfiguring 中であっても、異常が無ければ、IO処理が可能となる。異常があっても、IO処理を継続するためには、EXP配下の正常デバイスと異常デバイスとを仕分けすればよい。この仕分け手段として、異常個所が無いEXPからデバイス情報(アドレス、物理ポート情報)を取得すればよい。
【0112】
具体的には、EXP00がConfiguring 状態となった場合、IOC318から次のような部分Discovery としてSMPFunctionからコマンドを発行し、異常部分を仕分けすればよい。この処理手順について、図17を参照する。図17は異常部分の仕分けの処理手順の一例を示している。
【0113】
1)直接接続されているEXP00に対してSMPFunctionのコマンド“Discover”を発行し、EXP00に直接接続されているEXPのデバイスアドレスを入手する(ステップS501)。このステップS501では、例えば、EXP10、11、12、13のデバイスアドレスを入手し、EXPのデバイスアドレスが入手できたかを判定する(ステップS502)。EXPのデバイスアドレスが入手できなかった場合には、この処理を終了する。
【0114】
2)EXPのデバイスアドレスが入手できれば、入手したEXPのデバイスアドレスに対してSMPFunctionのコマンド“Report General”を発行して、そのEXPがConfiguring 状態かを確認する(ステップS503)。
【0115】
3)ステップS503において、Configuring 状態でなかったら(ステップS503のNO)、SMP Function のコマンド“Discover”やコマンド“Report Route Information”をそのEXP(例えば、EXP10、11、12)に対して発行する(ステップS504)。この場合、EXP10、11、12の配下のデバイスは使用できるので、このデバイス情報(アドレス、物理ポート情報)を取得し、使用できるデバイスとして管理する。
【0116】
4 )ステップS503において、Configuring 状態であった場合(ステップS503のYES)、又は発行したSMPFunctionが異常終了した場合には、IOC318はそのEXP(例えば、EXP13)の配下のデバイスは使用できないと判断する(ステップS505)。
【0117】
次に、この処理手順(図17)の詳細について、図18を参照する。図18は Discoveryの処理手順の一例を示している。
【0118】
この処理手順は、プロセッサ314、メモリ316及びIOC318での処理の一例であって、図18に示すように、 Broadcast(Change)受信を契機とし、Discovery 処理が開始され(ステップS601)、コマンド“Report General”を下位EXPであるEXP00に発行し、Configuring 状態であるかを確認する(ステップS602)。この場合、ステップS602では、EXP00からのReport Generalの応答(ステップS603)からConfiguring 状態を確認し、Configuring 状態でなければ(ステップS602のNO)、通常のディスカバリ処理に移行する(ステップS604)。
【0119】
EXP00がConfiguring 状態であれば(ステップS602のYES)、Report Generalの応答のNUMBER OF PHYSの数分のコマンド“Discover”を発行し、EXP00に直接接続されているEXPのデバイスアドレスを取得する(ステップS605)。この場合、EXP00からコマンド“Discover”の応答を受ける(ステップS606、S607)。
【0120】
Discoverにて取得したEXPの全デバイスアドレス(EXP10〜EXP13)に対してコマンド“Report General”を発行し、全EXPに発行済みかの確認をする(ステップS608)。
【0121】
全EXPに“Report General”を発行していれば(ステップS608のYES)、Discovery 処理の終了であり、この場合、EXP10〜EXP12の配下のデバイスのデバイスアドレスの取得完了となる(ステップS609)。
【0122】
全EXPに“Report General”を発行していなければ(ステップS608のNO)、“Report General”の応答を受け、Configuring であるかを確認する(ステップS610)。この場合、下位EXPであるEXP10〜EXP13から“Report General”の応答を受ける(ステップS611)。
【0123】
Configuring 状態であれば(ステップS610のYES)、異常箇所としてデバイスアドレスを記録する(ステップS612)。この場合、EXP13がConfiguring 状態であれば、異常箇所として記録される。
【0124】
Configuring 状態でなければ(ステップS610のNO)、コマンド“Discover”やコマンド“Report Route Information”を発行し、デバイス(EXP10〜EXP12)のデバイスアドレスを取得する(ステップS613)。この場合、EXP10〜EXP12から“Discover”や“Report Route Information”の応答を受ける(ステップS614)。
【0125】
そして、ステップS612、S613の処理の後、次のEXPのデバイスアドレスに移行し(ステップS615)、上記と同様の処理を実行する。
【0126】
このような手順により、IOC318はEXP00、EXP13がConfiguring 状態であっても、EXP10、11、12配下に接続されているデバイスのアドレスを取得することができる。取得したこれらのアドレスはEXP00にてルーティングされる使用可能なデバイスのアドレスである。EXP13配下のデバイス13Fが異常となった直後(EXP13がConfiguring 状態となった場合)には、IOC318は使用できるデバイスとしてEXP10配下のデバイス101〜10F、EXP11配下のデバイス111〜11F、EXP12配下のデバイス121〜12Fを認識し、デバイスマップとして保持する。その際のデバイスマップ422(図19)に書き込む。この場合、デバイスマップ422には、インデックスで示される各項目にデバイスアドレスが格納され、無効デバイスには“0”が書き込まれる。
【0127】
次に、デバイスマップ422について、図19を参照する。図19は、デバイスマップの一例を示す図である。
【0128】
このデバイスマップ422には、インデックス格納部432と、アドレス格納部434とが設定されている。インデックス格納部432には、インデックス番号が格納され、アドレス格納部434には、デバイスアドレスが格納されている。この場合、図19に示すように、使用可能なデバイスアドレスがインデックス番号とともに格納されている。無効デバイスには、インデックス番号とともに無効を表す“0”が格納されている。
【0129】
斯かる構成によれば、IOCのDiscovery 処理により取得されたデバイスマップ422はサーバ302(図6)からデバイスにアクセス要求があった場合に用いられる。その場合、アクセス要求があったデバイスについて、プロセッサ314(図6)がデバイスマップ422に格納された情報から使用できるか否かを判断し、その判断結果をサーバ302に通知する。
【0130】
これまで記載してきた手順によりEXP00、EXP13がConfiguring 状態である場合には、IOC318は図19に示すデバイスマップ422を作成しているが、EXP00、EXP13のConfiguration が完了したら、通常、IOC318が再度全デバイス情報を取得する。通常、EXP10、11、12、13の全てのデバイス情報を再取得することになる。
【0131】
この場合、上記手順により部分的に情報が取得できているので(EXP10、11、12配下のデバイス情報を保持)、Configuring 状態であったEXP13の配下のデバイス情報の取得処理のみを行うので、IOC318のデバイス情報の取得処理を短縮できる。具体的には、IOC318は図18に示す処理手順で、EXP00の何れのPhyの配下のデバイス情報が取得できていないのかを記憶する。そして、再認識処理では、そのPhy配下のデバイスに対してDiscovery 処理(図20)、即ち、部分Discovery 処理を行い、その処理後にデバイスマップ422を修正する(図21)。
【0132】
この部分 Discoveryの処理手順について、図20を参照する。図20は、部分Discovery 処理の一例を示している。
【0133】
この部分 Discoveryの処理手順においても、図20に示すように、 Broadcast(Change)受信を契機とし、Discovery 処理が開始され(ステップS701)、異常箇所と認識しているデバイスアドレス(EXP13)にコマンド“Report General”を発行し、Configuring 状態であるかを確認する(ステップS702)。この場合、下位EXPであるEXP13に対してコマンド“Report General”を発行し、EXP13からReport Generalの応答を受ける(ステップS703)。
【0134】
EXP13からの“Report General”の応答(ステップS703)からConfiguring 状態を確認し、Configuring 状態でなければ(ステップS702のNO)、通常のディスカバリ処理に移行する(ステップS704)。
【0135】
EXP13がConfiguring 状態であれば(ステップS702のYES)、既述のように、コマンド“Discover”や、コマンド“Report Route Information”を発行し、デバイスアドレス(EXP13)を取得する(ステップS705)。この場合、EXP13からコマンド“Discover”やコマンド“Report Route Information”の応答を受ける(ステップS706)。
【0136】
このようなコマンドの応答を受ければ、Discovery 処理を終了し、EXP13の配下のデバイスアドレスの取得完了となる(ステップS707)。
【0137】
斯かる処理後のデバイスマップについて、図21を参照する。図21は、Discovery 処理後のデバイスマップの一例を示す図である。図21において、図19と同一部分には同一符号を付してある。
【0138】
このデバイスマップ422には、図21に示すように、Discovery 処理後、使用可能なデバイスアドレスがインデックス番号とともに格納されている。無効デバイスには、インデックス番号とともに無効を表す“0”が格納されている。
【0139】
次に、部分Discovery 処理を適用した処理手順について、図22を参照する。
【0140】
この場合、EXP13では、配下のデバイスに異常が発生し、Configuring 状態へ遷移し、上位EXP(EXP00)に対して Broadcast(Change)を発行する(ステップS801)。
【0141】
そこで、EXP00では、EXP13から Broadcast(Change)を受け、Configuring 状態へ遷移し、上位装置であるIOC318に対して Broadcast(Change)を発行する(ステップS802)。
【0142】
このとき、EXP00は、 Broadcast(Change)を発信した物理ポート即ち、EXP13を接続している物理ポートを特定し、EXP13にDiscovery 処理を開始する(ステップS803)。即ち、部分Discovery 処理を実行する。
【0143】
IOC318では、EXP00から Broadcast(Change)を受け、下位EXPへのIO発行を停止し、EXP00に対してSMPDiscoverを発行する(ステップS804)。これに対し、EXP00からSMPDiscoverの応答が発せられ(ステップS805)、IOCに通知される。
【0144】
IOCでは、取得したデバイスアドレス(EXP10、EXP11、EXP12、EXP13)に対してSMPのコマンド“Report General”を発行し(ステップS806)、EXP10、EXP11、EXP12及びEXP13に通知する。
【0145】
これを受け、EXP10、EXP11及びEXP12からReport Generalの応答が発せられ(ステップS807)、同様に、EXP13からReport Generalの応答が発せられる(ステップS808)。
【0146】
これにより、IOCでは、EXP13のみがConfiguration 状態であることを検出し、EXP10、EXP11、EXP12についてのIO発行を再開し、EXP00及びEXP13に対してDiscovery 処理を開始する(ステップS809)。
【0147】
EXP13ではEXP00からのDiscovery 処理(ステップS803)を受け、配下のデバイスの情報取得を完了し、通常状態へ遷移した後、Discovery の応答を行う(ステップS810)。
【0148】
EXP00はEXP13の情報取得完了を受け、通常状態への遷移し、Discovery の応答をIOCに対して行う(ステップS811)。
【0149】
そして、IOC318では、下位EXPの情報取得を完了した後、EXP13へのIO発行を再開する(ステップS812)。
【0150】
以上述べた通り、この実施の形態によれば、異常デバイスが属するポートを絞り込み、そのポートに属するデバイス情報を無効にし、正常デバイスが属するポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性を維持し、より高めることができる。
【0151】
また、異常デバイスが属するポートのみを特定し、各ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性を図ることもできる。
【0152】
また、この実施の形態では、デバイスマップを備え、このデバイスマップと、ルーティングテーブルとをリンクさせているので、デバイス情報がデバイスマップに格納される。そこで、CM側では、上位装置即ち、ホストからの問い合わせに対し、最適且つ最新のデバイス情報を通知することができ、データ処理の信頼性及び迅速性に寄与することができる。即ち、利便性の高いストレージシステムの構築に寄与することができる。
【0153】
〔他の実施の形態〕
【0154】
(1) 上記実施の形態では、SASデバイスを例示したが、本開示の接続拡張装置やストレージシステムはこれに限定されない。SASデバイス以外のデバイスであってもよい。
【0155】
(2) 上記実施の形態のルーティングテーブル224では、物理ポート情報を横欄、インデックス情報を縦欄に設定しているが、これに限定されない。例えば、図23に示すように、横欄にインデックス情報格納部442、縦欄に物理ポート情報格納部444を設定し、項目欄446にデバイスアドレス情報を格納するルーティングテーブル448で構成してもよい。
【0156】
〔比較例〕
【0157】
比較例は、本開示の部分Discovery 処理を実行しない場合の処理手順を例示したものである。このような処理手順では、異常デバイスが発見されると、全ての物理ポートが構成確認中状態に移行し、入出力処理の迅速化が損なわれる。この比較例においても、既述のハードウェアを用いて行うことができるので、上記実施の形態と同一の符号を付してある。
【0158】
そこで、このデバイスの状態変化の認識処理について、図24を参照する。図24は、状態変化時のデバイス認識処理の処理手順を示している。
【0159】
この処理手順は、デバイスの故障や接続切れが要因で異常となった結果、EXP配下のデバイス状態に変化が生じた場合のIOCのデバイス認識処理である。
【0160】
1)EXP13 配下のデバイス13Fが異常となったことをEXP13が認識する(ステップS901)。
【0161】
2)EXP13は、配下のデバイス異常に伴い、Configuring 状態となる(ステップS902)。このステップS902では、EXP00に対して Broadcast(Change)を発行し、Configuring 状態となったことを通知する。EXP00はPhy3を通して Broadcast(Change)を受信する。
【0162】
3)EXP13がConfiguring 状態となったことを受け、EXP00もConfiguring 状態となる(ステップS903)。その結果、IOCはEXP00の配下のデバイスに対してIO発行ができなくなる。
【0163】
4)EXP13について、配下にあるデバイス認識処理が完了する(ステップS904)。(Configuring の終了)
【0164】
5)EXP00はEXP13のデバイス認識処理完了に伴い、SMPFunctionのコマンドDiscoverやReport Route InformationをEXP13に対して発行する(ステップS905)。このステップS905では、デバイス情報(SASアドレス、物理ポート情報)を取得して、自身のメモリ領域にルーティングテーブルを作成する(ステップS905)。
【0165】
6)EXP00はEXP13から情報取得完了後、自身のConfiguring 状態を解除する(ステップS906)。
【0166】
7)IOCはEXP00のConfiguring 解除に伴い、同様にSMPFunctionをEXP00に発行し、デバイス情報を取得する(ステップS907)。その後、EXP00の配下のデバイスに対してIO発行が可能となる。
【0167】
このように、本開示の接続拡張制御方法を用いない場合には、EXP13の配下のデバイス異常による構成変化のため、EXP00もConfiguring 状態へ移行し、本来関係のないEXP10、EXP11、EXP12配下のデバイスにもIO発行ができない状態となる。この結果、図8のように、EXP10〜13配下にEXPが多段で接続されるような環境であれば、影響はEXP20、21、22の配下のデバイスに対しても及ぶこととなる。このため、正常デバイスであるにも拘わらず、使用不能のデバイスを増加させることになる。
【0168】
そこで、斯かる状況、即ち、デバイス異常が生じても、本開示の接続拡張制御方法を用いれば、EXP10、11、12の配下のデバイスに対してIO発行が可能となる。
【0169】
次に、EXPのディスカバリ処理について、図25を参照する。図25は、ディスカバリ処理の処理手順を示している。
【0170】
このディスカバリ処理は、ルーティングテーブルの作成処理の手順であって、上位EXPと下位EXPとの応答処理を含んでいる。
【0171】
このディスカバリ処理は、上位EXPの電源投入(Power On)直後又は Broadcast(Change)受信を契機とする。そこで、上位EXPの電源投入(Power On)直後又は Broadcast(Change)受信であれば(ステップS1001)、Configuring 状態へ遷移し、ルーティングテーブルを破棄する(ステップS1002)。
【0172】
この時点でDiscovery 処理が開始され(ステップS1003)、Report Generalが発行される(ステップS1004)。このReport Generalは下位EXPに通知され、下位EXPではReport Generalの応答が発行され(ステップS1005)、上位EXPに通知される。
【0173】
このReport Generalの応答を受けた上位EXPは、Report Generalの応答からConfiguring 状態であるかを判定する(ステップS1006)。Configuring 状態であれば(ステップS1006のYES)、ディスカバリ待ち処理に移行し(ステップS1007)、この処理の後、Discovery 処理開始に移行する。
【0174】
Configuring 状態でなければ(ステップS1006のNO)、Report Generalの応答にある物理ポート番号(NUMBER OF PHYS)の数分だけDiscoverを発行するとともに、下位EXPに直接接続されているデバイスのデバイスアドレスを取得する(ステップS1007)。即ち、Discoverを発行した場合、下位EXPに対し、その通知を行い、Discoverの応答を受ける(ステップS1008、S1009)。斯かる処理を物理ポート番号の数分だけ実行する。
【0175】
デバイスアドレス取得(ステップS1007)の後、Report Route Informationを発行し、下位EXPの更なる下位に接続されているデバイスのデバイスアドレスを取得する(ステップS1010)。この処理途上にあっては、下位EXPに対するReport Route Informationの通知やそのReport Route Informationの応答(ステップS1011)を受ける。
【0176】
以上の処理の後、Discovery 処理終了となり(ステップS1012)、取得したアドレスを元にルーティングテーブルを作成し、Configuring 状態から通常状態へ遷移する(ステップS1013)。
【0177】
次に、部分Discovery 処理を適用しない処理手順について、図26を参照する。
【0178】
この場合、EXP13では、配下のデバイスに異常が発生し、Configuring 状態へ遷移し、上位EXP(EXP00)に対して Broadcast(Change)を発行する(ステップS1101)。
【0179】
そこで、EXP00では、EXP13から Broadcast(Change)を受け、Configuring 状態へ遷移し、上位装置であるIOCに対して Broadcast(Change)を発行する(ステップS1102)。
【0180】
このとき、EXP00は、下位EXPであるEXP10、EXP11、EXP12に対して順番にDiscovery 処理を開始する(ステップS1103)。
【0181】
IOCでは Broadcast(Change)を受け、下位EXPへのIO発行を停止し、下位の全EXPに対してDiscovery 処理を開始する(ステップS1104)。
【0182】
EXP10、EXP11、EXP12は、EXP00からの指示に対し、Discovery の応答をする(ステップS1105)。
【0183】
EXP00は、下位EXP(EXP13)に対してDiscovery 処理を開始する(ステップS1106)。これに対し、EXP13は、配下のデバイスの情報取得を完了すれば、通常状態に遷移し、Discovery の応答をする(ステップS1107)。
【0184】
この応答を受けたEXP00は、下位EXPの情報取得を完了すれば、通常状態に遷移し、IOCに対してDiscovery の応答をする(ステップS1108)。
【0185】
そして、IOCでは、下位EXPの情報取得を完了した後、下位EXPへのIO発行を再開する(ステップS1109)。
【0186】
このように比較例の処理では、何れかの物理ポートにデバイス異常があると、全ての物理ポートが構成確認中状態に移行し、全てのDiscovery 処理が完了するまで、入出力処理ができない状態となる。EXPを用いて多段構成としても、構成確認中状態が継続すると、多段構成のメリットを活かすことができない。このような課題は上記実施の形態で解決されている。デバイス異常が発見されると、異常デバイスの属する物理ポートを絞り込み、正常デバイスが属する物理ポートでの入出力処理が保証され、迅速処理に寄与することができる。
【0187】
次に、以上述べた実施例を含む実施の形態に関し、更に以下の付記を開示する。以下の付記に本発明が限定されるものではない。
【0188】
(付記1) デバイスを接続する複数のポートと、
各ポートから得られるデバイス情報を記録する記憶部と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部と、
を備えることを特徴とする接続拡張装置。
【0189】
(付記2) 前記処理部は、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御することを特徴とする付記1に記載の接続拡張装置。
【0190】
(付記3) 前記デバイス情報は、前記ポートを特定するポート情報に関係付けられてテーブルに格納されていることを特徴とする付記1に記載の接続拡張装置。
【0191】
(付記4) デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を記録する第1の記憶部を備える接続拡張部と、
前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第1の記憶部に保持させた際に、これらデバイス情報を記憶する第2の記憶部と、
を備えることを特徴とするストレージシステム。
【0192】
(付記5) 更に、上位側装置からのデバイス情報の問い合わせに対し、前記第2の記憶部にある前記デバイス情報を出力する制御部と、
を備えることを特徴とする付記4に記載のストレージシステム。
【0193】
(付記6) 接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する機能と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる機能と、
を前記コンピュータに実行させる接続拡張制御プログラム。
【0194】
(付記7) 更に、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御する機能と、
を含むことを特徴とする付記6に記載の接続拡張制御プログラム。
【0195】
(付記8) 更に、前記デバイス情報を前記ポートを特定するポート情報に関係付けてテーブルを作成又は該テーブルに格納する機能と、
を含むことを特徴とする付記6に記載の接続拡張制御プログラム。
【0196】
(付記9) デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録するステップと、
デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させるステップと、
を含むことを特徴とする接続拡張制御方法。
【0197】
(付記10) 更に、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御するステップと、
を含むことを特徴とする付記9に記載の接続拡張制御方法。
【0198】
以上説明したように、接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法の最も好ましい実施の形態等について説明したが、本発明は、上記記載に限定されるものではなく、特許請求の範囲に記載され、又は発明を実施するための形態に開示された発明の要旨に基づき、当業者において様々な変形や変更が可能であることは勿論であり、斯かる変形や変更が、本発明の範囲に含まれることは言うまでもない。
【符号の説明】
【0199】
2 接続拡張装置
20 ストレージシステム
40、41、42、43 物理ポート(Phy)
6 処理部
8 記憶部
12 デバイス情報
22 入出力制御部
26 記憶部
【技術分野】
【0001】
本発明は、複数のデバイスの多段接続制御に関し、例えば、SAS〔Serial Attached SCSI(Small Computer System interface )〕エキスパンダ等の接続拡張装置、該接続拡張装置を含むストレージシステム、接続拡張制御プログラム及び接続拡張制御方法に関する。
【背景技術】
【0002】
記憶装置等の多数のデバイスを多段接続する場合には、接続拡張のために接続拡張装置が用いられる。多段接続される例えば、SASデバイスにあっては、接続拡張のためにSASエキスパンダが用いられる。このエキスパンダの上位装置である入出力(IO)コントローラでは、エキスパンダに接続後、配下にある全てのデバイスをエキスパンダを通してディスカバリ(Discovery )と称する状態確認処理により認識する。このDiscovery 処理にはデバイスの状態を認識するデバイス認識処理が含まれ、この処理ではデバイス故障や接続切れ等のデバイス異常が認識される。
【0003】
このようなストレージシステムにおいて、SASデバイスを多段接続する構成や、SASエキスパンダに対しての情報設定、障害情報の採取等が行われることが知られている(特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−242872公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、多段接続構成では、特定のエキスパンダ配下にあるデバイス異常等で構成変化を生じると、構成変更中状態(Configuring 状態)に移行するが、特定のエキスパンダ以外のエキスパンダもConfiguring 状態となる。この場合、IOコントローラは、Configuring 状態にあるエキスパンダ配下のデバイスに対してIO発行ができない。即ち、Configuring 状態にあるエキスパンダ配下のデバイスに対する入出力アクセスができない。
【0006】
このような状態はエキスパンダの多段接続環境を損ない、多段接続の規模が大きければ、使用できないデバイスが増加することになり、多段接続環境のメリットが得られないこととなる。
【0007】
そこで、本開示の接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法の目的は、デバイス異常の影響を最小限にし、処理の迅速化や多段接続の利便性を高めることにある。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本開示の接続拡張装置は、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる処理部を含む。
【0009】
上記目的を達成するため、本開示のストレージシステムの一側面では例えば、第1の記憶部を含む接続拡張部と、第2の記憶部とを備える。前記接続拡張部では、デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を第1の記憶部に記録する。前記第2の記憶部は、前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第1の記憶部に保持させた際に、これらデバイス情報を記憶する。
【0010】
上記目的を達成するため、本開示の接続拡張制御プログラムの一側面は、接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、例えば、記録機能や記録制御機能を含む。記録機能では、デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する。記録制御機能は、例えば、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる。
【0011】
上記目的を達成するため、本開示の接続拡張制御方法の一側面は、例えば、記録ステップと、記録制御ステップとを含む。前記記録ステップでは、デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する。前記記録制御機能では、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる。
【発明の効果】
【0012】
本開示の接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法によれば、次のような効果が得られる。
【0013】
(1) 異常デバイスが属するポートを絞り込み、そのポートに属するデバイス情報を無効にし、正常デバイスが属するポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性を高めることができる。
【0014】
(2) 異常デバイスが属するポートのみを特定し、各ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性を図ることができる。
【0015】
そして、本発明の他の目的、特徴及び利点は、添付図面及び各実施の形態を参照することにより、一層明確になるであろう。
【図面の簡単な説明】
【0016】
【図1】第1の実施の形態に係るエキスパンダの多段接続の構成例を示す図である。
【図2】デバイス確認処理の処理手順の一例を示すフローチャートである。
【図3】第2の実施の形態に係るストレージシステムの一例を示す図である。
【図4】ストレージシステムの処理手順の一例を示すフローチャートである。
【図5】第3の実施の形態に係るエキスパンダユニットの一例を示す図である。
【図6】ストレージシステムの一例を示す図である。
【図7】ストレージシステムの概要を示す図である。
【図8】エキスパンダを用いた多段接続の構成例を示す図である。
【図9】デバイス認識処理の処理手順の一例を示すフローチャートである。
【図10】ルーティングテーブルの一例を示す図である。
【図11】ブロードキャスト(チェンジ)発行処理の処理手順の一例を示すフローチャートである。
【図12】正常時のルーティングテーブルの一例を示す図である。
【図13】ディスカバリ処理完了前のルーティングテーブルの一例を示す図である。
【図14】ディスカバリ処理完了後のルーティングテーブルを示す図である。
【図15】ルーティングテーブルの再作成の処理手順の一例を示すフローチャートである。
【図16】ディスカバリ処理(通常時)の処理手順の一例を示すフローチャートである。
【図17】デバイスアドレス情報の取得処理の一例を示すフローチャートである。
【図18】デバイス情報取得の処理手順の一例を示すフローチャートである。
【図19】デバイスマップの一例を示す図である。
【図20】構成確認完了後のディスカバリ処理の処理手順を示すフローチャートである。
【図21】ディスカバリ処理後のデバイスマップを示す図である。
【図22】ディスカバリの全処理手順の一例を示すフローチャートである。
【図23】他の実施の形態に係るルーティングテーブルの一例を示す図である。
【図24】デバイス認識処理の比較例を示すフローチャートである。
【図25】ルーティングテーブルの作成手順の比較例を示すフローチャートである。
【図26】ディスカバリの全処理手順の比較例を示すフローチャートである。
【発明を実施するための形態】
【0017】
〔第1の実施の形態〕
【0018】
この第1の実施の形態について、図1を参照する。図1は、エキスパンダの多段接続の構成例を示している。
【0019】
エキスパンダ2は、本開示の接続拡張装置の一例であって、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部8に記憶する。このエキスパンダ2は、複数の記憶装置等のデバイスの多段接続及びその接続切替えに用いられるスイッチデバイスであって、このエキスパンダ(EXP:Expander)2には、図1に示すように、複数の物理ポート(Phy)40、41、42、43と、処理部6と、既述の記憶部8とを備える。
【0020】
Phy40、41、42、43は、それぞれに他のエキスパンダや記憶装置等、単一又は複数のデバイスが接続される接続ポートである。Phy40にはエキスパンダ(EXP)90を介してデバイス101、102・・・10Nが接続され、Phy41にはEXP91を介してデバイス111、112・・・11Nが接続されている。Phy42にはEXP92を介してデバイス121、122・・・12Nが接続され、Phy43にはEXP93を介してデバイス131、132・・・13Nが接続されている。ここで、デバイス101〜13Nは例えば、SASデバイスであり、具体的にはディスク記憶装置である。
【0021】
処理部6は、プロセッサによって実現され、Phy40、41、42、43に接続された下位のEXP90〜93の選択手段として機能する。
【0022】
記憶部8は、既述のデバイスを表すデバイス情報を記憶する記憶手段であって、デバイス確認処理で得られたデバイス情報12を記録している。このデバイス情報12の記憶にはテーブルを作成して格納すればよい。
【0023】
斯かる構成では、EXP2に状態情報の取得処理として例えば、デバイス認識処理により、全デバイス101〜13Nからデバイス情報が通知される。このデバイス情報の通知を受け、EXP2には各デバイスの状態を表すデバイス情報12が記憶部8に書き込まれる。このデバイス情報12は、Phy40〜43を表す物理ポート情報とともに記憶部8に記憶する。
【0024】
この場合、デバイス情報12には、正常デバイス及び異常デバイスの双方の情報が含まれる。そこで、状態情報から異常デバイスが属する物理ポートを絞り込み、異常デバイスが属する物理ポートを単位として異常デバイスを表すデバイス情報を破棄又は無効にし、正常デバイスを表すデバイス情報を記憶部8に保持する。
【0025】
斯かる構成では、デバイス異常が通知された物理ポートを絞り込んで物理ポート単位でデバイス情報を破棄又は無効にするので、異常デバイスが存在しない物理ポートに対しては入出力(「IO発行」と称する)を可能にすることができる。即ち、デバイス異常が通知された物理ポートに限定して構成確認を実行し、異常デバイスが存在しない物理ポートまで構成確認中状態となるのを防止している。このため、デバイス確認処理及び確認デバイス範囲を最小限に止め、正常デバイスに対してはIO発行を可能とするので、EXPによる多段接続の利点を活かすことができる。
【0026】
この処理手順について、図2を参照する。図2は、デバイス確認処理の処理手順の一例を示している。
【0027】
この処理手順は、本開示の接続拡張制御方法又は接続拡張制御プログラムの一例であって、図2に示すように、電源の投入や駆動指示により駆動開始する(ステップS11)。この駆動開始を契機として、デバイスの状態確認が実行され(ステップS12)、状態情報としてデバイス情報12が記憶部8に記録される。このデバイス情報12は例えば、後述のルーティングテーブル等、テーブル形態で格納すればよい。
【0028】
各Phy40〜43から受け取った状態情報を参照し、異常確認を行う(ステップS13)。この異常確認により、異常デバイスが存在しなければ、この処理を終了する。異常デバイスが存在すれば、そのデバイス情報から異常デバイスの属する物理ポート(この場合、Phy40、41、42、43の何れか)を特定する(ステップS14)。
【0029】
異常デバイスが属する物理ポートが特定された場合、デバイス情報の確認処理を実行する(ステップS15)。この場合、異常デバイスが属する物理ポートに属するデバイス情報を破棄又は無効にし、正常デバイスの属する物理ポートに属するデバイス情報は記憶部8に保持する。
【0030】
そこで、異常デバイスに対しては、異常デバイスが属する物理ポートとして例えば、Phy43のみを状態確認対象として状態確認を実行し(即ち、部分状態確認)、他の物理ポートに対してはIO発行を可能にする。そして、異常デバイスが属する物理ポートの状態確認が完了すれば、得られたデバイス情報を以て記憶部8の記録内容を更新すればよい。
【0031】
斯かる構成とすれば、異常デバイスが属する物理ポートを絞り込み、その物理ポートに属するデバイス情報を無効にし、正常デバイスが属する物理ポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性が高められる。
【0032】
また、異常デバイスが属する物理ポートのみを特定し、各物理ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性が図られる。
【0033】
〔第2の実施の形態〕
【0034】
第2の実施の形態について、図3を参照する。図3は、第2の実施の形態に係るストレージシステムの一例を示している。図3において、図1と同一部分には同一符号を付してある。
【0035】
このストレージシステム20は、本開示のストレージシステムの一例であって、既述の接続拡張装置を用いたストレージシステムである。そこで、このストレージシステム20では、既述のEXP2の上位側に入出力制御部22と、ホスト24とを備えている。
【0036】
EXP2は、接続拡張部の一例であって、既述の構成と同一であるので、各機能部の説明を省略する。
【0037】
入出力制御部22は、デバイス情報を格納する記憶部26を備えている。記憶部26は、第1の記憶部(請求項3)の一例である記憶部8に対し、第2の記憶部(請求項3)の一例である。この記憶部26は、EXP2より上位側でデバイス情報12を格納する手段の一例である。ホスト24からの問い合わせに対する応答情報としてデバイス情報12が提供される。
【0038】
ホスト24は、ストレージシステム20のデバイス101、102・・・・・13Nに対するデータの書き込みや読出しを制御する上位装置としてのコンピュータである。
【0039】
斯かる構成によれば、デバイス情報を記録する記憶部8を備える接続拡張部としてのEXP2を備え、デバイス情報により異常デバイスが存在する物理ポートが特定され、その物理ポート及びその異常等を表す情報が記憶部8に格納される。また、記憶部8には状態確認処理後のデバイス情報が格納される。そこで、これらのデバイス情報12が入出力制御部22側にある記憶部26に転送されて格納されている。
【0040】
このデバイス情報12は正常デバイスや異常デバイス等を表すデバイス情報であって、具体的にはデバイス番号、ステータス情報として有効か無効かを表す情報である。このデバイス情報12は、ホスト24等の上位装置側からの問い合わせに対して通知される。
【0041】
次に、ストレージシステム20の処理手順について、図4を参照する。図4は、ストレージシステムの処理手順の一例を示している。
【0042】
この処理手順は、本開示の接続拡張制御方法又は接続拡張制御プログラムの一例であって、図4に示すように、デバイスを接続する複数の物理ポートから得られるデバイス情報12を記憶部8に記録する(ステップS21)。この場合、デバイス情報12により異常デバイスが存在する物理ポートを特定し、該物理ポートに属するデバイス情報12を無効にするとともに、正常デバイスのデバイス情報12を記憶部8に保持させる(ステップS22、S23)。
【0043】
そして、デバイス情報12を入出力制御部22の記憶部26に転送し保持する(ステップS24)。
【0044】
この場合、デバイス情報12に変動があれば、記憶部8のデバイス情報12に連動して記憶部26側のデバイス情報12を修正すればよい。
【0045】
このように、EXP2の上位側にある入出力制御部22の記憶部26にデバイス情報12を保持し、このデバイス情報12が記憶部8に連動している。そこで、ホスト24側からの問い合わせに対し、最新のデバイス情報12を提供できるとともに、既述のEXP2の部分確認処理に応じたデバイス情報であるので、入出力処理の迅速化に寄与する。
【0046】
〔第3の実施の形態〕
【0047】
第3の実施の形態について、図5を参照する。図5はエキスパンダユニットの一例を示している。
【0048】
エキスパンダユニット200は、本開示の接続拡張装置の一例であって、EXPの多段接続によって多数のデバイスの接続を可能にするとともに、状態変化時における部分状態確認として部分ディスカバリ(Discovery )を実現する。このエキスパンダユニット200は、記憶装置等の多数のSASデバイスを接続する場合、SAS接続拡張のために用いられる。このエキスパンダユニット200は、図5に示すように、エキスパンダチップ(Expander Chip )202と、プログラマブル論理デバイス(PLD:Programmable Logic Device )204と、電源206と、スイッチ部208とを備える。
【0049】
エキスパンダチップ202は、プロセッサ210、メモリ212、ポート部(Serial)214、ポート部(Ether )216、物理ポート218を備える。プロセッサ210は、既述の処理部6(第1の実施の形態)に対応する処理手段であって、SASデバイスの選択接続の制御を行う。そこで、プロセッサ210は、SMP(Serial Management Protocol)論理デバイス220、SSP(Serial SCSI Protocol)論理デバイス222を備え、これらの制御や、SASの物理ポート218の制御、ポート部214、216の制御も行う。
【0050】
メモリ212は第1の記憶部の一例であって、このメモリ212には第1のテーブルとして後述するルーティングテーブル224が格納され、このルーティングテーブル224はデバイス情報を格納する手段の一例である。このルーティングテーブル224には、物理ポート毎のデバイスを表すデバイス情報が格納される。
【0051】
PLD204は、常時接続状態(常駐)にある電源206で動作するデバイスであって、エキスパンダチップ202の給電制御等を行う。この場合、PLD204の制御出力がスイッチ部208に加えられ、導通したスイッチ部208を通して電源206からエキスパンダチップ202に給電される。
【0052】
物理ポート218には、複数の物理ポートとして例えば、Phy0〜23を備え、各Phy0〜23にはSASデバイスとして例えば、HDD(Hard Disk Drive )やSSD(Solid State Drive )等の記憶装置が接続される。
【0053】
次に、ストレージシステムについて、図6を参照する。図6は、ストレージシステムの一例を示している。
【0054】
このストレージシステム300は、本開示のストレージシステムの一例であって、既述の複数のエキスパンダユニット200で構成される。
【0055】
そこで、このストレージシステム300では、図6に示すように、既述のエキスパンダユニット200を用いたSASデバイスの多段接続構成であって、サーバ(ホスト)302と、上位側の筐体304と、下位側の複数の筐体からなる筐体群306とが備えられている。筐体群306を構成すEXPは、既述のエキスパンダユニット200で構成すればよい。サーバ302は、既述のホスト24(図3)に対応する上位装置の一例であり、ストレージシステム300の内部に記載しているが、ストレージシステム300の外部装置として構成してもよい。
【0056】
筐体304には、既述の入出力制御部22(図3)の一例として、第1のコントローラモジュール(CM:Controller Module )308と、第2のコントローラモジュール(CM)310とを備えている。CM308には、チャンネルアダプタ(Channel Adapter )312、プロセッサ314、メモリ316、SASIOコントローラ318(IOC 0)、EXP320(EXP00)を備えている。また、他方のCM310も同一構成であって、チャンネルアダプタ412、プロセッサ414、メモリ416、SASIOコントローラ418(IOC 1)、EXP420(EXP01)を備えている。EXP320(EXP00)、EXP420(EXP01)は既述のエキスパンダユニット200で構成される。
【0057】
メモリ316は第2の記憶部の一例であって、このメモリ316にはデバイスマップ422が格納され、メモリ416は第2の記憶部の一例であって、このメモリ416にはデバイスマップ424が格納される。デバイスマップ422、424はルーティングテーブル224(図5)に対して第2のテーブルを構成し、デバイス情報を格納する手段である。そこで、デバイスマップ422にはEXP00側の異常デバイスのデバイス情報が格納され、デバイスマップ424にはEXP01側の異常デバイスのデバイス情報が格納される。
【0058】
そして、筐体群306側には、EXP320(EXP00)に着目すると、EXP10、11、12、13が接続され、その下位側にはEXP20、21、22、23が備えられている。
【0059】
斯かる構成では、サーバ302からFC、iSCSI、SAS等のホストインタフェース(Host Interface)を通して筐体群306のHDDやSSD等の記憶装置へ発行されたIOアクセスは、CM308、310内のチャンネルアダプタ312、412で受けられる。そして、IOC318、418からEXP00又はEXP01を通して対象のSASディスク装置に対してSASのIOが発行される。
【0060】
また、このように複数のEXP00、01、10〜13、20〜23を用いれば、IOC318、418に多数のSASデバイスを多段接続することができる。
【0061】
次に、SAS接続構成について、図7及び図8を参照する。図7は、簡易なSAS接続の構成例を示し、図8は、エキスパンダの多段接続構成の一例を示している。
【0062】
既述の構成例(図6)からIOC318、EXP320(EXP00)及びEXP10〜13を抽出すると、図7に示すように、IOC318にEXP00が接続され、その下位側にEXP10〜13が接続された構成となる。そして、EXP10には例えば、複数のデバイス101・・・10F、EXP11には例えば、複数のデバイス111・・・11Fが接続されている。また、EXP12には例えば、複数のデバイス121・・・12F、EXP13には例えば、複数のデバイス131・・・13Fが接続されている。これらデバイス101〜13Fは例えば、ディスク装置である。この場合、デバイス13Fに付されたXは、デバイス13Fが接続不良等の異常デバイスであることを表している。
【0063】
このような接続構成について、接続完了後、ディスカバリ(Discovery )処理によってEXP10〜EXP13配下の全てのデバイスを認識する。
【0064】
また、既述の構成例(図6)からIOC318、EXP320及びEXP10〜13、20〜23を抽出すると、図8に示すように、IOC318にEXP320が接続されている。その下位側にEXP10〜13が存在し、EXP10にはEXP20、EXP11にはEXP21、EXP12にはEXP22、EXP13にはEXP23が接続されている。このようなEXPの多段構成により、多数のデバイス101〜13F、デバイス201〜23Fが接続され、入出力処理を可能にしている。この図8に示す多段構成において、デバイス13Fに付されたXは、説明の都合上、デバイス13Fが接続不良等の異常デバイスであることを表している。
【0065】
次に、以下の処理手順で使用するコマンド等の用語を説明する。
【0066】
“SMPFunction”について、SMP(SAS Management Protocol)はSASエキスパンダを管理するプロトコルである。物理ポート(Phy)の制御、エキスパンダのルーティング情報の構築、トポロジーの構築、SAS接続のリンクネゴシエーション等に用いられる。後述するリポートジェネラル(Report General)、ディスカバー(Discover)、リポートルートインフォメーション(Report Route Information)はSMPFunctionに含まれる。下位に接続されるEXPに対してIOCや上位EXPから発行される。
【0067】
“Report General”は、EXPに対してConfiguring 中かどうか、また、そのEXPが持っているPhyの数を問い合わせるためのコマンドである。
【0068】
“Discover”は、Phyの接続状態を知りたいEXPに向けて発行するコマンドで、コマンドを受けたEXPのPhyに直接接続されるデバイスのデバイス情報を返す。このデバイス情報は、接続されるデバイスを表す情報であって、例えば、接続されるデバイスが記憶装置であることを表す情報、接続されるデバイスがEXPであることを表す情報等である。
【0069】
“Report Route Information”は、配下即ち、“Report Route Information”を受け取ったEXPに接続された下位側のEXPに接続されるデバイスの接続状態を取得するコマンドである。即ち、コマンドを受けたEXPのPhyに直接接続されるデバイス情報ではなく、そのEXPの先に接続された全てのデバイスの接続情報を返す。
【0070】
“ Broadcast(Change)”は、状態変化が発生したことをEXPが他のデバイスに通知するためのコマンドである。Phyのリンクアップ又はダウン(Link Up 又はDown)、ディスクの抜き挿し等、状態変化があったときに発行される。 Broadcast(Change)を受信したデバイスは、その Broadcast(Change)が何れのデバイスから発行されたものかを識別することはできない。
【0071】
次に、このディスカバリ処理の手順について、図9を参照する。図9は、デバイス認識処理の手順を示している。
【0072】
この処理手順は、ディスカバリ処理によるデバイス認識処理の基本動作であって、次の通りである。
【0073】
1)EXP00及びEXP10〜EXP13に対する電源をONする(ステップS101)。
【0074】
2)給電開始により、EXP10〜EXP13は配下にあるデバイス認識処理を開始する(ステップS102)。Configuring 状態は、構成変更中となる。
【0075】
3)EXP00は EXP10〜EXP13に対してSMP Functionのリポートジェネラル(Report General)によってConfiguring 状態かどうかを確認する(ステップS103)。配下のEXP10〜EXP13が構成変更中であるため、自身も構成が確定せず、Configuring 状態となる。
【0076】
4)EXP10〜EXP13について、配下にあるデバイス認識処理が完了する(ステップS104)(Configuring の終了)。その際、接続されているEXP00に対して Broadcast(Change)を発行する。
【0077】
5)EXP00は Broadcast(Change)を受信すると、EXP10〜EXP13に対してSMPFunctionのReport GeneralによってConfiguring 状態かどうかを確認する(ステップS105)。このステップS105では、Configuring 状態ではないことが確認できると、SMPFunctionのDiscoverやReport Route Informationを、EXP10〜EXP13に対して発行する。また、デバイス情報(SASアドレス、物理ポート情報)を取得して、自身のメモリ領域にルーティングテーブル(Routing Table )を作成する。
【0078】
6)EXP00はEXP10〜EXP13から情報取得完了後、自身のConfiguring 状態を解除し、IOCに対して Broadcast(Change)を発行する(ステップS106)。
【0079】
7)IOCはEXP00からの Broadcast(Change)受信、Configuring 解除に伴い、同様にSMPFunctionをEXP00に発行し、デバイス情報を取得する(ステップS107)。その後、全デバイスに対してIO発行が可能となる。
【0080】
これにより、IOC−エキスパンダ構成でのデバイス認識処理の基本動作が終了する。
【0081】
次に、ルーティングテーブル224について、図10を参照する。図10は、ルーティングテーブルの一例を示す図である。
【0082】
このルーティングテーブル224は、EXPが持つデバイスのIOをルーティングする機能手段であって、メモリ212(図5)に備えている。このルーティングテーブル224に格納されたルーティング情報に基づき、SASアドレスに対するルーティングを実行する。
【0083】
そこで、ルーティングテーブル224には図10に示すように、物理ポート格納部426とインデックス格納部428とが設定されている。この場合、EXPの物理ポート(Phy)の数をM、各Phy毎に記述できるSASアドレスの数をNとすると、物理ポート格納部426には、複数の物理ポート情報を表す物理ポート番号として例えば、Phy0、Phy1・・・PhyM−1が設定され、インデックス格納部428には複数のインデックス情報を表すインデックス番号として例えば、Index 1、Index 2・・・Index Nが設定されている。この実施の形態では、ルーティングテーブル224は、行方向に物理ポート番号、列方向にインデックス番号が設定され、これら2つの情報で特定される項目部430にデバイスアドレスが格納される。
【0084】
このルーティングテーブル224には、EXPのPhy毎に接続されるSASデバイスとして例えば、EXPやディスクのデバイスアドレスが記述される。即ち、インデックス番号と物理ポート番号で指定される各項目部430にデバイスアドレスが例えば、8〔バイト〕で記述される。
【0085】
そして、このルーティングテーブル224は、EXPのディスカバリ処理即ち、デバイス認識処理によって作成される。このデバイス認識処理で実行されるのは、EXPの立ち上がり時、構成変更に伴うブロードキャスト〔 Broadcast(Change)〕の受信時である。このディスカバリ処理では、SMPFunctionのリポートジェネラル(Report General)やディスカバー(Discover)、リポートルートインフォメーション(Report Route Information)を発行し、EXPの配下に接続されるデバイスアドレスを取得する。
【0086】
次に、EXPの Broadcast(Change)発行処理について、図11を参照する。図11は、EXPの Broadcast(Change)発行処理の処理手順の一例を示している。
【0087】
EXPの Broadcast(Change)発行は、Phyの状態変化の検出(ステップS201)や、Phyに接続されたデバイスから Broadcast(Change)の受信(ステップS202)を契機とする。
【0088】
状態変化検出又は Broadcast(Change)で受信したPhy自体の状態が異常状態であるかを判定する(ステップS203)。Phy自体の状態が異常状態でなければ(ステップS203のNO)、上位接続デバイスに対し、 Broadcast(Change)を発行する(ステップS204)。Phy自体の状態が異常状態であれば(ステップS203のYES)、 Broadcast(Change)の発行を抑止する(ステップS205)。換言すれば、斯かる処理は、Phy自体が異常である場合には Broadcast(Change)の発行を抑止し、Phyが正常である場合には Broadcast(Change)の発行を許可することにある。
【0089】
そこで、ディスカバリ処理で作成されたルーティングテーブル224について、図12を参照する。図12は正常時のルーティングテーブルの一例を示している。
【0090】
EXP00において、ディスカバリ処理が発生した結果、EXP00には、図12に示すように、ルーティングテーブル224が作成される。この場合、インデックス番号と物理ポート番号で指定される各項目部430には、指定されたデバイスアドレス(8〔Byte〕)が記述されている。デバイスが接続されていない項目には、値“0”とし、この“0”は無効を意味する。
【0091】
このルーティングテーブル224では、Phy0のIndex 1=デバイス101、Index 2=デバイス102・・・Index F=デバイス10Fが記述され、Index F+1・・・N=0が記述されている。Phy1のIndex 1=デバイス111、Index 2=デバイス112・・・Index F=デバイス11Fが記述され、Index F+1・・・Index N=0が記述されている。Phy2のIndex 1=デバイス121、Index 2=デバイス122・・・Index F=デバイス12Fが記述され、Index F+1・・・Index N=0が記述されている。Phy3のIndex 1=デバイス131、Index 2=デバイス132・・・Index F=デバイス13Fが記述され、Index F+1・・・Index N=0が記述されている。そして、Phy4・・・PhyM−1のIndex 1、Index 2・・・Index N=0が記述されている。
【0092】
この場合、EXP13の配下にあるデバイス13Fが異常となった場合には、EXP13は、既述の処理手順(図11に示すフローチャート)に従い、上位EXPであるEXP00に Broadcast(Change)を発行する。 Broadcast(Change)を受信したEXP00はConfiguring 状態となる。そこで、既述の図9に示すフローチャートにより、ディスカバリ処理にて、接続されている全デバイスの認識処理を実行し、ルーティングテーブル224を再作成する。その際、ルーティングテーブル224に関し、通常は、保持していたルーティングテーブルを全て破棄した後、ルーティングテーブルをディスカバリ処理によって再作成する。そのため、ディスカバリ処理中では、ルーティングテーブル224は全てのPhyについて作成中となり、ルーティングを行うことができない。その結果、EXP00を経由してEXP00の配下のEXPやデバイスにIOを発行することができない。
【0093】
しかし、上記構成では、EXP00が Broadcast(Change)が何れの物理ポート(Phy)から受信したものであるかを認識することができ、このため、異常が発生した箇所をそのPhyから特定し、異常箇所の絞り込みをすることができる。
【0094】
図7に示す構成例では、Phy3の配下に異常が発生すると、EXP320(EXP00)は、Phy3の配下が異常個所であることを認識できる。そして、受信したPhy3に関するルーティングテーブル224のテーブル情報のみを破棄し、それ以外のPhyのルーティングテーブル224については破棄せず又は特定のPhyに属するデバイス情報を無効にし、有効なデバイス情報は保持すればよい。
【0095】
具体的には、 Broadcast(Change)の受信により、この Broadcast(Change)を発行した Configuring状態にあるEXP13が接続されたPhyを特定する。この場合、ルーティングテーブル224上で、そのPhyの列に記述される項目のみを破棄し、即ち、廃棄処理(0 Clear)を実行する。これにより、Phy0、Phy1、Phy2についてのルーティングテーブルは残り、このため、Phy0、Phy1、Phy2の配下にあるデバイスに対しては、常にルーティングすることができる。
【0096】
ここで、Phy3の無効化及びディスカバリ(Discovery )処理の完了について、図13及び図14を参照する。図13はPhy3を無効化した場合のルーティングテーブルを示し、図14は、Phy3のディスカバリ処理完了後のルーティングテーブルを示している。
【0097】
Phy3が無効化されると、図13に示すように、Phy3のIndex 1、Index 2・・・Index Nの値を“0”に更新し、Phy3が破棄されている。既述の通り、“0”は無効化している。この場合、Phy0、Phy1、Phy2は既述の通り、有効なデバイスが記述されている。
【0098】
そして、Phy3のディスカバリが完了すれば、図14に示すように、Phy3には有効なデバイスが記述されている。即ち、Phy3のIndex 1=デバイス131、Index 2=デバイス132、Index F・・・Index N=0が記述されている。この場合、デバイス13F=0であり、Phy3ではデバイス13Fが無効化され、有効であったデバイス131、132は有効であり、ルーティング可能となっている。
【0099】
次に、ルーティングテーブル224の再作成処理について、図15を参照する。図15は、ルーティングテーブルの再作成処理の処理手順を示している。
【0100】
このルーティングテーブル224の再作成の処理手順は、図15に示すように、 Broadcast(Change)受信を契機とする。この Broadcast(Change)は、配下のデバイス異常に伴い、 Configuring状態にあるEXPから発行され、上位のEXPで受信する。そこで、この Broadcast(Change)受信により、 Configuring状態へ遷移し、その際、物理ポート番号をX(=0 )とする(ステップS301)。物理ポート(Phy)について、物理ポートを表す番号をPhy=Xとし、 Broadcast(Change)を受信した物理ポート番号がXかを判定する(ステップS302)。物理ポート番号がXでなければ(ステップS302のNO)、Xをインクリメントし(ステップS303)、ステップS302に戻る。
【0101】
物理ポート番号がXであれば(ステップS302のYES)、 BroadCast(Change)を受信した物理ポート番号はXである(ステップS304)。即ち、この状態情報から異常デバイスが存在する物理ポートはXであることが認識される。
【0102】
そこで、ルーティングテーブル224にあるPhy=Xのテーブルを破棄する処理を実行し、Phy=X に関しては“0”クリアを実施する(ステップS305)。この“0”クリアの実施により、図13の状態となる。
【0103】
これにより、特定された物理ポートであるPhy=Xに対してDiscovery 処理を開始し(ステップS306)、Phy=Xの配下のEXPのDiscovery 処理の完了待ちとなる。Phy=Xについて、 Discovery処理を完了すれば、Phy=Xの配下にあるデバイスアドレスを取得する(ステップS307)。即ち、異常デバイスのアドレスを取得することができる。即ち、部分 Discoveryが完了する。
【0104】
そして、Phy=Xのテーブル(項目)を含むルーティングテーブル224が作成され(図14に示す状態)、Configuring 状態から通常状態へ遷移し(ステップS308)、この処理を終了する。
【0105】
そこで、プロセッサ314、メモリ316及びIOC318の処理について、図16を参照する。図16は、部分 Discoveryの処理手順の一例を示している。
【0106】
この処理手順は、既述の部分 Discoveryの処理手順を含んでいる。そこで、この処理手順では、IOC318がEXP320(EXP00)から Broadcast(Change)を受信することにより、EXP00の配下のデバイス構成に変化があったことを認識し、Discovery 処理を開始する。EXP同様、SMPFunctionのコマンドである“Report General”を発行し、EXP00のConfiguring 状態解除を待ち合わせてから、SMPFunctionのコマンドである“ Discover ”や“ Report Route Information ”により接続されているデバイスアドレスを入手する。
【0107】
このIOC318側のDiscovery 処理は、図16に示すように、 Broadcast(Change)受信を契機とし、Discovery 待ち処理(ステップS401)からDiscovery 処理が開始され(ステップS402)、コマンド“Report General”が発行される(ステップS403)。このコマンド“Report General”を受けた下位EXPであるEXP00は“Report General”の応答をする(ステップS404)。IOC318及びプロセッサ314側では、“Report General”の応答を受け、この“Report General”の応答からEXP00がConfiguring 状態であるかを判定する(ステップS405)。
【0108】
EXP00がConfiguring 状態であれば(ステップS405のYES)、Discovery 待ち処理(ステップS401)に復帰する。EXP00がConfiguring 状態でなければ(ステップS405のNO)、“Report General”の応答から物理ポート番号(NUMBER OF PHYS)で表される数だけコマンド“Discover”を発行する(ステップS406)。この場合、EXP00からDiscoverの応答を受け(ステップS407、S408)、EXP00に直接接続されているデバイスのアドレスを取得する(ステップS406)。
【0109】
そして、IOC318及びプロセッサ314側では、コマンド“Report Route Information”を発行し(ステップS409)、EXP00から“Report Route Information”の応答を受け(ステップS410)、EXP00の更に下位にあるデバイスのアドレスを取得する(ステップS409)。
【0110】
これにより、Discovery 処理を終了し(ステップS411)、EXP00の配下のデバイスアドレスを取得し、この処理を終了する。この処理は、EXP01も同様である。
【0111】
このように、通常のDiscovery 処理では、EXP00に対してSMPFunctionのReport Generalを発行してConfiguring 状態の解除を待ち合わせているが、EXP00がConfiguring 中であっても、異常が無ければ、IO処理が可能となる。異常があっても、IO処理を継続するためには、EXP配下の正常デバイスと異常デバイスとを仕分けすればよい。この仕分け手段として、異常個所が無いEXPからデバイス情報(アドレス、物理ポート情報)を取得すればよい。
【0112】
具体的には、EXP00がConfiguring 状態となった場合、IOC318から次のような部分Discovery としてSMPFunctionからコマンドを発行し、異常部分を仕分けすればよい。この処理手順について、図17を参照する。図17は異常部分の仕分けの処理手順の一例を示している。
【0113】
1)直接接続されているEXP00に対してSMPFunctionのコマンド“Discover”を発行し、EXP00に直接接続されているEXPのデバイスアドレスを入手する(ステップS501)。このステップS501では、例えば、EXP10、11、12、13のデバイスアドレスを入手し、EXPのデバイスアドレスが入手できたかを判定する(ステップS502)。EXPのデバイスアドレスが入手できなかった場合には、この処理を終了する。
【0114】
2)EXPのデバイスアドレスが入手できれば、入手したEXPのデバイスアドレスに対してSMPFunctionのコマンド“Report General”を発行して、そのEXPがConfiguring 状態かを確認する(ステップS503)。
【0115】
3)ステップS503において、Configuring 状態でなかったら(ステップS503のNO)、SMP Function のコマンド“Discover”やコマンド“Report Route Information”をそのEXP(例えば、EXP10、11、12)に対して発行する(ステップS504)。この場合、EXP10、11、12の配下のデバイスは使用できるので、このデバイス情報(アドレス、物理ポート情報)を取得し、使用できるデバイスとして管理する。
【0116】
4 )ステップS503において、Configuring 状態であった場合(ステップS503のYES)、又は発行したSMPFunctionが異常終了した場合には、IOC318はそのEXP(例えば、EXP13)の配下のデバイスは使用できないと判断する(ステップS505)。
【0117】
次に、この処理手順(図17)の詳細について、図18を参照する。図18は Discoveryの処理手順の一例を示している。
【0118】
この処理手順は、プロセッサ314、メモリ316及びIOC318での処理の一例であって、図18に示すように、 Broadcast(Change)受信を契機とし、Discovery 処理が開始され(ステップS601)、コマンド“Report General”を下位EXPであるEXP00に発行し、Configuring 状態であるかを確認する(ステップS602)。この場合、ステップS602では、EXP00からのReport Generalの応答(ステップS603)からConfiguring 状態を確認し、Configuring 状態でなければ(ステップS602のNO)、通常のディスカバリ処理に移行する(ステップS604)。
【0119】
EXP00がConfiguring 状態であれば(ステップS602のYES)、Report Generalの応答のNUMBER OF PHYSの数分のコマンド“Discover”を発行し、EXP00に直接接続されているEXPのデバイスアドレスを取得する(ステップS605)。この場合、EXP00からコマンド“Discover”の応答を受ける(ステップS606、S607)。
【0120】
Discoverにて取得したEXPの全デバイスアドレス(EXP10〜EXP13)に対してコマンド“Report General”を発行し、全EXPに発行済みかの確認をする(ステップS608)。
【0121】
全EXPに“Report General”を発行していれば(ステップS608のYES)、Discovery 処理の終了であり、この場合、EXP10〜EXP12の配下のデバイスのデバイスアドレスの取得完了となる(ステップS609)。
【0122】
全EXPに“Report General”を発行していなければ(ステップS608のNO)、“Report General”の応答を受け、Configuring であるかを確認する(ステップS610)。この場合、下位EXPであるEXP10〜EXP13から“Report General”の応答を受ける(ステップS611)。
【0123】
Configuring 状態であれば(ステップS610のYES)、異常箇所としてデバイスアドレスを記録する(ステップS612)。この場合、EXP13がConfiguring 状態であれば、異常箇所として記録される。
【0124】
Configuring 状態でなければ(ステップS610のNO)、コマンド“Discover”やコマンド“Report Route Information”を発行し、デバイス(EXP10〜EXP12)のデバイスアドレスを取得する(ステップS613)。この場合、EXP10〜EXP12から“Discover”や“Report Route Information”の応答を受ける(ステップS614)。
【0125】
そして、ステップS612、S613の処理の後、次のEXPのデバイスアドレスに移行し(ステップS615)、上記と同様の処理を実行する。
【0126】
このような手順により、IOC318はEXP00、EXP13がConfiguring 状態であっても、EXP10、11、12配下に接続されているデバイスのアドレスを取得することができる。取得したこれらのアドレスはEXP00にてルーティングされる使用可能なデバイスのアドレスである。EXP13配下のデバイス13Fが異常となった直後(EXP13がConfiguring 状態となった場合)には、IOC318は使用できるデバイスとしてEXP10配下のデバイス101〜10F、EXP11配下のデバイス111〜11F、EXP12配下のデバイス121〜12Fを認識し、デバイスマップとして保持する。その際のデバイスマップ422(図19)に書き込む。この場合、デバイスマップ422には、インデックスで示される各項目にデバイスアドレスが格納され、無効デバイスには“0”が書き込まれる。
【0127】
次に、デバイスマップ422について、図19を参照する。図19は、デバイスマップの一例を示す図である。
【0128】
このデバイスマップ422には、インデックス格納部432と、アドレス格納部434とが設定されている。インデックス格納部432には、インデックス番号が格納され、アドレス格納部434には、デバイスアドレスが格納されている。この場合、図19に示すように、使用可能なデバイスアドレスがインデックス番号とともに格納されている。無効デバイスには、インデックス番号とともに無効を表す“0”が格納されている。
【0129】
斯かる構成によれば、IOCのDiscovery 処理により取得されたデバイスマップ422はサーバ302(図6)からデバイスにアクセス要求があった場合に用いられる。その場合、アクセス要求があったデバイスについて、プロセッサ314(図6)がデバイスマップ422に格納された情報から使用できるか否かを判断し、その判断結果をサーバ302に通知する。
【0130】
これまで記載してきた手順によりEXP00、EXP13がConfiguring 状態である場合には、IOC318は図19に示すデバイスマップ422を作成しているが、EXP00、EXP13のConfiguration が完了したら、通常、IOC318が再度全デバイス情報を取得する。通常、EXP10、11、12、13の全てのデバイス情報を再取得することになる。
【0131】
この場合、上記手順により部分的に情報が取得できているので(EXP10、11、12配下のデバイス情報を保持)、Configuring 状態であったEXP13の配下のデバイス情報の取得処理のみを行うので、IOC318のデバイス情報の取得処理を短縮できる。具体的には、IOC318は図18に示す処理手順で、EXP00の何れのPhyの配下のデバイス情報が取得できていないのかを記憶する。そして、再認識処理では、そのPhy配下のデバイスに対してDiscovery 処理(図20)、即ち、部分Discovery 処理を行い、その処理後にデバイスマップ422を修正する(図21)。
【0132】
この部分 Discoveryの処理手順について、図20を参照する。図20は、部分Discovery 処理の一例を示している。
【0133】
この部分 Discoveryの処理手順においても、図20に示すように、 Broadcast(Change)受信を契機とし、Discovery 処理が開始され(ステップS701)、異常箇所と認識しているデバイスアドレス(EXP13)にコマンド“Report General”を発行し、Configuring 状態であるかを確認する(ステップS702)。この場合、下位EXPであるEXP13に対してコマンド“Report General”を発行し、EXP13からReport Generalの応答を受ける(ステップS703)。
【0134】
EXP13からの“Report General”の応答(ステップS703)からConfiguring 状態を確認し、Configuring 状態でなければ(ステップS702のNO)、通常のディスカバリ処理に移行する(ステップS704)。
【0135】
EXP13がConfiguring 状態であれば(ステップS702のYES)、既述のように、コマンド“Discover”や、コマンド“Report Route Information”を発行し、デバイスアドレス(EXP13)を取得する(ステップS705)。この場合、EXP13からコマンド“Discover”やコマンド“Report Route Information”の応答を受ける(ステップS706)。
【0136】
このようなコマンドの応答を受ければ、Discovery 処理を終了し、EXP13の配下のデバイスアドレスの取得完了となる(ステップS707)。
【0137】
斯かる処理後のデバイスマップについて、図21を参照する。図21は、Discovery 処理後のデバイスマップの一例を示す図である。図21において、図19と同一部分には同一符号を付してある。
【0138】
このデバイスマップ422には、図21に示すように、Discovery 処理後、使用可能なデバイスアドレスがインデックス番号とともに格納されている。無効デバイスには、インデックス番号とともに無効を表す“0”が格納されている。
【0139】
次に、部分Discovery 処理を適用した処理手順について、図22を参照する。
【0140】
この場合、EXP13では、配下のデバイスに異常が発生し、Configuring 状態へ遷移し、上位EXP(EXP00)に対して Broadcast(Change)を発行する(ステップS801)。
【0141】
そこで、EXP00では、EXP13から Broadcast(Change)を受け、Configuring 状態へ遷移し、上位装置であるIOC318に対して Broadcast(Change)を発行する(ステップS802)。
【0142】
このとき、EXP00は、 Broadcast(Change)を発信した物理ポート即ち、EXP13を接続している物理ポートを特定し、EXP13にDiscovery 処理を開始する(ステップS803)。即ち、部分Discovery 処理を実行する。
【0143】
IOC318では、EXP00から Broadcast(Change)を受け、下位EXPへのIO発行を停止し、EXP00に対してSMPDiscoverを発行する(ステップS804)。これに対し、EXP00からSMPDiscoverの応答が発せられ(ステップS805)、IOCに通知される。
【0144】
IOCでは、取得したデバイスアドレス(EXP10、EXP11、EXP12、EXP13)に対してSMPのコマンド“Report General”を発行し(ステップS806)、EXP10、EXP11、EXP12及びEXP13に通知する。
【0145】
これを受け、EXP10、EXP11及びEXP12からReport Generalの応答が発せられ(ステップS807)、同様に、EXP13からReport Generalの応答が発せられる(ステップS808)。
【0146】
これにより、IOCでは、EXP13のみがConfiguration 状態であることを検出し、EXP10、EXP11、EXP12についてのIO発行を再開し、EXP00及びEXP13に対してDiscovery 処理を開始する(ステップS809)。
【0147】
EXP13ではEXP00からのDiscovery 処理(ステップS803)を受け、配下のデバイスの情報取得を完了し、通常状態へ遷移した後、Discovery の応答を行う(ステップS810)。
【0148】
EXP00はEXP13の情報取得完了を受け、通常状態への遷移し、Discovery の応答をIOCに対して行う(ステップS811)。
【0149】
そして、IOC318では、下位EXPの情報取得を完了した後、EXP13へのIO発行を再開する(ステップS812)。
【0150】
以上述べた通り、この実施の形態によれば、異常デバイスが属するポートを絞り込み、そのポートに属するデバイス情報を無効にし、正常デバイスが属するポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性を維持し、より高めることができる。
【0151】
また、異常デバイスが属するポートのみを特定し、各ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性を図ることもできる。
【0152】
また、この実施の形態では、デバイスマップを備え、このデバイスマップと、ルーティングテーブルとをリンクさせているので、デバイス情報がデバイスマップに格納される。そこで、CM側では、上位装置即ち、ホストからの問い合わせに対し、最適且つ最新のデバイス情報を通知することができ、データ処理の信頼性及び迅速性に寄与することができる。即ち、利便性の高いストレージシステムの構築に寄与することができる。
【0153】
〔他の実施の形態〕
【0154】
(1) 上記実施の形態では、SASデバイスを例示したが、本開示の接続拡張装置やストレージシステムはこれに限定されない。SASデバイス以外のデバイスであってもよい。
【0155】
(2) 上記実施の形態のルーティングテーブル224では、物理ポート情報を横欄、インデックス情報を縦欄に設定しているが、これに限定されない。例えば、図23に示すように、横欄にインデックス情報格納部442、縦欄に物理ポート情報格納部444を設定し、項目欄446にデバイスアドレス情報を格納するルーティングテーブル448で構成してもよい。
【0156】
〔比較例〕
【0157】
比較例は、本開示の部分Discovery 処理を実行しない場合の処理手順を例示したものである。このような処理手順では、異常デバイスが発見されると、全ての物理ポートが構成確認中状態に移行し、入出力処理の迅速化が損なわれる。この比較例においても、既述のハードウェアを用いて行うことができるので、上記実施の形態と同一の符号を付してある。
【0158】
そこで、このデバイスの状態変化の認識処理について、図24を参照する。図24は、状態変化時のデバイス認識処理の処理手順を示している。
【0159】
この処理手順は、デバイスの故障や接続切れが要因で異常となった結果、EXP配下のデバイス状態に変化が生じた場合のIOCのデバイス認識処理である。
【0160】
1)EXP13 配下のデバイス13Fが異常となったことをEXP13が認識する(ステップS901)。
【0161】
2)EXP13は、配下のデバイス異常に伴い、Configuring 状態となる(ステップS902)。このステップS902では、EXP00に対して Broadcast(Change)を発行し、Configuring 状態となったことを通知する。EXP00はPhy3を通して Broadcast(Change)を受信する。
【0162】
3)EXP13がConfiguring 状態となったことを受け、EXP00もConfiguring 状態となる(ステップS903)。その結果、IOCはEXP00の配下のデバイスに対してIO発行ができなくなる。
【0163】
4)EXP13について、配下にあるデバイス認識処理が完了する(ステップS904)。(Configuring の終了)
【0164】
5)EXP00はEXP13のデバイス認識処理完了に伴い、SMPFunctionのコマンドDiscoverやReport Route InformationをEXP13に対して発行する(ステップS905)。このステップS905では、デバイス情報(SASアドレス、物理ポート情報)を取得して、自身のメモリ領域にルーティングテーブルを作成する(ステップS905)。
【0165】
6)EXP00はEXP13から情報取得完了後、自身のConfiguring 状態を解除する(ステップS906)。
【0166】
7)IOCはEXP00のConfiguring 解除に伴い、同様にSMPFunctionをEXP00に発行し、デバイス情報を取得する(ステップS907)。その後、EXP00の配下のデバイスに対してIO発行が可能となる。
【0167】
このように、本開示の接続拡張制御方法を用いない場合には、EXP13の配下のデバイス異常による構成変化のため、EXP00もConfiguring 状態へ移行し、本来関係のないEXP10、EXP11、EXP12配下のデバイスにもIO発行ができない状態となる。この結果、図8のように、EXP10〜13配下にEXPが多段で接続されるような環境であれば、影響はEXP20、21、22の配下のデバイスに対しても及ぶこととなる。このため、正常デバイスであるにも拘わらず、使用不能のデバイスを増加させることになる。
【0168】
そこで、斯かる状況、即ち、デバイス異常が生じても、本開示の接続拡張制御方法を用いれば、EXP10、11、12の配下のデバイスに対してIO発行が可能となる。
【0169】
次に、EXPのディスカバリ処理について、図25を参照する。図25は、ディスカバリ処理の処理手順を示している。
【0170】
このディスカバリ処理は、ルーティングテーブルの作成処理の手順であって、上位EXPと下位EXPとの応答処理を含んでいる。
【0171】
このディスカバリ処理は、上位EXPの電源投入(Power On)直後又は Broadcast(Change)受信を契機とする。そこで、上位EXPの電源投入(Power On)直後又は Broadcast(Change)受信であれば(ステップS1001)、Configuring 状態へ遷移し、ルーティングテーブルを破棄する(ステップS1002)。
【0172】
この時点でDiscovery 処理が開始され(ステップS1003)、Report Generalが発行される(ステップS1004)。このReport Generalは下位EXPに通知され、下位EXPではReport Generalの応答が発行され(ステップS1005)、上位EXPに通知される。
【0173】
このReport Generalの応答を受けた上位EXPは、Report Generalの応答からConfiguring 状態であるかを判定する(ステップS1006)。Configuring 状態であれば(ステップS1006のYES)、ディスカバリ待ち処理に移行し(ステップS1007)、この処理の後、Discovery 処理開始に移行する。
【0174】
Configuring 状態でなければ(ステップS1006のNO)、Report Generalの応答にある物理ポート番号(NUMBER OF PHYS)の数分だけDiscoverを発行するとともに、下位EXPに直接接続されているデバイスのデバイスアドレスを取得する(ステップS1007)。即ち、Discoverを発行した場合、下位EXPに対し、その通知を行い、Discoverの応答を受ける(ステップS1008、S1009)。斯かる処理を物理ポート番号の数分だけ実行する。
【0175】
デバイスアドレス取得(ステップS1007)の後、Report Route Informationを発行し、下位EXPの更なる下位に接続されているデバイスのデバイスアドレスを取得する(ステップS1010)。この処理途上にあっては、下位EXPに対するReport Route Informationの通知やそのReport Route Informationの応答(ステップS1011)を受ける。
【0176】
以上の処理の後、Discovery 処理終了となり(ステップS1012)、取得したアドレスを元にルーティングテーブルを作成し、Configuring 状態から通常状態へ遷移する(ステップS1013)。
【0177】
次に、部分Discovery 処理を適用しない処理手順について、図26を参照する。
【0178】
この場合、EXP13では、配下のデバイスに異常が発生し、Configuring 状態へ遷移し、上位EXP(EXP00)に対して Broadcast(Change)を発行する(ステップS1101)。
【0179】
そこで、EXP00では、EXP13から Broadcast(Change)を受け、Configuring 状態へ遷移し、上位装置であるIOCに対して Broadcast(Change)を発行する(ステップS1102)。
【0180】
このとき、EXP00は、下位EXPであるEXP10、EXP11、EXP12に対して順番にDiscovery 処理を開始する(ステップS1103)。
【0181】
IOCでは Broadcast(Change)を受け、下位EXPへのIO発行を停止し、下位の全EXPに対してDiscovery 処理を開始する(ステップS1104)。
【0182】
EXP10、EXP11、EXP12は、EXP00からの指示に対し、Discovery の応答をする(ステップS1105)。
【0183】
EXP00は、下位EXP(EXP13)に対してDiscovery 処理を開始する(ステップS1106)。これに対し、EXP13は、配下のデバイスの情報取得を完了すれば、通常状態に遷移し、Discovery の応答をする(ステップS1107)。
【0184】
この応答を受けたEXP00は、下位EXPの情報取得を完了すれば、通常状態に遷移し、IOCに対してDiscovery の応答をする(ステップS1108)。
【0185】
そして、IOCでは、下位EXPの情報取得を完了した後、下位EXPへのIO発行を再開する(ステップS1109)。
【0186】
このように比較例の処理では、何れかの物理ポートにデバイス異常があると、全ての物理ポートが構成確認中状態に移行し、全てのDiscovery 処理が完了するまで、入出力処理ができない状態となる。EXPを用いて多段構成としても、構成確認中状態が継続すると、多段構成のメリットを活かすことができない。このような課題は上記実施の形態で解決されている。デバイス異常が発見されると、異常デバイスの属する物理ポートを絞り込み、正常デバイスが属する物理ポートでの入出力処理が保証され、迅速処理に寄与することができる。
【0187】
次に、以上述べた実施例を含む実施の形態に関し、更に以下の付記を開示する。以下の付記に本発明が限定されるものではない。
【0188】
(付記1) デバイスを接続する複数のポートと、
各ポートから得られるデバイス情報を記録する記憶部と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部と、
を備えることを特徴とする接続拡張装置。
【0189】
(付記2) 前記処理部は、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御することを特徴とする付記1に記載の接続拡張装置。
【0190】
(付記3) 前記デバイス情報は、前記ポートを特定するポート情報に関係付けられてテーブルに格納されていることを特徴とする付記1に記載の接続拡張装置。
【0191】
(付記4) デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を記録する第1の記憶部を備える接続拡張部と、
前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第1の記憶部に保持させた際に、これらデバイス情報を記憶する第2の記憶部と、
を備えることを特徴とするストレージシステム。
【0192】
(付記5) 更に、上位側装置からのデバイス情報の問い合わせに対し、前記第2の記憶部にある前記デバイス情報を出力する制御部と、
を備えることを特徴とする付記4に記載のストレージシステム。
【0193】
(付記6) 接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する機能と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる機能と、
を前記コンピュータに実行させる接続拡張制御プログラム。
【0194】
(付記7) 更に、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御する機能と、
を含むことを特徴とする付記6に記載の接続拡張制御プログラム。
【0195】
(付記8) 更に、前記デバイス情報を前記ポートを特定するポート情報に関係付けてテーブルを作成又は該テーブルに格納する機能と、
を含むことを特徴とする付記6に記載の接続拡張制御プログラム。
【0196】
(付記9) デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録するステップと、
デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させるステップと、
を含むことを特徴とする接続拡張制御方法。
【0197】
(付記10) 更に、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御するステップと、
を含むことを特徴とする付記9に記載の接続拡張制御方法。
【0198】
以上説明したように、接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法の最も好ましい実施の形態等について説明したが、本発明は、上記記載に限定されるものではなく、特許請求の範囲に記載され、又は発明を実施するための形態に開示された発明の要旨に基づき、当業者において様々な変形や変更が可能であることは勿論であり、斯かる変形や変更が、本発明の範囲に含まれることは言うまでもない。
【符号の説明】
【0199】
2 接続拡張装置
20 ストレージシステム
40、41、42、43 物理ポート(Phy)
6 処理部
8 記憶部
12 デバイス情報
22 入出力制御部
26 記憶部
【特許請求の範囲】
【請求項1】
デバイスを接続する複数のポートと、
各ポートから得られるデバイス情報を記録する記憶部と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部と、
を備えることを特徴とする接続拡張装置。
【請求項2】
前記処理部は、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御することを特徴とする請求項1に記載の接続拡張装置。
【請求項3】
デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を記録する第1の記憶部を備える接続拡張部と、
前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第1の記憶部に保持させた際に、これらデバイス情報を記憶する第2の記憶部と、
を備えることを特徴とするストレージシステム。
【請求項4】
更に、上位側装置からのデバイス情報の問い合わせに対し、前記第2の記憶部にある前記デバイス情報を出力する制御部と、
を備えることを特徴とする請求項3に記載のストレージシステム。
【請求項5】
接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する機能と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる機能と、
を前記コンピュータに実行させる接続拡張制御プログラム。
【請求項6】
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録するステップと、
デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させるステップと、
を含むことを特徴とする接続拡張制御方法。
【請求項1】
デバイスを接続する複数のポートと、
各ポートから得られるデバイス情報を記録する記憶部と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部と、
を備えることを特徴とする接続拡張装置。
【請求項2】
前記処理部は、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御することを特徴とする請求項1に記載の接続拡張装置。
【請求項3】
デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を記録する第1の記憶部を備える接続拡張部と、
前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第1の記憶部に保持させた際に、これらデバイス情報を記憶する第2の記憶部と、
を備えることを特徴とするストレージシステム。
【請求項4】
更に、上位側装置からのデバイス情報の問い合わせに対し、前記第2の記憶部にある前記デバイス情報を出力する制御部と、
を備えることを特徴とする請求項3に記載のストレージシステム。
【請求項5】
接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する機能と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる機能と、
を前記コンピュータに実行させる接続拡張制御プログラム。
【請求項6】
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録するステップと、
デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させるステップと、
を含むことを特徴とする接続拡張制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【公開番号】特開2011−243064(P2011−243064A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2010−115749(P2010−115749)
【出願日】平成22年5月19日(2010.5.19)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願日】平成22年5月19日(2010.5.19)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]