説明

RAID装置、異常デバイス検出装置および異常デバイス検出方法

【課題】プロトコルレベルで異常が発生したデバイスを検出することを課題とする。
【解決手段】RAID装置は、RAIDの構成対象である複数のHDDを有する。そして、RAID装置は、RAIDの構成を制御し、複数のHDDに対して各種データ処理を実施するホストと複数のHDDとの間の通信を制御するコントローラ部を有する。このような状態において、RAID装置は、複数のHDD各々に対して一意な物理アドレスを割り与える初期化処理が実行された際に、複数のHDD各々から初期化フレームを受信する。そして、RAID装置は、受信された初期化フレームに含まれる情報に基づいて、複数のHDD各々の異常を検出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、RAID装置、異常デバイス検出装置および異常デバイス検出方法に関する。
【背景技術】
【0002】
従来、HDD(Hard Disk Drive)やSSD(Solid State Drive)などFibre Channel Inter Face(以下、FCI/Fという)に対応するデバイスを複数搭載した記憶装置であるRAID(Redundant Arrays of Inexpensive Disks)装置が利用されている。
【0003】
RAID装置は、複数台のデバイスによってRAID−0やRAID−5などのRAIDを構成してデバイスに記憶されるデータを冗長保存することにより、1台のデバイスが故障した場合でも記憶されるデータを保持することができる。そして、RAID装置RAIDコントローラが、RAID装置全体、言い換えると、RAID−0やRAID−5などのRAIDの種別等を制御する。
【0004】
また、FCI/Fに対応するデバイスは、2つのFCI/Fを有しており、RAIDコントローラも、上記デバイスが有する2つのFCI/F各々に直接アクセスする2系統のデバイスアダプタ(Device Adapter:以下、DAという)を有する。なお、1つのDAには、最大126台のデバイスが接続可能である。
【0005】
このようなRAID装置は、FCI/Fの初期化処理(Loop Initialization)やPortLoginによって、当該RAID装置に接続されたデバイスを認識する。具体的に例を挙げると、RAID装置は、FCI/Fの初期化処理を開始すると、DAを含む全てのデバイス間で、各デバイス固有に割り当てられているWWN(World Wide Name)の比較を行う。そして、RAID装置は、最も小さいWWNを保持するデバイスをループマスターと決定する。つまり、デバイス間のWWN比較によってループマスターが決定される。
【0006】
より具体的に説明すると、RAID装置に接続された各デバイスは、自分のWWNを含むフレームをFCループ経路上の次のデバイスに送信する。その後、デバイスは、他のデバイスからWWNを含むフレームを受信すると、当該WWNが自身の保持するWWNよりも大きいか否かを判定する。そして、デバイスは、受信したフレームに含まれるWWNが自身のWWNよりも大きい場合には、当該フレームに自身のWWNを付加して、FCループ経路上の次のデバイスに送信する。一方、デバイスは、受信したフレームに含まれるWWNが自身のWWNよりも小さい場合には、当該フレームをそのまま、FCループ経路上の次のデバイスに送信する。そして、全てのデバイスにおいて上記したWWNの比較および更新が実施され、自身のWWNを含むフレームを受信したデバイスがループマスターとして決定される。
【0007】
続いて、ループマスターは、各デバイスに物理アドレス(AL_PA:Arbitrated Loop_Physical Address)を割り与え、ループマスターのAL_PAを先頭とするAL_PAのMAPを生成し、各デバイスの接続位置等を取得して初期化処理を終了する。
【0008】
その後、RAIDコントローラのDAは、PortLoginコマンドを各デバイスに発行して各デバイスからWWNを取得し、接続される各デバイスを認識する。そして、RAIDコントローラは、各デバイスごとに、2系統のDAそれぞれに取得されたWWNを比較し、各WWNが一致した場合に、DAで取得されたWWNがデバイスのWWNであると認識する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平10−69459号公報
【特許文献2】特開2003−158526号公報
【特許文献3】特開2005−208971号公報
【非特許文献】
【0010】
【非特許文献1】「FIBRE CHANNEL ARBITRATED LOOP(FC-AL) REV 4.5」、working draft proposal American National Standard for Information Technology、June 1、1995
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、従来の技術では、プロトコルレベルで異常が発生したデバイスを検出できないという課題があった。具体的には、従来の技術は、デバイスから出力される電気的な異常検出を行っているため、一見、正常動作しているように判断されるデバイスを異常デバイスとして検出することができない。例えば、初期化処理において各デバイスで送受信され、ループマスターを決定するのに使用されるLISM(Loop Initialization Select Master)フレーム内でビットエラーが発生したデバイスを検出することができない。
【0012】
具体的に例を挙げると、LISMフレームに含まれる識別子であるS_ID又はD_IDにビットエラーが発生し、かつ、ビットエラーが発生したS_ID又はD_IDに対応したCRC(Cyclic Redundancy Check)を付加した場合である。この場合、RAID装置では、CRCが異常でないため、S_ID又はD_IDの値が異常のある不正な値であるにも関わらず、正当な値と誤認識する。この結果、RAID装置は、異常を検出できずに、RAID装置に接続される各デバイスを制御することとなり、DAの正常動作を保証できない。
【0013】
また、LISMフレームに含まれるWWNにビットエラーが発生し、かつ、ビットエラーが発生したWWNに対応したCRCをデバイスが付加した場合である。各デバイスは、受信したLISMフレーム内のWWNと自装置のWWNとを比較し、自装置のWWNの方が小さい場合には、自装置WWNをLISMフレームに付加して次のデバイスに送信する。したがって、RAID装置では、各デバイスを通過したLISMフレームを受信した際に、LISMフレームに付加されているWWNを最も小さい値のWWNと判断し、当該WWNを保持するデバイスをループマスターと決定する。つまり、RAID装置では、全てのデバイスそれぞれのWWNを認識することができないので、各デバイスを通過したLISMフレームに付加されたWWNがビットエラーによって最も小さい値となったWWNか否かを判断することができない。
【0014】
この結果、RAID装置は、ビットエラーによって最も小さい値となってしまったWWNを保持するデバイスをループマスターと決定してしまい、RAID装置そのものの動作を保証できなくなる。なお、S_IDは、初期化後には送信元物理アドレスが格納され、D_IDには、初期化後に宛先物理アドレスが格納される。
【0015】
開示の技術は、上記に鑑みてなされたものであって、プロトコルレベルで異常が発生したデバイスを検出することが可能であるRAID装置、異常デバイス検出装置および異常デバイス検出方法を提供することを目的とする。
【課題を解決するための手段】
【0016】
本願の開示するRAID装置、異常デバイス検出装置および異常デバイス検出方法は、一つの態様において、RAIDの構成対象である複数のデバイスを有する。そして、前記RAIDの構成を制御し、前記複数のデバイスに対して各種データ処理を実施するホストと前記複数のデバイスとの間の通信を制御するコントローラ部を有する。そして、前記複数のデバイス各々に対して一意な物理アドレスを割り与える初期化処理が実行された際に、前記複数のデバイス各々から初期化フレームを受信するフレーム受信部を有する。さらに、前記フレーム受信部によって受信された初期化フレームに含まれる情報に基づいて、前記複数のデバイス各々の異常を検出する異常検出部を有することを特徴とする。
【発明の効果】
【0017】
本願の開示するRAID装置、異常デバイス検出装置および異常デバイス検出方法の一つの態様によれば、プロトコルレベルで異常が発生したデバイスを検出することが可能であるという効果を奏する。
【図面の簡単な説明】
【0018】
【図1】図1は、実施例1に係るRAID装置の構成を示すブロック図である。
【図2】図2は、ポート診断部の詳細を示すブロック図である。
【図3】図3は、ポート診断部のループバック接続を示す図である。
【図4】図4は、LISMフレームのフォーマット例を示す図である。
【図5】図5は、実施例1に係るRAID装置の初期化処理の流れを示すフローチャートである。
【図6】図6は、初期化処理における異常検出処理の流れを示すフローチャートである。
【図7】図7は、初期化処理における各デバイスのLISMフレーム処理の流れを示すフローチャートである。
【図8】図8は、実施例2に係るポート診断部の詳細を示すブロック図である。
【図9】図9は、実施例2に係る識別子DBに記憶される情報の例を示す図である。
【図10】図10は、実施例2に係る識別子DBに記憶される情報の例を示す図である。
【図11】図11は、実施例2に係る識別子DBに記憶される情報の例を示す図である。
【図12】図12は、実施例2に係る異常検出処理の流れを示すフローチャートである。
【図13】図13は、実施例3に係るポート診断部の詳細を示すブロック図である。
【図14】図14は、実施例3に係る識別子DBに記憶される情報の例を示す図である。
【図15】図15は、実施例3に係る異常検出処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0019】
以下に、本願の開示するRAID装置、異常デバイス検出装置および異常デバイス検出方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0020】
図1は、実施例1に係るRAID(Redundant Arrays of Inexpensive Disks)装置の構成を示すブロック図である。図1に示すように、RAID装置20は、ファイバーチャネル(FC)やiSCSI(Internet Small Computer System Interface)などを用いて、RAID装置20にデータを格納したり読み出したりするサーバ装置であるホスト10と接続される。
【0021】
このRAID装置20は、図1に示すように、HDD(Hard Disk Drive)20a、HDD20b、HDD20cと、コントローラ部21と、ポートバイパス回路22と、ポートバイパス回路27とを有する。なお、RAID装置20は、2系統の通信経路でホスト10と接続し、さらに、コントローラ部21と各HDDと各ポートバイパス回路との間も2系統の通信経路で接続する。したがって、RAID装置20は、いずれかの経路が切断等された場合でも、正常に通信を行うことができる。
【0022】
HDD20a、HDD20b、HDD20cは、RAID−0やRAID−5などのRAIDを構成するデバイスであり、ホスト10によって格納されたデータを記憶する。各HDDは、2つのFibre Channel Inter Face(以下、FCI/Fという)を有する。そして、各HDDは、ファブリック接続(FC−SW)やFC−AL(Fibre Channel Arbitrated Loop)接続によって、他のHDDやコントローラ部21、2つのポートバイパス回路それぞれと接続される。
【0023】
コントローラ部21は、チャネルアダプタ21aと21b、RAIDコントローラ21cと21d、デバイスアダプタ21eと21fとのそれぞれをPCI Express等で接続する。
【0024】
チャネルアダプタ21aは、FCやiSCSIで接続されるホスト10のホストアダプタ10aとの間の通信を制御する。また、チャネルアダプタ21aは、PCI Express等で接続されるRAIDコントローラ21cとの間の通信を制御する。同様に、チャネルアダプタ21bは、FCやiSCSIで接続されるホスト10のホストアダプタ10bとの間の通信を制御する。また、チャネルアダプタ21bは、PCI Express等で接続されるRAIDコントローラ21dとの間の通信を制御する。
【0025】
RAIDコントローラ21cは、チャネルアダプタ21a、RAIDコントローラ21d、デバイスアダプタ21eのそれぞれとPCI Express等で接続される。また、RAIDコントローラ21cは、パリティ演算やデバイス、ディスクの管理を実施し、HDD20a、HDD20b、HDD20cから構成されるRAID構成を実装制御する。すなわち、RAIDコントローラ21cは、例えばデータの書き込みや読出しなどHDD20a、HDD20b、HDD20cそれぞれに対する各種処理を制御する。
【0026】
同様に、RAIDコントローラ21dは、チャネルアダプタ21b、RAIDコントローラ21c、デバイスアダプタ21fのそれぞれとPCI Express等で接続される。また、RAIDコントローラ21dは、パリティ演算やディスクの管理を実施し、HDD20a、HDD20b、HDD20cから構成されるRAID構成を実装制御する。すなわち、RAIDコントローラ21dは、例えばデータの書き込みや読出しなどHDD20a、HDD20b、HDD20cそれぞれに対する各種処理を制御する。
【0027】
デバイスアダプタ21eは、RAIDコントローラ21cとPCI Express等で接続し、ポートバイパス回路22を介して各HDDとFCで接続するイニシエータ等である。例えば、デバイスアダプタ21eは、ポートバイパス回路22の各ポート診断部と各HDDとをFCループ接続する。FCループとは、デバイスアダプタ21eとポートバイパス回路22の各ポート診断部とがループ接続される状態のことをいう。具体的には、デバイスアダプタ21eからポート診断部24、ポート診断部24からHDD20a、HDD20aからポート診断部24、ポート診断部24からポート診断部25に接続される。さらに、ポート診断部25からHDD20b、HDD20bからポート診断部25、ポート診断部25からポート診断部26、ポート診断部26からHDD20c、HDD20cからポート診断部26、ポート診断部26からデバイスアダプタ21eに接続される。
【0028】
同様に、デバイスアダプタ21fは、RAIDコントローラ21dとPCI Express等で接続し、ポートバイパス回路27を介して各HDDとFCで接続するイニシエータ等である。例えば、デバイスアダプタ21fは、ポートバイパス回路27の各ポート診断部と各HDDとをFCループ接続する。具体的には、デバイスアダプタ21fからポート診断部29、ポート診断部29からHDD20a、HDD20aからポート診断部29、ポート診断部29からポート診断部30に接続される。さらに、ポート診断部30からHDD20b、HDD20bからポート診断部30、ポート診断部30からポート診断部31、ポート診断部31からHDD20c、HDD20cからポート診断部31、ポート診断部31からデバイスアダプタ21fに接続される。
【0029】
ポートバイパス回路22は、ポートバイパス回路コントローラ23、ポート診断部24、ポート診断部25、ポート診断部26を有し、それぞれをFCで接続する。なお、ポートバイパス回路22とポートバイパス回路27は、同様の構成を有するので、ここではポートバイパス回路22についてのみ説明する。また、ポート診断部24、ポート診断部25、ポート診断部26も同様の構成を有するので、ここではポート診断部24についてのみ説明する。
【0030】
ポートバイパス回路コントローラ23は、ポートバイパス回路22全体を制御する制御部である。例えば、ポートバイパス回路コントローラ23は、デバイスアダプタ21e、ポート診断部24、ポート診断部25、ポート診断部26が接続されるFCインタフェースに流れるデータを、ファブリック接続やFC−AL接続などの接続状態に従って制御する。
【0031】
ポート診断部24は、デバイスアダプタ21eとHDD20a等との間の通信を制御する制御部であり、図2に示すように、外部I/F部24aと内部I/F部24bとループバック制御部24cとフレーム受信部24dと異常検出部24eとを有する。なお、図2は、ポート診断部の詳細を示すブロック図である。
【0032】
外部I/F部24aは、コントローラ部21または他のポート診断部などからRAIDを構成するデバイスへの通信を制御するインタフェースである。例えば、外部I/F部24aは、コントローラ部21のデバイスアダプタ21eから受け付けた各種要求を受信したり、ポート診断部25に対して各種要求を転送したりする。
【0033】
内部I/F部24bは、RAIDを構成するデバイスとポート診断部24との間の通信を制御するインタフェースである。例えば、内部I/F部24bは、HDD20aに対して実行されたデータ書き込みや読み出しの要求に対する応答をHDD20aから受信して、FCループ上に転送し、コントローラ部21に送信する。また、内部I/F部24bは、HDD20a以外のデバイスに対して実行されたデータ書き込みや読み出しの要求をFCループ上に転送し、外部I/F部24aを介して他のデバイスに転送する。
【0034】
ループバック制御部24cは、外部I/F部24a、内部I/F部24b、後述するフレーム受信部24dや異常検出部24eのそれぞれと接続され、デバイスとの間の通信をループバック状態に遷移させる。例えば、ループバック制御部24cは、RAID装置20の電源がONになり、HDD20aからLIP(Loop Initialization Primitive)が発行され、当該LIPがFCループを一周したことを検知する。そして、LIPを検知したループバック制御部24cは、図3に示すように、HDD20aとから出力されたフレームが他のHDD等に送信されないように、HDD20aとの間の通信をループバック状態に遷移させる。なお、図3は、ポート診断部のループバック接続を示す図である。
【0035】
フレーム受信部24dは、ファイバーチャネルを有する複数のデバイスそれぞれに対して一意な物理アドレスを割り与える初期化処理が開始された場合に、初期化処理を実施する初期化フレームを複数のデバイスそれぞれから受信する。具体的には、フレーム受信部24dは、HDD20aに対して一意な物理アドレスを割り与える初期化処理が開始された場合に、初期化処理を実施する初期化フレームをHDD20aから受信して、後述する異常検出部24eに出力する。
【0036】
例えば、フレーム受信部24dは、自分のWWN(World Wide Name)からなるポートネームを有し、ループマスターを決定するLISM(Loop Initialization Select Master)フレームをHDD20aから受信する。また、フレーム受信部24dは、Fabricアドレスに該当するビットを有するLIFA(Loop Initialization Fabric Assigned)フレームをHDD20aから受信する。また、フレーム受信部24dは、前回割り当てられたAL_PAに該当するビットを有するLIPA(Loop Initialization Previously Acquired)フレームをHDD20aから受信する。
【0037】
また、フレーム受信部24dは、ハード的に割り当てられたHDDのコネクタに7本の信号線を保持するSEL−IDに該当するビットを有するLIHA(Loop Initialization Hard Assigned)フレームをHDD20aから受信する。また、フレーム受信部24dは、LIHAまでで自分のアドレスに該当するビットが既に1になっていた場合に、残っている0のビットから優先順の高いビットを1にするLISA(Loop Initialization Soft Assigned)フレームをHDD20aから受信する。また、フレーム受信部24dは、自身のAL_PAを格納するLIRP(Loop Initialization Report Position)フレーム、全てのデバイスのAL_PAを各デバイスに通知するLILP(Loop Initialization Loop Position)をHDD20aから受信する。
【0038】
例えば、フレーム受信部24dは、図4に示すようなLISMフレームを受信した場合に、当該LISMフレームを後述する異常検出部24eに出力する。図4は、LISMフレームのフォーマット例を示す図である。図4に示すように、LISMフレームは、4バイト「Start_of_Frame delimiter」、24バイトの「Frame_Header」、12バイトの「Payload」、4バイトの「CRC」、4バイトの「End_of_Frame delimiter」を有する。
【0039】
「Start_of_Frame delimiter」は、フレームの開始を示す情報であり、「Frame_Header」は、LISMフレームのヘッダ情報である。「CRC」は、フレームが正常であるか否かを示す誤り検出符号であり、「End_of_Frame delimiter」は、フレームの終了を示す情報である。
【0040】
「Payload」は、フレームのデータ本体であり、LISMフレームであることを示す4バイトの「Loop Initialization identifier」と8バイトの「Port_Name」を有する。例えば、LISMフレームの場合には、「Loop Initialization identifier」に16進数表記で「11010000」が格納されており、「Port_Name」にWWNが格納されている。また、LIFAフレームの場合には、合計20バイトの情報であり、「Loop Initialization identifier」に16進数表記で「11020000」が格納され、16バイトのFabric Assign AL_PA bit mapを有する。また、LIPAフレームの場合には、合計20バイトの情報であり、「Loop Initialization identifier」に16進数表記で「11030000」が格納され、16バイトのPreviously Acquired AL_PA bit mapを有する。
【0041】
また、LIPAフレームの場合には、合計20バイトの情報であり、「Loop Initialization identifier」に16進数表記で「11040000」が格納され、16バイトのHard Assigned AL_PA bit mapを有する。また、LISAフレームの場合には、合計20バイトの情報であり、「Loop Initialization identifier」に16進数表記で「11050000」が格納され、16バイトのSoft Assigned AL_PA bit mapを有する。また、LIRPフレームの場合には、合計132バイトの情報であり、「Loop Initialization identifier」に16進数表記で「11060000」が格納され、128バイトのReport AL_PA position mapを有する。また、LILPフレームの場合には、合計132バイトの情報であり、「Loop Initialization identifier」に16進数表記で「11070000」が格納され、128バイトのLoop AL_PA position mapを有する。
【0042】
図2に戻り、異常検出部24eは、フレーム受信部24dによって受信された初期化フレームに含まれる情報に基づいて、デバイスの異常を検出する。具体的には、異常検出部24eは、HDD20aから受信した初期化フレームに含まれるS_IDおよびD_IDが「00」または「EF」でない場合に、当該初期化フレームの送信元デバイスであるHDD20aを異常デバイスとして検出する。例えば、図4を例にして説明すると、異常検出部24eは、フレーム受信部24dによって受信された初期化フレームの「Frame_Header」の「xxxxxx」が「000000」でも「0000EF」でもない場合に、当該フレームを送信したHDDを異常として検出する。なお、S_IDは、初期化後には送信元のAL_PAが格納され、初期化処理時は固定値である。また、S_IDは、初期化後には宛先のAL_PAが格納され、初期化処理時は固定値である。また、異常検出部24eは、各HDDがFC−FL接続されている場合には「0000EF」であるか否かを判定し、各HDDがFC−SW接続されている場合には「000000」であるか否かを判定する。
【0043】
[処理の流れ]
次に、図5〜図7を用いて、RAID装置の初期化処理の流れを説明する。図5は、実施例1に係るRAID装置の初期化処理の流れを示すフローチャートであり、図6は、初期化処理における異常検出処理の流れを示すフローチャートであり、図7は、初期化処理における各デバイスのLISMフレーム処理の流れを示すフローチャートである。
【0044】
(初期化処理の全体的な流れ)
図5に示すように、RAID装置20は、電源がONになると(ステップS101肯定)、異常検出処理を実行する(ステップS102)。そして、異常検出処理が終了したRAID装置20の各デバイスは、LIPを発行し(ステップS103)、各LIPがFCループを一周すると(ステップS104肯定)、各デバイスにおいてLISMフレーム処理が実施される(ステップS105)。
【0045】
その後、RAID装置20は、ループマスターが決定されると(ステップS106肯定)、LISM以降のLIFA、LIPA、LIHA、LISAの各フレームをFCループ上に順に送信する(ステップS107)。そして、上記フレームの送受信が完了すると(ステップS108肯定)、RAID装置20のループマスターは、全デバイスのAL_PAを決定する(ステップS109)。
【0046】
続いて、RAID装置20のループマスターは、LIRPフレームをFCループに発行し(ステップS110)、全デバイスを通過したLIRPフレームを受信する(ステップS111)。その後、RAID装置20のループマスターは、LILPフレームをFCループに発行し(ステップS112)、全デバイスを通過したLILPフレームを受信して初期化処理を終了する(ステップS113)。
【0047】
(異常検出処理の流れ)
次に、図6を用いて、図5のステップS102で実行される異常検出処理の流れについて説明する。図6に示すように、RAID装置20の各デバイス(図1ではHDD)は、FCループ上にLIPを発行する(ステップS201)。そして、デバイスがFCループを一周したLIPを受信すると(ステップS202肯定)、デバイスに接続されるポート診断部24のループバック制御部24cは、HDD20aとの接続状態をループバック状態に遷移させる(ステップS203)。
【0048】
その後、フレーム受信部24dがHDD20aから送信されたLISMフレームを受信すると(ステップS204肯定)、異常検出部24eは、LISMフレームに含まれるS_ISおよびD_IDが「00」または「EF」であるか否かを判定する(ステップS205)。
【0049】
そして、異常検出部24eは、S_IDおよびD_IDが「00」または「EF」でない場合(ステップS205否定)、当該LISMフレームを送信したHDD20aを異常デバイスと判定し、RAID装置20に接続しないように制御する(ステップS206)。つまり、異常検出部24eは、異常デバイス検出アラーム等を出力し、デバイス交換等を保守者等に促す。
【0050】
一方、異常検出部24eは、S_IDおよびD_IDが「00」または「EF」である場合(ステップS205肯定)、全ての初期化フレームを受信したか否かを判定する(ステップS207)。そして、異常検出部24eは、全ての初期化フレームを受信した場合には(ステップS207肯定)、HDD20aを正常デバイスと判定してRAID装置20に接続する(ステップS208)。続いて、ループバック制御部24cは、ループバック状態を通常のループ状態に遷移させる(ステップS209)。つまり、ポート診断部24は、初期化処理で送受信した全ての初期化フレームのS_IDおよびD_IDが「00」または「EF」であるデバイスを、正常デバイスと判定する。
【0051】
また、異常検出部24eは、全ての初期化フレームを受信していない場合には(ステップS207否定)、次の初期化フレームを受信し(ステップS210)、ステップS205以降の処理を繰り返す。
【0052】
(LISMフレーム処理の流れ)
次に、図7を用いて、図5のステップS105で実行されるLISMフレーム処理の流れについて説明する。図7に示すように、デバイスは、自分のWWNを付加したLISMフレームをFCループに送信する(ステップS301)。その後、デバイスは、LISMフレームを受信すると(ステップS302肯定)、自分のWWNが受信したLISMフレームに含まれるWWNより小さいか否かを判定する(ステップS303)。例えば、デバイスは、LISMフレームの「Payload」の「Port_name」が自身のWWNよりも小さいか否かを判定する。
【0053】
そして、デバイスは、自分のWWNが受信したLISMフレームに含まれるWWNより小さい場合(ステップS303肯定)、自分のWWNを付加した新たなLISMフレームをFCループに送信する(ステップS304)。
【0054】
一方、自分のWWNが受信したLISMフレームに含まれるWWNより小さくない場合(ステップS303否定)、デバイスは、自分のWWNが受信したLISMフレームに含まれるWWNより大きいか否かを判定する(ステップS305)。
【0055】
そして、デバイスは、自分のWWNが受信したLISMフレームに含まれるWWNより大きい場合(ステップS305肯定)、受信したLISMフレームをそのまま次の宛先に送信する(ステップS306)。
【0056】
一方、デバイスは、自分のWWNが受信したLISMフレームに含まれるWWNと一致した場合(ステップS305否定)、自デバイスをループマスターと決定する(ステップS307)。
【0057】
[実施例1による効果]
このように、実施例1によれば、ファイバーチャネルを有する複数のHDDなどのデバイスそれぞれに対して一意な物理アドレスを割り与える初期化処理が開始された場合に、初期化処理を実施する初期化フレームを複数のデバイスそれぞれから受信する。そして、受信された初期化フレームに含まれる情報に基づいて、デバイスの異常を検出する。この結果、RAID装置20に接続する前に、RAID対象のデバイス異常を検出することができるので、後に異常を検出することが困難であるプロトコルレベルの異常を検出することができる。
【0058】
また、本実施例で開示した手法によってプロトコルレベルでの異常診断を実施することができ、出力データに付加されたチェックコードレベルで検出できなかった異常が検出可能になる。その結果、一見、正常動作しているように見えるデバイスの異常が検出可能となる。また、このような異常を事前検出できずに、RAID装置20へ接続してしまった場合、故障箇所の特定は困難であるが、装置接続前のデバイス毎に診断することで、故障箇所の特定も容易になる。
【実施例2】
【0059】
ところで、実施例1では、RAID装置20の電源がONになった場合に、HDDへの接続をループバック接続状態に遷移させて、HDDごとに初期化処理を実施し、異常がなかった場合には改めて全体で初期化処理を実施する例について説明した。ところが、RAID装置20が起動中である場合には、HDDへの接続をループバック接続状態に遷移させるため、RAID装置20自体の運用を停止させる必要がある。そこで、実施例2では、RAID装置20が起動中の状態で、新たなHDDを増設する場合などであっても、RAID装置20自体の運用を停止させることなく、デバイスの異常をプロトコルレベルで検出する例について説明する。
【0060】
[ポート診断部の構成]
まず、図8を用いて、実施例2に係るポート診断部を説明する。図8は、実施例2に係るポート診断部の詳細を示すブロック図である。図8に示すように、ポート診断部24は、外部I/F部24aと内部I/F部24bと識別子DB24fとフレーム送信部24gとフレーム受信部24hと異常検出部24iとを有する。かかる外部I/F部24aと内部I/F部24bは、実施例1で説明した機能を同様の機能を有するので、ここでは詳細な説明は省略する。
【0061】
識別子DB24fは、HDD20aへ初期化フレームを送信する際に取得されたS_IDおよびD_DIと、HDD20aから初期化フレームを受信した際に取得されたS_IDおよびD_DIとを記憶する。例えば、識別子DB24fは、図9に示すように、「送信時」の「S_ID、D_ID」として「00、00」を記憶し、「受信時」の「S_ID、D_ID」として「00、00」を記憶する。なお、図9は、実施例2に係る識別子DBに記憶される情報の例を示す図である。
【0062】
フレーム送信部24gは、デバイスアダプタ21e又は他のHDDからLISM等の初期化フレームを受信した場合に、当該初期化フレームに含まれる「S_ID、D_ID」を取得して、送信時の「S_ID、D_ID」として識別子DB24fに格納する。そして、フレーム送信部24gは、初期化フレームを宛先のHDD20aに送信する。例えば、フレーム送信部24gは、初期化フレームに含まれる「Payload」の先頭0ビットから31ビット(0バイトから3バイト)、32ビットから63ビット(4バイトから7バイト)に含まれる「xxxxxxx」の値を取得して格納する。
【0063】
フレーム受信部24hは、LISM等の初期化フレームをHDD20aから受信した場合に、当該初期化フレームに含まれる「S_ID、D_ID」を取得して、受信時の「S_ID、D_ID」として識別子DB24fに格納する。そして、フレーム受信部24hは、初期化フレームをFCループの次の接続先であるデバイスアダプタ21e又は他のポート診断部に送信する。例えば、フレーム送信部24gは、初期化フレームに含まれる「Payload」の先頭0ビットから31ビット(0バイトから3バイト)、32ビットから63ビット(4バイトから7バイト)に含まれる「xxxxxxx」の値を取得して格納する。
【0064】
異常検出部24iは、実施例1と同様、HDD20aから受信した初期化フレームに含まれるS_IDおよびD_IDが「00」または「EF」でない場合に、当該初期化フレームの送信元デバイスであるHDD20aを異常デバイスとして検出する。つまり、異常検出部24iは、HDD20aから受信した初期化フレームに含まれるS_IDおよびD_IDが「00」または「EF」である場合に、当該初期化フレームの送信元デバイスであるHDD20aを正常デバイスとしてRAID装置20に接続する。
【0065】
さらに、異常検出部24iは、実施例1とは異なり、HDD20aへの初期化フレーム送信時に取得されたS_IDおよびD_IDと、HDD20aから初期化フレーム受信時のS_IDおよびD_IDとが一致するか否かを判定する。例えば、図10に示すように、送信時の「S_ID、D_ID」が「11、0F」であり、受信時の「S_ID、D_ID」が「11、0F」であったとする。この場合、「S_ID、D_ID」が「00」または「EF」ではないものの、送信時と受信時とで値が一致しているため、異常があるのはHDD20aではなく、他のデバイスである。したがって、異常検出部24iは、図10の場合には、初期化フレーム送信元のHDD20aを正常なデバイスと判定する。
【0066】
また、図11に示すように、送信時の「S_ID、D_ID」が「EF、EF」であり、受信時の「S_ID、D_ID」が「11、0F」であったとする。この場合、受信時の「S_ID、D_ID」が「00」または「EF」ではなく、送信時と受信時とで値が一致していない。したがって、異常検出部24iは、図11の場合には、初期化フレーム送信元のHDD20aを異常なデバイスと判定する。なお、図10と図11は、識別子DBに記憶される情報の例を示す図である。
【0067】
[処理の流れ]
次に、図12を用いて、実施例2に係る異常検出処理の流れを説明する。図12は、実施例2に係る異常検出処理の流れを示すフローチャートである。図12の処理は、図5において初期化フレームが受信されるたびに実行される処理であり、例えばステップS105やステップS107、ステップS111、ステップS113等で実行される。
【0068】
図12に示すように、フレーム送信部24gは、増設されたデバイスから送信された初期化フレームを受信する(ステップS401肯定)。すると、フレーム送信部24gは、受信した初期化フレームのS_IDおよびD_IDを取得して、送信時のS_IDおよびD_IDとして識別子DB24fに格納する(ステップS402)。
【0069】
続いて、フレーム送信部24gは、当該ポート診断部24に接続されるHDD20aに受信した初期化フレームに送信する(ステップS403)。その後、異常検出部24iは、フレーム受信部24hによってHDD20aから初期化フレームが受信された場合に、当該初期化フレームに含まれる「S_ID、D_ID」が「00」または「EF」であるか否かを判定する(ステップS404)。
【0070】
そして、異常検出部24iは、HDD20aから受信した初期化フレームに含まれる「S_ID、D_ID」が「00」または「EF」である場合(ステップS404肯定)、HDD20aを正常と判定し、RAID装置20の接続を維持する(ステップS405)。
【0071】
一方、異常検出部24iは、「S_ID、D_ID」が「00」または「EF」でない場合(ステップS404否定)、識別子DB24fに格納される送信時の「S_ID、D_ID」が「00」または「EF」であるか否かを判定する(ステップS406)。
【0072】
そして、識別子DB24fに格納される送信時の「S_ID、D_ID」が「00」または「EF」である場合(ステップS406肯定)、送信時と受信時の「S_ID、D_ID」が異なる。したがって、異常検出部24iは、この場合には、HDD20aを異常デバイスとしてRAID装置20から切り離す(ステップS407)。
【0073】
一方、異常検出部24iは、送信時の「S_ID、D_ID」が「00」または「EF」でない場合(ステップS406否定)、送信時と受信時の「S_ID、D_ID」が一致するか否かを判定する(ステップS408)。
【0074】
そして、異常検出部24iは、送信時と受信時の「S_ID、D_ID」が一致する(ステップS408肯定)、HDD20aを正常と判定し、RAID装置20の接続を維持する場合(ステップS405)。また、異常検出部24iは、送信時と受信時の「S_ID、D_ID」が一致しない場合(ステップS408否定)、HDD20aを異常デバイスとしてRAID装置20から切り離す(ステップS407)。
【0075】
[実施例2による効果]
このように、実施例2によれば、新たなHDDを増設されたデバイスから送信された初期化フレームに基づいて、全てのデバイスについて異常であるか否かを判定することができる。したがって、RAID装置20が起動中の状態で、新たなHDDを増設する場合などであっても、RAID装置20自体の運用を停止させることなく、デバイスの異常をプロトコルレベルで検出することが可能である。
【実施例3】
【0076】
ところで、本願の開示するRAID装置は、実施例1や2で説明した初期化フレームのS_IDやD_IDに基づいて異常デバイスを検出するだけでなく、LISMフレームに含まれるWWNに基づいて異常デバイスを検出することもできる。そこで、実施例3では、LISMフレームに含まれるWWNに基づいて異常デバイスを検出する例について説明する。
【0077】
[ポート診断部の構成]
まず、図13を用いて、実施例3に係るポート診断部の構成を説明する。図13は、実施例3に係るポート診断部の詳細を示すブロック図である。図13に示すように、ポート診断部24は、外部I/F部24aと内部I/F部24bと識別子DB24fとフレーム送信部24gとフレーム受信部24hと異常検出部24iとを有する。かかる外部I/F部24a、内部I/F部24b、フレーム送信部24g、異常検出部24iは、実施例1で説明した機能を同様の機能を有するので、ここでは詳細な説明は省略する。
【0078】
識別子DB24fは、実施例2で説明した送信時および受信時のS_IDおよびD_DIに加え、HDD20aから受信したLISMフレームに含まれるWWNを記憶する。例えば、識別子DB24fは、図14に示すように、送信時の「S_IDおよびD_DI」として「00、EF」、受信時の「S_IDおよびD_DI」として「00、EF」、WWNとして「yyyy」を記憶する。なお、図14は、実施例3に係る識別子DBに記憶される情報の例を示す図である。
【0079】
フレーム受信部24hは、実施例1や2で説明した機能に加え、HDD20aから受信したLISMフレームに含まれるWWNを取得して、識別子DB24fに格納する。例えば、フレーム受信部24hは、受信したLISMフレームの「Payload」の「Port_name」からWWNを取得して識別子DB24fに格納する。
【0080】
[処理の流れ]
次に、図15を用いて、実施例3における処理の流れを説明する。図15は、実施例3に係る異常検出処理の流れを示すフローチャートである。なお、この処理は、図5のステップS102の後に実行される。また、図5のステップS102において、識別子DB24fに各情報が格納される。
【0081】
図15に示すように、ポート診断部24は、各デバイスごとの異常検出処理が終了すると(ステップS501肯定)、ループバック状態から通常のループ状態に遷移させる(ステップS502)。
【0082】
続いて、ポートバイパス回路コントローラ23は、HDD20aに接続される2系統それぞれに取得されたWWNを比較する(ステップS503)。例えば、ポートバイパス回路コントローラ23は、ポート診断部24の識別子DB24fに記憶されるWWNと、ポート診断部29の識別子DBに記憶されるWWNとを比較する。なお、この処理は、各HDDに接続されるポート診断部全てについて実施される。
【0083】
そして、ポートバイパス回路コントローラ23が両方のWWNが一致したと判定したとする(ステップS504肯定)。この場合、RAIDコントローラ21cは、デバイスアダプタ21eが取得したWWNとポート診断部24が取得したWWNとが一致するか否かを判定する(ステップS505)。なお、デバイスアダプタ21eは、LISMフレームを受信したタイミングで、ポート診断部24と同様の手法でWWNを取得する。
【0084】
そして、RAIDコントローラ21cは、デバイスアダプタ21eが取得したWWNと上記比較したWWNとが一致すると判定したとする(ステップS506肯定)。この場合、RAIDコントローラ21cは、LISMフレーム送信元のHDD20aを正常デバイスと判定してRAID装置20に接続するように制御する(ステップS507)。
【0085】
一方、RAIDコントローラ21cは、デバイスアダプタ21eが取得したWWNと上記比較したWWNとが一致しないと判定したとする(ステップS506否定)。この場合、RAIDコントローラ21cは、LISMフレーム送信元のHDD20aを異常デバイスと判定してRAID装置20に接続しないように制御する(ステップS508)。
【0086】
また、ステップS504において、ポートバイパス回路コントローラ23が両方のWWNが一致しないと判定したとする(ステップS504否定)。この場合、RAIDコントローラ21cは、LISMフレーム送信元のHDD20aを異常デバイスと判定してRAID装置20に接続しないように制御する(ステップS508)。
【0087】
また、ステップS501において、各デバイスごとの異常検出処理が終了しないとする(ステップS501否定)。この場合、ポート診断部24が遷移させたループバック状態での初期化処理が終了しない、つまり、HDD20aへのLISMフレーム送信時とHDD20aからLISMフレーム受信時のWWNが不一致であることを意味する。すなわち、WWNにビットエラーが発生している。したがって、ポートバイパス回路コントローラ23は、HDD20aを異常デバイスと判定してRAID装置20に接続しないように制御する(ステップS508)。
【0088】
[実施例3による効果]
このように、実施例3によれば、LISMフレームに含まれるWWNに基づいて異常デバイスを検出することもでき、プロトコルレベルで異常が発生したデバイスを検出することが可能である。また、S_IDおよびD_IDによる異常検出終了後に、さらにWWNを用いて異常検出することができる結果、異常デバイスの検出精度を向上させることができる。
【実施例4】
【0089】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【0090】
(デバイスについて)
実施例1〜3では、RAID対象デバイスとして3台のHDDを例にして説明したが、これに限定されるものではない。例えば、HDD以外のデバイスを用いてもよく、3台以上又は3台未満のデバイスを用いてもよい。また、デバイスは、HDDに限定されるものではなく、例えばDAやSSDなどの様々なデバイスを用いることができる。また、各デバイスがFCI/Fを有する例について説明したが、これに限定されるものではなく、他のインタフェースを有していてもよい。
【0091】
(デバイス異常検出処理の組み合わせ)
本願の開示するRAID装置20は、実施例1〜3で説明した各異常検出処理を全て実行してもよく、1つの処理のみを実施してもよく、任意に組み合わせることができる。
【0092】
(デバイス異常検出処理の開始タイミング)
実施例1や3では、RAID装置20の起動開始時に異常検出処理を開始し、実施例2では、新たなHDDの増設時に異常検出処理を開始する例について説明したが、これに限定されるものではない。例えば、故障HDDの切り離しを実施するタイミングやHDDの交換など任意のタイミングで実施例1〜3で開示するデバイス異常検出処理を実施することができる。また、実施例1〜3で開示するデバイス異常検出処理は、1週間に1度など定期的に実行するようにしてもよい。
【0093】
(WWN診断の効率化)
本願の開示するRAID装置は、実施例3によるデバイス異常検出処理を実施した後、異常のなかった各デバイスごとにWWNを、前回の初期化処理時のWWNとして識別子DB等に保持しておく。そして、次の異常検出処理開始タイミングで、マウント信号に変化のなかったデバイス、言い換えると、取り外し等が行われなかったデバイスについては、前回の初期化処理のWWNと今回のLISMフレームから取得したWWNとを比較する。そして、一致しなかったデバイスを異常デバイスとして検出することができる。この結果、マウント信号に変化のなかったデバイスについては、図15のステップS501〜ステップS504を省略することができ、デバイス異常検出処理を効率化できる。
【0094】
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、例えば図3〜図11等に示した各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0095】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。例えば、ループバック制御部24cとフレーム受信部24dを統合するなど各装置の分散・統合の具体的形態は図示のものに限られない。例えば、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0096】
(プログラム)
本実施例で説明したデバイス異常検出方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【0097】
10 ホスト
20 RAID装置
20a、20b、20c HDD
21 コントローラ部
21a、21b チャネルアダプタ
21c、21d RAIDコントローラ
21e、21f デバイスアダプタ
22、27 ポートバイパス回路
23、28 ポートバイパス回路コントローラ
24、25、26、29、30、31 ポート診断部
24a 外部I/F部
24b 内部I/F部
24c ループバック制御部
24d フレーム受信部
24e 異常検出部
24f 識別子DB
24g フレーム送信部
24h フレーム受信部
24i 異常検出部

