ストレージシステム及び通信帯域制御方法
【課題】本発明の課題は、スイッチとストレージ装置との間において効率的にロードバランスが行って、通信の輻輳を回避して、高いシステムパフォーマンスを維持することである。
【解決手段】本発明は、ネットワークを構成する複数のポートを有するネットワークスイッチと当該複数のポートの少なくとも2以上のポートのそれぞれに接続されたストレージ装置との間の通信帯域制御方法であって、ストレージ装置に接続されたスイッチの第1のポートを介してストレージ装置に対してデータを転送し、データの転送中に、第1のポートに関連付けられたバッファメモリにおいてオーバーフローが発生しているか否かを判断し、バッファメモリにおいてオーバーフローが発生している場合、ストレージ装置に接続されたネットワークスイッチの第2のポートを特定し、第1のポートに加え、第2のポートを用いてストレージ装置に対してデータを転送する技術である。
【解決手段】本発明は、ネットワークを構成する複数のポートを有するネットワークスイッチと当該複数のポートの少なくとも2以上のポートのそれぞれに接続されたストレージ装置との間の通信帯域制御方法であって、ストレージ装置に接続されたスイッチの第1のポートを介してストレージ装置に対してデータを転送し、データの転送中に、第1のポートに関連付けられたバッファメモリにおいてオーバーフローが発生しているか否かを判断し、バッファメモリにおいてオーバーフローが発生している場合、ストレージ装置に接続されたネットワークスイッチの第2のポートを特定し、第1のポートに加え、第2のポートを用いてストレージ装置に対してデータを転送する技術である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークを構成するネットワークスイッチとストレージ装置とを含むストレージシステム及び当該ネットワーク上の通信帯域を制御する技術に関する。
【背景技術】
【0002】
SANは、ストレージアクセスのためにホスト装置とストレージ装置とを接続したネットワークとして知られている。このSANにおいては、比較的下位層で確実なパケット伝送を保証することから、ファイバチャネル(またはファイバチャネルプロトコル)が採用されることが多い。
【0003】
ファイバチャネルの一つの接続形態として、ファイバチャネルスイッチ(FC−SW)を中心に構成されるファブリック・トポロジーがある。このトポロジーは、システムの拡張性に優れており、ファイバチャネルスイッチ同士を接続することにより、大規模なファブリックを構成することができる。
【0004】
ファイバチャネルスイッチは、一般に、ファイバチャネルスイッチ間においてI/Oデータを複数のパス(リンク)に分散させるロードバランス(MPLB)機能を備えている。このロードバランス機能によれば、物理的な複数のファイバチャネルスイッチ間リンクを1つの論理パスとして扱い、特定のリンクにI/Oデータを集中させることなく、通信帯域を効率的に使用できるようになる。
【0005】
また、近年は、IPプロトコルを用いたSANも普及してきている。このIPプロトコルを用いたSANにおいては、例えば、下記特許文献1に示すように、ホスト装置やストレージ装置に対するリンクの通信帯域と、ルータ間に対するリンクの通信帯域との間の不整合を解消する技術が提案されている。すなわち、特許文献1には、サーバ装置とストレージ装置との間に確立された複数のセッションについて通信帯域情報を取得して、通信帯域が不足しているセッションに対して、他のセッションの少なくとも一部の通信帯域を割り当てる通信帯域の制御技術が開示されている。
【特許文献1】特開2006−108955号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上述したような従来のファイバチャネルスイッチにおけるロードバランス機能は、相互に接続されたファイバチャネルスイッチ間でのみ行われ、ファイバチャネルスイッチとストレージ装置との間では行われていなかった。このため、ロードバランス機能によりファイバチャネルスイッチ間で効率的にI/Oデータが転送された場合であっても、例えば、I/Oデータが一のストレージ装置に対して集中する場合や、ホスト装置側の通信帯域幅とストレージ装置側の通信帯域幅との間に開きがある場合、ストレージ装置に対するリンクがボトルネックとなり、システム全体としてのパフォーマンスが低下する可能性があった。
【0007】
また、上記特許文献1に示す通信帯域の制御技術は、サーバ装置とストレージ装置との間でiSCSI上のセッションごとにロードバランスを行っていた。つまり、上記特許文献1は、上位層における粒度のより大きなアプリケーションデータ単位で負荷分散が行われていた。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明は、ネットワークを構成するネットワークスイッチ(例えば、ファイバチャネルスイッチ)とストレージ装置との間の通信帯域制御方法であって、ネットワークスイッチとストレージ装置との間のリンクで通信の輻輳が発生している場合、当該輻輳が発生しているリンクとは別のリンクを併せて用いて通信を行う通信帯域の制御技術である。
【0009】
すなわち、本発明の一の形態によれば、本発明は、第1のネットワークを構成するための複数のポートを有するネットワークスイッチと当該複数のポートの少なくとも2以上のポートのそれぞれに接続されたポートを有するストレージ装置との間の通信帯域の制御方法であって、ストレージ装置に接続されたネットワークスイッチの第1のポートを介してストレージ装置に対してデータフレームを転送するステップと、データフレームの転送中に、第1のポートに関連付けられた第1のバッファメモリにおいてオーバーフローが発生しているか否かを判断するステップと、第1のバッファメモリにおいてオーバーフローが発生している場合、ストレージ装置に接続されたネットワークスイッチの第2のポートを特定するステップと、第1のポート及び第2のポートを介してストレージ装置に対してデータフレームを転送するステップと、を含む制御方法である。
【0010】
また、本発明の他の形態によれば、本発明は、第1のネットワークを構成するための複数のポートを有するネットワークスイッチと、複数のポートの少なくとも2以上のポートのそれぞれに接続されたポートを有するストレージ装置との間における通信帯域の制御方法であって、ストレージ装置のディスクデバイスからデータを読み出して、当該データをデータフレームに変換するステップと、ネットワークスイッチに接続されたストレージ装置の第1のポートを介してネットワークスイッチに対してデータフレームを転送するステップと、データフレームの転送中に、第1のポートに関連付けられた第1のバッファメモリにおいてオーバーフローが発生しているか否かを判断するステップと、第1のバッファメモリにおいてオーバーフローが発生している場合、ネットワークスイッチに接続されたストレージ装置の第2のポートを特定するステップと、第1のポート及び第2のポートを介してネットワークスイッチに対してデータフレームを転送するステップと、を含む制御方法である。
【0011】
また、本発明のさらに他の形態によれば、本発明は、第1のネットワークを介して接続されたネットワークスイッチとストレージ装置とを含むストレージシステムであって、ネットワークスイッチは、バッファメモリを有し、第1のネットワークを構成するための複数のポートと、複数のポートについてのチャネル情報を管理するチャネル管理テーブルと、複数のポートの各バッファメモリにおけるオーバーフローの発生を検出するオーバーフロー検出部と、オーバーフローを発生を検出した場合に、チャネル管理テーブルを参照して、オーバーフローが発生したバッファメモリを有する第1のポートが接続しているノードに接続された他のポートを第2のポートとして特定するポート特定部と、第1のポートに加え、第2のポートを用いてデータフレームが転送されるようにデータフレームのパスを制御する制御部と、を備えるストレージシステムである。
【発明の効果】
【0012】
本発明によれば、ファイバチャネルスイッチとストレージ装置との間において効率的にロードバランスが行われ、これにより、通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0013】
また、本発明によれば、粒度の小さなデータフレーム乃至はデータパケット単位でロードバランスが行われることで、通信帯域をさらに効率的に使用することができ、これにより高いシステムパフォーマンスを維持することができる。
【発明を実施するための最良の形態】
【0014】
次に、本発明の実施の形態について、図面を参照しつつ説明する。
【0015】
図1は、本発明の一実施形態に係るストレージシステム1の構成を示す図である。同図に示すように、ストレージシステム1は、ネットワーク2を介して接続されたホスト装置3とストレージ装置4とを含んで構成されている。ストレージ装置4は、例えば、ホスト装置3から受信した書き込みコマンドに従ってデータを格納し、また、読み込みコマンドに従って格納されているデータを読み出して、ホスト装置3に送出する。
【0016】
ネットワーク2は、例えばファイバチャネルを用いたSAN(FC−SAN)を形成している。すなわち、FC−SANにおいて、ホスト装置3とストレージ装置4との間のデータ通信は、ファイバチャネルプロトコルに従って行われる。本実施形態では、ネットワーク2は、ネットワークスイッチ(またはルータ)として機能する少なくとも一つのファイバチャネルスイッチ(FC−SW)21を設けたファブリック・トポロジーを構成している。この場合、ホスト装置3及びストレージ装置4はそれぞれ、ネットワーク2上のノードとして位置づけられる。なお、同図では、一つのファイバチャネルスイッチ21のみが示されているが、ネットワーク2上に複数のファイバチャネルスイッチ21が設けられ、それらが相互に接続されていてもよい。同様に、ファイバチャネルスイッチ21に複数のストレージ装置4が接続されていてもよい。ファイバチャネルスイッチ21は、例えば、2G/bpsの転送速度に対応したポートを8個備え、ブレードボードを増設することにより、ポート数を拡張できるように構成されている。なお、ファイバチャネルスイッチ21の具体的構成については後述する。
【0017】
また、ネットワーク2は、ファブリック管理サービスの一つであるゾーニングが設定されていてもよい。ゾーニングは、FC−SAN内に論理的なノードのサブセットを形成する。これにより、複数のホスト装置3とストレージ装置4との間の論理的なパスは別のものとして認識されるが、一つの物理的なリンクで構成されることもある。
【0018】
ホスト装置3は、典型的には、汎用のパーソナルコンピュータやワークステーション、メインフレームコンピュータ等が該当する。ホスト装置3は、図示していないクライアントコンピュータに対するサーバコンピュータとして機能してもよい。例えば、ホスト装置3は、銀行の業務システムや航空機の座席予約業務システム等におけるサーバコンピュータとして機能するかもしれない。
【0019】
ストレージ装置4は、一又は複数のディスクデバイス41と、ディスクデバイス41に対する書き込み又は読み込みといったアクセスを制御するコントローラユニット42と、ストレージ装置4を管理するための管理装置(SVP)43と、を備えている。ディスクデバイス41とコントローラユニット42とは、内部の専用線により直接的に接続されてもよいし、外部ネットワークを介して接続されてもよい。
【0020】
ディスクデバイス41は、磁気ディスク又は半導体素子等の大容量記憶媒体を有し、データを格納するための記憶領域を提供する。ディスクデバイス41は、RAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。ディスクデバイス41によって提供される記憶領域は、固有の識別子(LUN:Logical Unit Number)を用いて、一又は複数の論理的なボリューム(LU)として定義される。ボリュームに対するアクセスは、所定サイズのブロックを単位として行われ、このため、各ブロックには、論理ブロックアドレス(LBA:Logical Block Address)が割り当てられる。これにより、ホスト装置3は、識別子LUNおよび論理ブロックアドレスLBAからなる論理アドレスをストレージ装置4のコントローラユニット42に指定することにより、所望のボリューム上のブロックに対してアクセスを行うことができる。ボリュームに関する上述した情報は、システム構成情報としてコントローラユニット42に保持される。
【0021】
コントローラユニット42は、ホスト装置3とディスクデバイス41との間の入出力処理を統括的に制御するシステムボードとして構成される。具体的には、コントローラユニット42は、キャッシュメモリ421と、複数のチャネルアダプタ(CHA)422と、複数のディスクアダプタ(DKA)423と、を備え、これらのモジュールは、例えばクロスバースイッチ等で構成された接続部424を介して相互に接続されている。これらのモジュールは、物理的に独立したモジュールとして構成されてもよいし、適宜、一体的なモジュールとして構成されてもよい。
【0022】
キャッシュメモリ421は、主として、ホスト装置3とディスクデバイス41との間のI/Oデータを一時的に記憶するために利用される。例えば、ホスト装置3から送られた書き込みデータは、キャッシュメモリ421に一時的に保持され、また、ディスクデバイス41から読み出されたデータは、キャッシュメモリ421に一時的に保持される。
【0023】
チャネルアダプタ422は、ネットワーク2を介して接続されたコンピュータ3との間でI/Oアクセスに関するコマンド及びデータを送受する通信インターフェースとして機能するシステム回路である。チャネルアダプタ422は、管理装置43と内部通信線425を介して接続され、管理装置43との間で所定の通信ができるように構成されている。例えば、システム管理者は、管理装置43を用いて、チャネルアダプタ422のプロセッサ4221が実行するマイクロプログラム等をチャネルアダプタ422内のメモリ4222上にインストールすることができる。
【0024】
図2は、本発明の一実施形態に係るストレージ装置4のチャネルアダプタ422の構成を示す図である。同図に示すように、チャネルアダプタ424は、例えば、マイクロプロセッサ4221と、複数のポート4222と、DMA4223と、メモリ4224と、を備える。
【0025】
ポート4222は、典型的には、ファイバチャネルスイッチ21に設けられたポートに、光ファイバを介して接続される。各ポート4222は、バッファメモリ4222aを有し、これによってファイバチャネルスイッチ21との間で送受されるデータフレームをバッファする。DMA4223は、ポート4222内のバッファメモリ4222aとメモリ4224との間のデータフレームの転送を司っている。例えば、ファイバチャネルスイッチ21から送られ、バッファメモリ4222aに蓄積されたデータフレームは、DMA4223の制御の下、メモリ4224に転送される。各ポート4224から転送されてくるデータフレームは、一義的には、メモリ4224に到着順に配列されることになる。
【0026】
プロセッサ4221は、メモリ4224に保持されたデータフレームに対してプロトコル変換を行う。すなわち、ファイバチャネルスイッチ21から送られたデータフレームについては、プロセッサ4221は、ヘッダ等を取り除いてI/Oコマンド及びデータを取り出して、接続部424に送出する。また、ディスクデバイス41から読み出されたデータについては、プロセッサ4221は、ファイバチャネルプロトコルに従ってカプセル化を行う。また、本実施形態では、プロセッサ4221は、ファイバチャネルスイッチ21から送られ、メモリ4224に保持されたデータフレームについて、その順番の妥当性をチェックし、必要であれば並び替えを行った後、プロトコル変換を行う。また、プロセッサ4221は、各ポート4222のバッファメモリ4222aのオーバーフローを監視しており、オーバーフローを検出した場合には、当該オーバーフローが発生したポート4222に加えて、他のポート4222を用いたデータフレームの転送がなされるように制御を行う。
【0027】
ディスクアダプタ423(図2)は、例えば、図3に示すように、マイクロプロセッサ4231と、メモリ4232と、通信インターフェース4233とを備えたシステム回路であり、ディスクデバイス41との間で通信プロトコル制御を行う入出力インターフェースとして機能している。ディスクアダプタ423はまた、不揮発性メモリ4234を備えていてもよい。
【0028】
図2に戻り、接続部424は、例えば、クロスバースイッチ等により構成されるスイッチ回路である。接続部424は、入力されるデータ列を調停しながら、データ列に対するパスを切り替えて、送出元のモジュール(例えばチャネルアダプタ422)と送出先のモジュール(例えばディスクアダプタ423)との内部パスを構築する。接続部424は、内部通信線425を介して管理装置43とも接続されていてもよい。また、ディスクアダプタ424と管理装置43とを直接的に接続せず、ディスクアダプタ424は、接続部424を介して管理装置43と通信が行われるように構成してもよい。
【0029】
管理装置43は、ストレージ装置4全体を管理するために用いる端末装置である。管理装置43は、典型的には、汎用のコンピュータが適用されるが、専用の制御端末であってもよい。システム管理者は、管理装置43を用いて、ストレージ装置4に対する各種の設定を行うことができる。また、管理装置43は、ネットワークボードを備え、管理用ネットワーク2’を介してファイバチャネルスイッチ21に接続されている。これによって、管理装置43は、ファイバチャネルスイッチ21と、FC−SANとは独立に、通信を行うことができる。管理用ネットワーク2’は、例えば、TCP/IPをベースにしたLANやWANとして構成される。本実施形態では、管理装置43のネットワークボードは、イーサネット(登録商標)及びTCP/IPに準拠したLANボードとして構成される。
【0030】
図4は、本発明の一実施形態に係るファブリックチャネルスイッチ21の構成を示す図である。同図に示すように、ファブリックチャネルスイッチ21は、ポート211と、ASIC212と、プロセッサ213と、メモリ214と、管理用通信インターフェース(I/F)215と、を備える。
【0031】
ポート211は、ホスト装置3やストレージ装置4のようなノード及び他のファイバチャネルスイッチ21に接続するためのインターフェースである。各ポート211には、バッファメモリ211aが設けられている。各ポート211は、例えば、“N_Port”、“NL_Port”、“F_Port”、“FL_Port”、“E_Port”等として設計されている。本実施形態のファブリック・トポロジーにおいては、典型的には、“N_Port”及び“E_Port”が使用される。“N_Port”は、ホスト装置3やストレージ装置4のようなノードに接続するためのポートであり、また、“E_Port”は、他のファイバチャネルスイッチ21と接続するためのポートである。
【0032】
ASIC212は、主にパスの選択(ルーティング)を高速に実行するために設計された回路であり、例えばクロスバースイッチやセレクタを含んで構成される。ASIC212を構成する各モジュールは、各ポート211に対する処理を担っている。ASIC212は、各ポート211に設けられたバッファメモリ211aにおけるオーバーフローを監視しており、オーバーフローを検出した場合には、プロセッサ213に通知する。
【0033】
管理用通信インターフェース(I/F)213は、ファイバチャネルスイッチ21を外部から制御するための管理用ネットワーク2’(例えばLAN)に接続するための回路である。本実施形態では、通信インターフェース215は、イーサネット(登録商標)及びTCP/IPに準拠したLANボードとして構成される。システム管理者は、例えば、LAN上のコンピュータからWebシステムを利用して、ファイバチャネルスイッチ21に対する設定を行うことができる。
【0034】
プロセッサ214は、ファブリックチャネルスイッチ21全体の動作を司る。例えば、ファイバチャネルスイッチ21に電源が投入されると、プロセッサ214は、初期シーケンスを実行して、ポート211に接続されたノードに関する情報を収集し、これをチャネル管理テーブルとして、メモリ215に展開する。図5は、本発明の一実施形態に係るファイバチャネルスイッチ21のメモリ215に記憶されたチャネル管理テーブルの一例を示す図である。チャネル管理テーブルは、ファイバチャネルスイッチ21のポート211のそれぞれがどのノードにおけるどのポートに接続されているかに関するチャネル情報を含む。すなわち、同図に示すように、チャネル管理テーブルは、ポートID“P_ID”で示される各ポート211ごとに、ノード名“Node Name”及びポート名“Port Name”が割り当てられている。ノード名“Node Name”は、当該ポート211に接続されているノードのWWN(World Wide Name)であり、ポート名“Port Name”は、そのノードのポートのWWNである。これらのWWNは、ネットワーク2上において一意の値として与えられている。
【0035】
また、プロセッサ214は、メモリ215に記憶された設定プログラムを実行して、システム管理者が管理装置43やネットワーク上のコンピュータからファイバチャネルスイッチ21に対する設定を行うことができるように、ファイバチャネルスイッチ21を制御する。さらに、後述するように、プロセッサ213は、ストレージ装置4から読み出され、ポート211から取り込まれてメモリ222に格納されたデータフレームについて、その並び順の妥当性をチェックし、必要であれば並び替えを行う。
【0036】
図6(a)及び(b)は、本発明の一実施形態に係るファイバチャネルプロトコルにおけるデータフレーム構造を説明するための図である。同図(a)に示すように、一つのオペレーション(I/Oアクセス)は、いくつかのシーケンスの集合からなるエクスチェンジと呼ばれる単位で処理される。各シーケンスは、いくつかのデータフレームの集合からなる。
【0037】
同図(b)に示すように、データフレームは、SOF(Start Of Frame)コードで始まり、EOF(End Of Frame)コードで終わる。また、データフレームは、フレームヘッダを持ち、各種のヘッダ情報を格納する。ファイバチャネルスイッチ21及びネットワーク上の各ノードは、フレームヘッダを参照し、送信元ID“S_ID”及び送信先ID“D_ID”に基づいて、データフレームの送信元及び送信先を判別するとともに、シーケンスID“SEQ_ID”及びシーケンスカウント“SEQ_CTL”に基づいて、データフレームがどのオペレーションに属するか否かを判別する。
【0038】
図7は、本発明の一実施形態に係るファイバチャネルスイッチ21を機能的に説明するための図である。同図における各ブロックは、図4に示したファイバチャネルスイッチ21におけるハードウェア及び/又はソフトウェアの協働により実現される。なお、図4に示した要素と同一又は等価な要素については、同一の符号を付している。
【0039】
すなわち、同図に示すように、ルーティング制御部71は、ルーティングテーブルに従って、ポート211のバッファメモリを211aから入力されるデータフレームのヘッダフレームに基づいてパスを切り替え、出力する。オーバーフロー検出部72は、バッファメモリ211aを監視し、オーバーフローの発生を検出する。オーバーフロー検出部72は、オーバーフローの発生を検出すると、ポート特定部73にその旨を通知する。ポート特定部73は、オーバーフロー検出部72よりオーバーフローが発生した旨の通知を受け取ると、チャネル管理テーブル記憶部74に記憶されたチャネル管理テーブルを参照して、オーバーフローが発生したバッファメモリ211aのポート211と同一のノード(すなわち、ここではストレージ装置4)に接続された他のポート211を特定し、ルーティング制御部71に通知する。ポート特定部73はまた、特定した他のポート211をストレージ装置4に通知すべく、通信部75に通知する。通信部75は、管理用ネットワーク2’を介して、ストレージ装置4の管理装置43に、特定した他のポート211を用いた拡張データ転送モードの開始を通知する。
【0040】
図8は、本発明の一実施形態に係るファイバチャネルスイッチ21の動作を説明するフローチャートである。同図に示すように、ファイバチャネルスイッチ21は、その動作中、ポート211のバッファメモリ211aを監視し、オーバーフローが発生したか否かをチェックする(SETP801)。オーバーフローが発生したポート211(x)がある場合(SETP801の‘Yes’)、ファイバチャネルスイッチ21は、当該ポート211(x)と同一のストレージ装置4を接続しているポート211(y)があるか否かをチェックする(SETP802)。具体的には、ファイバチャネルスイッチ21は、メモリ215に保持しているチャネル管理テーブルを参照して、オーバーフローが発生した当該ポート211(x)に接続されているノードのノード名を抽出し、同一のノード名を持つポートIDがあるか否かをチェックする。
【0041】
ファイバチャネルスイッチ21は、オーバーフローが発生した当該ポート211(y)と同一のノード名が与えられたポートIDを抽出すると、当該ポートIDに示されるポート211(y)を用いた拡張データ転送モードによる許可要求をストレージ装置4に対して送出する(SETP803)。拡張データ転送モードとは、ここでは、オーバーフローが発生しているポート211(x)を用いてデータフレームを転送するとともに、さらに、抽出されたポートIDに示されるポート211(y)を用いてデータフレームを転送するモードをいう。つまり、拡張データ転送モードでは、物理的には、複数のリンクによってデータフレームが転送されるが、論理的には、1つのパス上をデータフレームが転送されるとみることができる。ファイバチャネルスイッチ21は、例えば、当該許可要求をTCP/IPベースの管理用ネットワーク2’を介して送出する。ストレージ装置4の管理装置43は、当該許可要求を受け取ると、対応するチャネルアダプタ422に通知するとともに、ファイバチャネルスイッチ21に許可応答を送出する。
【0042】
ファイバチャネルスイッチ21は、管理用ネットワーク2’を介してストレージ装置4から許可応答を受け取ると(STEP804の‘Yes’)、現在のポート211(x)に加えて、当該新たなポート211(y)を用いたデータ転送を開始する(STEP805)。一方、ファイバチャネルスイッチ21は、所定の時間内に許可応答を受け取らなかった場合(STEP804の‘No’)、現在のポート211(x)のみを用いたデータ転送を継続する(STEP806)。
【0043】
このような拡張データ転送モードにおいては、ポート211ごとに独立してデータフレームがストレージ装置4に転送されるため、受け手側のストレージ装置4では、データフレームが必ずしも正しい順番で到着しない可能性がある。そこで、本実施形態では、ストレージ装置4のチャネルアダプタ422は、到着するデータフレームについて、その順番の妥当性をチェックし、必要であれば、データフレームの並び替えを行う。
【0044】
図9は、本発明の一実施形態に係るチャネルアダプタ422におけるデータフレームの並び替え処理を説明するためのフローチャートである。チャネルアダプタ422は、ファイバチャネルスイッチ21から拡張データ転送モードの許可要求を受け取ると、データフレームの並び替え処理を開始する。
【0045】
すなわち、同図に示すように、チャネルアダプタ422は、ポート4222のバッファメモリ4222aにデータフレームが到着すると、これを随時取り込み、メモリ4224に転送する(STEP901)。チャネルアダプタ422は、次に、メモリ4222に保持されたデータフレームについて、並べ替えが必要であるか否かをチェックする(STEP902)。具体的には、チャネルアダプタ422は、同一の“S_ID”及び“D_ID”を有するデータフレームについて、“SEQ_ID”が示す順番(例えば昇順)をチェックする。チャネルアダプタ422は、順番通りに並んでいない“SEQ_ID”のデータフレームを検出すると、当該データフレームの並び替えを行う(STEP903)。そして、チャネルアダプタ422は、メモリに保持されている一連のデータフレームがターゲットデバイスに転送されるように、先頭から順次に送出する(STEP904)。この場合、チャネルアダプタ422は、データフレームの並び順の妥当性をチェックしながら、妥当性チェックの済んだデータフレームを随時ターゲットデバイスに送出するようにしてもよい。
【0046】
このように、ファイバチャネルスイッチ21は、特定のポート211のバッファメモリ211aにおいてオーバーフローが発生した場合であっても、当該オーバーフローが発生したポート211に加え、同一のストレージ装置4を接続した他のポート211を用いてデータ転送を行う。これによって、ファイバチャネルスイッチ21−ストレージ装置4間における通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0047】
図10は、本発明の一実施形態に係るストレージシステム1を構成するファイバチャネルスイッチ21−ストレージ装置4間における通信帯域制御を概念的に説明するための図である。
【0048】
同図に示すように、複数のホスト装置3及びストレージ装置4は、ファイバチャネルスイッチ21を介して接続されている。具体的には、ファイバチャネルスイッチ21は、例えば8個のポート211(0)乃至211(7)を有し、ポート211(0)乃至211(2)及びポート211(4)乃至211(6)には、ホスト装置3(0)乃至3(5)が接続されている。また、ポート211(3)及び211(7)は、ストレージ装置4のチャネルアダプタ422内のポート4222(0)及びポート4222(1)にそれぞれ接続されている。初期設定として、ファイバチャネルスイッチ21のポート211(0)乃至211(2)は、ポート211(3)に接続されたチャネルアダプタ422のポート4222(0)に関連付けられているものとする。
【0049】
ファイバチャネルスイッチ21において通信の輻輳が発生する場合として、例えば、複数のホスト装置3から同一のターゲットノード(ストレージ装置4)に対して同時期にデータフレームが転送される場合や、ホスト装置3側の転送速度とストレージ装置4側の転送速度とが整合していない場合等がある。
【0050】
今、ホスト装置3(0)乃至3(2)が、それぞれのポート211(0)乃至211(2)を介して、ストレージ装置4に対してほぼ同時期にI/Oアクセス要求を送出し、ポート211(3)においてデータフレームのオーバーフローが発生したとする。ファイバチャネルスイッチ21は、このオーバーフローを検出すると、チャネル管理テーブルを参照して、ポート211(3)と同一のストレージ装置4に接続されているポート211(7)を特定し、管理用ネットワーク2’を介してストレージ装置4の管理装置43にポート211(7)を用いた拡張データ転送モードの許可要求を送出する。管理装置43は、ポート211(7)に接続されたポート4222(1)による拡張データ転送モードが開始される旨をチャネルアダプタ422に通知するとともに、ファイバチャネルスイッチ21に許可応答を送出する。ファイバチャネルスイッチ21は、管理装置43から許可応答を受け取ると、ポート211(3)から送出されずにバッファメモリ211aに滞留しているデータフレームがポート211(7)から送出されるように、内部のルーティングを変更する。
【0051】
一方、ストレージ装置4においては、ポート4222(0)及び4222(1)に到着し、それぞれのバッファメモリ4222aにバッファされているデータフレームは、DMAの制御の下、メモリ4224に転送され、保持される。プロセッサ4221は、管理装置43より拡張転送モードの開始の通知を受けると、メモリ4224に保持されたデータフレームの並び順の妥当性をチェックし、データフレームの到着順が入れ替わっている場合には、それらを並び替えた後に、プロトコル変換を行う。プロトコル変換が行われたデータは、キャッシュメモリ421に書き込まれ、ディスクアダプタ423の制御の下、ディスク装置41の所定の格納領域に格納される。なお、ディスクアダプタ423によりディスクデバイス41の所定の領域にデータが書き込まれると、ホスト装置4にI/Oアクセス要求の終了を通知する。
【0052】
図11は、本発明の一実施形態に係るファイバチャネルスイッチ21の動作を説明するための図である。具体的には、同図は、拡張データ転送モードに移行した後、当該拡張データ転送モードの終了を判定するための処理を説明している。
【0053】
すなわち、同図に示すように、ファイバチャネルスイッチ21は、ホスト装置3によるI/Oアクセスに基づくデータの転送が終了したか否かを判断する(STEP1101)。ファイバチャネルスイッチ21は、データ転送が終了したと判断する場合、そのまま当該I/Oアクセスに関わる処理を終了する。
【0054】
これに対して、ファイバチャネルスイッチ21は、データ転送がまだ終了していないと判断する場合には、ポート211におけるオーバーフローが解消したか否かを判断する(STEP1102)。この場合、ファイバチャネルスイッチ21は、ある時点においてオーバーフローが解消したか否かを判断するのではなく、例えば、直近の過去の期間におけるデータフレームの転送量に基づいて、判断することが望ましい。ファイバチャネルスイッチ21のプロセッサ214は、データフレームの転送に関する統計値を算出し、所定のしきい値を下回った場合に、オーバーフローが解消したと判断する。
【0055】
オーバーフローが解消していない場合、ファイバチャネルスイッチ21は、拡張データ転送モードを継続する(STEP1103)。これに対して、オーバーフローが解消したと判断した場合、ファイバチャネルスイッチ21は、拡張データ転送モードを終了させて、ポート211を開放する(STEP1104)。
【0056】
図12は、本発明の一実施形態に係るチャネルアダプタ422の動作を説明するためのフローチャートである。具体的には、同図は、ホスト装置3からの読み出し要求に基づいてディスクデバイス41から読み出されたデータをネットワーク2上に送出する時の処理を説明している。
【0057】
同図に示すように、チャネルアダプタ422は、その動作中、ポート4222のバッファメモリ4222aを監視し、オーバーフローが発生したか否かをチェックする(SETP1201)。オーバーフローが発生したポート4222(x)がある場合、チャネルアダプタ422は、当該ポート4222(x)と同一のファイバチャネルスイッチ21を接続しているポート4222(y)があるか否かをファイバチャネルスイッチ21に問い合わせる(SETP1202)。具体的には、チャネルアダプタ422は、管理装置43に当該問い合わせ要求を送出するように要求し、これを受けて、管理装置43は、管理用ネットワーク2’を介して、ファイバチャネルスイッチ21に当該問い合わせ要求を送出する。
【0058】
ファイバチャネルスイッチ21は、問い合わせ要求を受け取ると、チャネル管理テーブルを参照して、オーバーフローが発生した当該ポート4222(x)に対応するポート211に接続されているノードのノード名を抽出し、同一のノード名が与えられたポートIDがあるか否かをチェックする。ファイバチャネルスイッチ21は、オーバーフローが発生したチャネルアダプタ422の当該ポート4222(x)に対応するポート211と同一のノード名が与えられたポートIDを抽出すると、当該ポートIDをストレージ装置4に対して送出する。
【0059】
チャネルアダプタ422は、ファイバチャネルスイッチ21からポートIDを受け付けると(SETP1203の‘Yes’)、当該ポートIDに示されるポート4222(y)を用いた拡張データ転送モードの許可要求をファイバチャネルスイッチ21に対して送出する(SETP1204)。管理装置43は、チャネルアダプタ422からの当該許可要求を受けて、TCP/IPベースの管理用ネットワーク2’を介して送出する。ファイバチャネルスイッチ21は、当該許可要求を受け取ると、これに応答して、チャネルアダプタ422に許可応答を送出する。
【0060】
なお、ファイバチャネルスイッチ21からポートIDを受け取ることができなかった場合(SETP1203の‘No’)、チャネルアダプタ422は、現在のポート4222(x)のみを用いたデータ転送を継続する(STEP1207)。
【0061】
チャネルアダプタ422は、管理用ネットワーク2’を介してファイバチャネルスイッチ21から許可要求を受け取ると(STEP1205の‘Yes’)、現在のポート42222(x)に加えて、当該新たなポート4222(y)を用いたデータ転送を開始する(STEP1206)。一方、ファイバチャネルスイッチ21は、所定の時間内に許可応答を受け取らなかった場合(STEP1204の‘No’)、現在のポート4222(x)のみを用いたデータ転送を継続する(STEP1207)。
【0062】
上述したように、このような拡張データ転送モードにおいては、ポート4222ごとに独立してデータフレームがファイバチャネルスイッチ21に転送されるため、受け手側のファイバチャネルスイッチ21では、データフレームが必ずしも正しい順番で到着しない可能性がある。本実施形態では、ファイバチャネルスイッチ21は、プロセッサ214の制御の下、同様に、到着するデータフレームについて、その順番の妥当性をチェックし、必要であれば、データフレームの並べ替えを行う。ファイバチャネルスイッチ21における並べ替え処理は、チャネルアダプタ422におけるそれと同じであるので説明を省略する。
【0063】
このように、チャネルアダプタ422は、特定のポート4222のバッファメモリ4222aにおいてオーバーフローが発生した場合であっても、当該オーバーフローが発生したポート4222に加え、同一のファイバチャネルスイッチ21を接続した他のポート4222を用いてデータ転送を行う。これによって、ファイバチャネルスイッチ21−ストレージ装置4間における通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0064】
図13は、本発明の一実施形態に係るストレージシステム1を構成するファイバチャネルスイッチ21−ストレージ装置4間における通信帯域制御を概念的に説明するための図である。同図は、チャネルアダプタ422のポート4222においてオーバーフローが発生した場合について説明している。
【0065】
今、ホスト装置3(0)及び3(1)が、それぞれのポート211(0)乃至211(1)を介して、ストレージ装置4に対してほぼ同時期に読み出し要求を送出したとする。ストレージ装置4は、当該読み出し要求に従ってディスクデバイス41から要求されたデータを読み出し、チャネルアダプタ422のポート4222(0)からデータを送出するが、ポート4222(0)においてデータフレームのオーバーフローが発生したとする。チャネルアダプタ422は、このオーバーフローを検出すると、管理装置43にその旨を通知し、管理装置43は、管理用ネットワーク2’を介して、ファイバチャネルスイッチ21に当該ポート4222(0)と同一のファイバチャネルスイッチ21を接続しているポート4222があるか否かをファイバチャネルスイッチ21に問い合わせる。
【0066】
ファイバチャネルスイッチ21は、これを受けて、チャネル管理テーブルを参照して、ポート4222(0)と同一のストレージ装置4に接続されているポート4222(1)を特定し、管理用ネットワーク2’を介してストレージ装置4の管理装置43にそのポートIDを送出する。管理装置43は、当該ポートIDをチャネルアダプタ422に通知し、チャネルアダプタ422は、拡張転送モードの許可要求を管理装置43に送出し、管理装置43は、管理用ネットワーク2’を介してこれをファイバチャネルスイッチ21に送出する。ファイバチャネルスイッチ21は、当該許可要求に対する許可応答を、管理用ネットワーク2’を介してチャネルアダプタ422に送出する。 チャネルアダプタ422は、この許可応答を受けて、メモリ4224からデータフレームを読み出して、ポート4222(1)に送出する。
【0067】
一方、ファイバチャネルスイッチ21においては、ポート211(3)及び211(7)に到着し、それぞれのバッファメモリ211aにバッファされているデータフレームは、メモリ215に転送され、保持される。プロセッサ214は、管理装置43より拡張転送モードの開始の通知を受けると、メモリ215に保持されたデータフレームの並び順の妥当性をチェックし、データフレームの到着順が入れ替わっている場合には、それらを並び替えた後に、ターゲットノードに送出する。
【0068】
なお、上述したストレージ装置4による読み出し時の動作において、チャネルアダプタ422は、ファイバチャネルスイッチ21に問い合わせ要求を行って、その回答を待って拡張データ転送モードの許可要求を行っているが、例えば、ファイバチャネルスイッチ21に対する問い合わせ要求が許可要求を兼ねるものであってもよい。この場合には、ファイバチャネルスイッチ21とチャネルアダプタ422との間の通信手順が省略されるため、より迅速に拡張データ転送モードに移行することができるようになる。
【0069】
上記実施形態は、本発明を説明するための例示であり、特にこれに限定されるものではない。上記実施形態においては、ホスト装置3とストレージ装置4との間にファイバチャネルスイッチ21を配置したストレージシステム1として説明したが、例えば、ストレージ装置4間にファイバチャネルスイッチ21を配置した構成であってもよい。
【0070】
また、上記実施形態では、図10や図13に示したように、同一のストレージ装置4に接続された、ファイバチャネルスイッチ21のポート211は2個であったが、3個以上であってもよい。このような場合には、ファイバチャネルスイッチ21は、使用されていないポート211を一度に用いた拡張データ転送モードに移行してもよいし、一つずつ順番に拡張データ転送モードに移行していくようにしてもよい。
【0071】
上述したようなさまざまな構成によれば、本発明の実施形態は、すでに述べたような、また、以下に示すような少なくとも一つの利点乃至は効果を奏する。
【0072】
すなわち、本発明の一実施形態に係るストレージシステム及び通信帯域制御方法においては、ファイバチャネルスイッチのポートにおいてオーバーフローが発生した場合であっても、当該オーバーフローが発生したポートに加え、同一のストレージ装置を接続している他のポートを用いてデータ転送を行うことができる。これによって、ファイバチャネルスイッチとストレージ装置4との間でロードバランスが行われ、通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0073】
また、例えば、データの読み出し時において、チャネルアダプタのポートにおいてオーバーフローが発生した場合であっても、当該オーバーフローが発生したポートに加え、同一のファイバチャネルスイッチを接続した他のポートを用いてデータ転送を行うことができる。これによって、ファイバチャネルスイッチとストレージ装置との間でロードバランスが行われ、通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0074】
さらに、本発明の一実施形態に係るストレージシステム及び通信帯域制御方法においては、粒度の小さなデータフレーム乃至はデータパケット単位でロードバランスが行われることで、通信帯域をさらに効率的に使用することができ、これにより高いシステムパフォーマンスを維持することができる。
【産業上の利用可能性】
【0075】
本発明は、ファイバチャネルスイッチ及びストレージ装置により構成されるSANに適用することができる。
【図面の簡単な説明】
【0076】
【図1】本発明の一実施形態に係るストレージシステムの構成を示す図である。
【図2】本発明の一実施形態に係るストレージ装置におけるチャネルアダプタの構成を示す図である。
【図3】本発明の一実施形態に係るストレージ装置におけるディスクアダプタの構成を示す図である。
【図4】本発明の一実施形態に係るファブリックチャネルスイッチの構成を示す図である。
【図5】本発明の一実施形態に係るファイバチャネルスイッチ内のチャネル管理テーブルの一例を示す図である。
【図6】本発明の一実施形態に係るファイバチャネルプロトコルにおけるデータフレーム構造を説明するための図である。
【図7】本発明の一実施形態に係るファイバチャネルスイッチを機能的に説明した図である。
【図8】本発明の一実施形態に係るファイバチャネルスイッチの動作を説明するフローチャートである。
【図9】本発明の一実施形態に係るチャネルアダプタにおけるデータフレームの並び替え処理を説明するためのフローチャートである。
【図10】本発明の一実施形態に係るストレージシステムにおける通信帯域制御を概念的に説明するための図である。
【図11】本発明の一実施形態に係るファイバチャネルスイッチの動作を説明するための図である。
【図12】本発明の一実施形態に係るチャネルアダプタの動作を説明するためのフローチャートである。
【図13】本発明の一実施形態に係るストレージシステムにおける通信帯域制御を概念的に説明するための図である。
【符号の説明】
【0077】
1…ストレージシステム
2…ネットワーク
21…ネットワークスイッチ
3…ホスト装置
4…ストレージ装置
41…ディスクデバイス
42…コントローラユニット
421…キャッシュメモリ
422…チャネルアダプタ
423…ディスクアダプタ
424…接続部
425…内部通信線
【技術分野】
【0001】
本発明は、ネットワークを構成するネットワークスイッチとストレージ装置とを含むストレージシステム及び当該ネットワーク上の通信帯域を制御する技術に関する。
【背景技術】
【0002】
SANは、ストレージアクセスのためにホスト装置とストレージ装置とを接続したネットワークとして知られている。このSANにおいては、比較的下位層で確実なパケット伝送を保証することから、ファイバチャネル(またはファイバチャネルプロトコル)が採用されることが多い。
【0003】
ファイバチャネルの一つの接続形態として、ファイバチャネルスイッチ(FC−SW)を中心に構成されるファブリック・トポロジーがある。このトポロジーは、システムの拡張性に優れており、ファイバチャネルスイッチ同士を接続することにより、大規模なファブリックを構成することができる。
【0004】
ファイバチャネルスイッチは、一般に、ファイバチャネルスイッチ間においてI/Oデータを複数のパス(リンク)に分散させるロードバランス(MPLB)機能を備えている。このロードバランス機能によれば、物理的な複数のファイバチャネルスイッチ間リンクを1つの論理パスとして扱い、特定のリンクにI/Oデータを集中させることなく、通信帯域を効率的に使用できるようになる。
【0005】
また、近年は、IPプロトコルを用いたSANも普及してきている。このIPプロトコルを用いたSANにおいては、例えば、下記特許文献1に示すように、ホスト装置やストレージ装置に対するリンクの通信帯域と、ルータ間に対するリンクの通信帯域との間の不整合を解消する技術が提案されている。すなわち、特許文献1には、サーバ装置とストレージ装置との間に確立された複数のセッションについて通信帯域情報を取得して、通信帯域が不足しているセッションに対して、他のセッションの少なくとも一部の通信帯域を割り当てる通信帯域の制御技術が開示されている。
【特許文献1】特開2006−108955号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上述したような従来のファイバチャネルスイッチにおけるロードバランス機能は、相互に接続されたファイバチャネルスイッチ間でのみ行われ、ファイバチャネルスイッチとストレージ装置との間では行われていなかった。このため、ロードバランス機能によりファイバチャネルスイッチ間で効率的にI/Oデータが転送された場合であっても、例えば、I/Oデータが一のストレージ装置に対して集中する場合や、ホスト装置側の通信帯域幅とストレージ装置側の通信帯域幅との間に開きがある場合、ストレージ装置に対するリンクがボトルネックとなり、システム全体としてのパフォーマンスが低下する可能性があった。
【0007】
また、上記特許文献1に示す通信帯域の制御技術は、サーバ装置とストレージ装置との間でiSCSI上のセッションごとにロードバランスを行っていた。つまり、上記特許文献1は、上位層における粒度のより大きなアプリケーションデータ単位で負荷分散が行われていた。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明は、ネットワークを構成するネットワークスイッチ(例えば、ファイバチャネルスイッチ)とストレージ装置との間の通信帯域制御方法であって、ネットワークスイッチとストレージ装置との間のリンクで通信の輻輳が発生している場合、当該輻輳が発生しているリンクとは別のリンクを併せて用いて通信を行う通信帯域の制御技術である。
【0009】
すなわち、本発明の一の形態によれば、本発明は、第1のネットワークを構成するための複数のポートを有するネットワークスイッチと当該複数のポートの少なくとも2以上のポートのそれぞれに接続されたポートを有するストレージ装置との間の通信帯域の制御方法であって、ストレージ装置に接続されたネットワークスイッチの第1のポートを介してストレージ装置に対してデータフレームを転送するステップと、データフレームの転送中に、第1のポートに関連付けられた第1のバッファメモリにおいてオーバーフローが発生しているか否かを判断するステップと、第1のバッファメモリにおいてオーバーフローが発生している場合、ストレージ装置に接続されたネットワークスイッチの第2のポートを特定するステップと、第1のポート及び第2のポートを介してストレージ装置に対してデータフレームを転送するステップと、を含む制御方法である。
【0010】
また、本発明の他の形態によれば、本発明は、第1のネットワークを構成するための複数のポートを有するネットワークスイッチと、複数のポートの少なくとも2以上のポートのそれぞれに接続されたポートを有するストレージ装置との間における通信帯域の制御方法であって、ストレージ装置のディスクデバイスからデータを読み出して、当該データをデータフレームに変換するステップと、ネットワークスイッチに接続されたストレージ装置の第1のポートを介してネットワークスイッチに対してデータフレームを転送するステップと、データフレームの転送中に、第1のポートに関連付けられた第1のバッファメモリにおいてオーバーフローが発生しているか否かを判断するステップと、第1のバッファメモリにおいてオーバーフローが発生している場合、ネットワークスイッチに接続されたストレージ装置の第2のポートを特定するステップと、第1のポート及び第2のポートを介してネットワークスイッチに対してデータフレームを転送するステップと、を含む制御方法である。
【0011】
また、本発明のさらに他の形態によれば、本発明は、第1のネットワークを介して接続されたネットワークスイッチとストレージ装置とを含むストレージシステムであって、ネットワークスイッチは、バッファメモリを有し、第1のネットワークを構成するための複数のポートと、複数のポートについてのチャネル情報を管理するチャネル管理テーブルと、複数のポートの各バッファメモリにおけるオーバーフローの発生を検出するオーバーフロー検出部と、オーバーフローを発生を検出した場合に、チャネル管理テーブルを参照して、オーバーフローが発生したバッファメモリを有する第1のポートが接続しているノードに接続された他のポートを第2のポートとして特定するポート特定部と、第1のポートに加え、第2のポートを用いてデータフレームが転送されるようにデータフレームのパスを制御する制御部と、を備えるストレージシステムである。
【発明の効果】
【0012】
本発明によれば、ファイバチャネルスイッチとストレージ装置との間において効率的にロードバランスが行われ、これにより、通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0013】
また、本発明によれば、粒度の小さなデータフレーム乃至はデータパケット単位でロードバランスが行われることで、通信帯域をさらに効率的に使用することができ、これにより高いシステムパフォーマンスを維持することができる。
【発明を実施するための最良の形態】
【0014】
次に、本発明の実施の形態について、図面を参照しつつ説明する。
【0015】
図1は、本発明の一実施形態に係るストレージシステム1の構成を示す図である。同図に示すように、ストレージシステム1は、ネットワーク2を介して接続されたホスト装置3とストレージ装置4とを含んで構成されている。ストレージ装置4は、例えば、ホスト装置3から受信した書き込みコマンドに従ってデータを格納し、また、読み込みコマンドに従って格納されているデータを読み出して、ホスト装置3に送出する。
【0016】
ネットワーク2は、例えばファイバチャネルを用いたSAN(FC−SAN)を形成している。すなわち、FC−SANにおいて、ホスト装置3とストレージ装置4との間のデータ通信は、ファイバチャネルプロトコルに従って行われる。本実施形態では、ネットワーク2は、ネットワークスイッチ(またはルータ)として機能する少なくとも一つのファイバチャネルスイッチ(FC−SW)21を設けたファブリック・トポロジーを構成している。この場合、ホスト装置3及びストレージ装置4はそれぞれ、ネットワーク2上のノードとして位置づけられる。なお、同図では、一つのファイバチャネルスイッチ21のみが示されているが、ネットワーク2上に複数のファイバチャネルスイッチ21が設けられ、それらが相互に接続されていてもよい。同様に、ファイバチャネルスイッチ21に複数のストレージ装置4が接続されていてもよい。ファイバチャネルスイッチ21は、例えば、2G/bpsの転送速度に対応したポートを8個備え、ブレードボードを増設することにより、ポート数を拡張できるように構成されている。なお、ファイバチャネルスイッチ21の具体的構成については後述する。
【0017】
また、ネットワーク2は、ファブリック管理サービスの一つであるゾーニングが設定されていてもよい。ゾーニングは、FC−SAN内に論理的なノードのサブセットを形成する。これにより、複数のホスト装置3とストレージ装置4との間の論理的なパスは別のものとして認識されるが、一つの物理的なリンクで構成されることもある。
【0018】
ホスト装置3は、典型的には、汎用のパーソナルコンピュータやワークステーション、メインフレームコンピュータ等が該当する。ホスト装置3は、図示していないクライアントコンピュータに対するサーバコンピュータとして機能してもよい。例えば、ホスト装置3は、銀行の業務システムや航空機の座席予約業務システム等におけるサーバコンピュータとして機能するかもしれない。
【0019】
ストレージ装置4は、一又は複数のディスクデバイス41と、ディスクデバイス41に対する書き込み又は読み込みといったアクセスを制御するコントローラユニット42と、ストレージ装置4を管理するための管理装置(SVP)43と、を備えている。ディスクデバイス41とコントローラユニット42とは、内部の専用線により直接的に接続されてもよいし、外部ネットワークを介して接続されてもよい。
【0020】
ディスクデバイス41は、磁気ディスク又は半導体素子等の大容量記憶媒体を有し、データを格納するための記憶領域を提供する。ディスクデバイス41は、RAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。ディスクデバイス41によって提供される記憶領域は、固有の識別子(LUN:Logical Unit Number)を用いて、一又は複数の論理的なボリューム(LU)として定義される。ボリュームに対するアクセスは、所定サイズのブロックを単位として行われ、このため、各ブロックには、論理ブロックアドレス(LBA:Logical Block Address)が割り当てられる。これにより、ホスト装置3は、識別子LUNおよび論理ブロックアドレスLBAからなる論理アドレスをストレージ装置4のコントローラユニット42に指定することにより、所望のボリューム上のブロックに対してアクセスを行うことができる。ボリュームに関する上述した情報は、システム構成情報としてコントローラユニット42に保持される。
【0021】
コントローラユニット42は、ホスト装置3とディスクデバイス41との間の入出力処理を統括的に制御するシステムボードとして構成される。具体的には、コントローラユニット42は、キャッシュメモリ421と、複数のチャネルアダプタ(CHA)422と、複数のディスクアダプタ(DKA)423と、を備え、これらのモジュールは、例えばクロスバースイッチ等で構成された接続部424を介して相互に接続されている。これらのモジュールは、物理的に独立したモジュールとして構成されてもよいし、適宜、一体的なモジュールとして構成されてもよい。
【0022】
キャッシュメモリ421は、主として、ホスト装置3とディスクデバイス41との間のI/Oデータを一時的に記憶するために利用される。例えば、ホスト装置3から送られた書き込みデータは、キャッシュメモリ421に一時的に保持され、また、ディスクデバイス41から読み出されたデータは、キャッシュメモリ421に一時的に保持される。
【0023】
チャネルアダプタ422は、ネットワーク2を介して接続されたコンピュータ3との間でI/Oアクセスに関するコマンド及びデータを送受する通信インターフェースとして機能するシステム回路である。チャネルアダプタ422は、管理装置43と内部通信線425を介して接続され、管理装置43との間で所定の通信ができるように構成されている。例えば、システム管理者は、管理装置43を用いて、チャネルアダプタ422のプロセッサ4221が実行するマイクロプログラム等をチャネルアダプタ422内のメモリ4222上にインストールすることができる。
【0024】
図2は、本発明の一実施形態に係るストレージ装置4のチャネルアダプタ422の構成を示す図である。同図に示すように、チャネルアダプタ424は、例えば、マイクロプロセッサ4221と、複数のポート4222と、DMA4223と、メモリ4224と、を備える。
【0025】
ポート4222は、典型的には、ファイバチャネルスイッチ21に設けられたポートに、光ファイバを介して接続される。各ポート4222は、バッファメモリ4222aを有し、これによってファイバチャネルスイッチ21との間で送受されるデータフレームをバッファする。DMA4223は、ポート4222内のバッファメモリ4222aとメモリ4224との間のデータフレームの転送を司っている。例えば、ファイバチャネルスイッチ21から送られ、バッファメモリ4222aに蓄積されたデータフレームは、DMA4223の制御の下、メモリ4224に転送される。各ポート4224から転送されてくるデータフレームは、一義的には、メモリ4224に到着順に配列されることになる。
【0026】
プロセッサ4221は、メモリ4224に保持されたデータフレームに対してプロトコル変換を行う。すなわち、ファイバチャネルスイッチ21から送られたデータフレームについては、プロセッサ4221は、ヘッダ等を取り除いてI/Oコマンド及びデータを取り出して、接続部424に送出する。また、ディスクデバイス41から読み出されたデータについては、プロセッサ4221は、ファイバチャネルプロトコルに従ってカプセル化を行う。また、本実施形態では、プロセッサ4221は、ファイバチャネルスイッチ21から送られ、メモリ4224に保持されたデータフレームについて、その順番の妥当性をチェックし、必要であれば並び替えを行った後、プロトコル変換を行う。また、プロセッサ4221は、各ポート4222のバッファメモリ4222aのオーバーフローを監視しており、オーバーフローを検出した場合には、当該オーバーフローが発生したポート4222に加えて、他のポート4222を用いたデータフレームの転送がなされるように制御を行う。
【0027】
ディスクアダプタ423(図2)は、例えば、図3に示すように、マイクロプロセッサ4231と、メモリ4232と、通信インターフェース4233とを備えたシステム回路であり、ディスクデバイス41との間で通信プロトコル制御を行う入出力インターフェースとして機能している。ディスクアダプタ423はまた、不揮発性メモリ4234を備えていてもよい。
【0028】
図2に戻り、接続部424は、例えば、クロスバースイッチ等により構成されるスイッチ回路である。接続部424は、入力されるデータ列を調停しながら、データ列に対するパスを切り替えて、送出元のモジュール(例えばチャネルアダプタ422)と送出先のモジュール(例えばディスクアダプタ423)との内部パスを構築する。接続部424は、内部通信線425を介して管理装置43とも接続されていてもよい。また、ディスクアダプタ424と管理装置43とを直接的に接続せず、ディスクアダプタ424は、接続部424を介して管理装置43と通信が行われるように構成してもよい。
【0029】
管理装置43は、ストレージ装置4全体を管理するために用いる端末装置である。管理装置43は、典型的には、汎用のコンピュータが適用されるが、専用の制御端末であってもよい。システム管理者は、管理装置43を用いて、ストレージ装置4に対する各種の設定を行うことができる。また、管理装置43は、ネットワークボードを備え、管理用ネットワーク2’を介してファイバチャネルスイッチ21に接続されている。これによって、管理装置43は、ファイバチャネルスイッチ21と、FC−SANとは独立に、通信を行うことができる。管理用ネットワーク2’は、例えば、TCP/IPをベースにしたLANやWANとして構成される。本実施形態では、管理装置43のネットワークボードは、イーサネット(登録商標)及びTCP/IPに準拠したLANボードとして構成される。
【0030】
図4は、本発明の一実施形態に係るファブリックチャネルスイッチ21の構成を示す図である。同図に示すように、ファブリックチャネルスイッチ21は、ポート211と、ASIC212と、プロセッサ213と、メモリ214と、管理用通信インターフェース(I/F)215と、を備える。
【0031】
ポート211は、ホスト装置3やストレージ装置4のようなノード及び他のファイバチャネルスイッチ21に接続するためのインターフェースである。各ポート211には、バッファメモリ211aが設けられている。各ポート211は、例えば、“N_Port”、“NL_Port”、“F_Port”、“FL_Port”、“E_Port”等として設計されている。本実施形態のファブリック・トポロジーにおいては、典型的には、“N_Port”及び“E_Port”が使用される。“N_Port”は、ホスト装置3やストレージ装置4のようなノードに接続するためのポートであり、また、“E_Port”は、他のファイバチャネルスイッチ21と接続するためのポートである。
【0032】
ASIC212は、主にパスの選択(ルーティング)を高速に実行するために設計された回路であり、例えばクロスバースイッチやセレクタを含んで構成される。ASIC212を構成する各モジュールは、各ポート211に対する処理を担っている。ASIC212は、各ポート211に設けられたバッファメモリ211aにおけるオーバーフローを監視しており、オーバーフローを検出した場合には、プロセッサ213に通知する。
【0033】
管理用通信インターフェース(I/F)213は、ファイバチャネルスイッチ21を外部から制御するための管理用ネットワーク2’(例えばLAN)に接続するための回路である。本実施形態では、通信インターフェース215は、イーサネット(登録商標)及びTCP/IPに準拠したLANボードとして構成される。システム管理者は、例えば、LAN上のコンピュータからWebシステムを利用して、ファイバチャネルスイッチ21に対する設定を行うことができる。
【0034】
プロセッサ214は、ファブリックチャネルスイッチ21全体の動作を司る。例えば、ファイバチャネルスイッチ21に電源が投入されると、プロセッサ214は、初期シーケンスを実行して、ポート211に接続されたノードに関する情報を収集し、これをチャネル管理テーブルとして、メモリ215に展開する。図5は、本発明の一実施形態に係るファイバチャネルスイッチ21のメモリ215に記憶されたチャネル管理テーブルの一例を示す図である。チャネル管理テーブルは、ファイバチャネルスイッチ21のポート211のそれぞれがどのノードにおけるどのポートに接続されているかに関するチャネル情報を含む。すなわち、同図に示すように、チャネル管理テーブルは、ポートID“P_ID”で示される各ポート211ごとに、ノード名“Node Name”及びポート名“Port Name”が割り当てられている。ノード名“Node Name”は、当該ポート211に接続されているノードのWWN(World Wide Name)であり、ポート名“Port Name”は、そのノードのポートのWWNである。これらのWWNは、ネットワーク2上において一意の値として与えられている。
【0035】
また、プロセッサ214は、メモリ215に記憶された設定プログラムを実行して、システム管理者が管理装置43やネットワーク上のコンピュータからファイバチャネルスイッチ21に対する設定を行うことができるように、ファイバチャネルスイッチ21を制御する。さらに、後述するように、プロセッサ213は、ストレージ装置4から読み出され、ポート211から取り込まれてメモリ222に格納されたデータフレームについて、その並び順の妥当性をチェックし、必要であれば並び替えを行う。
【0036】
図6(a)及び(b)は、本発明の一実施形態に係るファイバチャネルプロトコルにおけるデータフレーム構造を説明するための図である。同図(a)に示すように、一つのオペレーション(I/Oアクセス)は、いくつかのシーケンスの集合からなるエクスチェンジと呼ばれる単位で処理される。各シーケンスは、いくつかのデータフレームの集合からなる。
【0037】
同図(b)に示すように、データフレームは、SOF(Start Of Frame)コードで始まり、EOF(End Of Frame)コードで終わる。また、データフレームは、フレームヘッダを持ち、各種のヘッダ情報を格納する。ファイバチャネルスイッチ21及びネットワーク上の各ノードは、フレームヘッダを参照し、送信元ID“S_ID”及び送信先ID“D_ID”に基づいて、データフレームの送信元及び送信先を判別するとともに、シーケンスID“SEQ_ID”及びシーケンスカウント“SEQ_CTL”に基づいて、データフレームがどのオペレーションに属するか否かを判別する。
【0038】
図7は、本発明の一実施形態に係るファイバチャネルスイッチ21を機能的に説明するための図である。同図における各ブロックは、図4に示したファイバチャネルスイッチ21におけるハードウェア及び/又はソフトウェアの協働により実現される。なお、図4に示した要素と同一又は等価な要素については、同一の符号を付している。
【0039】
すなわち、同図に示すように、ルーティング制御部71は、ルーティングテーブルに従って、ポート211のバッファメモリを211aから入力されるデータフレームのヘッダフレームに基づいてパスを切り替え、出力する。オーバーフロー検出部72は、バッファメモリ211aを監視し、オーバーフローの発生を検出する。オーバーフロー検出部72は、オーバーフローの発生を検出すると、ポート特定部73にその旨を通知する。ポート特定部73は、オーバーフロー検出部72よりオーバーフローが発生した旨の通知を受け取ると、チャネル管理テーブル記憶部74に記憶されたチャネル管理テーブルを参照して、オーバーフローが発生したバッファメモリ211aのポート211と同一のノード(すなわち、ここではストレージ装置4)に接続された他のポート211を特定し、ルーティング制御部71に通知する。ポート特定部73はまた、特定した他のポート211をストレージ装置4に通知すべく、通信部75に通知する。通信部75は、管理用ネットワーク2’を介して、ストレージ装置4の管理装置43に、特定した他のポート211を用いた拡張データ転送モードの開始を通知する。
【0040】
図8は、本発明の一実施形態に係るファイバチャネルスイッチ21の動作を説明するフローチャートである。同図に示すように、ファイバチャネルスイッチ21は、その動作中、ポート211のバッファメモリ211aを監視し、オーバーフローが発生したか否かをチェックする(SETP801)。オーバーフローが発生したポート211(x)がある場合(SETP801の‘Yes’)、ファイバチャネルスイッチ21は、当該ポート211(x)と同一のストレージ装置4を接続しているポート211(y)があるか否かをチェックする(SETP802)。具体的には、ファイバチャネルスイッチ21は、メモリ215に保持しているチャネル管理テーブルを参照して、オーバーフローが発生した当該ポート211(x)に接続されているノードのノード名を抽出し、同一のノード名を持つポートIDがあるか否かをチェックする。
【0041】
ファイバチャネルスイッチ21は、オーバーフローが発生した当該ポート211(y)と同一のノード名が与えられたポートIDを抽出すると、当該ポートIDに示されるポート211(y)を用いた拡張データ転送モードによる許可要求をストレージ装置4に対して送出する(SETP803)。拡張データ転送モードとは、ここでは、オーバーフローが発生しているポート211(x)を用いてデータフレームを転送するとともに、さらに、抽出されたポートIDに示されるポート211(y)を用いてデータフレームを転送するモードをいう。つまり、拡張データ転送モードでは、物理的には、複数のリンクによってデータフレームが転送されるが、論理的には、1つのパス上をデータフレームが転送されるとみることができる。ファイバチャネルスイッチ21は、例えば、当該許可要求をTCP/IPベースの管理用ネットワーク2’を介して送出する。ストレージ装置4の管理装置43は、当該許可要求を受け取ると、対応するチャネルアダプタ422に通知するとともに、ファイバチャネルスイッチ21に許可応答を送出する。
【0042】
ファイバチャネルスイッチ21は、管理用ネットワーク2’を介してストレージ装置4から許可応答を受け取ると(STEP804の‘Yes’)、現在のポート211(x)に加えて、当該新たなポート211(y)を用いたデータ転送を開始する(STEP805)。一方、ファイバチャネルスイッチ21は、所定の時間内に許可応答を受け取らなかった場合(STEP804の‘No’)、現在のポート211(x)のみを用いたデータ転送を継続する(STEP806)。
【0043】
このような拡張データ転送モードにおいては、ポート211ごとに独立してデータフレームがストレージ装置4に転送されるため、受け手側のストレージ装置4では、データフレームが必ずしも正しい順番で到着しない可能性がある。そこで、本実施形態では、ストレージ装置4のチャネルアダプタ422は、到着するデータフレームについて、その順番の妥当性をチェックし、必要であれば、データフレームの並び替えを行う。
【0044】
図9は、本発明の一実施形態に係るチャネルアダプタ422におけるデータフレームの並び替え処理を説明するためのフローチャートである。チャネルアダプタ422は、ファイバチャネルスイッチ21から拡張データ転送モードの許可要求を受け取ると、データフレームの並び替え処理を開始する。
【0045】
すなわち、同図に示すように、チャネルアダプタ422は、ポート4222のバッファメモリ4222aにデータフレームが到着すると、これを随時取り込み、メモリ4224に転送する(STEP901)。チャネルアダプタ422は、次に、メモリ4222に保持されたデータフレームについて、並べ替えが必要であるか否かをチェックする(STEP902)。具体的には、チャネルアダプタ422は、同一の“S_ID”及び“D_ID”を有するデータフレームについて、“SEQ_ID”が示す順番(例えば昇順)をチェックする。チャネルアダプタ422は、順番通りに並んでいない“SEQ_ID”のデータフレームを検出すると、当該データフレームの並び替えを行う(STEP903)。そして、チャネルアダプタ422は、メモリに保持されている一連のデータフレームがターゲットデバイスに転送されるように、先頭から順次に送出する(STEP904)。この場合、チャネルアダプタ422は、データフレームの並び順の妥当性をチェックしながら、妥当性チェックの済んだデータフレームを随時ターゲットデバイスに送出するようにしてもよい。
【0046】
このように、ファイバチャネルスイッチ21は、特定のポート211のバッファメモリ211aにおいてオーバーフローが発生した場合であっても、当該オーバーフローが発生したポート211に加え、同一のストレージ装置4を接続した他のポート211を用いてデータ転送を行う。これによって、ファイバチャネルスイッチ21−ストレージ装置4間における通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0047】
図10は、本発明の一実施形態に係るストレージシステム1を構成するファイバチャネルスイッチ21−ストレージ装置4間における通信帯域制御を概念的に説明するための図である。
【0048】
同図に示すように、複数のホスト装置3及びストレージ装置4は、ファイバチャネルスイッチ21を介して接続されている。具体的には、ファイバチャネルスイッチ21は、例えば8個のポート211(0)乃至211(7)を有し、ポート211(0)乃至211(2)及びポート211(4)乃至211(6)には、ホスト装置3(0)乃至3(5)が接続されている。また、ポート211(3)及び211(7)は、ストレージ装置4のチャネルアダプタ422内のポート4222(0)及びポート4222(1)にそれぞれ接続されている。初期設定として、ファイバチャネルスイッチ21のポート211(0)乃至211(2)は、ポート211(3)に接続されたチャネルアダプタ422のポート4222(0)に関連付けられているものとする。
【0049】
ファイバチャネルスイッチ21において通信の輻輳が発生する場合として、例えば、複数のホスト装置3から同一のターゲットノード(ストレージ装置4)に対して同時期にデータフレームが転送される場合や、ホスト装置3側の転送速度とストレージ装置4側の転送速度とが整合していない場合等がある。
【0050】
今、ホスト装置3(0)乃至3(2)が、それぞれのポート211(0)乃至211(2)を介して、ストレージ装置4に対してほぼ同時期にI/Oアクセス要求を送出し、ポート211(3)においてデータフレームのオーバーフローが発生したとする。ファイバチャネルスイッチ21は、このオーバーフローを検出すると、チャネル管理テーブルを参照して、ポート211(3)と同一のストレージ装置4に接続されているポート211(7)を特定し、管理用ネットワーク2’を介してストレージ装置4の管理装置43にポート211(7)を用いた拡張データ転送モードの許可要求を送出する。管理装置43は、ポート211(7)に接続されたポート4222(1)による拡張データ転送モードが開始される旨をチャネルアダプタ422に通知するとともに、ファイバチャネルスイッチ21に許可応答を送出する。ファイバチャネルスイッチ21は、管理装置43から許可応答を受け取ると、ポート211(3)から送出されずにバッファメモリ211aに滞留しているデータフレームがポート211(7)から送出されるように、内部のルーティングを変更する。
【0051】
一方、ストレージ装置4においては、ポート4222(0)及び4222(1)に到着し、それぞれのバッファメモリ4222aにバッファされているデータフレームは、DMAの制御の下、メモリ4224に転送され、保持される。プロセッサ4221は、管理装置43より拡張転送モードの開始の通知を受けると、メモリ4224に保持されたデータフレームの並び順の妥当性をチェックし、データフレームの到着順が入れ替わっている場合には、それらを並び替えた後に、プロトコル変換を行う。プロトコル変換が行われたデータは、キャッシュメモリ421に書き込まれ、ディスクアダプタ423の制御の下、ディスク装置41の所定の格納領域に格納される。なお、ディスクアダプタ423によりディスクデバイス41の所定の領域にデータが書き込まれると、ホスト装置4にI/Oアクセス要求の終了を通知する。
【0052】
図11は、本発明の一実施形態に係るファイバチャネルスイッチ21の動作を説明するための図である。具体的には、同図は、拡張データ転送モードに移行した後、当該拡張データ転送モードの終了を判定するための処理を説明している。
【0053】
すなわち、同図に示すように、ファイバチャネルスイッチ21は、ホスト装置3によるI/Oアクセスに基づくデータの転送が終了したか否かを判断する(STEP1101)。ファイバチャネルスイッチ21は、データ転送が終了したと判断する場合、そのまま当該I/Oアクセスに関わる処理を終了する。
【0054】
これに対して、ファイバチャネルスイッチ21は、データ転送がまだ終了していないと判断する場合には、ポート211におけるオーバーフローが解消したか否かを判断する(STEP1102)。この場合、ファイバチャネルスイッチ21は、ある時点においてオーバーフローが解消したか否かを判断するのではなく、例えば、直近の過去の期間におけるデータフレームの転送量に基づいて、判断することが望ましい。ファイバチャネルスイッチ21のプロセッサ214は、データフレームの転送に関する統計値を算出し、所定のしきい値を下回った場合に、オーバーフローが解消したと判断する。
【0055】
オーバーフローが解消していない場合、ファイバチャネルスイッチ21は、拡張データ転送モードを継続する(STEP1103)。これに対して、オーバーフローが解消したと判断した場合、ファイバチャネルスイッチ21は、拡張データ転送モードを終了させて、ポート211を開放する(STEP1104)。
【0056】
図12は、本発明の一実施形態に係るチャネルアダプタ422の動作を説明するためのフローチャートである。具体的には、同図は、ホスト装置3からの読み出し要求に基づいてディスクデバイス41から読み出されたデータをネットワーク2上に送出する時の処理を説明している。
【0057】
同図に示すように、チャネルアダプタ422は、その動作中、ポート4222のバッファメモリ4222aを監視し、オーバーフローが発生したか否かをチェックする(SETP1201)。オーバーフローが発生したポート4222(x)がある場合、チャネルアダプタ422は、当該ポート4222(x)と同一のファイバチャネルスイッチ21を接続しているポート4222(y)があるか否かをファイバチャネルスイッチ21に問い合わせる(SETP1202)。具体的には、チャネルアダプタ422は、管理装置43に当該問い合わせ要求を送出するように要求し、これを受けて、管理装置43は、管理用ネットワーク2’を介して、ファイバチャネルスイッチ21に当該問い合わせ要求を送出する。
【0058】
ファイバチャネルスイッチ21は、問い合わせ要求を受け取ると、チャネル管理テーブルを参照して、オーバーフローが発生した当該ポート4222(x)に対応するポート211に接続されているノードのノード名を抽出し、同一のノード名が与えられたポートIDがあるか否かをチェックする。ファイバチャネルスイッチ21は、オーバーフローが発生したチャネルアダプタ422の当該ポート4222(x)に対応するポート211と同一のノード名が与えられたポートIDを抽出すると、当該ポートIDをストレージ装置4に対して送出する。
【0059】
チャネルアダプタ422は、ファイバチャネルスイッチ21からポートIDを受け付けると(SETP1203の‘Yes’)、当該ポートIDに示されるポート4222(y)を用いた拡張データ転送モードの許可要求をファイバチャネルスイッチ21に対して送出する(SETP1204)。管理装置43は、チャネルアダプタ422からの当該許可要求を受けて、TCP/IPベースの管理用ネットワーク2’を介して送出する。ファイバチャネルスイッチ21は、当該許可要求を受け取ると、これに応答して、チャネルアダプタ422に許可応答を送出する。
【0060】
なお、ファイバチャネルスイッチ21からポートIDを受け取ることができなかった場合(SETP1203の‘No’)、チャネルアダプタ422は、現在のポート4222(x)のみを用いたデータ転送を継続する(STEP1207)。
【0061】
チャネルアダプタ422は、管理用ネットワーク2’を介してファイバチャネルスイッチ21から許可要求を受け取ると(STEP1205の‘Yes’)、現在のポート42222(x)に加えて、当該新たなポート4222(y)を用いたデータ転送を開始する(STEP1206)。一方、ファイバチャネルスイッチ21は、所定の時間内に許可応答を受け取らなかった場合(STEP1204の‘No’)、現在のポート4222(x)のみを用いたデータ転送を継続する(STEP1207)。
【0062】
上述したように、このような拡張データ転送モードにおいては、ポート4222ごとに独立してデータフレームがファイバチャネルスイッチ21に転送されるため、受け手側のファイバチャネルスイッチ21では、データフレームが必ずしも正しい順番で到着しない可能性がある。本実施形態では、ファイバチャネルスイッチ21は、プロセッサ214の制御の下、同様に、到着するデータフレームについて、その順番の妥当性をチェックし、必要であれば、データフレームの並べ替えを行う。ファイバチャネルスイッチ21における並べ替え処理は、チャネルアダプタ422におけるそれと同じであるので説明を省略する。
【0063】
このように、チャネルアダプタ422は、特定のポート4222のバッファメモリ4222aにおいてオーバーフローが発生した場合であっても、当該オーバーフローが発生したポート4222に加え、同一のファイバチャネルスイッチ21を接続した他のポート4222を用いてデータ転送を行う。これによって、ファイバチャネルスイッチ21−ストレージ装置4間における通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0064】
図13は、本発明の一実施形態に係るストレージシステム1を構成するファイバチャネルスイッチ21−ストレージ装置4間における通信帯域制御を概念的に説明するための図である。同図は、チャネルアダプタ422のポート4222においてオーバーフローが発生した場合について説明している。
【0065】
今、ホスト装置3(0)及び3(1)が、それぞれのポート211(0)乃至211(1)を介して、ストレージ装置4に対してほぼ同時期に読み出し要求を送出したとする。ストレージ装置4は、当該読み出し要求に従ってディスクデバイス41から要求されたデータを読み出し、チャネルアダプタ422のポート4222(0)からデータを送出するが、ポート4222(0)においてデータフレームのオーバーフローが発生したとする。チャネルアダプタ422は、このオーバーフローを検出すると、管理装置43にその旨を通知し、管理装置43は、管理用ネットワーク2’を介して、ファイバチャネルスイッチ21に当該ポート4222(0)と同一のファイバチャネルスイッチ21を接続しているポート4222があるか否かをファイバチャネルスイッチ21に問い合わせる。
【0066】
ファイバチャネルスイッチ21は、これを受けて、チャネル管理テーブルを参照して、ポート4222(0)と同一のストレージ装置4に接続されているポート4222(1)を特定し、管理用ネットワーク2’を介してストレージ装置4の管理装置43にそのポートIDを送出する。管理装置43は、当該ポートIDをチャネルアダプタ422に通知し、チャネルアダプタ422は、拡張転送モードの許可要求を管理装置43に送出し、管理装置43は、管理用ネットワーク2’を介してこれをファイバチャネルスイッチ21に送出する。ファイバチャネルスイッチ21は、当該許可要求に対する許可応答を、管理用ネットワーク2’を介してチャネルアダプタ422に送出する。 チャネルアダプタ422は、この許可応答を受けて、メモリ4224からデータフレームを読み出して、ポート4222(1)に送出する。
【0067】
一方、ファイバチャネルスイッチ21においては、ポート211(3)及び211(7)に到着し、それぞれのバッファメモリ211aにバッファされているデータフレームは、メモリ215に転送され、保持される。プロセッサ214は、管理装置43より拡張転送モードの開始の通知を受けると、メモリ215に保持されたデータフレームの並び順の妥当性をチェックし、データフレームの到着順が入れ替わっている場合には、それらを並び替えた後に、ターゲットノードに送出する。
【0068】
なお、上述したストレージ装置4による読み出し時の動作において、チャネルアダプタ422は、ファイバチャネルスイッチ21に問い合わせ要求を行って、その回答を待って拡張データ転送モードの許可要求を行っているが、例えば、ファイバチャネルスイッチ21に対する問い合わせ要求が許可要求を兼ねるものであってもよい。この場合には、ファイバチャネルスイッチ21とチャネルアダプタ422との間の通信手順が省略されるため、より迅速に拡張データ転送モードに移行することができるようになる。
【0069】
上記実施形態は、本発明を説明するための例示であり、特にこれに限定されるものではない。上記実施形態においては、ホスト装置3とストレージ装置4との間にファイバチャネルスイッチ21を配置したストレージシステム1として説明したが、例えば、ストレージ装置4間にファイバチャネルスイッチ21を配置した構成であってもよい。
【0070】
また、上記実施形態では、図10や図13に示したように、同一のストレージ装置4に接続された、ファイバチャネルスイッチ21のポート211は2個であったが、3個以上であってもよい。このような場合には、ファイバチャネルスイッチ21は、使用されていないポート211を一度に用いた拡張データ転送モードに移行してもよいし、一つずつ順番に拡張データ転送モードに移行していくようにしてもよい。
【0071】
上述したようなさまざまな構成によれば、本発明の実施形態は、すでに述べたような、また、以下に示すような少なくとも一つの利点乃至は効果を奏する。
【0072】
すなわち、本発明の一実施形態に係るストレージシステム及び通信帯域制御方法においては、ファイバチャネルスイッチのポートにおいてオーバーフローが発生した場合であっても、当該オーバーフローが発生したポートに加え、同一のストレージ装置を接続している他のポートを用いてデータ転送を行うことができる。これによって、ファイバチャネルスイッチとストレージ装置4との間でロードバランスが行われ、通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0073】
また、例えば、データの読み出し時において、チャネルアダプタのポートにおいてオーバーフローが発生した場合であっても、当該オーバーフローが発生したポートに加え、同一のファイバチャネルスイッチを接続した他のポートを用いてデータ転送を行うことができる。これによって、ファイバチャネルスイッチとストレージ装置との間でロードバランスが行われ、通信の輻輳を回避して、高いシステムパフォーマンスを維持することができる。
【0074】
さらに、本発明の一実施形態に係るストレージシステム及び通信帯域制御方法においては、粒度の小さなデータフレーム乃至はデータパケット単位でロードバランスが行われることで、通信帯域をさらに効率的に使用することができ、これにより高いシステムパフォーマンスを維持することができる。
【産業上の利用可能性】
【0075】
本発明は、ファイバチャネルスイッチ及びストレージ装置により構成されるSANに適用することができる。
【図面の簡単な説明】
【0076】
【図1】本発明の一実施形態に係るストレージシステムの構成を示す図である。
【図2】本発明の一実施形態に係るストレージ装置におけるチャネルアダプタの構成を示す図である。
【図3】本発明の一実施形態に係るストレージ装置におけるディスクアダプタの構成を示す図である。
【図4】本発明の一実施形態に係るファブリックチャネルスイッチの構成を示す図である。
【図5】本発明の一実施形態に係るファイバチャネルスイッチ内のチャネル管理テーブルの一例を示す図である。
【図6】本発明の一実施形態に係るファイバチャネルプロトコルにおけるデータフレーム構造を説明するための図である。
【図7】本発明の一実施形態に係るファイバチャネルスイッチを機能的に説明した図である。
【図8】本発明の一実施形態に係るファイバチャネルスイッチの動作を説明するフローチャートである。
【図9】本発明の一実施形態に係るチャネルアダプタにおけるデータフレームの並び替え処理を説明するためのフローチャートである。
【図10】本発明の一実施形態に係るストレージシステムにおける通信帯域制御を概念的に説明するための図である。
【図11】本発明の一実施形態に係るファイバチャネルスイッチの動作を説明するための図である。
【図12】本発明の一実施形態に係るチャネルアダプタの動作を説明するためのフローチャートである。
【図13】本発明の一実施形態に係るストレージシステムにおける通信帯域制御を概念的に説明するための図である。
【符号の説明】
【0077】
1…ストレージシステム
2…ネットワーク
21…ネットワークスイッチ
3…ホスト装置
4…ストレージ装置
41…ディスクデバイス
42…コントローラユニット
421…キャッシュメモリ
422…チャネルアダプタ
423…ディスクアダプタ
424…接続部
425…内部通信線
【特許請求の範囲】
【請求項1】
第1のネットワークを構成するための複数のポートを有するネットワークスイッチと当該複数のポートの少なくとも2以上のポートのそれぞれに接続されたポートを有するストレージ装置との間の通信帯域の制御方法であって、
前記ストレージ装置に接続された前記ネットワークスイッチの第1のポートを介して前記ストレージ装置に対してデータフレームを転送するステップと、
前記データフレームの転送中に、前記第1のポートに関連付けられた第1のバッファメモリにおいてオーバーフローが発生しているか否かを判断するステップと、
前記第1のバッファメモリにおいてオーバーフローが発生している場合、前記ストレージ装置に接続された前記ネットワークスイッチの第2のポートを特定するステップと、
前記第1のポート及び前記第2のポートを介して前記ストレージ装置に対してデータフレームを転送するステップと、を含むことを特徴とする制御方法。
【請求項2】
請求項1記載の制御方法であって、
前記ネットワークスイッチは、前記複数のポートについてのチャネル情報を管理するチャネル管理テーブルを有し、
前記第2のポートを特定するステップは、前記チャネル管理テーブルを参照して、前記第1のポートが接続している前記ストレージ装置に接続された他のポートを第2のポートとして特定することを特徴とする制御方法。
【請求項3】
請求項2記載の制御方法であって、
前記チャネル管理テーブルは、前記複数のポートと、前記複数のポートに接続されたノードとしての前記ストレージ装置及び当該ノードのポートとを対応付けていることを特徴とする制御方法。
【請求項4】
請求項1記載の制御方法であって、
前記特定された第2のポートを介したデータフレームの転送に関する許可要求を前記ストレージ装置に通知するステップをさらに含むことを特徴とする制御方法。
【請求項5】
請求項4記載の制御方法であって、
前記通知するステップは、前記ネットワークスイッチと前記ストレージ装置とを接続する第2のネットワークを介して前記許可要求を通知することを特徴とする制御方法。
【請求項6】
請求項4記載の制御方法であって、
前記ストレージ装置が、前記許可要求に応答して、前記ネットワークスイッチに許可応答を通知するステップをさらに含む制御方法。
【請求項7】
請求項1記載の制御方法であって、
前記第1のポート及び前記第2のポートを介して前記ストレージ装置に転送されたデータフレームの並び順をチェックするステップと、
前記並び順をチェックした結果に基づいて、前記データフレームの順番を並び替えるステップと、をさらに含むことを特徴とする制御方法。
【請求項8】
請求項7記載の制御方法であって、
前記並び替えられたデータフレームを当該データフレームが示すターゲットデバイスに送出するステップをさらに含むことを特徴とする制御方法。
【請求項9】
第1のネットワークを構成するための複数のポートを有するネットワークスイッチと、前記複数のポートの少なくとも2以上のポートのそれぞれに接続されたポートを有するストレージ装置との間における通信帯域の制御方法であって、
前記ストレージ装置のディスクデバイスからデータを読み出して、当該データをデータフレームに変換するステップと、
前記ネットワークスイッチに接続された前記ストレージ装置の第1のポートを介して前記ネットワークスイッチに対して前記データフレームを転送するステップと、
前記データフレームの転送中に、前記第1のポートに関連付けられた第1のバッファメモリにおいてオーバーフローが発生しているか否かを判断するステップと、
前記第1のバッファメモリにおいてオーバーフローが発生している場合、前記ネットワークスイッチに接続された前記ストレージ装置の第2のポートを特定するステップと、
前記第1のポート及び前記第2のポートを介して前記ネットワークスイッチに対して前記データフレームを転送するステップと、を含むことを特徴とする制御方法。
【請求項10】
請求項9記載の制御方法であって、
前記第2のポートを特定するステップは、前記第1のポートが接続している前記ネットワークスイッチに接続された他のポートを前記ネットワークスイッチに対して問い合わせるステップを含むことを特徴とする制御方法。
【請求項11】
請求項10記載の制御方法であって、
前記ネットワークスイッチは、前記複数のポートのチャネル情報を管理するチャネル管理テーブルを有し、前記チャネル管理テーブルを参照して、前記第1のポートが接続している前記ネットワークスイッチに接続された前記他のポートを第2のポートとして特定することを特徴とする制御方法。
【請求項12】
請求項10記載の制御方法であって、
前記問い合わせるステップは、前記ストレージ装置が第2のネットワークを介して前記ネットワークスイッチと問い合わせることを特徴とする制御方法。
【請求項13】
第1のネットワークを介して接続されたネットワークスイッチとストレージ装置とを含むストレージシステムであって、
前記ネットワークスイッチは、
バッファメモリを有し、前記第1のネットワークを構成するための複数のポートと、
前記複数のポートについてのチャネル情報を管理するチャネル管理テーブルと、
前記複数のポートの各バッファメモリにおけるオーバーフローの発生を検出するオーバーフロー検出部と、
前記オーバーフローを発生を検出した場合に、前記チャネル管理テーブルを参照して、前記オーバーフローが発生したバッファメモリを有する第1のポートが接続しているノードに接続された他のポートを第2のポートとして特定するポート特定部と、
前記第1のポートに加え、前記第2のポートを用いてデータフレームが転送されるようにデータフレームのパスを制御する制御部と、を備えることを特徴とするストレージシステム。
【請求項14】
請求項13記載のストレージシステムであって、
前記特定した第2のポートを用いたデータフレームの転送に関する許可要求を前記ストレージ装置に送出する通信部をさらに備えることを特徴とするストレージシステム。
【請求項15】
請求項14記載のストレージシステムであって、
前記通信部は、第2のネットワークを介して前記許可要求を送出することを特徴とするストレージシステム。
【請求項16】
請求項14記載のストレージシステムであって、
前記ストレージシステムは、前記許可要求に応答して、前記ネットワークスイッチに許可応答を送出することを特徴とするストレージシステム。
【請求項17】
請求項13記載のストレージシステムであって、
前記ストレージシステムは、前記第1のポート及び前記第2のポートから転送されるデの並び順をチェックし、当該並び順をチェックした結果に基づいて、前記データフレームの順番を並び替えることを特徴とするストレージシステム。
【請求項1】
第1のネットワークを構成するための複数のポートを有するネットワークスイッチと当該複数のポートの少なくとも2以上のポートのそれぞれに接続されたポートを有するストレージ装置との間の通信帯域の制御方法であって、
前記ストレージ装置に接続された前記ネットワークスイッチの第1のポートを介して前記ストレージ装置に対してデータフレームを転送するステップと、
前記データフレームの転送中に、前記第1のポートに関連付けられた第1のバッファメモリにおいてオーバーフローが発生しているか否かを判断するステップと、
前記第1のバッファメモリにおいてオーバーフローが発生している場合、前記ストレージ装置に接続された前記ネットワークスイッチの第2のポートを特定するステップと、
前記第1のポート及び前記第2のポートを介して前記ストレージ装置に対してデータフレームを転送するステップと、を含むことを特徴とする制御方法。
【請求項2】
請求項1記載の制御方法であって、
前記ネットワークスイッチは、前記複数のポートについてのチャネル情報を管理するチャネル管理テーブルを有し、
前記第2のポートを特定するステップは、前記チャネル管理テーブルを参照して、前記第1のポートが接続している前記ストレージ装置に接続された他のポートを第2のポートとして特定することを特徴とする制御方法。
【請求項3】
請求項2記載の制御方法であって、
前記チャネル管理テーブルは、前記複数のポートと、前記複数のポートに接続されたノードとしての前記ストレージ装置及び当該ノードのポートとを対応付けていることを特徴とする制御方法。
【請求項4】
請求項1記載の制御方法であって、
前記特定された第2のポートを介したデータフレームの転送に関する許可要求を前記ストレージ装置に通知するステップをさらに含むことを特徴とする制御方法。
【請求項5】
請求項4記載の制御方法であって、
前記通知するステップは、前記ネットワークスイッチと前記ストレージ装置とを接続する第2のネットワークを介して前記許可要求を通知することを特徴とする制御方法。
【請求項6】
請求項4記載の制御方法であって、
前記ストレージ装置が、前記許可要求に応答して、前記ネットワークスイッチに許可応答を通知するステップをさらに含む制御方法。
【請求項7】
請求項1記載の制御方法であって、
前記第1のポート及び前記第2のポートを介して前記ストレージ装置に転送されたデータフレームの並び順をチェックするステップと、
前記並び順をチェックした結果に基づいて、前記データフレームの順番を並び替えるステップと、をさらに含むことを特徴とする制御方法。
【請求項8】
請求項7記載の制御方法であって、
前記並び替えられたデータフレームを当該データフレームが示すターゲットデバイスに送出するステップをさらに含むことを特徴とする制御方法。
【請求項9】
第1のネットワークを構成するための複数のポートを有するネットワークスイッチと、前記複数のポートの少なくとも2以上のポートのそれぞれに接続されたポートを有するストレージ装置との間における通信帯域の制御方法であって、
前記ストレージ装置のディスクデバイスからデータを読み出して、当該データをデータフレームに変換するステップと、
前記ネットワークスイッチに接続された前記ストレージ装置の第1のポートを介して前記ネットワークスイッチに対して前記データフレームを転送するステップと、
前記データフレームの転送中に、前記第1のポートに関連付けられた第1のバッファメモリにおいてオーバーフローが発生しているか否かを判断するステップと、
前記第1のバッファメモリにおいてオーバーフローが発生している場合、前記ネットワークスイッチに接続された前記ストレージ装置の第2のポートを特定するステップと、
前記第1のポート及び前記第2のポートを介して前記ネットワークスイッチに対して前記データフレームを転送するステップと、を含むことを特徴とする制御方法。
【請求項10】
請求項9記載の制御方法であって、
前記第2のポートを特定するステップは、前記第1のポートが接続している前記ネットワークスイッチに接続された他のポートを前記ネットワークスイッチに対して問い合わせるステップを含むことを特徴とする制御方法。
【請求項11】
請求項10記載の制御方法であって、
前記ネットワークスイッチは、前記複数のポートのチャネル情報を管理するチャネル管理テーブルを有し、前記チャネル管理テーブルを参照して、前記第1のポートが接続している前記ネットワークスイッチに接続された前記他のポートを第2のポートとして特定することを特徴とする制御方法。
【請求項12】
請求項10記載の制御方法であって、
前記問い合わせるステップは、前記ストレージ装置が第2のネットワークを介して前記ネットワークスイッチと問い合わせることを特徴とする制御方法。
【請求項13】
第1のネットワークを介して接続されたネットワークスイッチとストレージ装置とを含むストレージシステムであって、
前記ネットワークスイッチは、
バッファメモリを有し、前記第1のネットワークを構成するための複数のポートと、
前記複数のポートについてのチャネル情報を管理するチャネル管理テーブルと、
前記複数のポートの各バッファメモリにおけるオーバーフローの発生を検出するオーバーフロー検出部と、
前記オーバーフローを発生を検出した場合に、前記チャネル管理テーブルを参照して、前記オーバーフローが発生したバッファメモリを有する第1のポートが接続しているノードに接続された他のポートを第2のポートとして特定するポート特定部と、
前記第1のポートに加え、前記第2のポートを用いてデータフレームが転送されるようにデータフレームのパスを制御する制御部と、を備えることを特徴とするストレージシステム。
【請求項14】
請求項13記載のストレージシステムであって、
前記特定した第2のポートを用いたデータフレームの転送に関する許可要求を前記ストレージ装置に送出する通信部をさらに備えることを特徴とするストレージシステム。
【請求項15】
請求項14記載のストレージシステムであって、
前記通信部は、第2のネットワークを介して前記許可要求を送出することを特徴とするストレージシステム。
【請求項16】
請求項14記載のストレージシステムであって、
前記ストレージシステムは、前記許可要求に応答して、前記ネットワークスイッチに許可応答を送出することを特徴とするストレージシステム。
【請求項17】
請求項13記載のストレージシステムであって、
前記ストレージシステムは、前記第1のポート及び前記第2のポートから転送されるデの並び順をチェックし、当該並び順をチェックした結果に基づいて、前記データフレームの順番を並び替えることを特徴とするストレージシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2008−112398(P2008−112398A)
【公開日】平成20年5月15日(2008.5.15)
【国際特許分類】
【出願番号】特願2006−296287(P2006−296287)
【出願日】平成18年10月31日(2006.10.31)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成20年5月15日(2008.5.15)
【国際特許分類】
【出願日】平成18年10月31日(2006.10.31)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]