IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日立ヴァンタラ株式会社の特許一覧

特許7553206ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法
<>
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図1
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図2
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図3
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図4
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図5
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図6
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図7
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図8
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図9
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図10
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図11
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図12
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図13
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図14
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図15
  • 特許-ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法
(51)【国際特許分類】
   G06F 13/10 20060101AFI20240910BHJP
   G06F 3/06 20060101ALI20240910BHJP
【FI】
G06F13/10 330C
G06F3/06 301F
G06F13/10 340A
【請求項の数】 8
(21)【出願番号】P 2023029495
(22)【出願日】2023-02-28
(65)【公開番号】P2024122129
(43)【公開日】2024-09-09
【審査請求日】2023-08-04
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】中浜 慧
(72)【発明者】
【氏名】揚妻 匡邦
(72)【発明者】
【氏名】鈴木 啓介
(72)【発明者】
【氏名】宮田 裕章
(72)【発明者】
【氏名】勝長 達平
【審査官】豊田 真弓
(56)【参考文献】
【文献】特開2016-57876(JP,A)
【文献】特開2005-276135(JP,A)
【文献】特開2006-172326(JP,A)
【文献】特開2023-015488(JP,A)
【文献】米国特許出願公開第2020/0026653(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
クラウドベースのストレージであるクラウドストレージと、該クラウドストレージに対するI/Oリクエストを処理するストレージノードと、を有するストレージシステムであって、
前記ストレージノードのプロセッサは、
前記I/Oリクエスト及び該I/Oリクエストに対して前記クラウドストレージから送信されたI/O応答に係る処理に用いる情報及びバッファを含むI/O資源を保持するI/O処理スレッドと、応答待機処理スレッドと、を実行し、
前記プロセッサは、
前記I/O処理スレッドによって、
ホストからの要求に応じて前記クラウドストレージに対して前記I/Oリクエストを送信し、
前記I/Oリクエストを前記クラウドストレージに対して送信してから第1のタイムアウト時間が経過するまで、該I/Oリクエストに対する前記I/O応答の受信を待機する待機処理を行い、
前記第1のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信した場合に、該I/O応答を前記ホストに転送し、
前記第1のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信しなかった場合に、前記I/O資源を前記応答待機処理スレッドに移動させて保持させ、
前記応答待機処理スレッドによって、
前記I/O処理スレッドから移動され前記応答待機処理スレッドに保持される前記I/O資源を用いて、前記クラウドストレージに対して前記I/O応答を要求する応答確認を送信し、前記I/O処理スレッドに代えて前記待機処理を行う
ことを特徴とするストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記プロセッサは、
前記I/O処理スレッドによって前記第1のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信しなかった場合に、
前記クラウドストレージの状態を、新規の前記I/Oリクエストを受け付け可能な通常状態から、新規の前記I/Oリクエストを受け付け不可能かつ前記応答確認のみ受け付け可能な仮閉塞状態に移行させる
ことを特徴とするストレージシステム。
【請求項3】
請求項2に記載のストレージシステムであって、
前記プロセッサは、
前記クラウドストレージの状態を前記仮閉塞状態にした回数を計測し、
前記回数が上限回数に到達した場合に、前記クラウドストレージを前記ストレージシステムから切り離す
ことを特徴とするストレージシステム。
【請求項4】
請求項2に記載のストレージシステムであって、
前記プロセッサは、
前記応答待機処理スレッドによって、
前記応答確認を前記クラウドストレージに対して送信してから第2のタイムアウト時間が経過するまで前記待機処理を行い、
前記第2のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信した場合に、
受信した前記I/O応答を前記ホストに転送し、
前記応答待機処理スレッドに保持される該I/O応答に係る前記I/O資源を開放する
ことを特徴とするストレージシステム。
【請求項5】
請求項4に記載のストレージシステムであって、
前記プロセッサは、
前記応答待機処理スレッドによって前記第2のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信した場合に、
前記クラウドストレージの状態を、前記仮閉塞状態から前記通常状態に移行させ、
前記クラウドストレージのデータを復元する差分リビルド処理を実行する
ことを特徴とするストレージシステム。
【請求項6】
請求項4に記載のストレージシステムであって、
前記プロセッサは、
前記応答待機処理スレッドによって前記第2のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信しなかった場合に、
前記クラウドストレージの状態を、前記仮閉塞状態から、前記I/Oリクエスト及び前記応答確認を受け付け不可能な閉塞状態に移行させ、
前記応答待機処理スレッドに保持される前記I/O応答に係る前記I/O資源を開放する
ことを特徴とするストレージシステム。
【請求項7】
請求項1に記載のストレージシステムであって、
前記応答待機処理スレッドは、待機リクエストキューと、待機リソースキューと、を有し、
前記プロセッサは、
前記応答待機処理スレッドによって、
前記I/O処理スレッドから移動された前記I/O資源を前記待機リクエストキューに保持し、
前記待機リクエストキューから前記待機リソースキューに前記I/O資源を移動させて、該I/O資源を用いる前記I/O応答に係る前記待機処理を実行する
ことを特徴とするストレージシステム。
【請求項8】
クラウドベースのストレージであるクラウドストレージと、該クラウドストレージに対するI/Oリクエストを処理するストレージノードと、を有するストレージシステムが実行するストレージシステムにおけるI/Oリクエスト処理方法であって、
前記ストレージノードのプロセッサは、
前記I/Oリクエスト及び該I/Oリクエストに対して前記クラウドストレージから送信されたI/O応答に係る処理に用いる情報及びバッファを含むI/O資源を保持するI/O処理スレッドと、応答待機処理スレッドと、を実行し、
前記プロセッサが、
前記I/O処理スレッドによって、
ホストからの要求に応じて前記クラウドストレージに対して前記I/Oリクエストを送信し、
前記I/Oリクエストを前記クラウドストレージに対して送信してから第1のタイムアウト時間が経過するまで、該I/Oリクエストに対する前記I/O応答の受信を待機する待機処理を行い、
前記第1のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信した場合に、該I/O応答を前記ホストに転送し、
前記第1のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信しなかった場合に、前記I/O資源を前記応答待機処理スレッドに移動させて保持させ、
前記応答待機処理スレッドによって、
前記I/O処理スレッドから移動され前記応答待機処理スレッドに保持される前記I/O資源を用いて、前記クラウドストレージに対して前記I/O応答を要求する応答確認を送信し、前記I/O処理スレッドに代えて前記待機処理を行う
ことを特徴とするストレージシステムにおけるI/Oリクエスト処理方法。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステム及びストレージシステムにおけるI/Oリクエスト処理方法に関する。
【背景技術】
【0002】
近年、パブリッククラウド、プライベートクラウド、及びオンプレミスの各環境を組合せて利用するハイブリッドクラウドが普及しつつある。例えばパブリッククラウドに構築したクラウドベースのストレージであるクラウドストレージと、プライベートクラウド又はオンプレミスに構築したホストとを含んで構成されたシステムがある。かかるシステムにおいて、クラウドストレージは、ホストからのI/O(Input/Output)要求に対してI/O応答の遅延を生じやすく、I/O応答のタイムアウトの発生によりI/O性能が低下する場合がある。
【0003】
そこで特許文献1に開示されるように、ホストからのI/Oリクエストに対してクラウドストレージからのI/O応答が遅延する際、ホストに対するI/O応答のタイムアウト前にホストにI/Oを再発行させてタイムアウトを抑止する技術が考案されている。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許第10481805号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、上述の従来技術では、ホストに対するI/O応答のタイムアウトを抑止できるものの、I/Oリクエストのタイムアウトの抑止中は他のI/Oリクエストが受け付けられず待機状態となるため、I/O性能が低下してしまうという問題があった。
【0006】
本発明の目的は、上述の従来技術の課題を考慮し、クラウドストレージにおいて、ホストからのI/Oリクエストに対するI/O応答のタイムアウトを抑止しつつI/O性能の低下を抑制することである。
【課題を解決するための手段】
【0007】
かかる課題を解決するため本発明の一態様では、クラウドベースのストレージであるクラウドストレージと、該クラウドストレージに対するI/Oリクエストを処理するストレージノードと、を有するストレージシステムであって、前記ストレージノードのプロセッサは、前記I/Oリクエスト及び該I/Oリクエストに対して前記クラウドストレージから送信されたI/O応答に係る処理に用いる情報及びバッファを含むI/O資源を保持するI/O処理スレッドと、応答待機処理スレッドと、を実行し、前記プロセッサは、前記I/O処理スレッドによって、ホストからの要求に応じて前記クラウドストレージに対して前記I/Oリクエストを送信し、前記I/Oリクエストを前記クラウドストレージに対して送信してから第1のタイムアウト時間が経過するまで、該I/Oリクエストに対する前記I/O応答の受信を待機する待機処理を行い、前記第1のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信した場合に、該I/O応答を前記ホストに転送し、前記第1のタイムアウト時間が経過するまでに前記クラウドストレージから前記I/O応答を受信しなかった場合に、前記I/O資源を前記応答待機処理スレッドに移動させて保持させ、前記応答待機処理スレッドによって、前記I/O処理スレッドから移動され前記応答待機処理スレッドに保持される前記I/O資源を用いて、前記クラウドストレージに対して前記I/O応答を要求する応答確認を送信し、前記I/O処理スレッドに代えて前記待機処理を行うことを特徴とする。
【発明の効果】
【0008】
本発明によれば、クラウドストレージにおいて、ホストからのI/Oリクエストに対するI/O応答のタイムアウトを抑止しつつI/O性能の低下を抑制できる。
【図面の簡単な説明】
【0009】
図1】ストレージシステムの構成の一例を示す図。
図2】ストレージノードの構成の一例を示す図。
図3】ストレージノードのメモリの構成の一例を示す図。
図4】ストレージノードの機能構成の一例と、実施形態の概要を示す図。
図5】待機リクエストキューテーブルの構成の一例を示す図。
図6】待機リソースキューテーブルの構成の一例を示す図。
図7】I/O処理スレッドテーブルの構成の一例を示す図。
図8】応答待機処理スレッドテーブルの構成の一例を示す図。
図9】クラウドストレージ状態管理テーブルの構成の一例を示す図。
図10】クラウドストレージの状態遷移の一例を示す図。
図11】リビルド要求フラグテーブルの構成の一例を示す図。
図12】クラウドストレージの応答タイムアウト時間テーブルの構成の一例を示す図。
図13】クラウドストレージ仮閉塞回数テーブルの構成の一例を示す図。
図14】クラウドストレージ仮閉塞上限回数テーブルの構成の一例を示す図。
図15】I/Oリクエスト処理の一例を示すシーケンス図。
図16】リビルド処理の一例を示すフローチャート。
【発明を実施するための形態】
【0010】
以下、図面を参照して本願開示に係る一実施形態を説明する。実施形態は、図面も含めて本願を説明するための例示である。実施形態では、説明の明確化のため、適宜、省略及び簡略化がされている。特に限定しない限り、実施形態の構成要素は単数でも複数でもよい。また、ある実施形態と他の実施形態を組み合わせた形態も、本願開示に係る実施形態に含まれる。
【0011】
以下の説明では、同一又は類似の構成要素には、同一の符号を付与し、後出の実施形態及び実施例では、説明を省略する、又は差分を中心とした説明のみを行う場合がある。また、同一又は類似の構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。各構成要素の数は、特に断りがない限り単数でも複数でもよい。
【0012】
以下の説明では、テーブルやキュー等の形式で各種情報を説明するが、各種情報はテーブルやキュー以外のデータ構造で表現されていてもよい。「XXテーブル」や「XXキュー」等は、データ構造に依存しないため、「XX情報」と呼ぶことができる。各種情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらは互換可能である。
【0013】
実施形態において、プログラムが行う処理について説明する場合がある。コンピュータは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))により、主記憶装置のメモリ等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。プロセッサがプログラムを実行することで、処理を行う機能部が実現される。
【0014】
同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であればよく、特定の処理を行う専用回路を含んでいてもよい。専用回路は、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)等である。
【0015】
プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読取り可能な非一時的な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源(ストレージ)を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施形態において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0016】
(ストレージシステムSの構成)
図1は、ストレージシステムSの構成の一例を示す図である。ストレージシステムSは、ストレージノード1、クラウドストレージ2、ホスト3、及び管理サーバ4を含んで構成される。ストレージノード1、クラウドストレージ2、及びホスト3のそれぞれの数は、任意である。
【0017】
ストレージノード1は、ホスト型、ハイパーバイザ型、コンテナ型等の仮想マシンで構成した仮想サーバであり、クラウドストレージ2上のデータのI/O及び管理に係る処理を行う各種プロセスを実行する。ストレージノード1同士は、Internode-Subnetを介して接続されている。
【0018】
クラウドストレージ2は、クラウド環境に構築されたクラウドベースの不揮発ストレージであり、仮想ボリューム又は物理ディスクを含んで構成される。各ストレージノード1には、1又は複数のクラウドストレージ2が接続されており、各ストレージクラスタが構成されている。
【0019】
ホスト3は、クラウドストレージ2に対するI/Oリクエストを、ネットワークN(Compute-Subnet)を介して送信する。ホスト3は、I/Oリクエストに対するI/O応答を、ネットワークN(Compute-Subnet)を介してクラウドストレージ2から受信する。
【0020】
管理サーバ4は、管理者が、ネットワークN(Management-Subnet)又は管理用ネットワーク(不図示)を介してストレージノード1及びクラウドストレージ2の保守管理等を行うためのサーバである。管理サーバ4は、クラウドストレージ2と直接接続されていてもよい。
【0021】
なお上述のCompute-Subnet、Internode-Subnet、及びManagement-Subnetは、同一でも異なっていてもよい。またCompute-Subnet、Internode-Subnet、及びManagement-Subnetは、Ethernet(登録商標、以下同様)/InfiniBand(登録商標、以下同様)/無線の何れでもよい。またネットワーク網や通信線は、冗長化されていてもよい。
【0022】
(ストレージノード1の構成)
図2は、ストレージノード1の構成の一例を示す図である。ストレージノード1は、プロセッサ11、メモリ12、ストレージ13、及び通信インターフェース14を含んで構成される。プロセッサ11は、ストレージ13からプログラムを読み出し、メモリ12と協働して後述の各スレッド及び処理機能部を実現する。
【0023】
通信インターフェース14は、1つ以上のHBA(Host Bus Adapter)と、1つ以上のNIC(Network Interface Card)を含む。HBAは、データサービスネットワーク(Fiber Channel/Ethernet/InfiniBand等の何れか)の通信インターフェースである。NICは、バックエンドネットワーク(上述のCompute-Subnet、Internode-Subnetに該当し、Fiber Channel/Ethernet/InfiniBand等の何れでもよい)の通信インターフェースである。
【0024】
(ストレージノードのメモリの構成)
図3は、ストレージノード1のメモリ12の構成の一例を示す図である。メモリ12には、I/O処理・死活監視委譲処理プログラム12a、I/O資源管理処理プログラム12b、応答遅延対応処理プログラム12c、死活監視処理プログラム12d、及びリビルド処理プログラム12eがストレージ13からロードされ格納されている。これらのプログラムの処理機能は、図15及び図16を参照して後述する。
【0025】
またメモリ12には、待機リクエストキューテーブル12T1、待機リソースキューテーブル12T2、I/O処理スレッドテーブル12T3、応答待機処理スレッドテーブル12T4、及びクラウドストレージ状態管理テーブル12T5が格納されている。またメモリ12には、リビルド要求フラグテーブル12T6、応答タイムアウト時間テーブル12T7、クラウドストレージ仮閉塞回数テーブル12T8、及びクラウドストレージ仮閉塞上限回数テーブル12T9が格納されている。これらのテーブルは、ストレージ13からロードされ、メモリ12に格納されている。これらのテーブルの詳細は、図5図14を参照して後述する。
【0026】
(ストレージノード1の機能構成と、実施形態の概要)
図4は、ストレージノード1の機能構成の一例と、実施形態の概要を示す図である。ストレージノード1は、I/O処理スレッド101、応答待機処理スレッド102、クラウドストレージゲートウェイ103、及び周期処理基盤104を有する。
【0027】
I/O処理スレッド101は、プロセッサ11がメモリ12と協働し、ストレージ13からメモリ12(図2)にロードしたI/O処理・死活監視委譲処理プログラム12a(図3)を実行したインスタンスである。
【0028】
I/O処理スレッド101は、ホスト3からのI/Oリクエストをクラウドストレージ2に転送し、I/Oリクエストに対するクラウドストレージ2からのI/O応答をホスト3に転送する。I/O処理スレッド101は、コンテキストID1211とバッファ1212とを有するI/O資源121をキューに格納している。コンテキストID1211は、バッファ1212に格納されているI/O資源121を用いてI/O処理を実行し、後述の応答待機処理スレッド102にI/O資源121を移動させた移動元のI/O処理スレッド101の識別情報である。バッファ1212は、I/Oデータを格納する格納領域である。
【0029】
応答待機処理スレッド102は、プロセッサ11がメモリ12と協働し、ストレージ13からメモリ12(図2)にロードしたI/O資源管理処理プログラム12b(図3)を実行したインスタンスである。
【0030】
応答待機処理スレッド102は、待機リクエストキューテーブル12T1と、待機リソースキューテーブル12T2と、を有する。応答待機処理スレッド102は、I/O処理スレッド101から移動されたI/O資源121を、待機リクエストキューテーブル12T1に保持する。また応答待機処理スレッド102は、待機リクエストキューテーブル12T1から待機リソースキューテーブル12T2にI/O資源121を移動させて保持し、待機リソースキューテーブル12T2に保持されるI/O資源121を用いてI/O応答を待機する。
【0031】
クラウドストレージゲートウェイ103は、プロセッサ11がメモリ12と協働し、ストレージ13からメモリ12(図2)にロードした応答遅延対応処理プログラム12cと死活監視処理プログラム12d(図3)を実行したインスタンスである。
【0032】
クラウドストレージゲートウェイ103は、I/O処理スレッド101、応答待機処理スレッド102、及び周期処理基盤104と連携してクラウドストレージ2に対して各種処理を実行する。
【0033】
周期処理基盤104は、メモリ12と協働し、ストレージ13からメモリ12(図2)にロードしたリビルド処理プログラム12e(図3)等を実行したインスタンスである。
【0034】
周期処理基盤104は、クラウドストレージ2に対して、クラウドストレージ2の仮閉塞状態から通常状態への復帰に伴うRAID(Redundant Array of Independent Disk)のデータ復元を実施するリビルド処理(図16)を実行する。
【0035】
以下、図4を参照して、本実施形態の概要を説明する。
【0036】
I/O処理スレッド101が送信したI/Oリクエストに対して、クラウドストレージ2からのI/O応答の遅延(I/O応答遅延)が発生したとする。I/O応答遅延は、ストレージノード1とクラウドストレージ2を接続する通信経路及びクラウドストレージ2内の通信経路を含むクラウドネットワークのトラフィック遅延により発生する。I/O応答遅延は、トラフィック改善等により自然回復する場合がある。自然回復を待つために、I/O処理の対象となっていたクラウドストレージ2が一時的に仮閉塞状態にされる(図4の(1)参照)。仮閉塞状態とは、新規のI/Oリクエストを受け付け不可能であり、I/O応答遅延が発生している既存のI/Oリクエストに対するI/O応答の確認(応答確認)のみが受け付け可能の状態である。
【0037】
次に、クラウドストレージ2のI/O応答遅延が自然回復した場合にI/O処理を継続させるために、処理継続に必要なI/O資源121(コンテキストID1211及びバッファ1212)を委譲する。具体的には、処理継続に必要なI/O資源121を、I/O処理スレッド101とは別に用意した応答待機処理スレッド102内に存在する待機リクエストキューテーブル12T1に移動し保持させる(図4の(2)参照)。
【0038】
待機リクエストキューテーブル12T1は、キュー構造を取り、複数のI/O処理スレッドに応対し、各I/O処理スレッド101から委譲されたI/O資源121をキューイングする。応答待機処理スレッド102は、1つのストレージノード1に1つ存在する。I/O処理スレッド101は、1つのストレージノード1に複数存在する(図4にはTh1~Th5の5つI/O処理スレッド101が示されている)。
【0039】
クラウドストレージ2の応答遅延の自然回復を待機している間、待機するI/O応答に対応するI/O資源121は、頻繁に参照される。待機リクエストキューテーブル12T1は、複数のI/O処理スレッド101からのキューのpush操作を受け、アクセス頻度が高くなるという不都合が生じる。
【0040】
この不都合を回避し、待機リクエストキューテーブル12T1のアクセス負荷を分散するため、待機リクエストキューテーブル12T1とは別に、クラウドストレージ2のI/O応答遅延を監視する際に参照される待機リソースキューテーブル12T2が設けられる。I/O処理の継続に必要なI/O資源121は、待機リクエストキューテーブル12T1から待機リソースキューテーブル12T2へ移動され、クラウドストレージ2からのI/O応答を待機する(図4の(3)参照)。
【0041】
その後応答待機処理スレッド102は、クラウドストレージ2のI/Oリクエストに対するI/O応答遅延が自然回復したことによって、クラウドストレージ2からのI/O応答を受信する。
【0042】
次に、クラウドストレージゲートウェイ103は、I/O応答遅延から復帰したクラウドストレージ2に対して第1のタイムアウト経過時とのデータの相違箇所を対象としたリビルドである差分リビルドを開始し、RAIDのデータ復元を実施する(図4の(4)参照)。
【0043】
なお差分リビルドは、図4の(1)で仮閉塞状態にした同一のクラウドストレージ2に対して実行される。これは、異なるクラウドストレージ2に対して差分リビルドが実行されると、データの偏在が発生し、I/O性能が低下するためである。
【0044】
次に、クラウドストレージゲートウェイ103は、クラウドストレージ2の差分リビルドが完了(図4の(5)参照)すると、該当のクラウドストレージ2をI/O処理に復帰させる(図4の(6)参照)。また応答待機処理スレッド102は、該当のI/O資源121を待機リソースキューテーブル12T2から解放する(図4の(7)参照)。
【0045】
(待機リクエストキューテーブル12T1の構成)
図5は、待機リクエストキューテーブル12T1の構成の一例を示す図である。待機リクエストキューテーブル12T1は、応答待機処理スレッド102にて保持されるI/O資源121の格納用コンテナであり、キュー構造(FIFO形式のデータ構造)を取る。複数のI/O処理スレッド101から、応答遅延が発生しているクラウドストレージ2に係るI/O資源121が追加される。待機リクエストキューテーブル12T1に格納されるI/O資源121の数は、任意である。
【0046】
待機リクエストキューテーブル12T1は、「INDEX」「格納要素」の列を有する。「INDEX」は、該当レコードの識別情報である。「格納要素」は、I/O資源121を格納する。
【0047】
(待機リソースキューテーブル12T2の構成)
図6は、待機リソースキューテーブル12T2の構成の一例を示す図である。待機リソースキューテーブル12T2は、応答待機処理スレッド102に保持されるI/O資源の格納用コンテナであり、キュー構造を取る。待機リクエストキューテーブル12T1に格納されているI/O資源121を先頭から順番に取得して自身のキューに順番に追加する。待機リソースキューテーブル12T2に格納されるI/O資源121の数は、任意である。
【0048】
待機リソースキューテーブル12T2は、「INDEX」「格納要素」の列を有する。「INDEX」は、該当レコードの識別情報である。「格納要素」は、I/O資源121を格納する。
【0049】
(I/O処理スレッドテーブル12T3の構成)
図7は、I/O処理スレッドテーブル12T3の構成の一例を示す図である。I/O処理スレッドテーブル12T3は、I/O処理スレッド101が実行する、ホスト3から送信されたI/Oリクエストを処理するI/O処理スレッド群を管理する。I/O処理スレッドテーブル12T3は、ストレージノード1毎に1つ存在する。I/O処理スレッド101の数は、動作環境に応じて任意である。
【0050】
I/O処理スレッドテーブル12T3は、「スレッド番号」「スレッドID」の列を有する。「スレッド番号」は、I/O処理スレッドテーブル12T3の各レコードの識別情報である。「スレッドID」は、各I/O処理スレッド101の識別情報である。
【0051】
(応答待機処理スレッドテーブル12T4の構成)
図8は、応答待機処理スレッドテーブル12T4の構成の一例を示す図である。応答待機処理スレッドテーブル12T4は、応答待機処理スレッド102が実行する応答待機処理スレッドを管理する。
【0052】
応答待機処理スレッドテーブル12T4は、「スレッド番号」「スレッドID」の列を有する。「スレッド番号」は、応答待機処理スレッドテーブル12T4のレコードの識別情報である。「スレッドID」は、応答待機処理スレッド102の識別情報である。
【0053】
なお本実施形態では、応答待機処理スレッド102は、1つのストレージノード1あたり1つである。よって図8に例示する応答待機処理スレッドテーブル12T4は、1レコードである。しかし応答待機処理スレッドは、1つのストレージノード1あたり複数でもよい。
【0054】
(クラウドストレージ状態管理テーブル12T5の構成)
図9は、クラウドストレージ状態管理テーブル12T5の構成の一例を示す図である。図10は、クラウドストレージの状態遷移の一例を示す図である。
【0055】
クラウドストレージ状態管理テーブル12T5は、「クラウドストレージID」「状態」の列を有する。「クラウドストレージID」は、クラウドストレージ2の識別情報である。「状態」は、「クラウドストレージID」に対応するクラウドストレージ2の“状態”である。
【0056】
図10を参照して、クラウドストレージ2の“状態”について説明する。図10に示すように、最初、クラウドストレージ2がストレージノード1に認識されたタイミングではNORMAL状態(状態12T52)である。NORMAL状態は、クラウドストレージ2が正常状態であり、ホスト3からI/Oリクエストを受け付けている状態である。
【0057】
NORMAL状態(状態12T52)のクラウドストレージ2にI/O応答遅延が発生すると、TEMPORARY BLOCKADE状態(仮閉塞状態)(状態12T53)に遷移する(状態遷移12T54)。TEMPORARY BLOCKADE状態では、ホスト3からのI/Oリクエストを受け付けていないが、ストレージノード1からの応答要求は受け付けている。クラウドストレージ2は、I/O応答遅延が自然回復するケースでは、リビルド処理を実行することでNORMAL状態(状態12T52)に復帰することができる(状態遷移12T55)。
【0058】
TEMPORARY BLOCKADE状態(状態12T53)では、クラウドストレージ2は、I/O応答遅延がタイムアウト時間以内に解消されなかった場合、BLOCAKDE状態(閉塞状態)(状態12T56)に遷移する(状態遷移12T57)。BLOCAKDE状態の時、クラウドストレージ2はホスト3からのI/Oリクエストもストレージノード1からの応答要求も受け付けない。
【0059】
(リビルド要求フラグテーブル12T6の構成)
図11は、リビルド要求フラグテーブル12T6の構成の一例を示す図である。リビルド要求フラグテーブル12T6は、「クラウドストレージID」「フラグ値」の列を有する。
【0060】
「クラウドストレージID」は、クラウドストレージ2の識別情報である。「フラグ値」は、クラウドストレージ2毎に管理されるフラグ値であり、trueは該当のクラウドストレージ2のリビルド処理の要求ありを示し、falseは要求なしを示す。周期処理基盤104(図4)は、任意の周期でリビルド要求フラグを監視し、リビルド要求フラグがtrueであるクラウドストレージ2に対してリビルド処理を実行する。
【0061】
(クラウドストレージの応答タイムアウト時間テーブル12T7)
図12は、クラウドストレージの応答タイムアウト時間テーブル12T7の構成の一例を示す図である。応答タイムアウト時間テーブル12T7は、クラウドストレージ2から得られる応答に関するタイムアウト時間を管理する。応答タイムアウト時間テーブル12T7は、1つのストレージシステムSあたりで1つ又は複数個である。
【0062】
応答タイムアウト時間テーブル12T7は、「タイムアウト種別」「タイムアウト時間」の列を有する。「タイムアウト種別」には、“最大応答待ち時間(第1のタイムアウト時間)”と“最大応答遅延回復待ち時間(第2のタイムアウト時間)”がある。
【0063】
“最大応答待ち時間”は、ストレージノード1のI/O処理スレッド101がI/Oリクエストを発行し、I/Oリクエストに対してクラウドストレージ2から送信されたI/O応答がI/O処理スレッド101に受信されるまでの最大待ち時間を表す。I/O処理スレッド101がI/Oリクエストを発行してから“最大応答待ち時間”を超過してもI/O応答がI/O処理スレッド101に受信されない場合、該当のクラウドストレージ2は応答遅延が発生していると判定される。そして該当のクラウドストレージ2は、クラウドストレージゲートウェイ103により仮閉塞状態へと遷移させられる。“最大応答待ち時間”は、任意の時間が設定される。
【0064】
“最大応答遅延回復待ち時間(第2のタイムアウト時間)”は、仮閉塞状態であるクラウドストレージ2の応答遅延が自然回復するまでの最大待ち時間を表す。応答待機処理スレッド102が応答確認要求を送信してから“最大応答遅延回復待ち時間”を経過しても、クラウドストレージ2のI/O応答の遅延が自然回復しないときには、I/O応答は応答待機処理スレッド102に受信されない。この場合には、該当のクラウドストレージ2を閉塞状態にさせる。“最大応答遅延回復待ち時間(第2のタイムアウト時間)”は、任意の時間が設定される。
【0065】
なお応答タイムアウト時間テーブル12T7は、個別のストレージノード1及びクラウドストレージ2に関わらず一律の値でも、ストレージノード1又はクラウドストレージ2毎に異なる値でもよい。
【0066】
(クラウドストレージ仮閉塞回数テーブル12T8の構成)
図13は、クラウドストレージ仮閉塞回数テーブル12T8の構成の一例を示す図である。クラウドストレージ仮閉塞回数テーブル12T8は、ストレージノード1毎に、配下の各クラウドストレージ2の仮閉塞回数を管理する。
【0067】
クラウドストレージ仮閉塞回数テーブル12T8は、「クラウドストレージID」「仮閉塞回数」の列を有する。「クラウドストレージID」は、クラウドストレージの識別情報である。「仮閉塞回数」は、該当のクラウドストレージ2がI/O応答遅延を発生させる毎にカウントアップされるので、過去にI/O応答遅延を発生し仮閉塞状態に遷移した回数を示す。
【0068】
(クラウドストレージ仮閉塞上限回数テーブル12T9)
図14は、クラウドストレージ仮閉塞上限回数テーブル12T9の構成の一例を示す図である。クラウドストレージ仮閉塞上限回数テーブル12T9は「クラウドストレージID」「上限回数」の列を有する。
【0069】
「クラウドストレージID」は、クラウドストレージの識別情報である。「上限回数」は、クラウドストレージ2が仮閉塞状態に移行される上限回数である。クラウドストレージ2は、I/O応答遅延を引き起こした際に、「仮閉塞回数」が「上限回数」に到達した場合に、仮閉塞状態に遷移させずに、該当のクラウドストレージ2はストレージシステムSから切り離される。
【0070】
(実施形態に係るI/Oリクエスト処理)
図15は、I/Oリクエスト処理の一例を示すシーケンス図である。
【0071】
以下で説明するステップS12、S16、S17、S23、及びS24は、I/O処理・死活監視委譲処理プログラム12a(図2)による処理である。またステップS25、S26、S27、S28、S29、S35、S36、S37、S40、及びS41は、I/O資源管理処理プログラム12b(図2)による処理である。またステップS13、S14、S15、S18、S19、S20、S21、及びS22は、応答遅延対応処理プログラム12c(図2)による処理である。またステップS30、S31、S32、S33、S34、S38、及びS39は、死活監視処理プログラム12d(図2)による処理である。
【0072】
先ずステップS11では、ホスト3は、I/Oリクエストの要求をI/O処理スレッド101(図4)に送信する。次にステップS12では、I/O処理スレッド101は、ホスト3からのI/Oリクエスト要求に応じて、クラウドストレージ2に対してI/Oリクエストを送信する。次にステップS13では、クラウドストレージゲートウェイ103は、I/O処理スレッド101から受信したI/Oリクエストをクラウドストレージ2へ転送する。
【0073】
ステップS14では、クラウドストレージゲートウェイ103は、クラウドストレージ2から、ステップS13で転送したI/Oリクエストに対するI/O応答を、最大応答待ち時間内(図12)に受信したかを判定する。クラウドストレージゲートウェイ103は、I/O応答を最大応答待ち時間内に受信した場合(ステップS14YES)にステップS15に処理を移し、最大応答待ち時間内に受信できなかった場合(ステップS14NO)にステップS18に処理を移す。
【0074】
ステップS15では、クラウドストレージゲートウェイ103は、受信したI/O応答をI/O処理スレッド101に転送する。
【0075】
次にステップS16では、I/O処理スレッド101は、ステップS12で発行したI/Oリクエストに対するI/O応答を、最大応答待ち時間内(図12)に受信したかを判定する。I/O処理スレッド101は、I/O応答を最大応答待ち時間内に受信した場合(ステップS16YES)にステップS17に処理を移し、最大応答待ち時間内に受信できなかった場合(ステップS16NO)にステップS23に処理を移す。
【0076】
なおステップS12とステップS13は、同時と見なしてよい。またステップS14とステップS16は、同時と見なしてよい。
【0077】
ステップS17では、I/O処理スレッド101は、ステップS16で受信したI/O応答をホスト3に転送する。ステップS15及びS17が終了すると、I/Oリクエスト処理は終了する。
【0078】
ステップS18では、クラウドストレージゲートウェイ103は、仮閉塞回数のカウンタ変数値≧上限回数(図14)かを判定する。クラウドストレージゲートウェイ103は、仮閉塞回数のカウンタ変数値≧上限回数の場合にステップS19に処理を移し、仮閉塞回数のカウンタ変数値<上限回数の場合にステップS20に処理を移す。
【0079】
ステップS19では、クラウドストレージゲートウェイ103は、ステップS14で最大応答待ち時間内(図12)にI/O応答を受信できなかった該当のクラウドストレージ2をストレージシステムSから切り離す。具体的には、クラウドストレージゲートウェイ103は、該当するクラウドストレージ2をデータのI/O及び管理対象から抹消し、ストレージノード1との接続を切断する。該当するクラウドストレージ2に対応する情報をクラウドストレージ状態管理テーブル12T5(図9)から消去してもよい。
【0080】
次にステップS20では、クラウドストレージゲートウェイ103は、仮閉塞回数のカウンタ変数値に1を加算する。次にステップS21では、クラウドストレージゲートウェイ103は、ステップS14で最大応答待ち時間内(図12)にI/O応答を受信できなかった該当のクラウドストレージ2の状態を、通常状態から仮閉塞状態に状態遷移させる。
【0081】
次にステップS22では、クラウドストレージゲートウェイ103は、I/O処理スレッド101に対して第1のタイムアウト応答を送信する。第1のタイムアウトとは、ステップS14で最大応答待ち時間内(図12)にI/O応答を受信できなかったことをいう。
【0082】
次にステップS23では、I/O処理スレッド101は、クラウドストレージゲートウェイ103から第1のタイムアウト応答を受信する。
【0083】
次にステップS24では、I/O処理スレッド101は、I/O応答に係るI/O資源121(図4図5)をI/O処理スレッド101内のキューから応答待機処理スレッド102に移動させる。これにより、I/O処理スレッド101は、I/O応答の受信を待機する待機処理を応答待機処理スレッド102に委譲する。
【0084】
ステップS25では、応答待機処理スレッド102は、応答待機処理スレッド102内の待機リソースキューテーブル12T2(図4図6)にI/O資源121が格納されているI/Oリクエストが存在するかを判定する。応答待機処理スレッド102は、待機リソースキューテーブル12T2にI/O資源121が格納されているI/Oリクエストが存在する場合(ステップS25YES)にステップS28に処理を移す。一方応答待機処理スレッド102は、待機リソースキューテーブル12T2にI/O資源121が格納されているI/Oリクエストが存在しない場合(ステップS25NO)にステップS26に処理を移す。
【0085】
ステップS26では、応答待機処理スレッド102は、応答待機処理スレッド102内の待機リクエストキューテーブル12T1(図4図5)に、ステップS24で移動されたI/O資源121が格納されているI/Oリクエストが存在するかを判定する。応答待機処理スレッド102は、待機リクエストキューテーブル12T1にI/O資源121が格納されているI/Oリクエストが存在する場合(ステップS26YES)にステップS27に処理を移す。一方応答待機処理スレッド102は、待機リクエストキューテーブル12T1にI/O資源121が格納されているI/Oリクエスト存在しない場合(ステップS26NO)にステップS25に処理を戻す。
【0086】
ステップS27では、応答待機処理スレッド102は、待機リクエストキューテーブル12T1から先頭のI/O資源121を取り出し、待機リソースキューテーブル12T2の末尾に追加する。
【0087】
ステップS28では、応答待機処理スレッド102は、待機リソースキューテーブル12T2から先頭のI/O資源121を取得する。次にステップS29では、応答待機処理スレッド102は、ステップS28で取得したI/O資源121を用いるI/O応答を該当のクラウドストレージ2に要求する応答確認要求を送信する。
【0088】
次にステップS30では、クラウドストレージゲートウェイ103は、応答待機処理スレッド102からの応答確認要求に応じて、クラウドストレージ2に対してI/O応答を要求する応答確認を送信する。次にステップS31では、クラウドストレージゲートウェイ103は、待機リソースキューテーブル12T2からステップS28と同様のI/O資源121を取得し、I/O応答の待機処理を開始する。クラウドストレージゲートウェイ103は、ステップS30及びS31を、応答確認に係るI/O応答を受信するまで、又は最大応答遅延回復待ち時間が経過するまでに、一定間隔で繰り返す。
【0089】
次にステップS32では、クラウドストレージゲートウェイ103は、クラウドストレージ2から、ステップS30で送信した応答確認に係るI/O応答を、最大応答遅延回復待ち時間内(図12)に受信したかを判定する。クラウドストレージゲートウェイ103は、応答確認に係るI/O応答を、最大応答遅延回復待ち時間内に受信した場合(ステップS32YES)にステップS33に処理を移し、受信できなかった場合(ステップS32NO)にステップS38に処理を移す。
【0090】
ステップS33では、クラウドストレージゲートウェイ103は、ステップS32で受信したI/O応答を応答待機処理スレッド102に転送する。次にステップS34では、クラウドストレージゲートウェイ103は、リビルド要求フラグテーブル12T6(図11)において該当のクラウドストレージ2に対応するリビルド要求フラグに“true”をセットする。
【0091】
ステップS35では、応答待機処理スレッド102は、ステップS33でクラウドストレージゲートウェイ103から転送されたI/O応答を、最大応答遅延回復待ち時間内に受信したかを判定する。応答待機処理スレッド102は、I/O応答を最大応答遅延回復待ち時間内に受信した場合(ステップS35YES)にステップS36に処理を移し、受信できなかった場合(ステップS35NO)にステップS40に処理を移す。
【0092】
なおステップS29とステップS30は、同時と見なしてよい。またステップS32とステップS35は、同時と見なしてよい。
【0093】
ステップS36では、応答待機処理スレッド102は、ステップS35で受信したI/O応答をホスト3に転送する。次にステップS37では、応答待機処理スレッド102は、ステップS35で受信したI/O応答の処理に係るI/O資源121を待機リソースキューテーブル12T2(図6)から削除する。
【0094】
一方ステップS38では、クラウドストレージゲートウェイ103は、ステップS32で最大応答遅延回復待ち時間内(図12)にI/O応答を受信できなかったクラウドストレージ2の状態を仮閉塞状態から閉塞状態に状態遷移させる。次にステップS39では、クラウドストレージゲートウェイ103は、応答待機処理スレッド102に対して第2のタイムアウト応答を送信する。第2のタイムアウトとは、ステップS32で最大応答遅延回復待ち時間(第2のタイムアウト時間)内(図12)にI/O応答を受信できなかったことをいう。
【0095】
次にステップS40では、応答待機処理スレッド102は、クラウドストレージゲートウェイ103から受信した第2のタイムアウト応答をホスト3に転送する。次にステップS41では、応答待機処理スレッド102は、ステップS40で受信した第2のタイムアウトに係るI/O資源121を待機リソースキューテーブル12T2(図6)から削除する。
【0096】
(実施形態に係るリビルド処理)
図16は、リビルド処理の一例を示すフローチャートである。リビルド処理は、周期処理基盤104(図4)によるリビルド処理プログラム12e(図3)の周期的実行によって実現される。
【0097】
先ずステップS51では、周期処理基盤104は、リビルド要求フラグテーブル12T6(図11)のリビルド要求フラグを確認する。次にステップS52では、周期処理基盤104は、各クラウドストレージIDのクラウドストレージ2について、ステップS51でリビルド要求フラグが“true”であると確認されたかを判定する。周期処理基盤104は、ステップS51でリビルド要求フラグが“true”(ステップS52YES)であると確認されたクラウドストレージ2についてはステップS53に処理を移す。一方周期処理基盤104は、リビルド要求フラグが“false”(ステップS52NO)であると確認されたクラウドストレージ2については本リビルド処理を終了する。
【0098】
ステップS53では、周期処理基盤104は、リビルド要求フラグが“true”に該当するクラウドストレージ2に対して差分リビルド処理を実施する。
【0099】
なお本リビルド処理では、周期処理基盤104は、I/Oリクエスト処理(図15)におけるステップS32~S34のクラウドストレージ2の仮閉塞状態からのI/O応答の復活を契機として、ステップS53で差分リビルドを実施している。このため、クラウドストレージ2は、冗長度の回復をより短時間で行うことができる。周期処理基盤104は、I/Oリクエスト処理におけるステップS38のクラウドストレージ2の閉塞状態への状態遷移を契機としてクラウドストレージ2に含まれる全データのリビルドであるフルリビルドを実施してもよい。しかし、クラウドストレージ2の仮閉塞状態からのI/O応答の復活を契機とする差分リビルトと比較して、冗長度の回復にさらに時間がかかることになる。
【0100】
(実施形態の効果)
上述の実施形態では、I/O処理スレッド101は、ホスト3からのI/Oリクエストに対して、第1のタイムアウト時間が経過するまでにクラウドストレージ2からI/O応答を受信しなかった場合、I/O資源121を応答待機処理スレッド102に移動させる。そして応答待機処理スレッド102は、移動されたI/O資源121を用いて、クラウドストレージ2に対してI/O応答を要求する応答確認を送信し、I/O処理スレッド101に代えてI/O応答の待機処理を行う。
【0101】
よって実施形態によれば、I/O応答遅延が発生しているクラウドストレージ2をI/O処理スレッド101の処理対象から除外し、応答待機処理スレッド102によってI/O応答の受信待機を継続するので、ホスト3に対するI/O性能の低下を抑制できる。
【0102】
また上述の実施形態では、I/O処理スレッド101は、第1のタイムアウト時間が経過するまでにクラウドストレージ2からI/O応答を受信しなかった場合、クラウドストレージ2の状態を遷移させる。すなわち、新規のI/Oリクエストを受け付け可能な通常状態から、新規のI/Oリクエストを受け付け不可能かつ応答確認のみ受け付け可能な仮閉塞状態に移行させる。
【0103】
よって実施形態によれば、I/O応答遅延が発生しているクラウドストレージ2に対して新たなI/Oリクエストを受け付けさせずI/O応答に集中させることで、ホスト3に対するI/O性能の低下を一層抑制できる。
【0104】
また上述の実施形態では、クラウドストレージ2の状態を仮閉塞状態にした回数が上限回数に到達した場合に、該当のクラウドストレージ2をストレージシステムSから切り離す。
【0105】
よって実施形態によれば、頻繁にI/O応答遅延が発生するクラウドストレージ2をストレージシステムSから除外することで、I/O応答遅延の頻発を回避することができる。
【0106】
また上述の実施形態では、応答待機処理スレッド102は、第2のタイムアウト時間が経過するまでにクラウドストレージ2から受信したI/O応答をホスト3に転送し、応答待機処理スレッド102に保持されるI/O応答に係るI/O資源121を開放する。
【0107】
よって実施形態によれば、応答待機処理スレッド102がI/O応答の受信を待機する時間に制限を設けることで、I/O応答の受信待機が無制限に滞留することを防止できる。
【0108】
また上述の実施形態では、応答待機処理スレッド102は、第2のタイムアウト時間が経過するまでにクラウドストレージ2からI/O応答を受信した場合、クラウドストレージ2の状態を仮閉塞状態から通常状態に移行させ、差分リビルド処理を実行する。
【0109】
よって実施形態によれば、クラウドストレージ2がI/O応答遅延から復帰した際に、差分リビルドによって、早期に冗長度を回復させることができる。
【0110】
また上述の実施形態では、応答待機処理スレッド102は、第2のタイムアウト時間が経過するまでにクラウドストレージ2からI/O応答を受信しなかった場合、クラウドストレージ2の状態を遷移させる。すなわち、仮閉塞状態から、I/Oリクエスト及び応答確認を受け付け不可能な閉塞状態に移行させる。すなわち、応答待機処理スレッド102が制限時間内にI/O応答を受信できないクラウドストレージ2を閉塞状態にしてフルリビルドが実行されるようにする。
【0111】
よって実施形態によれば、応答待機処理スレッド102がI/O応答を待機し続けるよりも早期にストレージシステムSを正常状態に復帰させることができる。
【0112】
また上述の実施形態では、応答待機処理スレッド102は、待機リクエストキュー(待機リクエストキューテーブル12T1)と、待機リソースキュー(待機リソースキューテーブル12T2)と、を有する。そして応答待機処理スレッド102は、I/O処理スレッド101から移動されたI/O資源121を待機リクエストキューに保持し、待機リクエストキューから待機リソースキューに移動させたI/O資源121を用いてI/O応答に係る待機処理を実行する。
【0113】
よって実施形態によれば、I/O応答の応答確認及び受信待機の際に、I/O資源121を保持するキューへのアクセスの負荷分散を図り、I/O応答の受信待機処理を遅滞なく行い、クラウドストレージ2のI/O応答遅延からの早期復帰を実現できる。
【0114】
以上、本願開示に係る一実施形態について詳述したが、本願開示は上述の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、上述の実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また上述の実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0115】
また上述の各構成、機能部、処理部、処理手段、スレッド等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また上述の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0116】
また上述の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【0117】
また上述したストレージシステムS、ストレージノード1、及びクラウドストレージ2の各機能及びデータの配置形態は一例に過ぎない。各機能及びデータの配置形態は、ハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から最適な配置形態に変更し得る。
【符号の説明】
【0118】
1:ストレージノード、2:クラウドストレージ、3:ホスト、4:管理サーバ、11:プロセッサ、12:メモリ、12T1:待機リクエストキューテーブル、12T2:待機リソースキューテーブル、101:I/O処理スレッド、102:応答待機処理スレッド、121:I/O資源、S:ストレージシステム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16