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

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

▶ 株式会社日立製作所の特許一覧

特開2023-103850ストレージシステム、連携方法、およびプログラム
<>
  • 特開-ストレージシステム、連携方法、およびプログラム 図1
  • 特開-ストレージシステム、連携方法、およびプログラム 図2
  • 特開-ストレージシステム、連携方法、およびプログラム 図3
  • 特開-ストレージシステム、連携方法、およびプログラム 図4
  • 特開-ストレージシステム、連携方法、およびプログラム 図5
  • 特開-ストレージシステム、連携方法、およびプログラム 図6
  • 特開-ストレージシステム、連携方法、およびプログラム 図7
  • 特開-ストレージシステム、連携方法、およびプログラム 図8
  • 特開-ストレージシステム、連携方法、およびプログラム 図9
  • 特開-ストレージシステム、連携方法、およびプログラム 図10
  • 特開-ストレージシステム、連携方法、およびプログラム 図11
  • 特開-ストレージシステム、連携方法、およびプログラム 図12
  • 特開-ストレージシステム、連携方法、およびプログラム 図13
  • 特開-ストレージシステム、連携方法、およびプログラム 図14
  • 特開-ストレージシステム、連携方法、およびプログラム 図15
  • 特開-ストレージシステム、連携方法、およびプログラム 図16
  • 特開-ストレージシステム、連携方法、およびプログラム 図17
  • 特開-ストレージシステム、連携方法、およびプログラム 図18
  • 特開-ストレージシステム、連携方法、およびプログラム 図19
  • 特開-ストレージシステム、連携方法、およびプログラム 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023103850
(43)【公開日】2023-07-27
(54)【発明の名称】ストレージシステム、連携方法、およびプログラム
(51)【国際特許分類】
   G06F 11/20 20060101AFI20230720BHJP
   G06F 3/06 20060101ALI20230720BHJP
   G06F 16/11 20190101ALI20230720BHJP
   G06F 16/28 20190101ALI20230720BHJP
