(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023128349
(43)【公開日】2023-09-14
(54)【発明の名称】ストレージシステム、サーバ、パス切替方法、およびプログラム
(51)【国際特許分類】
G06F 13/14 20060101AFI20230907BHJP
G06F 3/06 20060101ALI20230907BHJP
【FI】
G06F13/14 310E
G06F3/06 301C
【審査請求】有
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022032642
(22)【出願日】2022-03-03
(71)【出願人】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【弁理士】
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【弁理士】
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】田上 和典
(57)【要約】
【課題】ストレージシステムにおいて、障害が発生した経路を代替経路に切り替えて入出力処理を実行し、障害発生時の経路切替に伴う入出力処理の応答性能を改善する。
【解決手段】サーバとストレージとを複数経路の経路で接続してなるストレージシステムにおいて入出力処理(IO)を実行している経路に障害が発生すると、サーバは、障害発生経路の不使用を決定し、障害発生経路に係るポートを記述したIOキャンセルコマンドを生成して代替経路を介してストレージに送信して入出力処理をキャンセルさせる。ストレージ側でのIOキャンセルの完了後、サーバは、代替経路を経由して入出力処理を再度実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
サーバとストレージとを複数の経路で接続してなるストレージシステムにおいて、前記サーバは第一ポートと第二ポートを具備し、前記ストレージは第三ポートと第四ポートを具備し、前記サーバの第一ポートと前記ストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、前記サーバの第二ポートと前記ストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており、
前記サーバは、入出力処理を実行している前記第一経路に障害が発生すると、前記第一経路の不使用を決定し、
前記第一経路に係る前記第一ポートを検出し、
前記第一ポートを記述した前記入出力処理のキャンセルコマンドを生成して前記第二経路を介して前記ストレージに送信し、
前記ストレージは、前記入出力処理のキャンセルコマンドに基づいて、前記第一経路に係る前記第三ポートを検索し、
前記入出力処理のキャンセルコマンドに基づいて、前記サーバとの間の設けられた前記第一経路を介した前記入出力処理をキャンセルし、
前記サーバは、前記ストレージ側での前記入出力処理のキャンセルが終了すると、前記第二経路を経由して前記入出力処理を再度実行する、
ストレージシステム。
【請求項2】
前記サーバと前記ストレージとは所定の通信規格で通信しており、前記サーバの第一ポートと第二ポートは夫々HBA(Host Bus Adaptor)により構成されている、請求項1に記載のストレージシステム。
【請求項3】
前記サーバと前記ストレージとは光ファイバーを経由して通信接続されており、前記サーバは前記第一ポートについて第一光モジュールを具備するとともに、前記第二ポートについて第二光モジュールを具備しており、前記ストレージは前記第三ポートについて第三光モジュールを具備するとともに、前記第四ポートについて第四光モジュールを具備し、前記第一経路は前記第一光モジュールと前記第三光モジュールを前記第一スイッチ経由で接続してなり、前記第二経路は前記第二光モジュールと前記第四光モジュールを前記第二スイッチ経由で接続してなる、請求項2に記載のストレージシステム。
【請求項4】
複数の経路を介してストレージと接続されるサーバであって、前記サーバは第一ポートと第二ポートを具備し、前記ストレージは第三ポートと第四ポートを具備し、前記サーバの第一ポートと前記ストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、前記サーバの第二ポートと前記ストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており、
前記サーバは、入出力処理を実行している前記第一経路に障害が発生すると、前記第一経路の不使用を決定し、
前記第一経路に係る前記第一ポートを検出し、
前記第一ポートを記述した前記入出力処理のキャンセルコマンドを生成して前記第二経路を介して前記ストレージに送信して、前記第一経路を介した前記入出力処理をキャンセルさせ、
前記ストレージ側での前記入出力処理のキャンセルが終了すると、前記第二経路を経由して前記入出力処理を再度実行する、
サーバ。
【請求項5】
サーバとストレージとを複数の経路で接続してなるストレージシステムに適用されるパス切替方法において、前記サーバは第一ポートと第二ポートを具備し、前記ストレージは第三ポートと第四ポートを具備し、前記サーバの第一ポートと前記ストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、前記サーバの第二ポートと前記ストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており、
前記サーバは、入出力処理を実行している前記第一経路に障害が発生すると、前記第一経路の不使用を決定し、
前記第一経路に係る前記第一ポートを検出し、
前記第一ポートを記述した前記入出力処理のキャンセルコマンドを生成して前記第二経路を介して前記ストレージに送信し、
前記ストレージは、前記入出力処理のキャンセルコマンドに基づいて、前記第一経路に係る前記第三ポートを検索し、
前記入出力処理のキャンセルコマンドに基づいて、前記サーバとの間の設けられた前記第一経路を介した前記入出力処理をキャンセルし、
前記サーバは、前記ストレージ側での前記入出力処理のキャンセルが終了すると、前記第二経路を経由して前記入出力処理を再度実行する、
パス切替方法。
【請求項6】
複数の経路を介してストレージと接続されるサーバのコンピュータに実装されるプログラムであって、前記サーバは第一ポートと第二ポートを具備し、前記ストレージは第三ポートと第四ポートを具備し、前記サーバの第一ポートと前記ストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、前記サーバの第二ポートと前記ストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており、
入出力処理を実行している前記第一経路に障害が発生すると、前記第一経路の不使用を決定し、
前記第一経路に係る前記第一ポートを検出し、
前記第一ポートを記述した前記入出力処理のキャンセルコマンドを生成して前記第二経路を介して前記ストレージに送信して、前記第一経路を介した前記入出力処理をキャンセルさせ、
前記ストレージ側での前記入出力処理のキャンセルが終了すると、前記第二経路を経由して前記入出力処理を再度実行する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバとストレージからなるストレージシステムに関し、特に、サーバとストレージ間の経路障害時のパス切替方法およびプログラムに関する。
【背景技術】
【0002】
ストレージシステムは、複数のストレージ(記憶装置)をLAN(Local Area Network)などで相互に接続して複数の記憶領域を統合して一元的に管理するものである。例えば、ストレージエリアネットワーク(SAN)システムが知られており、光インタフェースによりサーバとストレージを複数のパス(サーバ側ポート、ストレージ側ポートを接続する経路)で接続されている。サーバやコンピュータとストレージとをマルチパス接続してなるストレージシステムとして、特許文献1及び特許文献2が挙げられる。また、ネットワーク障害から復旧する技術として特許文献3が挙げられる。
【0003】
特許文献1は、ネットワークを介して記憶装置が接続されたストレージシステムを設計通りに構築するためのストレージシステム構築支援方法を開示しており、サーバとストレージとの間に複数のスイッチを経由するマルチパスが設定される。特許文献2は、ホスト計算機とストレージシステムを備える計算機システムにおいて障害発生時の処理遅延を減少させる論理パス切替方法を開示している。ホスト計算機は、論理ユニット(物理ディスクの記憶領域)へのアクセス経路である論理パスに障害が発生すると、正常な論理パスを選択して論理ユニットにアクセスする。また、特許文献3は、ルータがネットワーク障害を検出すると、当該障害に応じてルータのインタフェースのセットから高速障害通知メッセージをフラッディングする技術を開示している。高速障害通知メッセージのフラッディングは、ネットワーク障害を反映するためのルーティングテーブルの更新の完了に先立って実行される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005-18159号公報
【特許文献2】特開2007-265243号公報
【特許文献3】特許第5876493号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
複数のスイッチを経由してマルチパス接続されたサーバとストレージとの間で経路障害が発生すると、経路障害の通知や経路選択のために遅延時間が発生するため、経路障害時のサーバとストレージ間の処理遅れに起因して応答性能が劣化するという課題がある。特許文献1は、マルチパス環境下で複数のアクセスパスを介してデータを並列に伝送することによりデータ書込みとデータ読出しの高速化を図っているが、マルチパスの経路障害に対応するものではない。特許文献2は、障害が発生したパスの識別子と一致するパス接続情報テーブルのパス番号に係るレコードを選択し、代替パスを選択できた場合、ロードバランスポイント(ストレージが接続されるパスの切替ポイント)切替テーブルを更新し、管理サーバから障害原因箇所が通知されると障害対応処理を行う。特許文献2は、障害が発生したパスを代替パスに切り替えるだけであり、経路障害時のサーバやストレージ間の処理遅れに対応するものではない。特許文献3は、ルータのルーティングプロトコルとしてリンク状態IGP(Interior Gateway Protocol)を用いており、IGPモジュールにリンク障害を通知するメッセージが送られると、ルータのルーティングテーブル及び転送テーブルを更新してリンク障害を反映する。特許文献3は、リンク障害をルーティングテーブルに反映するだけであり、経路障害時のサーバやストレージ間の処理遅れに対応するものではない。
【0006】
本発明は、上述の課題を解決するストレージシステム、サーバ、パス切替方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第一の態様は、サーバとストレージとを複数の経路で接続してなるストレージシステムである。サーバは第一ポートと第二ポートを具備し、ストレージは第三ポートと第四ポートを具備し、サーバの第一ポートとストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路(第一パス)と、サーバの第二ポートとストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路(第二パス)を設置している。サーバは、入出力処理(IO)を実行している第一経路に障害が発生すると、第一経路の不使用を決定し、第一経路に係る第一ポートを検出し、第一ポートを記述した入出力処理のキャンセルコマンドを生成して第二経路を介してストレージに送信する。ストレージは、入出力処理のキャンセルコマンド(IOキャンセルコマンド)に基づいて、第一経路に係る第三ポートを検索し、サーバとの間に設けられた第一経路を介した入出力処理をキャンセルする(IOキャンセル)。サーバは、ストレージ側での入出力処理のキャンセルが終了すると、第二経路を経由して入出力処理を再度実行する(IOリトライ)。
【0008】
本発明の第二の態様は、複数の経路を介してストレージと接続されるサーバである。サーバは第一ポートと第二ポートを具備し、ストレージは第三ポートと第四ポートを具備し、サーバの第一ポートとストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、サーバの第二ポートとストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置している。サーバは、入出力処理(IO)を実行している第一経路に障害が発生すると、第一経路の不使用を決定し、第一経路に係る第一ポートを検出し、第一ポートを記述した入出力処理のキャンセルコマンド(IOキャンセルコマンド)を生成して第二経路を介してストレージに送信して、第一経路を介した入出力処理をキャンセルさせる。サーバ、ストレージ側での入出力処理のキャンセルが終了すると、第二経路を経由して入出力処理を再度実行する(IOリトライ)。
【0009】
本発明の第三の態様は、サーバとストレージとを複数の経路で接続してなるストレージシステムに適用される経路切替方法(パス切替方法)である。サーバは第一ポートと第二ポートを具備し、ストレージは第三ポートと第四ポートを具備し、サーバの第一ポートとストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、サーバの第二ポートとストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており。サーバは、入出力処理(IO)を実行している第一経路に障害が発生すると、第一経路の不使用を決定し、第一経路に係る第一ポートを検出し、第一ポートを記述した入出力処理のキャンセルコマンド(IOキャンセルコマンド)を生成して第二経路を介してストレージに送信する。ストレージは、入出力処理のキャンセルコマンドに基づいて、第一経路に係る第三ポートを検索し、サーバとの間の設けられた第一経路を介した入出力処理をキャンセルする。サーバは、ストレージ側での入出力処理のキャンセルが終了すると、第二経路を経由して入出力処理を再度実行する(IOリトライ)。
【0010】
本発明の第四の態様は、複数の経路を介してストレージと接続されるサーバのコンピュータに実装されるプログラムである。サーバは第一ポートと第二ポートを具備し、ストレージは第三ポートと第四ポートを具備し、サーバの第一ポートとストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、サーバの第二ポートとストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置している。サーバは、入出力処理(IO)を実行している第一経路に障害が発生すると、第一経路の不使用を決定し、第一経路に係る第一ポートを検出し、第一ポートを記述した入出力処理のキャンセルコマンド(IOキャンセルコマンド)を生成して第二経路を介してストレージに送信して、第一経路を介した入出力処理をキャンセルさせる。サーバは、ストレージ側での入出力処理のキャンセルが終了すると、第二経路を経由して入出力処理を再度実行する(IOリトライ)。
【発明の効果】
【0011】
本発明によれば、サーバとストレージがマルチパス接続されたストレージシステムにおいて、経路障害時のパス切替に伴う入出力(IO)時の応答性能を改善することができるという効果を奏する。
【図面の簡単な説明】
【0012】
【
図1】本発明の一実施形態に係るストレージシステムの概略構成を示す示すブロック図である。
【
図2】本発明の一実施形態に係るストレージシステムのパス切替方法を示すシーケンス図である。
【
図3】本発明の一実施形態に係るストレージシステムの詳細構成を示すブロック図である。
【
図4】本発明の一実施形態に係るストレージシステムのIOキャンセル手順を示すシーケンス図である。
【
図5】本発明の一実施形態に係るストレージシステムの最小構成を示すブロック図である。
【発明を実施するための形態】
【0013】
本発明に係るストレージシステム、サーバ、パス切替方法、およびプログラムについて実施形態とともに添付図面を参照して詳細に説明する。
【0014】
[ストレージシステムの概略構成]
図1は、本発明の一実施形態に係るストレージシステム1の概略構成を示す。ストレージシステム1は、サーバSV、複数の光インタフェースSFP10、SFP30、SFP40、SFP60、複数のスイッチ20、50、及びストレージ70を具備する。サーバSVには2台のHBA(Host Bus Adaptor)HBA1、HBA2が搭載されている。HBAはコンピュータ本体にストレージ(外部記憶装置)を接続する機能を有する装置であり、例えば、半導体チップやケーブル差込口(ポート)などで構成され、広義にはネットワークカード(NIC:Network Interface Card)、狭義にはSCSI(Small Computer System Interface)やFC(Fiber Channel)などの規格に対応したストレージ接続のためのインタフェースカードである。FCは、コンピュータ本体とストレージなどを結ぶ光ファイバーを用いた高速な接続規格であり、物理的仕様から伝送制御や通信プロトコルを規定しており、上位層としてSCICやIP(Internet Protocol)が用いられる。また、iSCIC(Internet SCIC)はコンピュータ本体とストレージの通信に用いられるSCSIコマンドをIPネットワークで経由する通信プロトコルであり、TCP/IP(Transmission Control Protocol/Internet Protocol)ベースのコンピュータネットワークにストレージ装置を直接に接続できる。SFP(Small Form-factor Pluggable)は光ファイバーを通信機器に接続する光トランシーバの規格であり、光トランシーバ(光モジュール)は通信機器が送受信する電気信号とケーブルを流れる光信号との相互変換を行う装置である。なお、コンピュータや通信機器が相手方の装置と接続できず通信できない状態を「リンクダウン」といい、相手方装置との通信可能な状態を「リンクアップ」という。
【0015】
図1において、サーバSVに搭載されたHBA1はSFP10を介してスイッチ20に接続され、スイッチ20はSFP30を介してストレージ70に接続される。同様に、サーバSVに搭載されたHBA2はSFP40を介してスイッチ50に接続され、スイッチ50はSFP60を介してストレージ70に接続される。このように、サーバSVとストレージ70との間に2つの経路が設置されており、マルチパス環境を実現している。サーバSVは、HBAから所定の経路を介してストレージ70へSCSIコマンドを送信する。
【0016】
上記のFCやiSCSIなどの通信規格によりパスが経路障害でリンクダウンした場合、例えば、ストレージ70から見てスイッチ20の接続先(SFP10とスイッチ20との間の経路)がリンクダウンしても、ストレージ70自体はリンクアップしているため、サーバSVから受けた入出力(IO)は仕掛り中のままとなる。特に、書込みIO(WriteIO)の場合、ストレージ70はサーバSVからのデータ受信待ちの状態となる。そのとき、他の正常なポートから同一のリトライIOが発生しても、ストレージ70の内部は書込状態(Write)のため、キャッシュメモリをロックしており、先行のIOがタイムアウトするまで、リトライIOは待ち状態となる。サーバSVがIOを発行させた経路でIOをキャンセルする必要があるが、経路障害のため、サーバSVからIOキャンセルは発行できない。そのため、ストレージ70のIOタイムアウトまで、ストレージ70側でIOの処理が滞留する。
【0017】
また、リンクダウンまで至らないCRCエラーなどの経路障害が発生する可能性がある。巡回冗長検査(CRC:Cyclic Redundancy Check)ではデータの送信や記憶が正確に実行されたか調べており、データの一部の欠落や変更があると「CRCエラー(データエラー)」が発生します。CRCエラーなどの経路障害では、サーバSVはパス切替えを行い、例えば、SFP10、スイッチ20、SFP30からなる経路を使用不可にして、SFP40、スイッチ50、SFP60からなる経路に切り替える。しかし、パス切替えにより対象のIOをキャンセルすることができるが、経路障害に係るポートを使用してIOキャンセル通知がストレージ70に到達する保証は無い。IOキャンセルは、サーバSVがIOを発行したパスから実施する必要があるが、IOキャンセル通知がCRCエラーの場合、IOキャンセル通知は破棄されるため、ストレージ70に到達せず、IOタイムアウトを待つことになる。また、正常な経路からLUN_ResetでIOキャンセルを行うシステムも存在する。LUN(Logical Unit Number)はSANにおいて複数の物理的なストレージ(ハードディスクやSSD)を識別する論理ユニット番号である。パスポリシーがラウンドロビン的な使用の場合、正常な経路から発行していたIOもキャンセルされるため、IOキャンセルが不要な経路についてのIOリセットとリトライIOの分の応答遅延が発生する。
【0018】
本発明は、ストレージ、スイッチ、サーバ間での経路障害でサーバ側でのパス切替えのとき、サーバとストレージが連携してIO応答遅延を低減させるよう構成される。つまり、障害経路を用いてサーバから発行されてストレージが仕掛っているIOを正常な経路からキャンセルすることで、ストレージが正常な経路からのリトライIOを速やかに受け付け、システムの応答遅延を低減するものである。
【0019】
[パス切替方法]
次に、本発明の一実施形態に係るストレージシステムのパス切替方法について説明する。
図3は、ストレージシステム1のパス切替方法を示すシーケンス図(ステップS10乃至S80)である。ストレージシステム1において、サーバSVはマルチパスソフトウェアを実装しているものとする。
【0020】
まず、サーバSVのHBA1は、所定パス(SFP10、スイッチ20、SFP30)を用いてストレージ70との間でIOを実施しているものとする。IO実施中にIOタイムアウトやIOエラーが発生すると、サーバSVのマルチパスソフトウェアは経路障害を検出し(S10)、HBA2との代替パス(SFP40、スイッチ50、SFP60)のみを使用するようにパス切替えを実施する(S20)。サーバSVのマルチパスソフトウェアは、パス切替元のパス(SFP10、スイッチ20、SFP30)におけるサーバ側のポートID(SFP10のポートID)と、ストレージ側のポートID(SFP30のポートID)をパス切替先のパス(SFP40、スイッチ50、SFP60)を用いてストレージ70に通知する(S30)。
【0021】
ストレージ70は、サーバSVからの通知を受領して、サーバ側のポートIDとストレージ側のポートIDが一致する経路をストレージ70内の全てのポートについて検索し(S40)、該当するストレージ側のポートIDに対応するサーバ側のポートIDに一致する仕掛りIOを内部でキャンセルする(S50)。ストレージ70は、パス切替先のパス(SFP40、スイッチ50、SFP60)を用いて、IOキャンセル完了をサーバSVに通知する。
【0022】
サーバSVは、パス切替先のパス(SFP40、スイッチ50、SFP60)を用いてIOリトライを実施する(S70)。ステップS50によりパス切替元から発行されたIOはキャンセルされているため、ストレージ70は、パス切替先から発行されたIOを即座に実施することができる。その後、サーバSVは、パス切替先のパス(SFP40、スイッチ50、SFP60)を用いてIOを実施する。
【0023】
[ストレージシステムの詳細構成]
図3は、本発明の一実施形態に係るストレージシステム2の詳細構成を示す。ストレージシステム2は、サーバ100、スイッチ200、300、ストレージ400より構成されている。サーバ100は2つのHBAポート160、170を具備しており、ストレージ400は2つのストレージポート440、450を具備している。HBAポート160、170はSFP規格に準拠したHBAであり、ストレージポート440、450は光インタフェースのSFP規格に準拠している。サーバ100は、HBAからFCやiSCSIなどを用いてSCSIコマンドを所定経路経由でストレージ400へ送信する。
【0024】
ストレージシステム2はマルチパス冗長構成を有しており、サーバ100とストレージ400とは2つのパスを経由してIO通信が可能な状態となっている。具体的には、HBAポート160、スイッチ200、ストレージポート440からなる第一パスと、HBAポート170、スイッチ300、ストレージポート450からなる第二パスとが設けられている。サーバ100は、例えば、CPUやGPUなどを用いて所定プログラムを実行することにより複数の機能部110乃至150を実現している。具体的には、パス切替部110、IOエラー検出部120、HBAポートID検出部130、ストレージポートID検出部140、IOキャンセルコマンド通信部150を具備している。同様に、ストレージ400もIOキャンセルコマンド通信部410、ID検索部420、IOキャンセル部430を具備している。
【0025】
サーバ100において、パス切替部110はマルチパス冗長性を管理しており、第一パス又は第二パスの何れを使用するか判定する。なお、第一パスと第二パスの両方を同時に使用可能としてもよい。IOエラー検出部120は、サーバ100がストレージ400に発行したIOが正常に終了したか、IOエラーで終了したかを監視している。IOエラー検出部120は、IOエラーを検出するとIOリトライを実施する。IOエラーが一定の閾値を超えて発生した場合や、特定のポートがリンクダウンした場合には、特定のパスを使用しないようにパス切替部110に通知する。パス切替部110は、IOエラー検出部120からの通知を受けて、特定パスを使用不可とし、代替パスを使用するようサーバ100の通信を制御する。
【0026】
サーバ100において、HBAポートID検出部130は、HBAポート固有の識別情報(ID)を取得する。ストレージポートID検出部140は、HBAから認識できるストレージポート固有の識別情報(ID)を取得する。IOキャンセルコマンド通信部150は、ストレージ400と通信を行って、IOキャンセルなどの特殊コマンドを送信する。ストレージ400において、IOキャンセルコマンド通信部410は、サーバ100のIOキャンセルコマンド通信部150と通信を行って、IOキャンセルなどの特殊コマンドを受信する。ID検索部420は、特殊コマンドで指定されたストレージポートのIDを検索する。IOキャンセル部430は、ID検索部420が検索したストレージポートについて、IOキャンセルなどの特殊コマンドで指定されたHBAポートのIDと一致するIOを検索し、当該IOをキャンセルする。
【0027】
次に、ストレージシステム2の具体的な動作について詳細に説明する。以下の説明では、サーバ100のHBAポート160でIOにCRCエラーが発生し、IOエラーがパス切替えの閾値に到達した場合について説明する。サーバ100において、IOエラー検出部120はIOエラーが閾値に達したことを検知し、パス切替部110にIOエラーに該当するHBAポート160のパスを使用しないよう通知する。これにより、パス切替部110はHBAポート170のパスのみを使用するようパス切替えを行う。このとき、HBAポート160で仕掛っているIOをHBAポート170から発行したとしても、ストレージ400ではIOが滞留している。特に、Writeコマンドでサーバ100からストレージ400にデータを特定アドレスに書き込むIOについて、ストレージ400がサーバ100からのデータを待っている場合や、CRCエラーによりデータが欠損した場合、ストレージ400の内部では全てのデータが揃わないので待ち状態となる。つまり、データ受信のタイムアウトなどでIOをストレージ400の内部でキャンセルされるまで、特定アドレスに対するWriteコマンドはストレージ400の内部で待たされることになる。本実施形態では、CRCエラーが発生する不安定な経路を使用せず、不安定なパスで発行されたIOのうちキャンセルが必要なIOのみを正常なパスからキャンセルする。
【0028】
サーバ100において、HBAポートID検出部130は、予め、HBAポート固有のIDを取得して記憶する。ストレージポートID検出部140は、予め、HBAポートから認識できるストレージポート固有のIDを取得して記憶する。
【0029】
パス切替部110がパス切替を行うとき、パス切替元で使用しなくするパスに係るHBAポート固有のIDをHBAポートID検出部130から取得し、当該パスに係るストレージポート固有のIDをストレージポートID検出部140から取得する。パス切替部110は、HBAポートのIDとストレージポートのIDをIOキャンセルコマンド通信部150に通知する。
【0030】
IOキャンセルコマンド通信部150は、IOキャンセルに係る特殊コマンドをストレージ400へ送信する。そのとき、HBAポートのIDとストレージポートのIDを特殊コマンドに入れてストレージ400へ送信する。ストレージ400において、IOキャンセルコマンド通信部410が特殊コマンドを受信すると、ID検索部420は、ストレージ400の全てのポートについて、特殊コマンドに記述されたストレージポートIDと一致するポートを検索し、どのポートがIOキャンセル対象かをIOキャンセル部430へ通知する。IOキャンセル部430は、ID検索部420により検索されたストレージポートについて仕掛っているIOのうち、特殊コマンドで指定されるHBAポートIDと一致するIOをキャンセルする。これにより、障害経路を使用せず、キャンセルする必要があるIOのみを選択的にキャンセルすることができる。
【0031】
[IOキャンセル手順]
次に、ストレージシステム2におけるパス切替えのときのIOキャンセルの手順について説明する。
図4は、IOキャンセルの手順を示したシーケンス図(ステップS100乃至S500)である。サーバ100のパス切替部110が、第一パス(HBAポート160、スイッチ200、ストレージポート440)から第二パス(HBAポート170、スイッチ300、ストレージポート450)へパス切替えを行うものとする。
【0032】
まず、サーバ100において、IOエラー検出部120は、IOエラーが閾値に達したことを検知し、パス切替部110に第一パスのHBAポート160をしないよう通知する(S100)。これにより、パス切替部110はパス切替えを実施し、HBAポートID検出部130からHBAポート160のIDを取得するとともに、ストレージポートID検出部140から第一パスに係るストレージポート440のIDを取得する(S200)。サーバ100は、HBAポート160のIDとストレージポート440のIDを記述したIOキャンセルコマンドを第二パス経由でストレージ400に通知する(S300)。
【0033】
ストレージ400において、ID検索部420は、IOキャンセルコマンドに基づいて、全てのストレージポートのうちからストレージポート440を検索して、IOキャンセル部430へ通知する(S400)。IOキャンセル部430は、IOキャンセルコマンドで指定されたHBAポート160に係るIOのみをキャンセルする(S500)。その後、サーバ100は第二パスを用いてストレージ400とIOを実行する(S600)。
【0034】
[ストレージシステムの最小構成]
次に、本実施形態に係るストレージシステムの最小構成について説明する。
図4は、最小構成を有するストレージシステム2のブロック図である。
図4において、
図3と同一の構成には同一の符号を付し、その説明を割愛する。
図4において、
図3に示したIOキャンセルコマンド通信部150、410は割愛しており、HBAポートID検出部130とストレージポートID検出部140は、ID検出部180として纏めている。つまり、ID検出部180は、予め、HBAポート固有のIDを取得して記憶するとともに、HBAポートから認識できるストレージポート固有のIDを取得して記憶する。パス切替部110がパス切替えを行うとき、パス切替元で使用しなくするパスに係るHBAポート固有のIDとストレージポート固有のIDをID検出部180から取得する。その後、サーバ100からストレージ400へIOキャンセルコマンドが送信される。IOキャンセルコマンドとして、特殊コマンドには、HBAポートのIDとストレージポートのIDが記述されている。
【0035】
従来、ストレージシステムにおける経路障害によるパス切替えでは、障害となったパスのIOキャンセルを適切な範囲で実施しておらず、IOリトライなどによる応答の遅延が発する。本発明は、障害となったパスではなく、正常な代替パスを用いてキャンセルが必要となったIOのみを選択的にキャンセルできる機構を備えている。すなわち、冗長パスを配置したサーバとストレージからなるシステム構成において、サーバ側の経路障害検出によってストレージに対するパスの切替えを行うとき、パス切替元のストレージポートでIO処理が仕掛っているため、キャンセルが必要なIOのみを正常なパス経由でキャンセルすることで、システム全体としての応答性能を経路障害に拘わらず確保することができる。
【0036】
本実施形態は、上述のFCやiSCSIなどの規格に準じたSCSIコマンドベースで設計されているが、その他に、NVMe(Non-Volatile Memory Express)などのSCSIベース以外であっても、サーバとストレージとの通信に用いるインタフェースであれば適用できる。NVMeは、PCIe(Peripheral Component Interface Express)で不揮発性の補助記憶装置を接続するためのインタフェース規格である。また、本実施形態では、CRCエラーによるIOタイムアウトについて説明したが、HBAとスイッチ間のリンクダウンについても適用可能である。
【0037】
上述の実施形態において、ストレージシステム(SANなど)は全体としてコンピュータシステムを形成しており、マルチパスソフトウェア、パス切替方法、IOキャンセル手順は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶される。コンピュータ(サーバなど)がプログラムを読み出して実行することによって、上記処理過程が実施される。コンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD-ROM、DVD-ROM、半導体メモリなどをいう。また、コンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータがプログラムを実行するようにしても良い。さらに、コンピュータシステムとは、オペレーティングシステム(OS)や基本入出力システム(BIOS:Basic Input/Output System)などのソフトウェアやサーバやストレージなどのハードウェアを含むものとする。
【0038】
また、上記プログラムは、このプログラムを記憶装置などに格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する伝送媒体は、インターネットなどのネットワーク(通信網)や電話回線などの通信回線のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、上述した機能の一部を実現するためのものであっても良い。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(又は、差分プログラム)であっても良い。
【0039】
最後に、本発明は上述の実施形態に限定されるものではなく、ストレージシステムの構成も
図1、
図3、
図5の構成に限定されるものではない。また、
図2、
図4に示した処理過程も一例であり、限定的なものではない。本発明は、添付した特許請求の範囲に定義される技術的範囲内での種々の変形例や設計変更及び改造を包含するものである。
【産業上の利用可能性】
【0040】
本発明は、サーバとストレージからなるストレージシステムにおける経路障害に起因するパス切替えを行うものであるが、上述のSAN環境に拘わらず、コンピュータと外部記憶装置とを通信接続してなるシステムにも適用可能である。
【符号の説明】
【0041】
1、2 ストレージシステム
10、30、40、60 SFP
20、50 スイッチ
70、400 ストレージ
100、SV サーバ
110 パス切替部
120 IOエラー検出部
130 HBAポートID検出部
140 ストレージポートID検出部
150 IOキャンセルコマンド通信部
160、170 HBAポート
180 ID検出部
200、300 スイッチ
410 IOキャンセルコマンド通信部
420 ID検索部
430 IOキャンセル部
440、450 ストレージポート
【手続補正書】
【提出日】2023-06-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
サーバとストレージとを複数の経路で接続してなるストレージシステムにおいて、前記サーバは第一ポートと第二ポートを具備し、前記ストレージは第三ポートと第四ポートを具備し、前記サーバの第一ポートと前記ストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、前記サーバの第二ポートと前記ストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており、
前記サーバは、入出力処理を実行している前記第一経路に障害が発生すると、前記第一経路の不使用を決定し、
前記第一経路に係る前記第一ポートを検出し、
前記第一ポートを記述した前記入出力処理のキャンセルコマンドを生成して前記第二経路を介して前記ストレージに送信し、
前記ストレージは、前記入出力処理のキャンセルコマンドに基づいて、前記第一経路に係る前記第三ポートを検索し、
前記入出力処理のキャンセルコマンドに基づいて、前記サーバとの間の設けられた前記第一経路を介した前記入出力処理をキャンセルし、
前記サーバは、前記ストレージ側での前記入出力処理のキャンセルが終了すると、前記第二経路を経由して前記入出力処理を再度実行し、
前記入出力処理をキャンセルすることは、前記入出力処理のうちの一部の入出力処理をキャンセルする、ストレージシステム。
【請求項2】
前記サーバと前記ストレージとは所定の通信規格で通信しており、前記サーバの第一ポートと第二ポートは夫々HBA(Host Bus Adaptor)により構成されている、請求項1に記載のストレージシステム。
【請求項3】
前記サーバと前記ストレージとは光ファイバーを経由して通信接続されており、前記サーバは前記第一ポートについて第一光モジュールを具備するとともに、前記第二ポートについて第二光モジュールを具備しており、前記ストレージは前記第三ポートについて第三光モジュールを具備するとともに、前記第四ポートについて第四光モジュールを具備し、前記第一経路は前記第一光モジュールと前記第三光モジュールを前記第一スイッチ経由で接続してなり、前記第二経路は前記第二光モジュールと前記第四光モジュールを前記第二スイッチ経由で接続してなる、請求項2に記載のストレージシステム。
【請求項4】
複数の経路を介してストレージと接続されるサーバであって、前記サーバは第一ポートと第二ポートを具備し、前記ストレージは第三ポートと第四ポートを具備し、前記サーバの第一ポートと前記ストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、前記サーバの第二ポートと前記ストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており、
前記サーバは、入出力処理を実行している前記第一経路に障害が発生すると、前記第一経路の不使用を決定し、
前記第一経路に係る前記第一ポートを検出し、
前記第一ポートを記述した前記入出力処理のキャンセルコマンドを生成して前記第二経路を介して前記ストレージに送信して、前記第一経路を介した前記入出力処理のうち一部の入出力処理をキャンセルさせ、
前記ストレージ側での前記入出力処理のキャンセルが終了すると、前記第二経路を経由して前記入出力処理を再度実行する、
サーバ。
【請求項5】
サーバとストレージとを複数の経路で接続してなるストレージシステムに適用されるパス切替方法において、前記サーバは第一ポートと第二ポートを具備し、前記ストレージは第三ポートと第四ポートを具備し、前記サーバの第一ポートと前記ストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、前記サーバの第二ポートと前記ストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており、
前記サーバは、入出力処理を実行している前記第一経路に障害が発生すると、前記第一経路の不使用を決定し、
前記第一経路に係る前記第一ポートを検出し、
前記第一ポートを記述した前記入出力処理のキャンセルコマンドを生成して前記第二経路を介して前記ストレージに送信し、
前記ストレージは、前記入出力処理のキャンセルコマンドに基づいて、前記第一経路に係る前記第三ポートを検索し、
前記入出力処理のキャンセルコマンドに基づいて、前記サーバとの間の設けられた前記第一経路を介した前記入出力処理をキャンセルし、
前記サーバは、前記ストレージ側での前記入出力処理のキャンセルが終了すると、前記第二経路を経由して前記入出力処理を再度実行し、
前記入出力処理をキャンセルすることは、前記入出力処理のうちの一部の入出力処理をキャンセルする、
パス切替方法。
【請求項6】
複数の経路を介してストレージと接続されるサーバのコンピュータに実装されるプログラムであって、前記サーバは第一ポートと第二ポートを具備し、前記ストレージは第三ポートと第四ポートを具備し、前記サーバの第一ポートと前記ストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、前記サーバの第二ポートと前記ストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており、 入出力処理を実行している前記第一経路に障害が発生すると、前記第一経路の不使用を決定し、
前記第一経路に係る前記第一ポートを検出し、
前記第一ポートを記述した前記入出力処理のキャンセルコマンドを生成して前記第二経路を介して前記ストレージに送信して、前記第一経路を介した前記入出力処理をキャンセルさせ、
前記ストレージ側での前記入出力処理のキャンセルが終了すると、前記第二経路を経由して前記入出力処理を再度実行し、
前記入出力処理をキャンセルすることは、前記入出力処理のうちの一部の入出力処理をキャンセルする、プログラム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0007
【補正方法】変更
【補正の内容】
【0007】
本発明の第一の態様は、サーバとストレージとを複数の経路で接続してなるストレージシステムである。サーバは第一ポートと第二ポートを具備し、ストレージは第三ポートと第四ポートを具備し、サーバの第一ポートとストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路(第一パス)と、サーバの第二ポートとストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路(第二パス)を設置している。サーバは、入出力処理(IO)を実行している第一経路に障害が発生すると、第一経路の不使用を決定し、第一経路に係る第一ポートを検出し、第一ポートを記述した入出力処理のキャンセルコマンドを生成して第二経路を介してストレージに送信する。ストレージは、入出力処理のキャンセルコマンド(IOキャンセルコマンド)に基づいて、第一経路に係る第三ポートを検索し、サーバとの間に設けられた第一経路を介した入出力処理をキャンセルする(IOキャンセル)。サーバは、ストレージ側での入出力処理のキャンセルが終了すると、第二経路を経由して入出力処理を再度実行する(IOリトライ)。入出力処理をキャンセルすることは、前記入出力処理のうちの一部の入出力処理をキャンセルすることである。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0008
【補正方法】変更
【補正の内容】
【0008】
本発明の第二の態様は、複数の経路を介してストレージと接続されるサーバである。サーバは第一ポートと第二ポートを具備し、ストレージは第三ポートと第四ポートを具備し、サーバの第一ポートとストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、サーバの第二ポートとストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置している。サーバは、入出力処理(IO)を実行している第一経路に障害が発生すると、第一経路の不使用を決定し、第一経路に係る第一ポートを検出し、第一ポートを記述した入出力処理のキャンセルコマンド(IOキャンセルコマンド)を生成して第二経路を介してストレージに送信して、第一経路を介した入出力処理のうち一部の入出力処理をキャンセルさせる。サーバ、ストレージ側での入出力処理のキャンセルが終了すると、第二経路を経由して入出力処理を再度実行する(IOリトライ)。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正の内容】
【0009】
本発明の第三の態様は、サーバとストレージとを複数の経路で接続してなるストレージシステムに適用される経路切替方法(パス切替方法)である。サーバは第一ポートと第二ポートを具備し、ストレージは第三ポートと第四ポートを具備し、サーバの第一ポートとストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、サーバの第二ポートとストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置しており。サーバは、入出力処理(IO)を実行している第一経路に障害が発生すると、第一経路の不使用を決定し、第一経路に係る第一ポートを検出し、第一ポートを記述した入出力処理のキャンセルコマンド(IOキャンセルコマンド)を生成して第二経路を介してストレージに送信する。ストレージは、入出力処理のキャンセルコマンドに基づいて、第一経路に係る第三ポートを検索し、サーバとの間の設けられた第一経路を介した入出力処理をキャンセルする。サーバは、ストレージ側での入出力処理のキャンセルが終了すると、第二経路を経由して入出力処理を再度実行する(IOリトライ)。入出力処理をキャンセルすることは、前記入出力処理のうちの一部の入出力処理をキャンセルすることである。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0010
【補正方法】変更
【補正の内容】
【0010】
本発明の第四の態様は、複数の経路を介してストレージと接続されるサーバのコンピュータに実装されるプログラムである。サーバは第一ポートと第二ポートを具備し、ストレージは第三ポートと第四ポートを具備し、サーバの第一ポートとストレージの第三ポートとを第一スイッチを経由して接続してなる第一経路と、サーバの第二ポートとストレージの第四ポートとを第二スイッチを経由して接続してなる第二経路を設置している。サーバは、入出力処理(IO)を実行している第一経路に障害が発生すると、第一経路の不使用を決定し、第一経路に係る第一ポートを検出し、第一ポートを記述した入出力処理のキャンセルコマンド(IOキャンセルコマンド)を生成して第二経路を介してストレージに送信して、第一経路を介した入出力処理をキャンセルさせる。サーバは、ストレージ側での入出力処理のキャンセルが終了すると、第二経路を経由して入出力処理を再度実行する(IOリトライ)。入出力処理をキャンセルすることは、前記入出力処理のうちの一部の入出力処理をキャンセルすることである。