【特許請求の範囲】
【請求項1】
RAIDの構成対象である複数のデバイスと、
前記RAIDの構成を制御し、前記複数のデバイスに対して各種データ処理を実施するホストと前記複数のデバイスとの間の通信を制御するコントローラ部と、
前記複数のデバイス各々に対して一意な物理アドレスを割り与える初期化処理が実行された際に、前記複数のデバイス各々から初期化フレームを受信するフレーム受信部と、
前記フレーム受信部によって受信された初期化フレームに含まれる情報に基づいて、前記複数のデバイス各々の異常を検出する異常検出部と
を有することを特徴とするRAID装置。
【請求項2】
前記異常検出部は、前記フレーム受信部によって受信された初期化フレームに含まれる識別子がファイバーチャネルプロトコルで定義される所定値でない場合に、当該初期化フレームを送信したデバイスを異常デバイスとして検出することを特徴とする請求項1に記載のRAID装置。
【請求項3】
前記フレーム受信部は、前記初期化処理の実行が当該装置の起動時である場合には、前記複数のデバイス各々と直接接続するループバック接続に移行して、前記初期化フレームを受信することを特徴とする請求項2に記載のRAID装置。
【請求項4】
他のデバイスから送信された初期化フレームを受信して、当該初期化フレームに含まれる前記識別子を保持するとともに、直接接続されるデバイスに当該初期化フレームを送信するフレーム送信部をさらに有し、
前記異常検出部は、前記フレーム受信部によって受信された初期化フレームに含まれる識別子がファイバーチャネルプロトコルで定義される所定値でない場合に、前記フレーム受信部によって受信された初期化フレームに含まれる識別子と前記フレーム送信部によって保持される識別子とを比較し、一致しない場合に、当該初期化フレームを送信したデバイスを異常デバイスとして検出することを特徴とする請求項1に記載のRAID装置。
【請求項5】
2系統のインタフェースを有し、RAIDの構成対象である複数のデバイスと、
前記RAIDの構成を制御し、前記複数のデバイスに対して各種データ処理を実施するホストと前記複数のデバイスとの間の通信を制御するコントローラ部と、
前記複数のデバイス各々と前記コントローラ部との間の通信を2系統の経路で制御する通信制御部とを有し、
前記通信制御部は、前記複数のデバイス各々に対して一意な物理アドレスを割り与える初期化処理が実行された際に、前記複数のデバイス各々から初期化フレームを2系統の経路それぞれで受信し、両系統でそれぞれ受信された初期化フレームに含まれるデバイス固有の識別子が一致するか否かを判定し、一致しない場合に、当該初期化フレームを送信したデバイスを異常デバイスとして検出することを特徴とするRAID装置。
【請求項6】
前記コントローラ部は、前記初期化フレームを受信して前記デバイス固有の識別子を取得し、前記通信制御部によって前記デバイス固有の識別子が一致すると判定された場合に、当該コントローラ部が取得したデバイス固有の識別子と前記通信制御部が取得したデバイス固有の識別子とを比較し、一致しない場合に、当該初期化フレームを送信したデバイスを異常デバイスとして検出することを特徴とする請求項5に記載のRAID装置。
【請求項7】
複数のデバイス各々に対して一意な物理アドレスを割り与える初期化処理が開始された場合に、前記初期化処理を実施する初期化フレームを前記複数のデバイス各々から受信するフレーム受信部と、
前記フレーム受信部によって受信された初期化フレームに含まれる情報に基づいて、前記デバイスの異常を検出する異常検出部と
を有することを特徴とする異常デバイス検出装置。
【請求項8】
RAIDの構成対象である複数のデバイス各々と前記RAIDを制御するコントローラ部との間の2系統の経路各々において、前記複数のデバイス各々に対して一意な物理アドレスを割り与える初期化処理が開始された場合に、前記初期化処理を実施する初期化フレームを前記複数のデバイス各々から受信する受信ステップと、
前記受信ステップで受信された初期化フレームに含まれる情報に基づいて、前記複数のデバイス各々の異常を検出する第1異常検出ステップと、
前記2系統の経路各々で受信された初期化フレームに含まれるデバイス固有の識別子が一致するか否かを判定し、一致しない場合に、当該初期化フレームを送信したデバイスを異常デバイスとして検出する第2異常検出ステップと
を含んだことを特徴とする異常デバイス検出方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2011−159243(P2011−159243A)
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2010−22582(P2010−22582)
【出願日】平成22年2月3日(2010.2.3)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】