【FI】
G06F11/20 623
G06F3/06 301Z
G06F16/11
G06F16/28
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022004614
(22)【出願日】2022-01-14
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】三輪 昂寛
(72)【発明者】
【氏名】三輪 周作
【テーマコード(参考)】
5B034
5B175
【Fターム(参考)】
5B034BB02
5B034CC04
5B175AA02
(57)【要約】
【課題】ファイルサービスとブロックサービスとの連携においてノード間の通信が増加することを回避し得るストレージシステムを提供する。
【解決手段】現用系のノードのファイル処理部と待機系のノードのファイル処理部とをペアとして管理し、現用系のノードのファイル処理部を動作可能に設定し、現用系のノードのブロック処理部と待機系のノードのブロック処理部とをペアとして管理し、現用系のノードのブロック処理部を動作可能に設定する管理部を設けるようにした。
【選択図】図1
【特許請求の範囲】
【請求項1】
ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノードがネットワークを介して接続されているストレージシステムであって、
前記複数のノードの各々は、データを記憶する記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換するファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記記憶装置に対するI/Oを実行するための処理を行うブロック処理部とを含んで構成され、
前記複数のノードには、現用系のノードと待機系のノードとが含まれ、
前記現用系のノードのファイル処理部と前記待機系のノードのファイル処理部とをペアとして管理し、前記現用系のノードのファイル処理部を動作可能に設定し、前記現用系のノードのブロック処理部と前記待機系のノードのブロック処理部とをペアとして管理し、前記現用系のノードのブロック処理部を動作可能に設定する管理部を備える、
ストレージシステム。
【請求項2】
前記現用系のノードは、複数あり、
前記待機系のノードには、前記複数の現用系のノードの各々のファイル処理部およびブロック処理部とペアであるファイル処理部およびブロック処理部が設けられている、
請求項1に記載のストレージシステム。
【請求項3】
前記待機系のノードのハードウェア資源は、前記複数の現用系の何れのノードのハードウェア資源よりも多い、
請求項2に記載のストレージシステム。
【請求項4】
前記待機系のノードでは、前記複数の現用系のノードの何れかのノードに障害が発生した場合、前記ノードのファイル処理部とペアであるファイル処理部にメモリが割り当てられる、
請求項2に記載のストレージシステム。
【請求項5】
前記管理部は、ノードの状態を示すノード状態情報を管理し、前記複数の現用系のノードの何れかのノードに障害が発生した場合、前記ノードが閉塞したことを示す情報を前記ノード状態情報に格納し、前記ノード状態情報を参照し、障害が発生しているノード数が1つであるときは、前記ノードのファイル処理部とペアである前記待機系のノードのファイル制御部を動作可能に設定し、前記ノードのブロック処理部とペアである前記待機系のノードのブロック制御部を動作可能に設定する、
請求項2に記載のストレージシステム。
【請求項6】
前記管理部は、前記ノード状態情報を参照し、障害が発生しているノード数が2つであるときは、前記複数の現用系のノードのうち、障害が発生していないノードのファイル処理部およびブロック処理部に処理を実行しないように指示し、前記待機系のノードの動作しているファイル処理部およびブロック処理部に処理を実行しないように指示する、
請求項5に記載のストレージシステム。
【請求項7】
前記現用系のノードのファイル処理部は、ファイルクライアントからのファイルI/O要求を受け付けた場合、前記ファイルI/O要求をブロックI/O要求に変換し、
前記現用系のノードのブロック処理部は、前記ブロックI/O要求をもとに前記現用系のノードの記憶装置に対するI/Oを実行するための処理を行い、前記ブロック処理部とペアである前記待機系のノードのブロック処理部に前記ブロックI/O要求をもとに前記待機系のノードの記憶装置に対するI/Oを実行するようにデータの冗長化を指示し、
前記管理部は、前記待機系のノードに障害が発生した場合、前記現用系のノードのブロック処理部にデータの冗長化を停止するように指示する、
請求項1に記載のストレージシステム。
【請求項8】
ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノードがネットワークを介して接続されているストレージシステムにおいて、前記ファイルサービスと前記ブロックサービスとを連携するための連携方法であって、
前記複数のノードの各々は、データを記憶する記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換するファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記記憶装置に対するI/Oを実行するための処理を行うブロック処理部とを含んで構成され、
前記複数のノードには、現用系のノードと待機系のノードとが含まれ、
管理部が、
前記現用系のノードのファイル処理部と前記待機系のノードのファイル処理部とをペアとして管理することと、
前記現用系のノードのファイル処理部を動作可能に設定することと、
前記現用系のノードのブロック処理部と前記待機系のノードのブロック処理部とをペアとして管理することと、
前記現用系のノードのブロック処理部を動作可能に設定することと、
を含む連携方法。
【請求項9】
ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノードがネットワークを介して接続されているストレージシステムにおいて、前記ファイルサービスと前記ブロックサービスとを提供するためのプログラムであって、
前記複数のノードの各々は、データを記憶する記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換するファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記記憶装置に対するI/Oを実行するための処理を行うブロック処理部とを含んで構成され、
前記複数のノードには、現用系のノードと待機系のノードとが含まれ、
前記現用系のノードのファイル処理部と前記待機系のノードのファイル処理部とをペアとして管理し、前記現用系のノードのファイル処理部を動作可能に設定し、前記現用系のノードのブロック処理部と前記待機系のノードのブロック処理部とをペアとして管理し、前記現用系のノードのブロック処理部を動作可能に設定する処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ストレージシステムにおけるノード間の通信に関する。
【背景技術】
【0002】
従来、ファイルサービスを提供するためのVM(FSVM:File Server Virtual Machine)を各物理サーバ上に配置し、FSVMが仮想的なスケールアウトファイルサーバを構築するストレージシステムが知られている。更に、FSVMのバックエンドとして、ブロックサービスを提供するためのCVM(Controller Virtual Machine)を各物理サーバ上に配置し、仮想的なスケールアウトブロックストレージを構築するストレージシステムが知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第10095506号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載のストレージシステムでは、FSVMを備える物理サーバと当該FSVMのバックエンドとなるCVMを備える物理サーバとが異なることがあり、その場合、物理サーバ間の通信オーバヘッドが増加し、ファイル単位のアクセス(以下、「ファイルアクセス」と記す)の性能が劣化してしまう。この点、物理サーバ間のネットワークに高速ネットワークを採用することで性能劣化を回避することが考えられるが、このような高速ネットワークは、一般的に高価である。
【0005】
本発明は、以上の点を考慮してなされたもので、ファイルサービスとブロックサービスとの連携においてノード間の通信が増加することを回避し得るストレージシステム等を提案しようとするものである。
【課題を解決するための手段】
【0006】
かかる課題を解決するため本発明においては、ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノードがネットワークを介して接続されているストレージシステムであって、前記複数のノードの各々は、データを記憶する記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換するファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記記憶装置に対するI/Oを実行するための処理を行うブロック処理部とを含んで構成され、前記複数のノードには、現用系のノードと待機系のノードとが含まれ、前記現用系のノードのファイル処理部と前記待機系のノードのファイル処理部とをペアとして管理し、前記現用系のノードのファイル処理部を動作可能に設定し、前記現用系のノードのブロック処理部と前記待機系のノードのブロック処理部とをペアとして管理し、前記現用系のノードのブロック処理部を動作可能に設定する管理部を設けるようにした。
【0007】
上記構成では、例えば、ファイル処理部およびブロック処理部をそれぞれペアとし、同じ物理ノードに配置することで、ファイル処理部およびブロック処理部間では内部通信が行われ、ファイルサービスとブロックサービスとの連携において、ノード間の通信回数を抑えることができる。また、上記構成では、例えば、現用系のノードと、待機系のノードとが別々に設けられているので、現用系のノードのハードウェア資源を待機系のために割り当てる必要がなく、現用系のノードの処理性能を高めることができる。
【発明の効果】
【0008】
本発明によれば、処理性能が高いストレージシステムを実現することができる。上記した以外の課題、構成および効果は、以下の発明を実施するための形態の説明により明らかにされる。
【図面の簡単な説明】
【0009】
図1】第1の実施の形態によるストレージシステムに係る構成の一例を示す図である。
図2】第1の実施の形態によるノードのハードウェア構成の一例を示す図である。
図3】第1の実施の形態によるノードのソフトウェア構成の一例を示す図である。
図4】第1の実施の形態によるクラスタ間DBの一例を示す図である。
図5】第1の実施の形態による管理部用情報の一例を示す図である。
図6】第1の実施の形態によるストレージ制御部用情報の一例を示す図である。
図7】第1の実施の形態によるファイル制御部用情報の一例を示す図である。
図8】第1の実施の形態によるファイル制御部ペアとストレージOS部ペアとの配置の一例を示す図である。
図9】第1の実施の形態による正常時のI/O処理の一例を示す図である。
図10】第1の実施の形態による障害時のI/O処理の一例を示す図である。
図11】第1の実施の形態による制御フローの一例を示す図である。
図12】第1の実施の形態による制御フローの一例を示す図である。
図13】第1の実施の形態による制御フローの一例を示す図である。
図14】第1の実施の形態による制御フローの一例を示す図である。
図15】第1の実施の形態による制御フローの一例を示す図である。
図16】第1の実施の形態による制御フローの一例を示す図である。
図17】第1の実施の形態による制御フローの一例を示す図である。
図18】第1の実施の形態による制御フローの一例を示す図である。
図19】第1の実施の形態による制御フローの一例を示す図である。
図20】第1の実施の形態によるプログラムが提供される態様の一例を示す図である。
【発明を実施するための形態】
【0010】
(1)第1の実施の形態
本実施の形態では、上述した課題を解決するための構成、方法等について説明する。更に、本実施の形態では、例えば、下記のようなストレージシステムの処理性能の向上に関する構成、方法等についても説明する。
【0011】
上記特許文献1に記載のストレージシステムでは、例えば、正常運用時、あるFSVMが担当するファイルのデータは、同一物理ノード上に存在するCVMがアクセスするローカルストレージに存在し、ファイルに対するリードのアクセスに対して物理ネットワークを介したアクセスを回避できる。
【0012】
ここで、CVMを利用したデータ保護方式では、冗長データを他の物理サーバに適宜分散して配置する。そのため、あるCVMのローカルストレージに保存されるデータの全体を見れば、冗長データは、多数の物理サーバに配置される形となる。
【0013】
この状況で、ある物理ノードが閉塞すると、正常な物理ノードのみでファイルサービスおよびブロックサービスが引き継がれる。しかしながら、冗長データを異なる物理サーバに分散して配置していることにより、障害後のFSVMからのI/Oリクエストに対して、別の物理ノードにI/O処理を依頼する必要が生じ、ファイルアクセスの性能が劣化してしまう。
【0014】
この点、現用系のノードのFSVMおよび待機系のノードのFSVMと現用系のノードのCVMおよび待機系のノードのCVMとをそれぞれペアとし、同じ物理ノードに配置することで、現用系でも待機系でも、FSVMおよびCVMでは内部通信が行われ、ファイルサービスとブロックサービスとの連携において、物理ノード間の通信回数を抑えることができる。ただし、一のペアの現用系のノードのFSVMおよびCVMと他のペアの待機系のノードのFSVMおよびCVMとが同じ物理ノードに設けられる場合、待機系のためのハードウェア資源を現用系のノードに確保しなければならないため、ハードウェア資源を有効に活用できなくなってしまう。
【0015】
以下、図面を参照して、上述の問題を解決するするための一実施の形態を詳述する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施の形態に制限されることはなく、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加、変更等を行うことができる。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は、複数でも単数でも構わない。
【0016】
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【0017】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えば、CPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)および/またはインタフェースデバイス(例えば、通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、またはホストであってもよい。プログラムを実行して行う処理の主体(例えば、プロセッサ)は、処理の一部または全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化および復号化、または圧縮および伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置およびシステムは、これらの機能部を含む装置およびシステムである。
【0018】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバは、プロセッサ(例えば、CPU)と記憶資源を含み、記憶資源は、さらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは、配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0019】
なお、以下の説明では、図面において同一要素については、同じ番号を付し、説明を適宜省略する。また、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、ファイルクライアントを特に区別しないで説明する場合には、「ファイルクライアント110」と記し、個々のファイルクライアントを区別して説明する場合には、「ファイルクライアント110-1」、「ファイルクライアント110-2」のように記すことがある。また、同種の要素を区別して説明する場合は、その要素の参照符号を使用または参照符号に代えてその要素に割り振られたIDを使用することがある。
【0020】
図1は、本実施の形態によるストレージシステム100に係る構成の一例を示す図である。ストレージシステム100は、1つ以上のファイルクライアント110と、複数のノード120とを備える。
【0021】
ファイルクライアント110およびノード120間は、ネットワークスイッチ130を介して接続されている。ネットワークスイッチ130は、例えば、ファイバーチャネル(FC:Fibre Channel)、イーサネット(登録商標)、InfiniBand、無線LAN(Local Area Network)等から構成されるネットワークの一例であり、以下では、「ファイルサービスネットワーク」と記す。各ノード120間は、ネットワーク140を介して接続されている。ネットワーク140は、イーサネット(登録商標)、InfiniBand、無線LAN等から構成されるネットワークの一例であり、以下では、「バックエンドネットワーク」と記す。
【0022】
ただし、ファイルサービスネットワークおよびバックエンドネットワークは、同一のネットワークにより構成されていてもよい。また、各ファイルクライアント110および各ノード120は、ファイルサービスネットワークおよびバックエンドネットワーク以外の管理用ネットワークに接続されていてもよい。
【0023】
ストレージシステム100では、図1に示すように、フェイルオーバの対象のノード120が含まれる範囲を規定するためのクラスタ150が構成されている。クラスタ150には、複数のノード120が属している。クラスタ150に属する一のノード120に障害が発生した場合、クラスタ150に属する他のノード120に処理が引き継がれる。他のノード120は、処理が引き継がれる専用のノード120であり、1つ以上のノード120が定められている。以下では、処理が引き継がれる専用のノード120がノード120-4である場合を例に挙げて説明する。なお、実行系として起動するノード120-1~ノード120-3を現用系のノード120と記し、待機系として起動するノード120-4を待機系のノード120と記すことがある。また、図1の例では、クラスタ150が1つのみ設定された場合について例示しているが、ストレージシステム100内に複数のクラスタ150を設定するようにしてもよい。
【0024】
ファイルクライアント110は、ノード120に対してホスト(上位装置)として機能する汎用のコンピュータである。ファイルクライアント110は、仮想マシンのような仮想的なコンピュータであってもよく、ノード120に設けられていてもよい。
【0025】
ファイルクライアント110は、ユーザ操作、実装されたアプリケーションプログラム等からの要求に応じて、ノード120に対して、ファイル単位のリード要求またはファイル単位のライト要求(以下、「ファイルI/O要求」と記す)を送信する。ファイルI/O要求は、CIFS(Common Internet File System)、NFS(Network File System)等のプロトコルに従い、アクセス先のファイルを指定する要求であってよい。
【0026】
ノード120は、データを読み書きするための記憶領域をファイルクライアント110に対して提供する汎用のコンピュータである。
【0027】
図2は、ノード120のハードウェア構成の一例を示す図である。
【0028】
ノード120は、構成要素として、CPU210と、メモリ220と、複数の記憶装置230と、第1の通信装置240と、第2の通信装置250とを備える。各構成要素は、内部ネットワーク260を介して接続されている。各ノード120は、各構成要素を1以上備える。
【0029】
CPU210は、ノード120全体の動作制御を司るプロセッサである。メモリ220は、SRAM(Static RAM(Random Access Memory))、DRAM(Dynamic RAM)等の揮発性の半導体メモリから構成され、CPU210のワークメモリとして各種プログラムおよび必要なデータを一時的に保持するために利用される。メモリ220に格納されたプログラムを、少なくとも1以上のCPU210が実行することにより、後述のようなノード120全体としての各種処理が実行される。
【0030】
記憶装置230は、NVMe(Non-Volatile Memory)ドライブ、SAS(Serial Attached SCSI(Small Computer System Interface))ドライブ、SATA(Serial ATA(Advanced Technology Attachment))、SSD(Solid State Drive)またはSCM(Storage Class Memory)等の大容量の不揮発性の記憶装置から構成され、ファイルクライアント110に対してデータを読み書きするための記憶領域を提供する。
【0031】
第1の通信装置240は、ノード120がファイルサービスネットワークを介してファイルクライアント110と通信を行うためのインタフェースである。第1の通信装置240は、例えば、NIC(Network Interface Card)、FCカード、無線LANカード等から構成される。第1の通信装置240は、ファイルクライアント110との通信時におけるプロトコル制御を行う。ファイルサービスネットワークを介する通信プロトコルとして、CIFS、NFS等がある。
【0032】
第2の通信装置250は、ノード120がバックエンドネットワークを介して他のノード120と通信を行うためのインタフェースである。第2の通信装置250は、例えば、NIC、無線LANカード等から構成される。第2の通信装置250は、他のノード120との通信時におけるプロトコル制御を行う。
【0033】
ここで、ストレージシステム100における各ノード120のハードウェア構成は、各ノード120の機能(後述のファイル制御部310、ストレージ制御部320等)を実現できるハードウェア資源を満たしている。この場合、各ノード120のハードウェア構成は、同じであってもよいし、異なっていてもよい。なお、ハードウェア資源は、CPU210の処理速度、メモリ220の容量等である。
【0034】
なお、ストレージシステム100では、ストレージシステム100の管理者(以下、「システム管理者」と記す)が、ストレージシステム100の構成管理、各種設定等を行うために利用するノード120(以下、「管理ノード」と記す)が設けられていてもよい。管理ノードは、システム管理者の操作に応じて、ファイルクライアント110およびノード120に対して必要な指示を与える。
【0035】
図3は、ノード120のソフトウェア構成の一例を示す図である。
【0036】
ノード120は、ファイル制御部310と、ストレージ制御部320と、管理部330と、ハイパーバイザ340とを備える。
【0037】
ファイル制御部310は、例えば、ファイルサービスを提供するVMである。ファイル制御部310は、他のノード120のファイル制御部310とクラスタを構成(仮想的なスケールアウトファイルサーバを構築)し、ファイルサービスに係る処理を行うソフトウェアである。なお、ファイルサービスのクラスタに属するノード120とクラスタ150に属するノード120とは、全部または一部が一致している。
【0038】
より具体的には、ファイル制御部310は、ファイルシステム制御310A、ファイル制御部構成情報管理310B、ブロックボリュームアクセス制御310C等を行う。
【0039】
ファイルシステム制御310Aでは、ファイル制御部310は、ファイルクライアント110にどのようなファイルシステムを提供するか等、ファイルシステムとしてやり取りを行うための制御を行う。例えば、ファイル制御部310は、第1の通信装置240を介して、ファイルクライアント110からのファイルI/O要求を受信する。また、例えば、ファイル制御部310は、第1の通信装置240を介して、ファイルI/O要求に対応する応答(以下、「ファイルI/O応答」と記す)をファイルクライアント110に送信する。
【0040】
ファイル制御部構成情報管理310Bでは、ファイル制御部310は、どのようなファイルシステムをファイル制御部310が所有しているか、どのようなブロックボリューム(論理ボリューム)をファイル制御部310が認識しているかといった構成情報(例えば、後述のファイル制御部用情報430)を管理する。例えば、ファイル制御部310は、管理部330から指定されたパラメータ等の情報を設定する。
【0041】
ブロックボリュームアクセス制御310Cでは、ファイル制御部310は、ファイルI/O要求をもとにブロックボリュームにアクセスする。例えば、ファイル制御部310は、ファイルI/O要求を、ブロックボリュームに対するブロック単位のリード要求またはブロックボリュームに対するブロック単位のライト要求(以下、「ブロックI/O要求」と記す)に変換する。ファイル制御部310は、ブロックI/O要求を自ノード120内のストレージ制御部320に通知する。また、例えば、ファイル制御部310は、ブロックI/O要求に対応する応答(以下、「ブロックI/O応答」と記す)をストレージ制御部320から受け取る。
【0042】
ここで、ストレージシステム100では、現用系のノード120(本実施の形態では、ノード120-1~ノード120-3)に実装された各ファイル制御部310は、管理部330により、待機系の専用のノード120(本実施の形態では、ノード120-4)に配置された他のファイル制御部310と共に冗長化を構成するペアに設定される。以下では、当該ペアを「ファイル制御部ペア」と記す。
【0043】
ファイル制御部ペアでは、現用系のノード120のファイル制御部310は、ファイルクライアント110からのファイルI/O要求を受け付けて処理することができる状態(現用系の状態であり、以下、「アクティブ型」と記す)に設定されている。待機系のノード120のファイル制御部310は、現用系のノード120(アクティブ型のファイル制御部310を有するノード120)が正常に動作しているときはファイルクライアント110からのファイルI/O要求を受け付けない状態であり、現用系のノード120が正常に動作していないときはファイルクライアント110からのファイルI/O要求を受け付けて処理することができる状態(待機系の状態であり、以下、「スタンバイ型」と記す)に設定される。
【0044】
ストレージシステム100では、アクティブ型のファイル制御部310がアクセスするデータと、アクティブ型のファイル制御部310のOSディスクのデータ(OSのデータ、ログのデータ等、OSとして必要なデータであり、以下、「OSディスクデータ」と記す)とがスタンバイ型のファイル制御部310を備えるノード120に冗長化されている。そして、ストレージシステム100では、アクティブ型のファイル制御部310、アクティブ型のファイル制御部310が配置されたノード120等に障害が発生した場合に、スタンバイ型のファイル制御部310がファイルI/O要求を受け付けて処理することができる状態に切り替えられる。これにより、アクティブ型のファイル制御部310が稼働し得なくなった場合に、当該アクティブ型のファイル制御部310が提供していたファイルサービスに係る処理を、同じファイル制御部ペアを構成するスタンバイ型のファイル制御部310が引き継ぐことができる。
【0045】
ストレージ制御部320は、ブロックサービスを提供するVMである。ストレージ制御部320は、他のノード120のストレージ制御部320とクラスタを構成(仮想的なスケールアウトブロックストレージを構築)し、ブロックサービスに係る処理を行うソフトウェアである。ストレージ制御部320は、SDS(Software Defined Storage)のコントローラとして機能するソフトウェアであってもよい。また、ストレージ制御部320は、ブロックボリュームに対するストレージ機能を有してよい。ストレージ機能の典型例としては、ストレージシステム100内で複製を作成して管理するローカルコピー機能、格納するデータ量を削減する圧縮および重複排除機能、SSD、HDDといったI/O性能および特性の異なる記憶装置230の間でデータを動的に移動させる階層制御機能、等がある。
【0046】
より具体的には、ストレージ制御部320は、フロントエンド制御部321と、ストレージOS部322と、ノード間データ保護制御部323と、ストレージ制御部構成情報管理部324とを備える。
【0047】
フロントエンド制御部321は、ファイル制御部310からブロックI/O要求が与えられた場合に、当該ブロックI/O要求を、当該ブロックI/O要求を実行すべき自ノード120内のストレージOS部322に通知する。
【0048】
ストレージOS部322は、ブロックI/O要求に対応するI/Oコマンドを生成し、記憶装置230に対してデータの読み書きを実行する。より具体的には、ストレージOS部322は、I/Oコマンドをノード間データ保護制御部323に通知する。
【0049】
ここで、ストレージシステム100では、現用系のノード120に実装された各ストレージOS部322は、管理部330により、待機系のノード120に配置された他のストレージOS部322と共に冗長化を構成するペアに設定される。以下では、当該ペアを「ストレージOS部ペア」と記す。
【0050】
ストレージOS部ペアでは、現用系のノード120のストレージOS部322は、ファイル制御部310からのブロックI/O要求を受け付けて処理することができる状態(現用系の状態であり、以下、「アクティブ型」と記す)に設定されている。待機系のノード120のストレージOS部322は、現用系のノード120(アクティブ型のストレージOS部322を有するノード120)が正常に動作しているときは待機系のノード120のファイル制御部310からのブロックI/O要求を受け付けない状態であり、現用系のノード120が正常に動作していないときは待機系のノード120のファイル制御部310からのブロックI/O要求を受け付けて処理することができる状態(待機系の状態であり、以下、「スタンバイ型」と記す)に設定される。
【0051】
ストレージシステム100では、アクティブ型のストレージOS部322、アクティブ型のストレージOS部322が配置されたノード120等に障害が発生した場合に、スタンバイ型のストレージOS部322がブロックI/O要求を受け付けて処理することができる状態に切り替えられる。これにより、アクティブ型のストレージOS部322が稼働し得なくなった場合に、当該アクティブ型のストレージOS部322が実行していたブロックサービスに係る処理を、同じストレージOS部ペアを構成するスタンバイ型のストレージOS部322が引き継ぐことができる。
【0052】
ストレージOS部322は、プール制御322Aと、ブロックボリューム制御322Bと、プール構成ボリュームアクセス制御322Cとを行う。
【0053】
プール制御322Aでは、ストレージOS部322は、複数のプール構成ボリュームを組み合わせてプール(論理ボリューム)を生成し、当該プールを管理する。プール構成ボリュームは、自ノード120の記憶装置230における物理チャンク(所定のサイズの記憶領域)に対応した論理ボリューム(論理チャンク)である。
【0054】
ブロックボリューム制御322Bでは、ストレージOS部322は、プールから複数のページを切り出し、1つ以上のページを割り当てたブロックボリュームを生成し、当該ブロックボリュームを管理する。ブロックボリュームは、シンプロビジョニングに従う仮想的な論理ボリュームである。
【0055】
プール構成ボリュームアクセス制御322Cでは、ストレージOS部322は、ブロックI/O要求をもとにプール構成ボリュームにアクセスする。プール構成ボリュームに対するアクセスを行うために、ストレージOS部322は、ブロックI/O要求からプール構成ボリューム単位のI/Oコマンドを生成(ブロックボリュームのアドレスをプール構成ボリュームのアドレスに変換)し、当該I/Oコマンドをノード間データ保護制御部323に通知する。なお、I/Oコマンドでは、例えば、I/O先のプール構成ボリュームおよび当該プール構成ボリューム内のアドレスが指定されている。
【0056】
ノード間データ保護制御部323は、I/Oコマンドをもとに、記憶装置230にデータの読み書きを行う。より具体的には、ノード間データ保護制御部323は、プール構成ボリューム制御323Aと、データ冗長化管理323Bと、ディスクアクセス制御323Cと、ノード間通信制御323Dとを行う。
【0057】
プール構成ボリューム制御323Aでは、ノード間データ保護制御部323は、プール構成ボリュームを生成し、当該プール構成ボリュームを管理する。ノード間データ保護制御部323は、自ノード120内に配置されたストレージOS部322に対して、自ノード120内の記憶装置230が提供する物理的な記憶領域を割り当てる。
【0058】
データ冗長化管理323Bでは、ノード間データ保護制御部323は、ノード120間でデータを冗長化する。例えば、ノード間データ保護制御部323は、ファイルI/O要求がファイル単位のライト要求であった場合、待機系のノード120にデータを冗長化する。また、例えば、ノード間データ保護制御部323は、ファイルI/O要求がファイル単位のリード要求であった場合、自ノード120の記憶装置230にアクセスできないときは、待機系のノード120からデータを読み込む。
【0059】
ディスクアクセス制御323Cでは、ノード間データ保護制御部323は、I/Oの対象のデータがどの物理チャンクにあるか判断し、記憶装置230に対するデータの読み書きを行う。例えば、ノード間データ保護制御部323は、I/OコマンドをストレージOS部322から受け取ると、図示しない管理テーブルを参照して、当該I/Oコマンドにおいて指定されたプール構成ボリュームに対応付けた各物理チャンクの中から1つの物理チャンクを提供する記憶装置230を特定する。そして、ノード間データ保護制御部323は、特定した記憶装置230内の、I/Oコマンドで指定されたプール構成ボリュームおよび当該プール構成ボリューム内のアドレスに対応する物理チャンクのアドレスに格納されているデータに対してI/Oを実行する。
【0060】
ノード間通信制御323Dでは、ノード間データ保護制御部323は、ノード120間の通信を制御する。例えば、ノード間データ保護制御部323は、ストレージOS部322から受け取ったI/Oコマンドが記憶装置230に対する書き込みを指示するライトコマンドであった場合、待機系のノード120のノード間データ保護制御部323にライトコマンドを送信する。ライトコマンドを受信したノード間データ保護制御部323が含まれるストレージ制御部320は、当該ライトコマンドをもとに、自ノード120の記憶装置230にデータの書き込みを行う。
【0061】
ストレージ制御部構成情報管理部324は、冗長データの配置、記憶装置230へのアクセス可否、記憶装置230がどのような物理チャンクを持っているか、物理チャンクがどのプール構成ボリュームに割り当てられているか、プールがどのようなプール構成ボリュームを持っているか、プールから切り出されたページがどのブロックボリュームに割り当てられているか等の構成情報(例えば、後述のストレージ制御部用情報420)を管理する。なお、プール、ブロックボリューム等の構成情報は、ストレージOSペア単位で管理されている。つまり、現用系のノード120にプール、ブロックボリューム等を作成し、その構成情報をクラスタ間DB400に登録することで、待機系のノード120にもフェイルオーバ時に反映できるように構成されている。
【0062】
管理部330は、クラスタ150全体に関する制御処理、クラスタ150のスケールアウトに関する制御処理等を実行する機能を有するソフトウェアである。ストレージシステム100では、クラスタ150内の各ノード120にそれぞれ実装された管理部330のうちの1つの管理部330がマスタに設定され、マスタに設定された管理部330のみが、クラスタ150全体の整合性を保ちながら各種の制御処理を実行する。
【0063】
マスタの管理部330以外の管理部330は、マスタの管理部330の障害に備えて、ホットスタンバイ(Hot stand-by)モードまたワームスタンバイ(Warm stand-by)モードのいずれかの動作モードに設定される。
【0064】
ホットスタンバイモードは、マスタの管理部330、当該マスタの管理部330が実装されたノード120等に障害が発生した場合に、マスタの管理部330が実行していた処理を直ちに引き継げるよう起動したスタンバイ状態を維持する動作モードである。
【0065】
ホットスタンバイモードの管理部330は、マスタの管理部330が実行していた処理を直ちに引き継げるよう、後述のファイル制御部ペアテーブル510、ストレージOS部ペアテーブル520等のマスタの管理部330が管理する全ての管理情報(例えば、後述のクラスタ間DB400)と同じ内容の管理情報を保持している。
【0066】
そして、マスタの管理部330が保持する管理情報が更新された場合には、その更新前後の差分が差分データとしてマスタの管理部330からバックエンドネットワークを介して全てのホットスタンバイモードの管理部330に与えられ、当該差分データに基づいて、その管理部330が保持する管理情報が当該管理部330によりマスタの管理部330が保持する管理情報と同様に更新される。
【0067】
このようにホットスタンバイモードの管理部330がマスタの管理部330と常に同一の管理情報を保持することにより、マスタの管理部330等に障害が発生し、それまでホットスタンバイモードであった管理部330を「マスタ」に切り替えた場合にも、元のマスタの管理部330が実行していた制御処理を「マスタ」に切り替えられたマスタの管理部330により引き継ぐことが可能となる。
【0068】
また、ワームスタンバイ型は、起動を停止したスタンバイ状態にある動作モードである。ホットスタンバイモードに設定されたマスタの管理部330の数が予め設定された閾値以下となった場合に、ワームスタンバイ型に設定されたいずれかの管理部330の状態がホットスタンバイモードに切り替えられる。
【0069】
なお、マスタの管理部330は、2つ以上のマスタの管理部330が存在する状態を防ぐため、3つ以上の管理部330を稼働させ、稼働させた管理部330の中から多数決により選定される。そして、稼働させた残りの管理部330がホットスタンバイモードに設定される。
【0070】
より具体的には、管理部330は、ファイル制御部ストレージ制御部間ブロックボリューム割り当て制御330Aと、ファイル制御部およびストレージOS部構成管理制御330Bと、フェイルオーバ制御330Cとを行う。
【0071】
ファイル制御部ストレージ制御部間ブロックボリューム割り当て制御330Aでは、管理部330は、どのブロックボリュームをどのファイル制御部310に割り当てるか等を制御する。
【0072】
ファイル制御部およびストレージOS部構成管理制御330Bでは、管理部330は、ファイル制御部ペアとストレージOS部ペアとに係る制御を行う。
【0073】
例えば、管理部330は、管理ノードからの指示に応じてクラスタ150内にファイル制御部ペアを設定し、設定したファイル制御部ペアを後述のファイル制御部ペアテーブル510に登録して管理する。また、例えば、管理部330は、管理ノードからの指示に応じてクラスタ150内にストレージOS部ペアを設定し、設定したストレージOS部ペアを後述のストレージOS部ペアテーブル520に登録して管理する。
【0074】
また、例えば、管理部330は、アクティブ型のファイル制御部310およびアクティブ型のストレージOS部322が同一の現用系のノード120に配置され、スタンバイ型のファイル制御部310およびスタンバイ型のストレージOS部322が同一の待機系のノード120に配置されるように、ファイル制御部ペアとストレージOS部ペアとの組合せ(以下、「冗長化グループ」と記す)を決定する。
【0075】
フェイルオーバ制御330Cでは、管理部330は、ノード120に障害が発生したときに、ファイル制御部310およびストレージ制御部320をフェイルオーバさせる。例えば、管理部330は、スタンバイ型のストレージOS部322にアクティブ型のストレージOS部322からの引継ぎを指示した後に、スタンバイ型のファイル制御部310にアクティブ型のファイル制御部310からの引継ぎを指示する。
【0076】
なお、管理部330は、管理ノードに設けられていてもよいし、ファイル制御部310に含まれていてもよいし、ストレージ制御部320に含まれていてもよい。
【0077】
ハイパーバイザ340は、ファイル制御部310、ストレージ制御部320、管理部330等を動作させるソフトウェアである。
【0078】
図4は、クラスタ間DB400の一例を示す図である。クラスタ間DB400は、クラスタ150単位に必要となる情報を記憶する。クラスタ間DB400は、全てのノード120に複製して設けられていてもよいし、1つ以上の管理ノードに設けられていてもよい。
【0079】
クラスタ間DB400には、管理部用情報410と、ストレージ制御部用情報420と、ファイル制御部用情報430とが記憶されている。
【0080】
管理部用情報410には、ファイル制御部ペア情報と、ストレージOS部ペア情報と、ファイル制御部ストレージOS部対応情報と、ノード状態情報とが含まれる。管理部用情報410については、図5を用いて後述する。
【0081】
ストレージ制御部用情報420には、ブロックボリューム情報と、接続先ファイル制御部情報と、冗長データ配置情報と、冗長データアクセス可否情報とが含まれる。ストレージ制御部用情報420については、図6を用いて後述する。
【0082】
ファイル制御部用情報430には、ファイルシステム情報と、認識ブロックボリューム情報とが含まれる。ファイル制御部用情報430については、図7を用いて後述する。
【0083】
図5は、管理部用情報410の一例を示す図である。
【0084】
管理部用情報410には、ファイル制御部ペアテーブル510と、ストレージOS部ペアテーブル520と、ファイル制御部ストレージOS部対応テーブル530と、ノード状態テーブル540とが含まれる。
【0085】
ファイル制御部ペアテーブル510は、ファイル制御部ペア情報の一例であり、ファイル制御部ペアをどのノード120で構成しているかを示す情報を記憶する。換言するならば、ファイル制御部ペアテーブル510は、アクティブ型のファイル制御部310がどのノード120に配置され、スタンバイ型のファイル制御部310がどのノード120に配置されているかを示す配置情報を記憶する。より具体的には、ファイル制御部ペアテーブル510は、ファイル制御部ID511と、アクティブノード512と、スタンバイノード513とが対応付けられた情報を記憶する。
【0086】
ファイル制御部ID511は、ファイル制御部ペアを識別するための情報である。アクティブノード512は、当該ファイル制御部ペアのアクティブ型のファイル制御部310がどのノード120に設けられているかを示す情報である。スタンバイノード513は、当該ファイル制御部ペアのスタンバイ型のファイル制御部310がどのノード120に設けられているかを示す情報である。
【0087】
ストレージOS部ペアテーブル520は、ストレージOS部ペア情報の一例であり、ストレージOS部ペアをどのノード120で構成しているかを示す情報を記憶する。換言するならば、ストレージOS部ペアテーブル520は、アクティブ型のストレージOS部322がどのノード120に配置され、スタンバイ型のストレージOS部322がどのノード120に配置されているかを示す配置情報を記憶する。より具体的には、ストレージOS部ペアテーブル520は、ストレージOS部ID521と、アクティブノード522と、スタンバイノード523とが対応付けられた情報を記憶する。
【0088】
ストレージOS部ID521は、ストレージOS部ペアを識別するための情報である。アクティブノード522は、当該ストレージOS部ペアのアクティブ型のストレージOS部322がどのノード120に設けられているかを示す情報である。スタンバイノード523は、当該ストレージOS部ペアのスタンバイ型のストレージOS部322がどのノード120に設けられているかを示す情報である。
【0089】
ファイル制御部ストレージOS部対応テーブル530は、ファイル制御部ストレージOS部対応情報の一例であり、ファイル制御部310とストレージOS部322との対応関係を示す情報を記憶する。より具体的には、ファイル制御部ストレージOS部対応テーブル530は、ファイル制御部ID531とストレージOS部ID532とが対応付けられた情報を記憶する。
【0090】
ファイル制御部ID531は、ファイル制御部310を識別するための情報である。ストレージOS部ID532は、当該ファイル制御部310とペアであるストレージOS部322を識別するための情報である。
【0091】
ノード状態テーブル540は、ノード状態情報の一例であり、ノード120の状態を示す情報を記憶する。より具体的には、ノード状態テーブル540は、ノードID541と状態542とが対応付けられた情報を記憶する。
【0092】
ノードID541は、ノード120を識別するための情報である。状態542は、当該ノード120の状態(「正常」または「閉塞」)を示す情報である。
【0093】
図6は、ストレージ制御部用情報420の一例を示す図である。
【0094】
ストレージ制御部用情報420には、ブロックボリュームテーブル610と、接続先ファイル制御部テーブル620と、冗長データアクセス可否テーブル630とが含まれる。
【0095】
ブロックボリュームテーブル610は、ブロックボリューム情報の一例であり、ストレージ制御部320が提供するブロックボリュームに係る情報を記憶する。より具体的には、ブロックボリュームテーブル610は、ブロックボリュームID611と、ストレージOS部ID612と、WWID(World Wide ID)613と、容量614と、アクセスファイル制御部ID615とが対応付けられた情報を記憶する。
【0096】
ブロックボリュームID611は、ブロックボリュームを識別するための情報である。ストレージOS部ID612は、当該ブロックボリュームを所有するストレージOS部322を識別するための情報である。WWID613は、ファイルI/O要求をもとに当該ブロックボリュームにアクセスする際に必要な情報であり、当該ブロックボリュームを一意に特定するための情報である。容量614は、当該ブロックボリュームの容量を示す情報である。アクセスファイル制御部ID615は、当該ブロックボリュームにアクセスするファイル制御部310を識別するための情報である。
【0097】
接続先ファイル制御部テーブル620は、接続先ファイル制御部情報の一例であり、ストレージ制御部320のクライアントとして接続されているファイル制御部310の情報を記憶する。接続先ファイル制御部テーブル620は、ファイル制御部ID621と、ストレージOS部ID622と、イニシエータ623とが対応付けられた情報を記憶する。
【0098】
ファイル制御部ID621は、ファイル制御部310を識別するための情報である。ストレージOS部ID622は、当該ファイル制御部310にブロックサービスを提供するストレージOS部322を識別するための情報である。イニシエータ623は、ブロックI/Oパスの接続先、つまりI/O要求の発行元のモジュール(例えば、第1の通信装置240であり、ハードウェアモジュールおよびプログラムモジュールの何れでもよい。)を識別するための情報である。例えば、イニシエータ623は、ファイル制御部310およびストレージ制御部320間の通信を、iSCSI(Internet Small Computer System Interface)を用いて行う場合に用いられる。
【0099】
冗長データアクセス可否テーブル630は、冗長データアクセス可否情報の一例であり、冗長データに対するアクセス(I/O)が可能であるか否かを示す情報を記憶する。より具体的には、冗長データアクセス可否テーブル630は、冗長化グループID631と、第1の構成要素632と、第2の構成要素633とが対応付けられた情報を記憶する。
【0100】
冗長化グループID631は、冗長化グループを識別するための情報である。第1の構成要素632は、当該冗長化グループの第1の構成要素を示す情報である。第1の構成要素632は、例えば、当該冗長化グループの第1の構成要素である記憶装置230を識別するための情報と、当該記憶装置230へのアクセスが可能であるか否かを示す情報を含む。第2の構成要素633は、当該冗長化グループの第2の構成要素を示す情報である。第2の構成要素633は、例えば、当該冗長化グループの第2の構成要素である記憶装置230を識別するための情報と、当該記憶装置230へのアクセスが可能であるか否かを示す情報を含む。
【0101】
図7は、ファイル制御部用情報430の一例を示す図である。
【0102】
ファイル制御部用情報430には、ファイルシステムテーブル710と、認識ブロックボリュームテーブル720とが含まれる。
【0103】
ファイルシステムテーブル710は、ファイルシステム情報の一例であり、ファイル制御部310が提供するファイルサービス(ファイルシステム)に係る情報を記憶する。より具体的には、ファイルシステムテーブル710は、ファイルシステムID711と、所有ファイル制御部ID712と、メタデータ713とが対応付けられた情報を記憶する。
【0104】
ファイルシステムID711は、ファイルシステムを識別するための情報である。所有ファイル制御部ID712は、当該ファイルシステムを所有するファイル制御部310を識別するための情報である。メタデータ713は、当該ファイルシステムのファイルシステムタイプ等の情報である。
【0105】
認識ブロックボリュームテーブル720は、認識ブロックボリューム情報の一例であり、ファイル制御部310がどのようなブロックボリュームを認識しているかを示す情報を記憶する。より具体的には、認識ブロックボリュームテーブル720は、認識ブロックボリュームID721と、所有ファイル制御部ID722と、関連ファイルシステムID723と、デバイス名724と、WWID725とが対応付けられた情報を記憶する。
【0106】
認識ブロックボリュームID721は、ファイル制御部310が認識したブロックボリュームを識別するための情報である。所有ファイル制御部ID722は、当該ブロックボリュームを所有するファイル制御部310を識別するための情報である。関連ファイルシステムID723は、当該ブロックボリュームに関連付けられているファイルシステムを識別するための情報である。デバイス名724は、ファイル制御部310のOSにより付与されるデバイス名であって、当該ブロックボリュームに対して使用されるデバイス名である。WWID725は、当該ブロックボリュームを一意に特定するための情報である。なお、デバイス名とWWIDとは、認識ブロックボリュームテーブル720により紐付けられている。
【0107】
図8は、ファイル制御部ペアとストレージOS部ペアとの配置の一例を示す図である。
【0108】
ファイルサービスのクラスタ801では、アクティブ型のファイル制御部310とスタンバイ型のファイル制御部310とがペアとして、各々が異なるノード120に設けられている。
【0109】
図8の例では、第1のファイル制御部310については、アクティブ型の第1のファイル制御部310-1(以下、「アクティブファイル制御部」と記す)とスタンバイ型の第1のファイル制御部310-41(以下、「スタンバイファイル制御部」と記す)とがペアとして、アクティブファイル制御部が第1のノード120-1に設けられ、スタンバイファイル制御部が第4のノード120-4に設けられている。
【0110】
また、第2のファイル制御部310については、アクティブ型の第2のファイル制御部310-2とスタンバイ型の第2のファイル制御部310-42とがペアとして、アクティブ型の第2のファイル制御部310-2が第2のノード120-2に設けられ、スタンバイ型の第2のファイル制御部310-42が第4のノード120-4に設けられている。
【0111】
また、第3のファイル制御部310については、アクティブ型の第3のファイル制御部310-3とスタンバイ型の第3のファイル制御部310-43とがペアとして、アクティブ型の第3のファイル制御部310-3が第3のノード120-3に設けられ、スタンバイ型の第3のファイル制御部310-43が第4のノード120-4に設けられている。
【0112】
ブロックサービスのクラスタ802では、アクティブ型のストレージOS部322とスタンバイ型のストレージOS部322とがペアとして、各々が異なるノード120にファイル制御部ペアに対応して設けられている。
【0113】
図8の例では、第1のストレージOS部322については、アクティブファイル制御部とスタンバイファイル制御部とのペアに対応して、アクティブ型の第1のストレージOS部322-1(以下、「アクティブストレージOS部」と記す)とスタンバイ型の第1のストレージOS部322-41(以下、「スタンバイストレージOS部」と記す)とがペアとして、アクティブストレージOS部が第1のノード120-1に設けられ、スタンバイストレージOS部が第4のノード120-4に設けられている。
【0114】
また、第2のストレージOS部322については、アクティブ型の第2のファイル制御部310-2とスタンバイ型の第2のファイル制御部310-42とのペアに対応して、アクティブ型の第2のストレージOS部322-2とスタンバイ型の第2のストレージOS部322-42とがペアとして、アクティブ型の第2のストレージOS部322-2が第2のノード120-2に設けられ、スタンバイ型の第2のストレージOS部322-42が第4のノード120-4に設けられている。
【0115】
また、第3のストレージOS部322については、アクティブ型の第3のファイル制御部310-3とスタンバイ型の第3のファイル制御部310-43とのペアに対応して、アクティブ型の第3のストレージOS部322-3とスタンバイ型の第3のストレージOS部322-43とがペアとして、アクティブ型の第3のストレージOS部322-3が第3のノード120-3に設けられ、スタンバイ型の第3のストレージOS部322-43が第4のノード120-4に設けられている。
【0116】
このように、ストレージシステム100では、ファイル制御部310とストレージOS部322とが共にペアの構成であり、ノード120が合わせて配置されている。ファイル制御部ペアとストレージOS部ペアとにおいて、それぞれのアクティブ型を同一のノード120に配置し、それぞれのスタンバイ型を同一のノード120に配置することにより、正常時のみならず、フェイルオーバ時にもストレート構成を維持できるようになる。
【0117】
ここで、ストレージシステム100では、ストレージ制御部320に専用に割り当てる記憶装置230(ディスク制御をストレージ制御部320に任せる記憶装置230であり、例えば、記憶装置230-11,230-21,230-31,230-41)と、ハイパーバイザ340がアクセス制御する記憶装置230(システムディスク、データストア等であり、例えば、記憶装置230-12,230-22,230-32,230-42)と、が設けられている。
【0118】
ストレージシステム100では、ファイル制御部310のOSディスクデータ811は、ストレージ制御部320に割り当てられた記憶装置230からストレージ制御部320により提供されていて、ストレージ制御部320用のOSディスクデータ821は、ハイパーバイザ340により提供されている。
【0119】
例えば、アクティブファイル制御部のOSディスクデータ811と、アクティブファイル制御部が提供するファイル単位のデータ812,813とは、同じ第1のノード120-1の第1の記憶装置230-11内に存在し、スタンバイファイル制御部がある第4のノード120-4に冗長化される。なお、図示は省略するが、他のノード120のOSディスクデータ811およびファイル単位のデータ812,813についても同様である。付言するならば、スタンバイ型のファイル制御部310は、アクティブ型のファイル制御部310と同等のVMとして動作することができる。
【0120】
また、例えば、第1のストレージ制御部320-1のOSディスクデータ821およびクラスタ間DB400は、第1のファイル制御部310-1に提供する第1の記憶装置230-11とは別に、各ノード120に専用の第2の記憶装置230-12に記憶されている。なお、図示は省略するが、他のノードのストレージ制御部320のOSディスクデータ821およびクラスタ間DB400についても同様である。付言するならば、スタンバイ型のストレージOS部322は、クラスタ間DB400の情報を用いてアクティブ型のストレージOS部322と同様のストレージ制御部320の処理部として動作することができる。
【0121】
図9は、正常時のI/O処理の一例を示す図である。図9では、ファイルクライアント110から、アクティブファイル制御部にファイルアクセスの要求(ファイルI/O要求)が行われるケースを例に挙げてI/O処理について説明する。
【0122】
アクティブファイル制御部は、ペアの構成が一致しているアクティブストレージOS部を有する第1のストレージ制御部320-1にメモリアクセス(内部アクセス)でブロックI/O要求を通知する。
【0123】
アクティブストレージOS部は、ノード間データ保護制御部323を介して、自ノード120-1の第1の記憶装置230-11にブロックアクセス(内部アクセス)を行う。ブロックI/O要求がブロック単位のリード要求である場合は、ノード間データ保護制御部323は、自ノード120-1の第1の記憶装置230-11からデータの読み込みを行う。ブロックI/O要求がブロック単位のライト要求である場合は、ノード間データ保護制御部323は、自ノード120-1の第1の記憶装置230-11にデータの書き込みを行うと共に、バックエンドネットワークを介して、スタンバイストレージOS部を有する第4のストレージ制御部320-4にデータの書き込みを指示する。
【0124】
図10は、障害時(フェイルオーバ後)のI/O処理の一例を示す図である。図10では、ファイルクライアント110から、スタンバイファイル制御部にファイルアクセスの要求(ファイルI/O要求)が行われるケースを例に挙げてI/O処理について説明する。なお、スタンバイファイル制御部がIPアドレスを有効化して動作を開始することで、ファイルアクセスのアクセス先がアクティブファイル制御部からスタンバイファイル制御部に移る。
【0125】
スタンバイファイル制御部がファイルサービスに係る処理を引き継ぎ、スタンバイストレージOS部がストレージサービスに係る処理を引き継ぐと、配下の第7の記憶装置230-41に対してアクセス(I/O)が行われるようになる。
【0126】
図11は、ファイル制御部ペアとストレージOS部ペアとの組合せ(冗長化グループ)を作成する制御フローの一例を示す図である。
【0127】
S1101では、管理部330は、ストレージシステム100のインストール時に、どのような冗長化グループを組めるかを決定し、決定した冗長化グループの情報をクラスタ間DB400に記憶する。より具体的には、管理部330は、冗長化グループとして決定したファイル制御部ペアとストレージ制御部ペアとの情報から、ストレージOS部ペア情報と、ファイル制御部ペア情報と、ファイル制御部ストレージOS部対応情報とをクラスタ間DB400に記憶する。
【0128】
例えば、システム管理者によりクラスタ150に属するノード120が指定されると、管理部330は、現用系のノード数が3つであり、待機系のノード数が1つであったときは、現用系の3つのノード120の各々にアクティブ型のファイル制御部310およびアクティブ型のストレージOS部322のペアが1つずつ設けられ、待機系に指定された1つのノード120にスタンバイ型のファイル制御部310およびスタンバイ型のストレージOS部322のペアが3つ設けられるように、冗長化グループを決定する。
【0129】
ここで、クラスタ150に属するノード120のハードウェア資源が異なる場合、管理部330は、ノード120のハードウェア資源が最も多いノード120を待機系のノード120として決定してもよい。また、管理部330は、現用系のノード数「N(予め指定された自然数)」ごとに待機系のノード数「M(予め指定されたN以下の自然数)」を設ける等、クラスタ150に属するノード120の数に応じて現用系のノード120の数と待機系のノード120の数とを決定してもよい。
【0130】
S1102では、管理部330は、ファイル制御部ペア情報をファイル制御部310に設定する。これにより、ファイル制御部310は、自ファイル制御部310に割り当てられたIDを認識すると共に、ファイル制御部ペアの相手方のファイル制御部310を認識することができる。
【0131】
S1103では、ファイル制御部310は、ファイル制御部ペア情報の設定を完了したことを管理部330に通知(応答)する。
【0132】
S1104では、管理部330は、ストレージOS部ペア情報をストレージ制御部320に設定する。これにより、ストレージ制御部320は、自ストレージ制御部320に割り当てられたIDを認識すると共に、ストレージOS部ペアの相手方のストレージOS部322を認識することができる。
【0133】
S1105では、ファイル制御部310は、ストレージOS部ペア情報の設定を完了したことを管理部330に通知(応答)する。
【0134】
図12は、ファイルシステムを作成する制御フローの一例を示す図である。当該制御フローでは、例えば、各ストレージ制御部320のプールの容量が取得され、プールの空き容量が均等になるようにブロックボリュームが割り当てられる。なお、当該制御フローは、システム管理者からのユーザ指示を契機に開始する。ユーザ指示には、こういうファイルシステムを作成したいといった情報が含まれていてもよいし、処理対象のファイル制御部ペアおよびストレージOS部ペア(ストレージ制御部320のペア)を特定可能な情報も含まれていてもよい。
【0135】
S1201では、管理部330は、プールとしてどれくらいの容量があるかを、各ストレージ制御部320に問い合わせ、空き容量を取得する。なお、ストレージ制御部320は、どういう記憶装置230が接続されているから、どれくらいのプールを組めるかといった、プールの情報を有している。
【0136】
S1202では、管理部330は、ブロックボリュームをいくつ作成できるかを判定し、各ストレージ制御部320にブロックボリュームの作成指示を出す。
【0137】
S1203では、アクティブ型のストレージOS部322を有するストレージ制御部320は、ブロックボリュームを作成する。
【0138】
S1204では、アクティブ型のストレージOS部322を有するストレージ制御部320は、クラスタ間DB400に、作成したブロックボリュームに係る情報(ブロックボリューム情報)を設定する。
【0139】
S1205では、アクティブ型のストレージOS部322を有するストレージ制御部320は、ブロックボリュームを作成したことを管理部330に通知(応答)する。
【0140】
S1206では、管理部330は、アクティブ型のストレージOS部322を有するストレージ制御部320に対して、ファイル制御部ストレージOS部対応情報を通知すると共に、接続先ファイル制御部情報を設定するように指示を出す。つまり、ブロックボリュームをどのファイル制御部310に割り当てるべきかというのは、ファイル制御部ストレージOS部対応情報から判断できるので、管理部330は、ストレージ制御部320に対して、当該ストレージ制御部320のクライアントとなるアクティブ型のファイル制御部310にブロックボリュームを割り当てるように指示を出す。
【0141】
S1207では、アクティブ型のストレージOS部322を有するストレージ制御部320は、ファイル制御部ストレージOS部対応情報をもとに接続先ファイル制御部情報を生成し、接続先ファイル制御部情報をクラスタ間DB400に設定する。
【0142】
S1208では、アクティブ型のストレージOS部322を有するストレージ制御部320は、接続先ファイル制御部情報の設定が完了したことを管理部330に通知(応答)する。
【0143】
S1209では、管理部330は、アクティブ型のストレージOS部322を有するストレージ制御部320に対して、新規に作成されたブロックボリュームにパスを設定するように指示を出す。
【0144】
S1210では、アクティブ型のストレージOS部322を有するストレージ制御部320は、当該ストレージ制御部320が提供する新規のブロックボリュームにパスを張るために、ブロックボリュームと当該ブロックボリュームにアクセスするファイル制御部310とを対応付け、当該ブロックボリュームのブロックボリュームIDと当該ファイル制御部310のアクセスファイル制御部IDとを指定したブロックボリューム情報を生成し、生成したブロックボリューム情報をクラスタ間DB400に設定する。
【0145】
S1211では、アクティブ型のストレージOS部322を有するストレージ制御部320は、パスを設定したことを管理部330に通知(応答)する。
【0146】
以上の処理により、アクティブ型のストレージOS部322を有するストレージ制御部320が提供するブロックボリュームが作成され、当該ストレージ制御部320が提供するブロックボリュームにパスが張られることにより、当該ストレージ制御部320が動作可能な状態になる。なお、ブロックボリュームへのパスが設定されることで、ブロックボリュームごとに設定されているアクセスファイル制御部IDに対応するファイル制御部310(イニシエータ)からのアクセスが許可される。
【0147】
S1212では、管理部330は、作成されたブロックボリュームを認識するようにアクティブ型のファイル制御部310に指示を出す。
【0148】
S1213では、アクティブ型のファイル制御部310は、作成されたブロックボリュームを認識(検出)する。これにより、ストレージ制御部320が提供しているブロックボリュームがファイル制御部310のボリュームとしてOS上で見えるようになる。
【0149】
S1214では、アクティブ型のファイル制御部310は、認識ブロックボリューム情報をクラスタ間DB400に設定する。
【0150】
S1215では、アクティブ型のファイル制御部310は、認識ブロックボリューム情報の設定が完了したことを管理部330に通知(応答)する。
【0151】
S1216では、管理部330は、認識したブロックボリューム上にユーザ指示で指定されているファイルシステムを作るようにアクティブ型のファイル制御部310に指示を出す。
【0152】
S1217では、アクティブ型のファイル制御部310は、所定のコマンドを実行して、認識したブロックボリューム上にファイルシステムを作成する。
【0153】
S1218では、アクティブ型のファイル制御部310は、作成したファイルシステムのファイルシステム情報をクラスタ間DB400に設定する。
【0154】
S1219では、アクティブ型のファイル制御部310は、ファイルシステム情報の設定が完了したことを管理部330に通知(応答)する。
【0155】
以上の処理により、アクティブ型のストレージOS部322を有するストレージ制御部320が提供するブロックボリュームが認識され、当該ブロックボリュームにファイルシステムが作成されることにより、当該ファイル制御部310が動作可能な状態になる。
【0156】
図13は、正常時のリード処理の制御フローの一例を示す図である。図13では、ファイルクライアント110から、アクティブファイル制御部にファイル単位のリード要求が行われるケースを例に挙げてリード処理について説明する。
【0157】
S1301では、アクティブファイル制御部は、ファイルクライアント110からファイル単位のリード要求を受信する。
【0158】
S1302では、アクティブファイル制御部は、リクエスト変換を行う。例えば、アクティブファイル制御部は、ファイルとブロックボリューム内のブロック(格納位置)とを対応付けたテーブル(図示は省略)を参照して、当該ファイルがどのブロックに対応しているのかを特定し、ファイル単位のリード要求を、ブロック単位のリード要求に変換する。
【0159】
S1303では、アクティブファイル制御部は、ブロック単位のリード要求を、アクティブストレージOS部を有するストレージ制御部320-1に通知する。
【0160】
S1304では、ストレージ制御部320-1は、アクセス可否判定を行う。より具体的には、ストレージ制御部320-1は、冗長データアクセス可否テーブル630を用いて、アクティブファイル制御部およびアクティブストレージOS部が属する冗長化グループに対応するレコードを参照し、当該レコードの第1の構成要素のアクセス可否を判定する。ストレージ制御部320-1は、当該レコードの第1の構成要素のアクセス可否が「可」である場合、第1の構成要素に規定されている記憶装置230を特定し、アクセス「可」と判定する。当該レコードの第1の構成要素のアクセス可否が「不可」である場合は、ストレージ制御部320-1は、第2の構成要素のアクセス可否を判定する。ストレージ制御部320-1は、第2の構成要素のアクセス可否が「可」である場合は、第2の構成要素に規定されている記憶装置230を特定し、アクセス「可」と判定する。ストレージ制御部320-1は、第2の構成要素のアクセス可否が「不可」である場合は、アクセス(リード)できる記憶装置230がない(エラー)と特定し、アクセス「不可」と判定してよい。
【0161】
例えば、アクティブファイル制御部およびアクティブストレージOS部が「冗長化グループ1」に属している場合、ストレージ制御部320-1は、冗長データアクセス可否テーブル630を参照して、記憶装置230-11にアクセスが可能であると判定する。
【0162】
S1305では、ストレージ制御部320-1は、アクセスが「可」であると判定した記憶装置230に対してデータの読み込みを行う。本例では、記憶装置230-11へのアクセスが「可」であるので、ストレージ制御部320-1は、記憶装置230-11に対してデータの読み込み(ローカルリード)を行う。
【0163】
S1306では、ストレージ制御部320-1は、読み込んだブロック単位のデータ(以下、「ブロックデータ」と記す)と、読み込みが完了したこととを、アクティブファイル制御部に通知(ブロックI/O応答)する。
【0164】
S1307では、アクティブファイル制御部は、データ変換を行う。データ変換では、ブロックデータがファイル単位のデータ(以下、「ファイルデータ」と記す)に変換される。
【0165】
S1308では、アクティブファイル制御部は、ファイルデータと、読み込みが完了したことをファイルクライアント110に通知(ファイルI/O応答)する。
【0166】
図14は、正常時のライト処理の制御フローの一例を示す図である。図14では、ファイルクライアント110から、アクティブファイル制御部にファイル単位のライト要求が行われるケースを例に挙げてライト処理について説明する。
【0167】
S1401では、アクティブファイル制御部は、ファイルクライアント110からファイル単位のライト要求を受信する。
【0168】
S1402では、アクティブファイル制御部は、リクエスト変換を行う。例えば、アクティブファイル制御部は、ファイルとブロックボリューム内のブロック(格納位置)とを対応付けたテーブル(図示は省略)を参照して、当該ファイルがどのブロックに対応しているのかを特定し、ファイル単位のライト要求を、ブロック単位のライト要求に変換する。
【0169】
S1403では、アクティブファイル制御部は、ブロック単位のライト要求を、アクティブストレージOS部を有するストレージ制御部320-1に通知する。
【0170】
S1404では、ストレージ制御部320-1は、アクセス可否判定を行う。より具体的には、ストレージ制御部320-1は、冗長データアクセス可否テーブル630を用いて、アクティブファイル制御部およびアクティブストレージOS部が属する冗長化グループに対応するレコードを参照し、第1の構成要素のアクセス可否を判定する。ストレージ制御部320-1は、当該レコードの第1の構成要素のアクセス可否が「可」である場合は、第1の構成要素に規定されている記憶装置230を特定し、アクセス「可」と判定する。また、ストレージ制御部320-1は、第2の構成要素のアクセス可否を判定する。ストレージ制御部320-1は、第2の構成要素のアクセス可否が「可」である場合、第2の構成要素に規定されている記憶装置230を特定し、アクセス「可」と判定する。ストレージ制御部320-1は、第1の構成要素のアクセス可否および第2の構成要素のアクセス可否の両方が「不可」であるときは、アクセス(ライト)できる記憶装置230がない(エラー)と特定し、アクセス「不可」と判定してよい。
【0171】
例えば、アクティブファイル制御部およびアクティブストレージOS部が「冗長化グループ1」に属している場合、ストレージ制御部320-1は、冗長データアクセス可否テーブル630を参照して、記憶装置230-11および記憶装置230-41にアクセスが可能であると判定する。
【0172】
S1405およびS1406では、ストレージ制御部320-1は、アクセスが「可」であると判定した記憶装置230に対してデータの書き込みを行う。本例では、記憶装置230-11へのアクセスが「可」であるので、ストレージ制御部320-1は、記憶装置230-11に対してデータの書き込み(ローカルライト)を行う(S1405)。また、記憶装置230-41へのアクセスが「可」であるので、ストレージ制御部320-1は、ノード120-4の記憶装置230-41に対してデータの書き込み(冗長ライト)を行うために、プール構成ボリューム単位のライトコマンドを、スタンバイストレージOS部を有するストレージ制御部320-4に送信する(S1406)。
【0173】
S1407では、ストレージ制御部320-4は、記憶装置230-41に対してデータの書き込み(ローカルライト)を行う。
【0174】
S1408では、ストレージ制御部320-4は、記憶装置230-41への書き込みが完了したことを、アクティブストレージOS部を有するストレージ制御部320-1に送信(応答)する。
【0175】
S1409では、ストレージ制御部320-1は、ブロック単位のデータの書き込みが完了したことをアクティブファイル制御部に通知(ブロックI/O応答)する。
【0176】
S1410では、アクティブファイル制御部は、ファイル単位のデータの書き込みが完了したことをファイルクライアント110に送信(ファイルI/O応答)する。
【0177】
図15は、ノード120-1に障害が発生したときのフェイルオーバの制御フローの一例を示す図である。なお、障害が発生したノード120を検出する主体については限定しない。自ノード120が障害を検出してもよいし、他ノード120が障害を検出してもよいし、管理ノードが障害を検出してもよいし、その他の手段により障害を検出してもよい。
【0178】
S1501では、管理部330は、クラスタ間DB400の管理部用情報410を更新する。より具体的には、管理部330は、ノード状態テーブル540のノードID541が「Node1」であるレコードの状態542を「正常」から「閉塞」に変更する。
【0179】
S1502およびS1503では、管理部330は、障害が発生しているノード120の数(フェイルオーバ数)を確認する。例えば、管理部330は、管理部用情報410(例えば、ノード状態テーブル540)を参照し、フェイルオーバ数が「1」である場合、S1504に処理を移し、フェイルオーバ数が「2」以上である場合、処理を終了する。
【0180】
S1504およびS1505では、管理部330は、フェイルオーバ対象のファイル制御部310およびストレージ制御部320を特定する。
【0181】
より具体的には、管理部330は、ストレージOS部ペアテーブル520を参照し、アクティブノード522が「Node1」のレコードを検索し、当該レコードのストレージOS部ID521「ストレージOS部1」およびスタンバイノード523「Node4」(スタンバイストレージOS部)を特定する。また、管理部330は、ファイル制御部ペアテーブル510を参照し、アクティブノード512が「Node1」のレコードを検索し、当該レコードのファイル制御部ID511「ファイル制御部1」およびスタンバイノード513「Node4」(スタンバイファイル制御部)を特定する。
【0182】
S1506では、管理部330は、スタンバイストレージOS部を有するストレージ制御部320-4にフェイルオーバの指示を通知する。
【0183】
S1507およびS1508では、ストレージ制御部320-4は、アクティブストレージOS部が用いていたブロックボリューム情報および接続ファイル制御部情報をストレージ制御部用情報420から取得し、アクティブストレージOS部と同じようにブロックボリュームを作成し、ブロックサービスに係る処理を実行できるようにI/Oできる状態に設定する。
【0184】
S1509では、ストレージ制御部320-4は、ストレージ制御部用情報420を更新する。より具体的には、ストレージ制御部320-4は、ストレージ制御部用情報420の冗長データアクセス可否テーブル630を参照し、第1の構成要素632または第2の構成要素633の記憶装置230にノード120-1の記憶装置230-11が含まれているレコードを特定する。本例では、ストレージ制御部320-4は、冗長化グループID631が「冗長化グループ1」であるレコードを特定する。この場合、ストレージ制御部320-4は、「冗長化グループ1」であるレコードの第1の構成要素632のアクセス可否を「不可」に設定する。
【0185】
S1510では、ストレージ制御部320-4は、ストレージ制御部320-4のフェイルオーバを完了したことを管理部330に通知(応答)する。
【0186】
S1511では、管理部330は、スタンバイファイル制御部にフェイルオーバの指示を通知する。
【0187】
S1512およびS1513では、スタンバイファイル制御部は、アクティブファイル制御部が持っていたファイルシステム情報をファイル制御部用情報430から取得し、作成されたブロックボリュームを検出したり、作成されたブロックボリュームにファイルシステムを作成したりする等して、ファイルサービスに係る処理を実行できるようにI/Oできる状態に設定する。
【0188】
S1514では、スタンバイファイル制御部は、スタンバイファイル制御部のフェイルオーバを完了したことを管理部330に通知(応答)する。
【0189】
図16は、ノード120-2に障害が発生している場合に、ノード120-1に障害が発生したときのフェイルオーバ(2台目のフェイルオーバ)の制御フローの一例を示す図である。
【0190】
S1601では、管理部330は、クラスタ間DB400の管理部用情報410を更新する。より具体的には、管理部330は、ノード状態テーブル540のノードID541が「Node1」であるレコードの状態542を「正常」から「閉塞」に変更する。
【0191】
S1602およびS1603では、管理部330は、フェイルオーバ数を確認する。例えば、管理部330は、管理部用情報410(例えば、ノード状態テーブル540)を参照し、フェイルオーバ数が「2」である場合、S1604に処理を移し、フェイルオーバ数が「2」でない場合、処理を終了する。
【0192】
S1604では、管理部330は、ファイルサービスのクラスタ801を閉塞する指示を、当該クラスタ801に属するアクティブ型のファイル制御部310と、当該クラスタ801に属する動作しているスタンバイ型のファイル制御部310とに通知する。
【0193】
S1605では、S1604において通知を受けたファイル制御部310は、クラスタ801の閉塞を完了したこと(例えば、ファイルクライアント110からのファイルI/O要求を受け付けなくしたこと)を管理部330に通知(応答)する。
【0194】
S1606では、管理部330は、ブロックサービスのクラスタ802を閉塞する指示を、当該クラスタ802に属するアクティブ型のストレージOS部322を有するストレージ制御部320と、当該クラスタ802に属する動作しているスタンバイ型のストレージOS部322を有するストレージ制御部320と、に通知する。
【0195】
S1607では、S1606において通知を受けたストレージ制御部320は、クラスタ802の閉塞を完了したこと(例えば、記憶装置230へのアクセスを不可にしたこと)を管理部330に通知(応答)する。
【0196】
図17は、待機系のノード120(例えば、ノード120-4)に障害が発生したときのフェイルオーバの制御フローの一例を示す図である。
【0197】
S1701では、管理部330は、クラスタ間DB400の管理部用情報410を更新する。より具体的には、管理部330は、ノード状態テーブル540のノードID541が「Node4」であるレコードの状態542を「正常」から「閉塞」に変更する。
【0198】
S1702およびS1703では、管理部330は、障害が発生しているノード120-4が待機系のノード120であるかを確認する。例えば、管理部330は、管理部用情報410(例えば、ファイル制御部ペアテーブル510、ストレージOS部ペアテーブル520)を参照し、障害が発生しているノード120-4が待機系のノード120であると判定した場合、S1704に処理を移し、障害が発生しているノード120-4が待機系のノード120でないと判定した場合、処理を終了する。
【0199】
S1704では、管理部330は、冗長化を停止する指示を、アクティブ型のストレージOS部322を有するストレージ制御部320に指示する。
【0200】
S1705では、S1704において指示を受けたストレージ制御部320は、ストレージ制御部用情報420を更新する。例えば、当該ストレージ制御部320は、冗長データアクセス可否テーブル630を参照し、当該ストレージ制御部320が属する冗長化グループのレコードの第2の構成要素633のアクセス可否を「可」から「不可」に変更する。
【0201】
S1706では、S1704において指示を受けたストレージ制御部320は、ストレージ制御部用情報420を更新したこと(例えば、冗長化を停止したこと)を管理部330に通知(応答)する。
【0202】
なお、待機系のノード120では、全てのスタンバイ型のファイル制御部310にメモリ220が割り当てられてもよいし、複数の現用系のノード120の何れかのノード120に障害が発生した場合、障害が発生したノード120のアクティブ型のファイル制御部310とペアであるスタンバイ型のファイル制御部310にメモリ220が割り当てられてもよい。
【0203】
図18は、フェイルオーバ後のリード処理の制御フローの一例を示す図である。図18では、ファイルクライアント110から、スタンバイファイル制御部にファイル単位のリード要求が行われるケースを例に挙げてリード処理について説明する。
【0204】
S1801では、スタンバイファイル制御部は、ファイルクライアント110からファイル単位のリード要求を受信する。
【0205】
S1802では、スタンバイファイル制御部は、リクエスト変換を行う。なお、リクエスト変換については、S1302と同様であるので、その説明を省略する。
【0206】
S1803では、スタンバイファイル制御部は、ブロック単位のリード要求を、スタンバイストレージOS部を有するストレージ制御部320-4に通知する。
【0207】
S1804では、ストレージ制御部320-4は、アクセス可否判定を行う。なお、アクセス可否判定については、S1304と同様であるので、その説明を省略する。
【0208】
S1805では、ストレージ制御部320-4は、アクセスが「可」であると判定した記憶装置230に対してデータの読み込みを行う。本例では、記憶装置230-41へのアクセスが「可」であるので、ストレージ制御部320-4は、記憶装置230-41に対してデータの読み込み(ローカルリード)を行う。
【0209】
S1806では、ストレージ制御部320-4は、ブロックデータと、読み込みが完了したこととを、スタンバイファイル制御部に通知(ブロックI/O応答)する。
【0210】
S1807では、スタンバイファイル制御部は、データ変換を行う。データ変換では、ブロックデータがファイルデータに変換される。
【0211】
S1808では、スタンバイファイル制御部は、ファイルデータと、読み込みが完了したことをファイルクライアント110に通知(ファイルI/O応答)する。
【0212】
図19は、フェイルオーバ後のライト処理の制御フローの一例を示す図である。図19では、ファイルクライアント110から、スタンバイファイル制御部にファイル単位のライト要求が行われるケースを例に挙げてライト処理について説明する。
【0213】
S1901では、スタンバイファイル制御部は、ファイルクライアント110からファイル単位のライト要求を受信する。
【0214】
S1902では、スタンバイファイル制御部は、リクエスト変換を行う。なお、リクエスト変換については、S1402と同様であるので、その説明を省略する。
【0215】
S1903では、スタンバイファイル制御部は、ブロック単位のライト要求を、スタンバイストレージOS部を有するストレージ制御部320-4に通知する。
【0216】
S1904では、ストレージ制御部320-4は、アクセス可否判定を行う。なお、アクセス可否判定については、S1404と同様であるので、その説明を省略する。本例では、記憶装置230-11へのアクセスが「不可」であり、記憶装置230-41へのアクセスが「可」であるので、ストレージ制御部320-4は、記憶装置230-41に対してデータの書き込み(ローカルライト)を行う。
【0217】
S1905では、ストレージ制御部320-4は、アクセスが「可」であると判定した記憶装置230に対してデータの書き込みを行う。
【0218】
S1906では、ストレージ制御部320-4は、ブロック単位のデータの書き込みが完了したことをスタンバイファイル制御部に通知(ブロックI/O応答)する。
【0219】
S1907では、スタンバイファイル制御部は、ファイル単位のデータの書き込みが完了したことをファイルクライアント110に送信(ファイルI/O応答)する。
【0220】
本実施の形態では、ファイル制御部ペアおよびストレージOS部ペアを同一ノード120上で揃えることにより、ノード120に障害が発生したときに、それぞれのフェイルオーバ先が同一ノード120となり、ストレート構成を維持できる。
【0221】
また、本実施の形態では、ノード120をパーソナルコンピュータ等に適用する場合、上述した制御に関するプログラムは、CD-ROM等の記録媒体、インターネット等のデータ信号を通じて提供することができる。
【0222】
図20は、プログラムが提供される態様の一例を示す図である。
【0223】
パーソナルコンピュータ2000は、CD-ROM2040を介してプログラムの提供を受ける。また、パーソナルコンピュータ2000は、通信回線2010との接続機能を有する。コンピュータ2020は、上記プログラムを提供するサーバーコンピュータであり、ハードディスク2030等の記録媒体にプログラムを格納する。通信回線2010は、インターネット、パソコン通信等の通信回線、専用通信回線等である。コンピュータ2020は、ハードディスク2030を使用してプログラムを読み出し、通信回線2010を介してプログラムをパーソナルコンピュータ2000に送信する。すなわち、プログラムをデータ信号として搬送波を介して、通信回線2010を介して送信する。このように、プログラムは、記録媒体、データ信号(搬送波)等の種々の形態のコンピュータ読み込み可能なコンピュータプログラム製品として供給できる。
【0224】
(2)付記
上述の実施の形態には、例えば、以下のような内容が含まれる。
【0225】
上述の実施の形態においては、本発明をシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
【0226】
また、上述の実施の形態において、例えば、ノード120の1つの機能(ファイル制御部310、ストレージ制御部320等)は、複数の機能に分けられていてもよいし、複数の機能は、1つの機能にまとめられていてもよい。また、ノード120の機能の一部は、別の機能として設けられてもよいし、他の機能に含められていてもよい。また、ノード120の機能の一部は、ノード120と通信可能な他のコンピュータにより実現されてもよい。
【0227】
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
【0228】
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0229】
上述した実施の形態は、例えば、以下の特徴的な構成を有する。
【0230】
(1)
ファイル単位のI/Oを行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノード(例えば、ノード120)がネットワークを介して接続されているストレージシステム(例えば、ストレージシステム100)であって、上記複数のノードの各々は、データを記憶する記憶装置(例えば、記憶装置230)と、上記ファイルサービスにおいて、ファイルクライアント(例えば、ファイルクライアント110)からのファイルI/O要求を受け付け、上記ファイルI/O要求をブロックI/O要求に変換するファイル処理部(ファイル制御部310、VM、回路等)と、上記ブロックサービスにおいて、上記ブロックI/O要求をもとに上記記憶装置に対するI/Oを実行するための処理を行うブロック処理部(ストレージ制御部320、ストレージOS部322、VM、回路等)とを含んで構成され、上記複数のノードには、現用系のノード(例えば、ノード120-1)と待機系のノード(例えば、ノード120-4)とが含まれ、上記現用系のノードのファイル処理部と上記待機系のノードのファイル処理部とをペアとして管理し、上記現用系のノードのファイル処理部を動作可能に設定し、上記現用系のノードのブロック処理部と上記待機系のノードのブロック処理部とをペアとして管理し、上記現用系のノードのブロック処理部を動作可能に設定する管理部(管理部330、VM、回路、管理ノード等)を備える。
【0231】
上記構成では、例えば、ファイル処理部およびブロック処理部をそれぞれペアとし、同じ物理ノードに配置することで、ファイル処理部およびブロック処理部間では内部通信が行われ、ファイルサービスとブロックサービスとの連携において、ノード間の通信回数を抑えることができる。また、上記構成では、例えば、現用系のノードと、待機系のノードとが別々に設けられているので、現用系のノードのハードウェア資源を待機系のために割り当てる必要がなく、現用系のノードの処理性能を高めることができる。例えば、現用系のノードと待機系のノードとを分けることで、従来待機系に使用していたリソース分を現用系のファイル処理部に割り当てることができ、IO処理の性能が向上する。また、例えば、現用系の3台のノードに他の現用系のノードに対応する待機系のファイル処理部およびブロック処理部を設ける場合、6台分のハードウェア資源が必要であるが、待機系専用のノードを設けることで、4台分で済むので、コストを抑えることができる。
【0232】
(2)
上記現用系のノードは、複数あり(例えば、ノード120-1~ノード120-3)、上記待機系のノードには、上記複数の現用系のノードの各々のファイル処理部およびブロック処理部とペアであるファイル処理部(例えば、ファイル制御部310-41~ファイル制御部310-43)およびブロック処理部(例えば、ストレージOS部322-41~ストレージOS部322-43)が設けられている(例えば、図8参照)。
【0233】
上記構成では、現用系のペアであるファイル処理部およびブロック処理部が待機系のノードにまとめて設けられているので、例えば、複数の現用系のノードに対応して複数の待機系のノードを設ける場合と比べて、コストを抑えることができる。例えば、現用系の3台のノードの各々に対応して待機系のノードを設ける場合、6台分のハードウェア資源が必要であるが、待機系専用のノードを設けることで、4台分で済むので、コストを抑えることができる。
【0234】
(3)
上記待機系のノードのハードウェア資源は、上記複数の現用系の何れのノードのハードウェア資源よりも多い。
【0235】
ここで、待機系のノードには、フェイルオーバにより待機系のファイル処理部およびブロック処理部が現用系として動作する場合でも、待機系の他のブロック処理部が担うデータの冗長化などを実行可能なハードウェア資源が必要になる。上記構成によれば、現用系のノードのハードウェア資源を待機系のノードのハードウェア資源よりも少なくすることができるので、ハードウェア資源を有効に使用したり、コストを抑えたりすることができる。
【0236】
(4)
上記待機系のノードでは、上記複数の現用系のノードの何れかのノードに障害が発生した場合、上記ノードのファイル処理部とペアであるファイル処理部にメモリ(例えば、メモリ220)が割り当てられる。
【0237】
上記構成によれば、例えば、将来を見越して過剰にメモリの容量が割り当てられるオーバープロビジョニングを不要にすることができる。
【0238】
(5)
上記管理部は、ノードの状態を示すノード状態情報(例えば、ノード状態テーブル540)を管理し、上記複数の現用系のノードの何れかのノードに障害が発生した場合、上記ノードが閉塞したことを示す情報を上記ノード状態情報に格納し、上記ノード状態情報を参照し、障害が発生しているノード数が1つであるときは、上記ノードのファイル処理部とペアである上記待機系のノードのファイル制御部を動作可能に設定し、上記ノードのブロック処理部とペアである上記待機系のノードのブロック制御部を動作可能に設定する(例えば、図15参照)。
【0239】
上記構成によれば、例えば、フェイルオーバが行われた場合、待機系のノードのファイル処理部およびブロック処理部間では内部通信が行われるので、ファイルサービスとブロックサービスとの連携において、ノード間の通信回数を抑えることができる。
【0240】
(6)
上記待機系のノードには、ファイル処理部およびブロック処理部の1つのペアを動作可能なハードウェア資源が設けられ、上記管理部は、上記ノード状態情報を参照し、障害が発生しているノード数が2つであるときは、上記複数の現用系のノードのうち、障害が発生していないノードのファイル処理部およびブロック処理部に処理を実行しないように指示し、上記待機系のノードの動作しているファイル処理部およびブロック処理部に処理を実行しないように指示する(例えば、図16参照)。
【0241】
上記構成によれば、例えば、待機系のノードのファイル制御部およびブロック処理部のペアが2つ以上動作することにより、待機系のノードのハードウェア資源が不足し、データの整合性が保たれなくなること、レスポンスが悪化すること等を回避することができる。
【0242】
(7)
上記現用系のノードのファイル処理部は、ファイルクライアントからのファイルI/O要求を受け付けた場合、上記ファイルI/O要求をブロックI/O要求に変換し(例えば、S1402参照)、上記現用系のノードのブロック処理部は、上記ブロックI/O要求をもとに上記現用系のノードの記憶装置に対するI/Oを実行するための処理を行い(例えば、S1405)、上記ブロック処理部とペアである上記待機系のノードのブロック処理部に上記ブロックI/O要求をもとに上記待機系のノードの記憶装置に対するI/Oを実行するようにデータの冗長化を指示し(例えば、S1406)、上記管理部は、上記待機系のノードに障害が発生した場合、上記現用系のノードのブロック処理部にデータの冗長化を停止するように指示する(例えば、図17参照)。
【0243】
上記構成によれば、例えば、待機系のノードに障害が発生してデータの冗長化ができない場合に、現用系のノードのブロック処理部から待機系のノードのブロック処理部にデータの冗長化が指示されなくなるので、ノード間の通信回数を低減することができる。
【0244】
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
【0245】
「A、B、およびCのうちの少なくとも1つ」という形式におけるリストに含まれる項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができると理解されたい。同様に、「A、B、またはCのうちの少なくとも1つ」の形式においてリストされた項目は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、B、およびC)を意味することができる。
【符号の説明】
【0246】
100……ストレージシステム、110……ファイルクライアント、120……ノード。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20