JP7100090B2 - ストレージシステム、連携方法、およびプログラム - Google Patents

ストレージシステム、連携方法、およびプログラム Download PDF

Info

Publication number
JP7100090B2
JP7100090B2 JP2020130800A JP2020130800A JP7100090B2 JP 7100090 B2 JP7100090 B2 JP 7100090B2 JP 2020130800 A JP2020130800 A JP 2020130800A JP 2020130800 A JP2020130800 A JP 2020130800A JP 7100090 B2 JP7100090 B2 JP 7100090B2
Authority
JP
Japan
Prior art keywords
file
block
processing unit
control unit
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020130800A
Other languages
English (en)
Other versions
JP2022027033A (ja
Inventor
佳史 三股
賢哲 江口
直也 服部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2020130800A priority Critical patent/JP7100090B2/ja
Priority to US17/037,841 priority patent/US11165850B1/en
Priority to CN202110260903.3A priority patent/CN114063896A/zh
Priority to US17/487,541 priority patent/US11496547B2/en
Publication of JP2022027033A publication Critical patent/JP2022027033A/ja
Application granted granted Critical
Publication of JP7100090B2 publication Critical patent/JP7100090B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、概して、ストレージシステムにおけるノード間の通信に関する。
従来、ファイルサービスを提供するためのVM(FSVM:File Server Virtual Machine)を各物理サーバ上に配置し、FSVMが仮想的なスケールアウトファイルサーバを構築するストレージシステムが知られている。更に、FSVMのバックエンドとして、ブロックサービスを提供するためのCVM(Controller Virtual Machine)を各物理サーバ上に配置し、仮想的なスケールアウトブロックストレージを構築するストレージシステムが知られている(特許文献1参照)。
米国特許第10095506号明細書
特許文献1に記載のストレージシステムでは、FSVMを備える物理サーバと当該FSVMのバックエンドとなるCVMを備える物理サーバとが異なることがあり、その場合、物理サーバ間の通信オーバヘッドが増加し、ファイル単位のアクセス(以下、「ファイルアクセス」と記す)の性能が劣化してしまう。この点、物理サーバ間のネットワークに高速ネットワークを採用することで性能劣化を回避することが考えられるが、このような高速ネットワークは、一般的に高価である。
本発明は、以上の点を考慮してなされたもので、ファイルサービスとブロックサービスとの連携においてノード間の通信が増加することを回避し得るストレージシステム等を提案しようとするものである。
かかる課題を解決するため本発明においては、ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノードがネットワークを介して接続されているストレージシステムであって、データを記憶する第1の記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換する第1のファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記第1の記憶装置に対するI/Oを実行するための処理を行う第1のブロック処理部とを含んで構成される第1のノードと、データを記憶する第2の記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換する第2のファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記第2の記憶装置に対するI/Oを実行するための処理を行う第2のブロック処理部とを含んで構成される第2のノードと、前記第1のファイル処理部と前記第2のファイル処理部とをペアとして管理し、前記第1のファイル処理部を動作可能に設定し、前記第1のブロック処理部と前記第2のブロック処理部とをペアとして管理し、前記第1のブロック処理部を動作可能に設定する管理部と、を設けるようにした。
上記構成では、ファイル処理部およびブロック処理部をそれぞれペアとし、同じ物理ノードに配置することで、ファイル処理部およびブロック処理部間では内部通信が行われ、ファイルサービスとブロックサービスとの連携において、ノード間の通信回数を抑えることができる。
本発明によれば、利便性が高いストレージシステムを実現することができる。上記した以外の課題、構成および効果は、以下の発明を実施するための形態の説明により明らかにされる。
第1の実施の形態によるストレージシステムに係る構成の一例を示す図である。 第1の実施の形態によるノードのハードウェア構成の一例を示す図である。 第1の実施の形態によるノードのソフトウェア構成の一例を示す図である。 第1の実施の形態によるクラスタ間DBの一例を示す図である。 第1の実施の形態による管理部用情報の一例を示す図である。 第1の実施の形態によるストレージ制御部用情報の一例を示す図である。 第1の実施の形態によるファイル制御部用情報の一例を示す図である。 第1の実施の形態によるファイル制御部ペアとストレージOS部ペアとの配置の一例を示す図である。 第1の実施の形態による正常時のI/O処理の一例を示す図である。 第1の実施の形態による障害時のI/O処理の一例を示す図である。 第1の実施の形態による制御フローの一例を示す図である。 第1の実施の形態による制御フローの一例を示す図である。 第1の実施の形態による制御フローの一例を示す図である。 第1の実施の形態による制御フローの一例を示す図である。 第1の実施の形態による制御フローの一例を示す図である。 第1の実施の形態による制御フローの一例を示す図である。 第1の実施の形態による制御フローの一例を示す図である。 第1の実施の形態によるプログラムが提供される態様の一例を示す図である。
(1)第1の実施の形態
本実施の形態では、上述した課題を解決するための構成、方法等について説明する。更に、本実施の形態では、例えば、下記のようなストレージシステムの利便性に関する構成、方法等についても説明する。
上記特許文献1に記載のストレージシステムでは、例えば、正常運用時、あるFSVMが担当するファイルのデータは、同一物理ノード上に存在するCVMがアクセスするローカルストレージに存在し、ファイルに対するリードのアクセスに対して物理ネットワークを介したアクセスを回避できる。
ここで、CVMを利用したデータ保護方式では、冗長データを他の物理サーバに適宜分散して配置する。そのため、あるCVMのローカルストレージに保存されるデータの全体を見れば、冗長データは、多数の物理サーバに配置される形となる。
この状況で、ある物理ノードが閉塞すると、正常な物理ノードのみでファイルサービスおよびブロックサービスが引き継がれる。しかしながら、冗長データを異なる物理サーバに分散して配置していることにより、障害後のFSVMからのI/Oリクエストに対して、別の物理ノードにI/O処理を依頼する必要が生じ、ファイルアクセスの性能が劣化してしまう。
以下、図面を参照して、本発明の一実施の形態を詳述する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施の形態に制限されることはなく、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加、変更等を行うことができる。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は、複数でも単数でも構わない。
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えば、CPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)および/またはインタフェースデバイス(例えば、通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、またはホストであってもよい。プログラムを実行して行う処理の主体(例えば、プロセッサ)は、処理の一部または全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化および復号化、または圧縮および伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置およびシステムは、これらの機能部を含む装置およびシステムである。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバは、プロセッサ(例えば、CPU)と記憶資源を含み、記憶資源は、さらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは、配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
なお、以下の説明では、図面において同一要素については、同じ番号を付し、説明を適宜省略する。また、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分(枝番を除く部分)を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、ファイルクライアントを特に区別しないで説明する場合には、「ファイルクライアント110」と記し、個々のファイルクライアントを区別して説明する場合には、「ファイルクライアント110-1」、「ファイルクライアント110-2」のように記すことがある。また、同種の要素を区別して説明する場合は、その要素の参照符号を使用または参照符号に代えてその要素に割り振られたIDを使用することがある。
図1は、本実施の形態によるストレージシステム100に係る構成の一例を示す図である。ストレージシステム100は、1つ以上のファイルクライアント110と、複数のノード120とを備える。
ファイルクライアント110およびノード120間は、ネットワークスイッチ130を介して接続されている。ネットワークスイッチ130は、例えば、ファイバーチャネル(FC:Fibre Channel)、イーサネット(登録商標)、InfiniBand、無線LAN(Local Area Network)等から構成されるネットワークの一例であり、以下では、「ファイルサービスネットワーク」と記す。各ノード120間は、ネットワーク140を介して接続されている。ネットワーク140は、イーサネット(登録商標)、InfiniBand、無線LAN等から構成されるネットワークの一例であり、以下では、「バックエンドネットワーク」と記す。
ただし、ファイルサービスネットワークおよびバックエンドネットワークは、同一のネットワークにより構成されていてもよい。また、各ファイルクライアント110および各ノード120は、ファイルサービスネットワークおよびバックエンドネットワーク以外の管理用ネットワークに接続されていてもよい。
ストレージシステム100では、図1に示すように、フェイルオーバの対象のノード120が含まれる範囲を規定するためのクラスタ150が構成されている。クラスタ150には、複数のノード120が属している。クラスタ150に属する一のノード120に障害が発生した場合、クラスタ150に属する他のノード120に処理が引き継がれる。なお、図1の例では、クラスタ150が1つのみ設定された場合について例示しているが、ストレージシステム100内に複数のクラスタ150を設定するようにしてもよい。
ファイルクライアント110は、ノード120に対してホスト(上位装置)として機能する汎用のコンピュータである。ファイルクライアント110は、仮想マシンのような仮想的なコンピュータであってもよい。
ファイルクライアント110は、ユーザ操作、実装されたアプリケーションプログラム等からの要求に応じて、ノード120に対して、ファイル単位のリード要求またはファイル単位のライト要求(以下、「ファイルI/O要求」と記す)を送信する。ファイルI/O要求は、CIFS(Common Internet File System)、NFS(Network File System)等のプロトコルに従い、アクセス先のファイルを指定する要求であってよい。
ノード120は、データを読み書きするための記憶領域をファイルクライアント110に対して提供する汎用のコンピュータである。
図2は、ノード120のハードウェア構成の一例を示す図である。
ノード120は、構成要素として、CPU210と、メモリ220と、複数の記憶装置230と、第1の通信装置240と、第2の通信装置250とを備える。各構成要素は、内部ネットワーク260を介して接続されている。各ノード120は、各構成要素を1以上備える。
CPU210は、ノード120全体の動作制御を司るプロセッサである。メモリ220は、SRAM(Static RAM(Random Access Memory))、DRAM(Dynamic RAM)等の揮発性の半導体メモリから構成され、CPU210のワークメモリとして各種プログラムおよび必要なデータを一時的に保持するために利用される。メモリ220に格納されたプログラムを、少なくとも1以上のCPU210が実行することにより、後述のようなノード120全体としての各種処理が実行される。
記憶装置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に対してデータを読み書きするための記憶領域を提供する。
第1の通信装置240は、ノード120がファイルサービスネットワークを介してファイルクライアント110と通信を行うためのインタフェースである。第1の通信装置240は、例えば、NIC(Network Interface Card)、FCカード、無線LANカード等から構成される。第1の通信装置240は、ファイルクライアント110との通信時におけるプロトコル制御を行う。ファイルサービスネットワークを介する通信プロトコルとして、CIFS、NFS等がある。
第2の通信装置250は、ノード120がバックエンドネットワークを介して他のノード120と通信を行うためのインタフェースである。第2の通信装置250は、例えば、NIC、無線LANカード等から構成される。第2の通信装置250は、他のノード120との通信時におけるプロトコル制御を行う。
なお、ストレージシステム100では、ストレージシステム100の管理者(以下、「システム管理者」と記す)が、ストレージシステム100の構成管理、各種設定等を行うために利用するノード120(以下、「管理ノード」と記す)が設けられていてもよい。管理ノードは、システム管理者の操作に応じて、ファイルクライアント110およびノード120に対して必要な指示を与える。
図3は、ノード120のソフトウェア構成の一例を示す図である。
ノード120は、ファイル制御部310と、ストレージ制御部320と、管理部330と、ハイパーバイザ340とを備える。
ファイル制御部310は、例えば、ファイルサービスを提供するVMである。ファイル制御部310は、他のノード120のファイル制御部310とクラスタを構成(仮想的なスケールアウトファイルサーバを構築)し、ファイルサービスに係る処理を行うソフトウェアである。なお、ファイルサービスのクラスタに属するノード120とクラスタ150に属するノード120とは、全部または一部が一致している。
より具体的には、ファイル制御部310は、ファイルシステム制御310A、ファイル制御部構成情報管理310B、ブロックボリュームアクセス制御310C等を行う。
ファイルシステム制御310Aでは、ファイル制御部310は、ファイルクライアント110にどのようなファイルシステムを提供するか等、ファイルシステムとしてやり取りを行うための制御を行う。例えば、ファイル制御部310は、第1の通信装置240を介して、ファイルクライアント110からのファイルI/O要求を受信する。また、例えば、ファイル制御部310は、第1の通信装置240を介して、ファイルI/O要求に対応する応答(以下、「ファイルI/O応答」と記す)をファイルクライアント110に送信する。
ファイル制御部構成情報管理310Bでは、ファイル制御部310は、どのようなファイルシステムをファイル制御部310が所有しているか、どのようなブロックボリューム(論理ボリューム)をファイル制御部310が認識しているかといった構成情報(例えば、後述のファイル制御部用情報430)を管理する。例えば、ファイル制御部310は、管理部330から指定されたパラメータ等の情報を設定する。
ブロックボリュームアクセス制御310Cでは、ファイル制御部310は、ファイルI/O要求をもとにブロックボリュームにアクセスする。例えば、ファイル制御部310は、ファイルI/O要求を、ブロックボリュームに対するブロック単位のリード要求またはブロックボリュームに対するブロック単位のライト要求(以下、「ブロックI/O要求」と記す)に変換する。ファイル制御部310は、ブロックI/O要求を自ノード120内のストレージ制御部320に通知する。また、例えば、ファイル制御部310は、ブロックI/O要求に対応する応答(以下、「ブロックI/O応答」と記す)をストレージ制御部320から受け取る。
ここで、ストレージシステム100では、ノード120に実装された各ファイル制御部310は、管理部330により、別のノード120に配置された他のファイル制御部310と共に冗長化を構成するペアに設定される。以下では、当該ペアを「ファイル制御部ペア」と記す。
ファイル制御部ペアでは、一方のファイル制御部310は、ファイルクライアント110からのファイルI/O要求を受け付けて処理することができる状態(現用系の状態であり、以下、「アクティブ型」と記す)に設定されている。他方のファイル制御部310は、アクティブ型のファイル制御部310を有するノード120が正常に動作しているときはファイルクライアント110からのファイルI/O要求を受け付けない状態であり、アクティブ型のファイル制御部310を有するノード120が正常に動作していないときはファイルクライアント110からのファイルI/O要求を受け付けて処理することができる状態(待機系の状態であり、以下、「スタンバイ型」と記す)に設定される。
ストレージシステム100では、アクティブ型のファイル制御部310がアクセスするデータと、アクティブ型のファイル制御部310のOSディスクのデータ(OSのデータ、ログのデータ等、OSとして必要なデータであり、以下、「OSディスクデータ」と記す)とがスタンバイ型のファイル制御部310を備えるノード120に冗長化されている。そして、ストレージシステム100では、アクティブ型のファイル制御部310、アクティブ型のファイル制御部310が配置されたノード120等に障害が発生した場合に、スタンバイ型のファイル制御部310がファイルI/O要求を受け付けて処理することができる状態に切り替えられる。これにより、アクティブ型のファイル制御部310が稼働し得なくなった場合に、当該アクティブ型のファイル制御部310が提供していたファイルサービスに係る処理を、同じファイル制御部ペアを構成するスタンバイ型のファイル制御部310が引き継ぐことができる。
ストレージ制御部320は、ブロックサービスを提供するVMである。ストレージ制御部320は、他のノード120のストレージ制御部320とクラスタを構成(仮想的なスケールアウトブロックストレージを構築)し、ブロックサービスに係る処理を行うソフトウェアである。ストレージ制御部320は、SDS(Software Defined Storage)のコントローラとして機能するソフトウェアであってもよい。また、ストレージ制御部320は、ブロックボリュームに対するストレージ機能を有してよい。ストレージ機能の典型例としては、ストレージシステム100内で複製を作成して管理するローカルコピー機能、格納するデータ量を削減する圧縮および重複排除機能、SSD、HDDといったI/O性能および特性の異なる記憶装置230の間でデータを動的に移動させる階層制御機能、等がある。
より具体的には、ストレージ制御部320は、フロントエンド制御部321と、ストレージOS部322と、ノード間データ保護制御部323と、ストレージ制御部構成情報管理部324とを備える。
フロントエンド制御部321は、ファイル制御部310からブロックI/O要求が与えられた場合に、当該ブロックI/O要求を、当該ブロックI/O要求を実行すべき自ノード120内のストレージOS部322に通知する。
ストレージOS部322は、ブロックI/O要求に対応するI/Oコマンドを生成し、記憶装置230に対してデータの読み書きを実行する。より具体的には、ストレージOS部322は、I/Oコマンドをノード間データ保護制御部323に通知する。
ここで、ストレージシステム100では、ノード120に実装された各ストレージOS部322は、管理部330により、別のノード120に配置された他のストレージOS部322と共に冗長化を構成するペアに設定される。以下では、当該ペアを「ストレージOS部ペア」と記す。
ストレージOS部ペアでは、一方のストレージOS部322は、ファイル制御部310からのブロックI/O要求を受け付けて処理することができる状態(現用系の状態であり、以下、「アクティブ型」と記す)に設定されている。他方のストレージOS部322は、アクティブ型のストレージOS部322を有するノード120が正常に動作しているときはファイル制御部310からのブロックI/O要求を受け付けない状態であり、アクティブ型のストレージOS部322を有するノード120が正常に動作していないときはファイル制御部310からのブロックI/O要求を受け付けて処理することができる状態(待機系の状態であり、以下、「スタンバイ型」と記す)に設定される。
ストレージシステム100では、アクティブ型のストレージOS部322、アクティブ型のストレージOS部322が配置されたノード120等に障害が発生した場合に、スタンバイ型のストレージOS部322がブロックI/O要求を受け付けて処理することができる状態に切り替えられる。これにより、アクティブ型のストレージOS部322が稼働し得なくなった場合に、当該アクティブ型のストレージOS部322が実行していたブロックサービスに係る処理を、同じストレージOS部ペアを構成するスタンバイ型のストレージOS部322が引き継ぐことができる。
ストレージOS部322は、プール制御322Aと、ブロックボリューム制御322Bと、プール構成ボリュームアクセス制御322Cとを行う。
プール制御322Aでは、ストレージOS部322は、複数のプール構成ボリュームを組み合わせてプール(論理ボリューム)を生成し、当該プールを管理する。プール構成ボリュームは、自ノード120の記憶装置230における物理チャンク(所定のサイズの記憶領域)に対応した論理ボリューム(論理チャンク)である。
ブロックボリューム制御322Bでは、ストレージOS部322は、プールから複数のページを切り出し、1つ以上のページを割り当てたブロックボリュームを生成し、当該ブロックボリュームを管理する。ブロックボリュームは、シンプロビジョニングに従う仮想的な論理ボリュームである。
プール構成ボリュームアクセス制御322Cでは、ストレージOS部322は、ブロックI/O要求をもとにプール構成ボリュームにアクセスする。プール構成ボリュームに対するアクセスを行うために、ストレージOS部322は、ブロックI/O要求からプール構成ボリューム単位のI/Oコマンドを生成(ブロックボリュームのアドレスをプール構成ボリュームのアドレスに変換)し、当該I/Oコマンドをノード間データ保護制御部323に通知する。なお、I/Oコマンドでは、I/O先のプール構成ボリュームおよび当該プール構成ボリューム内のアドレスが指定されている。
ノード間データ保護制御部323は、I/Oコマンドをもとに、記憶装置230にデータの読み書きを行う。より具体的には、ノード間データ保護制御部323は、プール構成ボリューム制御323Aと、データ冗長化管理323Bと、ディスクアクセス制御323Cと、ノード間通信制御323Dとを行う。
プール構成ボリューム制御323Aでは、ノード間データ保護制御部323は、プール構成ボリュームを生成し、当該プール構成ボリュームを管理する。ノード間データ保護制御部323は、自ノード120内に配置されたストレージOS部322に対して、自ノード120内の記憶装置230が提供する物理的な記憶領域を割り当てる。
データ冗長化管理323Bでは、ノード間データ保護制御部323は、ノード120間でデータを冗長化する。例えば、ノード間データ保護制御部323は、ファイルI/O要求がファイル単位のライト要求であった場合、スタンバイ型のストレージOS部322が設けられているノード120にデータを冗長化する。また、例えば、ノード間データ保護制御部323は、ファイルI/O要求がファイル単位のリード要求であった場合、自ノード120の記憶装置230にアクセスできないときは、スタンバイ型のストレージOS部322が設けられているノード120からデータを読み込む。
ディスクアクセス制御323Cでは、ノード間データ保護制御部323は、I/Oの対象のデータがどの物理チャンクにあるか判断し、記憶装置230に対するデータの読み書きを行う。例えば、ノード間データ保護制御部323は、I/OコマンドをストレージOS部322から受け取ると、図示しない管理テーブルを参照して、当該I/Oコマンドにおいて指定されたプール構成ボリュームに対応付けた各物理チャンクの中から1つの物理チャンクを提供する記憶装置230を特定する。そして、ノード間データ保護制御部323は、特定した記憶装置230内の、I/Oコマンドで指定されたプール構成ボリュームおよび当該プール構成ボリューム内のアドレスに対応する物理チャンクのアドレスに格納されているデータに対してI/Oを実行する。
ノード間通信制御323Dでは、ノード間データ保護制御部323は、ノード120間の通信を制御する。例えば、ノード間データ保護制御部323は、ストレージOS部322から受け取ったI/Oコマンドが記憶装置230に対する書き込みを指示するライトコマンドであった場合、スタンバイ型のストレージOS部322が設けられているノード120のノード間データ保護制御部323にライトコマンドを送信する。スタンバイ型のストレージOS部322を有するストレージ制御部320は、受信したライトコマンドをもとに、自ノード120の記憶装置230にデータの書込みを行う。
ストレージ制御部構成情報管理部324は、冗長データの配置、記憶装置230へのアクセス可否、記憶装置230がどのような物理チャンクを持っているか、物理チャンクがどのプール構成ボリュームに割り当てられているか、プールがどのようなプール構成ボリュームを持っているか、プールから切り出されたページがどのブロックボリュームに割り当てられているか等の構成情報(例えば、後述のストレージ制御部用情報420)を管理する。なお、プール、ブロックボリューム等の構成情報は、ストレージOSペア単位で管理されている。つまり、アクティブ型のノード120にプール、ブロックボリューム等を作成し、その構成情報をクラスタ間DB400に登録することで、スタンバイ型のノード120にもフェイルオーバ時に反映できるように構成されている。
管理部330は、クラスタ150全体に関する制御処理、クラスタ150のスケールアウトに関する制御処理等を実行する機能を有するソフトウェアである。ストレージシステム100では、クラスタ150内の各ノード120にそれぞれ実装された管理部330のうちの1つの管理部330がマスタに設定され、マスタに設定された管理部330のみが、クラスタ150全体の整合性を保ちながら各種の制御処理を実行する。
マスタの管理部330以外の管理部330は、マスタの管理部330の障害に備えて、ホットスタンバイ(Hot stand-by)モードまたワームスタンバイ(Warm stand-by)モードのいずれかの動作モードに設定される。
ホットスタンバイモードは、マスタの管理部330、当該マスタの管理部330が実装されたノード120等に障害が発生した場合に、マスタの管理部330が実行していた処理を直ちに引き継げるよう起動したスタンバイ状態を維持する動作モードである。
ホットスタンバイモードの管理部330は、マスタの管理部330が実行していた処理を直ちに引き継げるよう、後述のファイル制御部ペアテーブル510、ストレージOS部ペアテーブル520等のマスタの管理部330が管理する全ての管理情報(例えば、後述のクラスタ間DB400)と同じ内容の管理情報を保持している。
そして、マスタの管理部330が保持する管理情報が更新された場合には、その更新前後の差分が差分データとしてマスタの管理部330からバックエンドネットワークを介して全てのホットスタンバイモードの管理部330に与えられ、当該差分データに基づいて、その管理部330が保持する管理情報が当該管理部330によりマスタの管理部330が保持する管理情報と同様に更新される。
このようにホットスタンバイモードの管理部330がマスタの管理部330と常に同一の管理情報を保持することにより、マスタの管理部330等に障害が発生し、それまでホットスタンバイモードであった管理部330を「マスタ」に切り替えた場合にも、元のマスタの管理部330が実行していた制御処理を「マスタ」に切り替えられたマスタの管理部330により引き継ぐことが可能となる。
また、ワームスタンバイ型は、起動を停止したスタンバイ状態にある動作モードである。ホットスタンバイモードに設定されたマスタの管理部330の数が予め設定された閾値以下となった場合に、ワームスタンバイ型に設定されたいずれかの管理部330の状態がホットスタンバイモードに切り替えられる。
なお、マスタの管理部330は、2つ以上のマスタの管理部330が存在する状態を防ぐため、3つ以上の管理部330を稼働させ、稼働させた管理部330の中から多数決により選定される。そして、稼働させた残りの管理部330がホットスタンバイモードに設定される。
より具体的には、管理部330は、ファイル制御部ストレージ制御部間ブロックボリューム割り当て制御330Aと、ファイル制御部およびストレージOS部構成管理制御330Bと、フェイルオーバ制御330Cとを行う。
ファイル制御部ストレージ制御部間ブロックボリューム割り当て制御330Aでは、管理部330は、どのブロックボリュームをどのファイル制御部310に割り当てるか等を制御する。
ファイル制御部およびストレージOS部構成管理制御330Bでは、管理部330は、ファイル制御部ペアとストレージOS部ペアとに係る制御を行う。
例えば、管理部330は、管理ノードからの指示に応じてクラスタ150内にファイル制御部ペアを設定し、設定したファイル制御部ペアを後述のファイル制御部ペアテーブル510に登録して管理する。また、例えば、管理部330は、管理ノードからの指示に応じてクラスタ150内にストレージOS部ペアを設定し、設定したストレージOS部ペアを後述のストレージOS部ペアテーブル520に登録して管理する。
また、例えば、管理部330は、どのファイル制御部ペアとどのストレージOS部ペアとを組み合わせるかといったことを制御する。より具体的には、管理部330は、アクティブ型のファイル制御部310およびアクティブ型のストレージOS部322が同一のノード120に配置され、スタンバイ型のファイル制御部310およびスタンバイ型のストレージOS部322が同一のノード120に配置されるように、ファイル制御部ペアとストレージOS部ペアとの組合せ(以下、「冗長化グループ」と記す)を決定する。
フェイルオーバ制御330Cでは、管理部330は、ノード120に障害が発生したときに、ファイル制御部310およびストレージ制御部320をフェイルオーバさせる。例えば、管理部330は、スタンバイ型のストレージOS部322にアクティブ型のストレージOS部322からの引継ぎを指示した後に、スタンバイ型のファイル制御部310にアクティブ型のファイル制御部310からの引継ぎを指示する。
なお、管理部330は、管理ノードに設けられていてもよいし、ファイル制御部310に含まれていてもよいし、ストレージ制御部320に含まれていてもよい。
ハイパーバイザ340は、ファイル制御部310、ストレージ制御部320、管理部330等を動作させるソフトウェアである。
図4は、クラスタ間DB400の一例を示す図である。クラスタ間DB400は、クラスタ150単位に必要となる情報を記憶する。クラスタ間DB400は、全てのノード120に複製して設けられていてもよいし、1つ以上の管理ノードに設けられていてもよい。
クラスタ間DB400には、管理部用情報410と、ストレージ制御部用情報420と、ファイル制御部用情報430とが記憶されている。
管理部用情報410には、ファイル制御部ペア情報と、ストレージOS部ペア情報と、ファイル制御部ストレージOS部対応情報と、ノード状態情報とが含まれる。管理部用情報410については、図5を用いて後述する。
ストレージ制御部用情報420には、ブロックボリューム情報と、接続先ファイル制御部情報と、冗長データ配置情報と、冗長データアクセス可否情報とが含まれる。ストレージ制御部用情報420については、図6を用いて後述する。
ファイル制御部用情報430には、ファイルシステム情報と、認識ブロックボリューム情報とが含まれる。ファイル制御部用情報430については、図7を用いて後述する。
図5は、管理部用情報410の一例を示す図である。
管理部用情報410には、ファイル制御部ペアテーブル510と、ストレージOS部ペアテーブル520と、ファイル制御部ストレージOS部対応テーブル530と、ノード状態テーブル540とが含まれる。
ファイル制御部ペアテーブル510は、ファイル制御部ペア情報の一例であり、ファイル制御部ペアをどのノード120で構成しているかを示す情報を記憶する。換言するならば、ファイル制御部ペアテーブル510は、アクティブ型のファイル制御部310がどのノード120に配置され、スタンバイ型のファイル制御部310がどのノード120に配置されているかを示す配置情報を記憶する。より具体的には、ファイル制御部ペアテーブル510は、ファイル制御部ID511と、アクティブノード512と、スタンバイノード513とが対応付けられた情報を記憶する。
ファイル制御部ID511は、ファイル制御部ペアを識別するための情報である。アクティブノード512は、当該ファイル制御部ペアのアクティブ型のファイル制御部310がどのノード120に設けられているかを示す情報である。スタンバイノード513は、当該ファイル制御部ペアのスタンバイ型のファイル制御部310がどのノード120に設けられているかを示す情報である。
ストレージOS部ペアテーブル520は、ストレージOS部ペア情報の一例であり、ストレージOS部ペアをどのノード120で構成しているかを示す情報を記憶する。換言するならば、ストレージOS部ペアテーブル520は、アクティブ型のストレージOS部322がどのノード120に配置され、スタンバイ型のストレージOS部322がどのノード120に配置されているかを示す配置情報を記憶する。より具体的には、ストレージOS部ペアテーブル520は、ストレージOS部ID521と、アクティブノード522と、スタンバイノード523とが対応付けられた情報を記憶する。
ストレージOS部ID521は、ストレージOS部ペアを識別するための情報である。アクティブノード522は、当該ストレージOS部ペアのアクティブ型のストレージOS部322がどのノード120に設けられているかを示す情報である。スタンバイノード523は、当該ストレージOS部ペアのスタンバイ型のストレージOS部322がどのノード120に設けられているかを示す情報である。
ファイル制御部ストレージOS部対応テーブル530は、ファイル制御部ストレージOS部対応情報の一例であり、ファイル制御部310とストレージOS部322との対応関係を示す情報を記憶する。より具体的には、ファイル制御部ストレージOS部対応テーブル530は、ファイル制御部ID531とストレージOS部ID532とが対応付けられた情報を記憶する。
ファイル制御部ID531は、ファイル制御部310を識別するための情報である。ストレージOS部ID532は、当該ファイル制御部310とペアであるストレージOS部322を識別するための情報である。
ノード状態テーブル540は、ノード状態情報の一例であり、ノード120の状態を示す情報を記憶する。より具体的には、ノード状態テーブル540は、ノードID541と状態542とが対応付けられた情報を記憶する。
ノードID541は、ノード120を識別するための情報である。状態542は、当該ノード120の状態(「正常」または「閉塞」)を示す情報である。
図6は、ストレージ制御部用情報420の一例を示す図である。
ストレージ制御部用情報420には、ブロックボリュームテーブル610と、接続先ファイル制御部テーブル620と、冗長データアクセス可否テーブル630とが含まれる。
ブロックボリュームテーブル610は、ブロックボリューム情報の一例であり、ストレージ制御部320が提供するブロックボリュームに係る情報を記憶する。より具体的には、ブロックボリュームテーブル610は、ブロックボリュームID611と、ストレージOS部ID612と、WWID(World Wide ID)613と、容量614と、アクセスファイル制御部ID615とが対応付けられた情報を記憶する。
ブロックボリュームID611は、ブロックボリュームを識別するための情報である。ストレージOS部ID612は、当該ブロックボリュームを所有するストレージOS部322を識別するための情報である。WWID613は、ファイルI/O要求をもとに当該ブロックボリュームにアクセスする際に必要な情報であり、当該ブロックボリュームを一意に特定するための情報である。容量614は、当該ブロックボリュームの容量を示す情報である。アクセスファイル制御部ID615は、当該ブロックボリュームにアクセスするファイル制御部310を識別するための情報である。
接続先ファイル制御部テーブル620は、接続先ファイル制御部情報の一例であり、ストレージ制御部320のクライアントとして接続されているファイル制御部310の情報を記憶する。接続先ファイル制御部テーブル620は、ファイル制御部ID621と、ストレージOS部ID622と、イニシエータ623とが対応付けられた情報を記憶する。
ファイル制御部ID621は、ファイル制御部310を識別するための情報である。ストレージOS部ID622は、当該ファイル制御部310にブロックサービスを提供するストレージOS部322を識別するための情報である。イニシエータ623は、ブロックI/Oパスの接続先、つまりI/O要求の発行元のモジュール(例えば、第1の通信装置240であり、ハードウェアモジュールおよびプログラムモジュールの何れでもよい。)を識別するための情報である。例えば、イニシエータ623は、ファイル制御部310およびストレージ制御部320間の通信を、iSCSI(Internet Small Computer System Interface)を用いて行う場合に用いられる。
冗長データアクセス可否テーブル630は、冗長データアクセス可否情報の一例であり、冗長データに対するアクセス(I/O)が可能であるか否かを示す情報を記憶する。より具体的には、冗長データアクセス可否テーブル630は、冗長化グループID631と、第1の構成要素632と、第2の構成要素633とが対応付けられた情報を記憶する。
冗長化グループID631は、冗長化グループを識別するための情報である。第1の構成要素632は、当該冗長化グループの第1の構成要素を示す情報である。第1の構成要素632は、例えば、当該冗長化グループの第1の構成要素である記憶装置230を識別するための情報と、当該記憶装置230へのアクセスが可能であるか否かを示す情報を含む。第2の構成要素633は、当該冗長化グループの第2の構成要素を示す情報である。第2の構成要素633は、例えば、当該冗長化グループの第2の構成要素である記憶装置230を識別するための情報と、当該記憶装置230へのアクセスが可能であるか否かを示す情報を含む。
図7は、ファイル制御部用情報430の一例を示す図である。
ファイル制御部用情報430には、ファイルシステムテーブル710と、認識ブロックボリュームテーブル720とが含まれる。
ファイルシステムテーブル710は、ファイルシステム情報の一例であり、ファイル制御部310が提供するファイルサービス(ファイルシステム)に係る情報を記憶する。より具体的には、ファイルシステムテーブル710は、ファイルシステムID711と、所有ファイル制御部ID712と、メタデータ713とが対応付けられた情報を記憶する。
ファイルシステムID711は、ファイルシステムを識別するための情報である。所有ファイル制御部ID712は、当該ファイルシステムを所有するファイル制御部310を識別するための情報である。メタデータ713は、当該ファイルシステムのファイルシステムタイプ等の情報である。
認識ブロックボリュームテーブル720は、認識ブロックボリューム情報の一例であり、ファイル制御部310がどのようなブロックボリュームを認識しているかを示す情報を記憶する。より具体的には、認識ブロックボリュームテーブル720は、認識ブロックボリュームID721と、所有ファイル制御部ID722と、関連ファイルシステムID723と、デバイス名724と、WWID725とが対応付けられた情報を記憶する。
認識ブロックボリュームID721は、ファイル制御部310が認識したブロックボリュームを識別するための情報である。所有ファイル制御部ID722は、当該ブロックボリュームを所有するファイル制御部310を識別するための情報である。関連ファイルシステムID723は、当該ブロックボリュームに関連付けられているファイルシステムを識別するための情報である。デバイス名724は、ファイル制御部310のOSにより付与されるデバイス名であって、当該ブロックボリュームに対して使用されるデバイス名である。WWID725は、当該ブロックボリュームを一意に特定するための情報である。なお、デバイス名とWWIDとは、認識ブロックボリュームテーブル720により紐付けられている。
図8は、ファイル制御部ペアとストレージOS部ペアとの配置の一例を示す図である。
ファイルサービスのクラスタ801では、アクティブ型のファイル制御部310とスタンバイ型のファイル制御部310とがペアとして、各々が異なるノード120に設けられている。
図8の例では、第1のファイル制御部310については、アクティブ型の第1のファイル制御部310-1A(以下、「アクティブファイル制御部」と記す)とスタンバイ型の第1のファイル制御部310-2B(以下、「スタンバイファイル制御部」と記す)とがペアとして、アクティブファイル制御部が第1のノード120-1に設けられ、スタンバイファイル制御部が第2のノード120-2に設けられている。
また、第2のファイル制御部310については、アクティブ型の第2のファイル制御部310-2Aとスタンバイ型の第2のファイル制御部310-3Bとがペアとして、アクティブ型の第2のファイル制御部310-2Aが第2のノード120-2に設けられ、スタンバイ型の第2のファイル制御部310-3Bが第3のノード120-3に設けられている。
また、第3のファイル制御部310については、アクティブ型の第3のファイル制御部310-3Aとスタンバイ型の第3のファイル制御部310-1Bとがペアとして、アクティブ型の第3のファイル制御部310-3Aが第3のノード120-3に設けられ、スタンバイ型の第3のファイル制御部310-1Bが第1のノード120-1に設けられている。
ブロックサービスのクラスタ802では、アクティブ型のストレージOS部322とスタンバイ型のストレージOS部322とがペアとして、各々が異なるノード120にファイル制御部ペアに対応して設けられている。
図8の例では、第1のストレージOS部322については、アクティブファイル制御部とスタンバイファイル制御部とのペアに対応して、アクティブ型の第1のストレージOS部322-1A(以下、「アクティブストレージOS部」と記す)とスタンバイ型の第1のストレージOS部322-2B(以下、「スタンバイストレージOS部」と記す)とがペアとして、アクティブストレージOS部が第1のノード120-1に設けられ、スタンバイストレージOS部が第2のノード120-2に設けられている。
また、第2のストレージOS部322については、アクティブ型の第2のファイル制御部310-2Aとスタンバイ型の第2のファイル制御部310-3Bとのペアに対応して、アクティブ型の第2のストレージOS部322-2Aとスタンバイ型の第2のストレージOS部322-3Bとがペアとして、アクティブ型の第2のストレージOS部322-2Aが第2のノード120-2に設けられ、スタンバイ型の第2のストレージOS部322-3Bが第3のノード120-3に設けられている。
また、第3のストレージOS部322については、アクティブ型の第3のファイル制御部310-3Aとスタンバイ型の第3のファイル制御部310-1Bとのペアに対応して、アクティブ型の第3のストレージOS部322-3Aとスタンバイ型の第3のストレージOS部322-1Bとがペアとして、アクティブ型の第3のストレージOS部322-3Aが第3のノード120-3に設けられ、スタンバイ型の第3のストレージOS部322-1Bが第1のノード120-1に設けられている。
このように、ストレージシステム100では、ファイル制御部310とストレージOS部322とが共にペアの構成であり、ノード120が合わせて配置されている。ファイル制御部ペアとストレージOS部ペアとにおいて、それぞれのアクティブ型を同一のノード120に配置し、それぞれのスタンバイ型を同一ノード120に配置することにより、正常時のみならず、フェイルオーバ時にもストレート構成を維持できるようになる。
ここで、ストレージシステム100では、ストレージ制御部320に専用に割り当てる記憶装置230(ディスク制御をストレージ制御部320に任せる記憶装置230であり、例えば、記憶装置230-1A,230-2A,230-3A)と、ハイパーバイザ340がアクセス制御する記憶装置230(システムディスク、データストア等であり、例えば、記憶装置230-1B,230-2B,230-3B)と、が設けられている。
ストレージシステム100では、ファイル制御部310のOSディスクデータ811は、ストレージ制御部320に割り当てられた記憶装置230からストレージ制御部320により提供されていて、ストレージ制御部320用の0Sディスクデータ821は、ハイパーバイザ340により提供されている。
例えば、アクティブファイル制御部のOSディスクデータ811と、アクティブファイル制御部が提供するファイル単位のデータ812,813とは、同じ第1のノード120-1の第1の記憶装置230-1A内に存在し、スタンバイファイル制御部がある第2のノード120-2に冗長化される。なお、図示は省略するが、他のノード120のOSディスクデータ811およびファイル単位のデータ812,813についても同様である。付言するならば、スタンバイ型のファイル制御部310は、アクティブ型のファイル制御部310と同等のVMとして動作することができる。
また、例えば、第1のストレージ制御部320-1のOSディスクデータ821およびクラスタ間DB400は、第1のファイル制御部310-1に提供する第1の記憶装置230-1Aとは別に、各ノード120に専用の第2の記憶装置230-1Bに記憶されている。なお、図示は省略するが、他のノードのストレージ制御部320のOSディスクデータ821およびクラスタ間DB400についても同様である。付言するならば、スタンバイ型のストレージOS部322は、クラスタ間DB400の情報を用いてアクティブ型のストレージOS部322と同様のストレージ制御部320の処理部として動作することができる。
図9は、正常時のI/O処理の一例を示す図である。図9では、ファイルクライアント110から、アクティブファイル制御部にファイルアクセスの要求(ファイルI/O要求)が行われるケースを例に挙げてI/O処理について説明する。
アクティブファイル制御部は、ペアの構成が一致しているアクティブストレージOS部を有する第1のストレージ制御部320-1にメモリアクセス(内部アクセス)でブロックI/O要求を通知する。
アクティブストレージOS部は、ノード間データ保護制御部323を介して、自ノード120-1の第1の記憶装置230-1Aにブロックアクセス(内部アクセス)を行う。ブロックI/O要求がブロック単位のリード要求である場合は、ノード間データ保護制御部323は、自ノード120-1の第1の記憶装置230-1Aからデータの読込みを行う。ブロックI/O要求がブロック単位のライト要求である場合は、ノード間データ保護制御部323は、自ノード120-1の第1の記憶装置230-1Aにデータの書込みを行うと共に、バックエンドネットワークを介して、スタンバイストレージOS部を有する第2のストレージ制御部320-2にデータの書込みを指示する。
図10は、障害時(フェイルオーバ後)のI/O処理の一例を示す図である。図10では、ファイルクライアント110から、スタンバイファイル制御部にファイルアクセスの要求(ファイルI/O要求)が行われるケースを例に挙げてI/O処理について説明する。なお、スタンバイファイル制御部がIPアドレスを有効化して動作を開始することで、ファイルアクセスのアクセス先がアクティブファイル制御部からスタンバイファイル制御部に移る。
スタンバイファイル制御部がファイルサービスに係る処理を引き継ぎ、スタンバイストレージOS部がストレージサービスに係る処理を引き継ぐと、配下の第3の記憶装置230-2Aに対してアクセス(I/O)が行われるようになる。
図11は、ファイル制御部ペアとストレージOS部ペアとの組合せ(冗長化グループ)を作成する制御フローの一例を示す図である。
S1101では、管理部330は、ストレージシステム100のインストール時に、どのような冗長化グループを組めるかを決定し、決定した冗長化グループの情報をクラスタ間DB400に記憶する。より具体的には、管理部330は、冗長化グループとして決定したファイル制御部ペアとストレージ制御部ペアとの情報から、ストレージOS部ペア情報と、ファイル制御部ペア情報と、ファイル制御部ストレージOS部対応情報とをクラスタ間DB400に記憶する。
例えば、システム管理者によりクラスタ150に属するノード120が指定されると、管理部330は、指定された各ノード120に均一に設けられるように(例えば、2つずつ)、冗長化グループを決定する。なお、複数のノード120から冗長化グループを組む方法については、均一に限るものでななく、均一でなくてもよい。均一でないとは、例えば、システム管理者により指定されたように冗長化グループを決定するものであったり、記憶装置230の容量に応じて冗長化グループを決定(例えば、総容量が大きいノード120ほど多くの冗長化グループを決定)するものであったりする。
S1102では、管理部330は、ファイル制御部ペア情報をファイル制御部310に設定する。これにより、ファイル制御部310は、自ファイル制御部310に割り当てられたIDを認識すると共に、ファイル制御部ペアの相手方のファイル制御部310を認識することができる。
S1103では、ファイル制御部310は、ファイル制御部ペア情報の設定を完了したことを管理部330に通知(応答)する。
S1104では、管理部330は、ストレージOS部ペア情報をストレージ制御部320に設定する。これにより、ストレージ制御部320は、自ストレージ制御部320に割り当てられたIDを認識すると共に、ストレージOS部ペアの相手方のストレージOS部322を認識することができる。
S1105では、ファイル制御部310は、ストレージOS部ペア情報の設定を完了したことを管理部330に通知(応答)する。
図12は、ファイルシステムを作成する制御フローの一例を示す図である。当該制御フローでは、例えば、各ストレージ制御部320のプールの容量が取得され、プールの空き容量が均等になるようにブロックボリュームが割り当てられる。なお、当該制御フローは、システム管理者からのユーザ指示を契機に開始する。ユーザ指示には、こういうファイルシステムを作成したいといった情報が含まれていてもよいし、処理対象のファイル制御部ペアおよびストレージOS部ペア(ストレージ制御部320のペア)を特定可能な情報も含まれていてもよい。
S1201では、管理部330は、プールとしてどれくらいの容量があるかを、各ストレージ制御部320に問い合わせ、空き容量を取得する。なお、ストレージ制御部320は、どういう記憶装置230が接続されているから、どれくらいのプールを組めるかといった、プールの情報を有している。
S1202では、管理部330は、ブロックボリュームをいくつ作成できるかを判定し、各ストレージ制御部320にブロックボリュームの作成指示を出す。
S1203では、アクティブ型のストレージOS部322を有するストレージ制御部320は、ブロックボリュームを作成する。
S1204では、アクティブ型のストレージOS部322を有するストレージ制御部320は、クラスタ間DB400に、作成したブロックボリュームに係る情報(ブロックボリューム情報)を設定する。
S1205では、アクティブ型のストレージOS部322を有するストレージ制御部320は、ブロックボリュームを作成したことを管理部330に通知(応答)する。
S1206では、管理部330は、アクティブ型のストレージOS部322を有するストレージ制御部320に対して、ファイル制御部ストレージOS部対応情報を通知すると共に、接続先ファイル制御部情報を設定するように指示を出す。つまり、ブロックボリュームをどのファイル制御部310に割り当てるべきかというのは、ファイル制御部ストレージOS部対応情報から判断できるので、管理部330は、ストレージ制御部320に対して、当該ストレージ制御部320のクライアントとなるアクティブ型のファイル制御部310にブロックボリュームを割り当てるように指示を出す。
S1207では、アクティブ型のストレージOS部322を有するストレージ制御部320は、ファイル制御部ストレージOS部対応情報をもとに接続先ファイル制御部情報を生成し、接続先ファイル制御部情報をクラスタ間DB400に設定する。
S1208では、アクティブ型のストレージOS部322を有するストレージ制御部320は、接続先ファイル制御部情報の設定が完了したことを管理部330に通知(応答)する。
S1209では、管理部330は、アクティブ型のストレージOS部322を有するストレージ制御部320に対して、新規に作成されたブロックボリュームにパスを設定するように指示を出す。
S1210では、アクティブ型のストレージOS部322を有するストレージ制御部320は、当該ストレージ制御部320が提供する新規のブロックボリュームにパスを張るために、ブロックボリュームと当該ブロックボリュームにアクセスするファイル制御部310とを対応付け、当該ブロックボリュームのブロックボリュームIDと当該ファイル制御部310のアクセスファイル制御部IDとを指定したブロックボリューム情報を生成し、生成したブロックボリューム情報をクラスタ間DB400に設定する。
S1211では、アクティブ型のストレージOS部322を有するストレージ制御部320は、パスを設定したことを管理部330に通知(応答)する。
以上の処理により、アクティブ型のストレージOS部322を有するストレージ制御部320が提供するブロックボリュームが作成され、当該ストレージ制御部320が提供するブロックボリュームにパスが張られることにより、当該ストレージ制御部320が動作可能な状態になる。なお、ブロックボリュームへのパスが設定されることで、ブロックボリュームごとに設定されているアクセスファイル制御部IDに対応するファイル制御部320(イニシエータ)からのアクセスが許可される。
S1212では、管理部330は、作成されたブロックボリュームを認識するようにアクティブ型のファイル制御部310に指示を出す。
S1213では、アクティブ型のファイル制御部310は、作成されたブロックボリュームを認識(検出)する。これにより、ストレージ制御部320が提供しているブロックボリュームがファイル制御部310のボリュームとしてOS上で見えるようになる。
S1214では、アクティブ型のファイル制御部310は、認識ブロックボリューム情報をクラスタ間DB400に設定する。
S1215では、アクティブ型のファイル制御部310は、認識ブロックボリューム情報の設定が完了したことを管理部330に通知(応答)する。
S1216では、管理部330は、認識したブロックボリューム上にユーザ指示で指定されているファイルシステムを作るようにアクティブ型のファイル制御部310に指示を出す。
S1217では、アクティブ型のファイル制御部310は、所定のコマンドを実行して、認識したブロックボリューム上にファイルシステムを作成する。
S1218では、アクティブ型のファイル制御部310は、作成したファイルシステムのファイルシステム情報をクラスタ間DB400に設定する。
S1219では、アクティブ型のファイル制御部310は、ファイルシステム情報の設定が完了したことを管理部330に通知(応答)する。
以上の処理により、アクティブ型のストレージOS部322を有するストレージ制御部320が提供するブロックボリュームが認識され、当該ブロックボリュームにファイルシステムが作成されることにより、当該ファイル制御部320が動作可能な状態になる。
図13は、正常時のリード処理の制御フローの一例を示す図である。図13では、ファイルクライアント110から、アクティブファイル制御部にファイル単位のリード要求が行われるケースを例に挙げてリード処理について説明する。
S1301では、アクティブファイル制御部は、ファイルクライアント110からファイル単位のリード要求を受信する。
S1302では、アクティブファイル制御部は、リクエスト変換を行う。より具体的には、アクティブファイル制御部は、ファイルとブロックボリューム内のブロック(格納位置)とを対応付けたテーブル(図示は省略)を参照して、当該ファイルがどのブロックに対応しているのかを特定し、ファイル単位のリード要求を、ブロック単位のリード要求に変換する。
S1303では、アクティブファイル制御部は、ブロック単位のリード要求を、アクティブストレージOS部を有する第1のストレージ制御部320-1に通知する。
S1304では、第1のストレージ制御部320-1は、アクセス可否判定を行う。より具体的には、第1のストレージ制御部320-1は、冗長データアクセス可否テーブル630を用いて、アクティブファイル制御部およびアクティブストレージOS部が属する冗長化グループに対応するレコードを参照し、当該レコードの第1の構成要素のアクセス可否を判定する。第1のストレージ制御部320-1は、当該レコードの第1の構成要素のアクセス可否が「可」である場合、第1の構成要素に規定されている記憶装置230を特定し、アクセス「可」と判定する。当該レコードの第1の構成要素のアクセス可否が「不可」である場合は、第1のストレージ制御部320-1は、第2の構成要素のアクセス可否を判定する。第1のストレージ制御部320-1は、第2の構成要素のアクセス可否が「可」である場合は、第2の構成要素に規定されている記憶装置230を特定し、アクセス「可」と判定する。第1のストレージ制御部320-1は、第2の構成要素のアクセス可否が「不可」である場合は、アクセス(リード)できる記憶装置230がない(エラー)と特定し、アクセス「不可」と判定してよい。
例えば、アクティブファイル制御部およびアクティブストレージOS部が「冗長化グループ1」に属している場合、第1のストレージ制御部320-1は、冗長データアクセス可否テーブル630を参照して、第1の記憶装置230-1Aにアクセスが可能であると判定する。
S1305では、第1のストレージ制御部320-1は、アクセスが「可」であると判定した記憶装置230に対してデータの読込みを行う。本例では、第1の記憶装置230-1Aへのアクセスが「可」であるので、第1のストレージ制御部320-1は、第1の記憶装置230-1Aに対してデータの読込み(ローカルリード)を行う。
S1306では、第1のストレージ制御部320-1は、読み込んだブロック単位のデータ(以下、「ブロックデータ」と記す)と、読込みが完了したこととを、アクティブファイル制御部に通知(ブロックI/O応答)する。
S1307では、アクティブファイル制御部は、データ変換を行う。データ変換では、ブロックデータがファイル単位のデータ(以下、「ファイルデータ」と記す)に変換される。
S1308では、アクティブファイル制御部は、ファイルデータと、読込みが完了したことをファイルクライアント110に通知(ファイルI/O応答)する。
図14は、正常時のライト処理の制御フローの一例を示す図である。図14では、ファイルクライアント110から、アクティブファイル制御部にファイル単位のライト要求が行われるケースを例に挙げてライト処理について説明する。
S1401では、アクティブファイル制御部は、ファイルクライアント110からファイル単位のライト要求を受信する。
S1402では、アクティブファイル制御部は、リクエスト変換を行う。より具体的には、アクティブファイル制御部は、ファイルとブロックボリューム内のブロック(格納位置)とを対応付けたテーブル(図示は省略)を参照して、当該ファイルがどのブロックに対応しているのかを特定し、ファイル単位のライト要求を、ブロック単位のライト要求に変換する。
S1403では、アクティブファイル制御部は、ブロック単位のライト要求を、アクティブストレージOS部を有する第1のストレージ制御部320-1に通知する。
S1404では、第1のストレージ制御部320-1は、アクセス可否判定を行う。より具体的には、第1のストレージ制御部320-1は、冗長データアクセス可否テーブル630を用いて、アクティブファイル制御部およびアクティブストレージOS部が属する冗長化グループに対応するレコードを参照し、第1の構成要素のアクセス可否を判定する。第1のストレージ制御部320-1は、当該レコードの第1の構成要素のアクセス可否が「可」である場合は、第1の構成要素に規定されている記憶装置230を特定し、アクセス「可」と判定する。また、第1のストレージ制御部320-1は、第2の構成要素のアクセス可否を判定する。第1のストレージ制御部320-1は、第2の構成要素のアクセス可否が「可」である場合、第2の構成要素に規定されている記憶装置230を特定し、アクセス「可」と判定する。第1のストレージ制御部320-1は、第1の構成要素のアクセス可否および第2の構成要素のアクセス可否の両方または一方が「不可」であるときは、アクセス(ライト)できる記憶装置230がない(エラー)と特定し、アクセス「不可」と判定してよい。
例えば、アクティブファイル制御部およびアクティブストレージOS部が「冗長化グループ1」に属している場合、第1のストレージ制御部320-1は、冗長データアクセス可否テーブル630を参照して、第1の記憶装置230-1Aおよび第3の記憶装置230-2Aにアクセスが可能であると判定する。
S1405およびS1406では、第1のストレージ制御部320-1は、アクセスが「可」であると判定した記憶装置230に対してデータの書込みを行う。本例では、第1の記憶装置230-1Aへのアクセスが「可」であるので、第1のストレージ制御部320-1は、第1の記憶装置230-1Aに対してデータの書込み(ローカルライト)を行う(S1405)。また、第3の記憶装置230-2Aへのアクセスが「可」であるので、第1のストレージ制御部320-1は、第2のノード120-2の第3の記憶装置230-2Aに対してデータの書込み(冗長ライト)を行うために、プール構成ボリューム単位のライトコマンドを、スタンバイストレージOS部を有する第2のストレージ制御部320-2に送信する(S1406)。
S1407では、第2のストレージ制御部320-2は、第3の記憶装置230-2Aに対してデータの書込み(ローカルライト)を行う。
S1408では、第2のストレージ制御部320-2は、第3の記憶装置230-2Aへの書込みが完了したことを、アクティブストレージOS部を有する第1のストレージ制御部320-1に送信(応答)する。
S1409では、第1のストレージ制御部320-1は、ブロック単位のデータの書込みが完了したことをアクティブファイル制御部に通知(ブロックI/O応答)する。
S1410では、アクティブファイル制御部は、ファイル単位のデータの書込みが完了したことをファイルクライアント110に送信(ファイルI/O応答)する。
図15は、第1のノード120-1に障害が発生したときのフェイルオーバの制御フローの一例を示す図である。なお、障害が発生したノード120の検出については限定しない。自ノード120が障害を検出してもよいし、他ノード120が障害を検出してもよいし、管理ノードが障害を検出してもよいし、その他の手段により障害を検出してもよい。
S1501では、管理部330は、クラスタ間DB400の管理部用情報410を更新する。より具体的には、管理部330は、ノード状態テーブル540のノードID541が「Node1」であるレコードの状態542を「正常」から「閉塞」に変更する。
S1502およびS1503では、管理部330は、フェイルオーバ対象のファイル制御部310およびストレージ制御部320を特定する。
より具体的には、管理部330は、ストレージOS部ペアテーブル520を参照し、アクティブノード522が「Node1」のレコードを検索し、当該レコードのストレージOS部ID521「ストレージOS部1」およびスタンバイノード523「Node2」(スタンバイストレージOS部)を特定する。また、管理部330は、ファイル制御部ペアテーブル510を参照し、アクティブノード512が「Node1」のレコードを検索し、当該レコードのファイル制御部ID511「ファイル制御部1」およびスタンバイノード513「Node2」(スタンバイファイル制御部)を特定する。
S1504では、管理部330は、スタンバイストレージOS部を有する第2のストレージ制御部320-2にフェイルオーバの指示を通知する。
S1505およびS1506では、第2のストレージ制御部320-2は、アクティブストレージOS部が用いていたブロックボリューム情報および接続ファイル制御部情報をストレージ制御部用情報420から取得し、アクティブストレージOS部と同じようにブロックボリュームを作成し、ブロックサービスに係る処理を実行できるようにI/Oできる状態に設定する。
S1507では、第2のストレージ制御部320-2は、ストレージ制御部用情報420を更新する。より具体的には、第2のストレージ制御部320-2は、ストレージ制御部用情報420の冗長データアクセス可否テーブル630を参照し、第1の構成要素632または第2の構成要素633の記憶装置230に第1のノード120-1の第1の記憶装置230-1Aが含まれているレコードを特定する。本例では、第2のストレージ制御部320-2は、冗長化グループID631が「冗長化グループ1」であるレコードと、冗長化グループID631が「冗長化グループ3」であるレコードとを特定する。この場合、第2のストレージ制御部320-2は、「冗長化グループ1」であるレコードの第1の構成要素632のアクセス可否を「不可」に設定し、「冗長化グループ3」であるレコードの第2の構成要素633のアクセス可否を「不可」に設定する。
S1508では、第2のストレージ制御部320-2は、第2のストレージ制御部320-2のフェイルオーバを完了したことを管理部330に通知(応答)する。
S1509では、管理部330は、スタンバイファイル制御部にフェイルオーバの指示を通知する。
S1510およびS1511では、スタンバイファイル制御部は、アクティブファイル制御部が持っていたファイルシステム情報をファイル制御部用情報430から取得し、作成されたブロックボリュームを検出したり、作成されたブロックボリュームにファイルシステムを作成したりする等して、ファイルサービスに係る処理を実行できるようにI/Oできる状態に設定する。
S1512では、スタンバイファイル制御部は、アクティブファイル制御部のフェイルオーバを完了したことを管理部330に通知(応答)する。
図16は、フェイルオーバ後のリード処理の制御フローの一例を示す図である。図16では、ファイルクライアント110から、スタンバイファイル制御部にファイル単位のリード要求が行われるケースを例に挙げてリード処理について説明する。
S1601では、スタンバイファイル制御部は、ファイルクライアント110からファイル単位のリード要求を受信する。
S1602では、スタンバイファイル制御部は、リクエスト変換を行う。なお、リクエスト変換については、S1302と同様であるので、その説明を省略する。
S1603では、スタンバイファイル制御部は、ブロック単位のリード要求を、スタンバイストレージOS部を有する第2のストレージ制御部320-2に通知する。
S1604では、第2のストレージ制御部320-2は、アクセス可否判定を行う。なお、アクセス可否判定については、S1304と同様であるので、その説明を省略する。
S1605では、第2のストレージ制御部320-2は、アクセスが「可」であると判定した記憶装置230に対してデータの読込みを行う。本例では、第3の記憶装置230-2Aへのアクセスが「可」であるので、第2のストレージ制御部320-2は、第3の記憶装置230-2Aに対してデータの読込み(ローカルリード)を行う。
S1606では、第2のストレージ制御部320-2は、ブロックデータと、読込みが完了したこととを、スタンバイファイル制御部に通知(ブロックI/O応答)する。
S1607では、スタンバイファイル制御部は、データ変換を行う。データ変換では、ブロックデータがファイルデータに変換される。
S1608では、スタンバイファイル制御部は、ファイルデータと、読込みが完了したことをファイルクライアント110に通知(ファイルI/O応答)する。
図17は、フェイルオーバ後のライト処理の制御フローの一例を示す図である。図17では、ファイルクライアント110から、スタンバイファイル制御部にファイル単位のライト要求が行われるケースを例に挙げてライト処理について説明する。
S1701では、スタンバイファイル制御部は、ファイルクライアント110からファイル単位のライト要求を受信する。
S1702では、スタンバイファイル制御部は、リクエスト変換を行う。なお、リクエスト変換については、S1402と同様であるので、その説明を省略する。
S1703では、スタンバイファイル制御部は、ブロック単位のライト要求を、スタンバイストレージOS部を有する第2のストレージ制御部320-2に通知する。
S1704では、第2のストレージ制御部320-2は、アクセス可否判定を行う。なお、アクセス可否判定については、S1404と同様であるので、その説明を省略する。ここでは、冗長データアクセス可否テーブル630がS1507において更新されているので、第2のストレージ制御部320-2は、第3の記憶装置230-2Aにアクセスが可能であると判定する。
S1705では、第2のストレージ制御部320-2は、アクセスが「可」であると判定した記憶装置230に対してデータの書込みを行う。本例では、第1の記憶装置230-1Aへのアクセスが「不可」であり、第3の記憶装置230-2Aへのアクセスが「可」であるので、第2のストレージ制御部320-2は、第3の記憶装置230-2Aに対してデータの書込み(ローカルライト)を行う。
S1706では、第2のストレージ制御部320-2は、ブロック単位のデータの書込みが完了したことをスタンバイファイル制御部に通知(ブロックI/O応答)する。
S1707では、スタンバイファイル制御部は、ファイル単位のデータの書込みが完了したことをファイルクライアント110に送信(ファイルI/O応答)する。
本実施の形態では、ファイル制御部ペアおよびストレージOS部ペアを同一ノード120上で揃えることにより、ノード120に障害が発生したときに、それぞれのフェイルオーバ先が同一ノード120となり、ストレート構成を維持できる。
また、本実施の形態では、ノード120をパーソナルコンピュータ等に適用する場合、上述した制御に関するプログラムは、CD-ROM等の記録媒体、インターネット等のデータ信号を通じて提供することができる。
図18は、プログラムが提供される態様の一例を示す図である。
パーソナルコンピュータ1800は、CD-ROM1840を介してプログラムの提供を受ける。また、パーソナルコンピュータ1800は、通信回線1810との接続機能を有する。コンピュータ1820は、上記プログラムを提供するサーバーコンピュータであり、ハードディスク1830等の記録媒体にプログラムを格納する。通信回線1810は、インターネット、パソコン通信等の通信回線、専用通信回線等である。コンピュータ1820は、ハードディスク1830を使用してプログラムを読み出し、通信回線1810を介してプログラムをパーソナルコンピュータ1800に送信する。すなわち、プログラムをデータ信号として搬送波を介して、通信回線1810を介して送信する。このように、プログラムは、記録媒体、データ信号(搬送波)等の種々の形態のコンピュータ読み込み可能なコンピュータプログラム製品として供給できる。
(2)付記
上述の実施の形態には、例えば、以下のような内容が含まれる。
上述の実施の形態においては、本発明をシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
また、上述の実施の形態において、例えば、ノード120の1つの機能(ファイル制御部310、ストレージ制御部320等)は、複数の機能に分けられていてもよいし、複数の機能は、1つの機能にまとめられていてもよい。また、ノード120の機能の一部は、別の機能として設けられてもよいし、他の機能に含められていてもよい。また、ノード120の機能の一部は、ノード120と通信可能な他のコンピュータにより実現されてもよい。
また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
上述した実施の形態は、例えば、以下の特徴的な構成を有する。
ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノード(例えば、ノード120)がネットワーク(例えば、バックエンドネットワーク)を介して接続されているストレージシステム(例えば、ストレージシステム100)であって、データを記憶する第1の記憶装置(例えば、第1の記憶装置230-1A)と、上記ファイルサービスにおいて、ファイルクライアント(例えば、ファイルクライアント110)からのファイルI/O要求を受け付け、上記ファイルI/O要求をブロックI/O要求に変換する第1のファイル処理部(例えば、アクティブ型の第1のファイル制御部310-1A)と、上記ブロックサービスにおいて、上記ブロックI/O要求をもとに上記第1の記憶装置に対するI/Oを実行するための処理を行う第1のブロック処理部(例えば、アクティブ型の第1のストレージOS部322-1A)とを含んで構成される第1のノード(例えば、第1のノード120-1)と、データを記憶する第2の記憶装置(例えば、第3の記憶装置230-2A)と、上記ファイルサービスにおいて、ファイルクライアント(例えば、ファイルクライアント110)からのファイルI/O要求を受け付け、上記ファイルI/O要求をブロックI/O要求に変換する第2のファイル処理部(例えば、スタンバイ型の第1のファイル制御部310-2B)と、上記ブロックサービスにおいて、上記ブロックI/O要求をもとに上記第2の記憶装置に対するI/Oを実行するための処理を行う第2のブロック処理部(例えば、スタンバイ型の第1のストレージOS部322-2B)とを含んで構成される第2のノード(例えば、第2のノード120-2)と、上記第1のファイル処理部と上記第2のファイル処理部とをペアとして管理し、上記第1のファイル処理部を動作可能に設定し、上記第1のブロック処理部と上記第2のブロック処理部とをペアとして管理し、上記第1のブロック処理部を動作可能に設定する管理部(例えば、管理部330)と、を備える。
上記構成では、ファイル処理部およびブロック処理部をそれぞれペアとし、同じ物理ノードに配置することで、ファイル処理部およびブロック処理部間では内部通信が行われ、ファイルサービスとブロックサービスとの連携において、ノード間の通信回数を抑えることができる。
上記管理部は、上記第1のノードに障害が発生した場合、上記第2のファイル処理部に対して上記第1のファイル処理部の処理を引き継ぐようにファイル処理部引継指示を行い(例えば、S1504)、上記第2のブロック処理部に対して上記第1のブロック処理部の処理を引き継ぐようにブロック処理部引継指示を行う(例えば、S1509)。
上記構成では、フェイルオーバ後も、ファイル処理部およびブロック処理部間では内部通信が行われるので、ファイルサービスとブロックサービスとの連携において、ノード間の通信回数を抑えることができ、ファイルのアクセス性能が低下してしまう事態を回避することができる。
上記第1のノードは、上記第1のファイル処理部で変換されたブロックI/O要求が上記第1の記憶装置にデータを書き込む要求である場合、上記第1の記憶装置に上記データを書き込むための処理を行い(例えば、S1405)、更に、上記第2のノードに対して上記データを上記第2の記憶装置に書き込むように指示を送信する(例えば、S1406)。
上記構成では、第1の記憶装置と第2の記憶装置とに対して同じデータが書き込まれるので、フェイルオーバ後にもデータローカリティを活かした高速アクセスが可能となる。
上記管理部は、上記ブロック処理部引継指示に対する応答であって、上記第1のファイル処理部の処理の引継ぎが完了したことを示す応答を受信した後に、上記ファイル処理部引継指示を行う(例えば、図15参照)。
上記構成では、第2のブロック処理部において第1のブロック処理部の処理の引継ぎが行われていない状態にあるときに、第2のファイル処理部がファイルクライアントからのファイルI/O要求を受け付けてしまう事態を回避することができる。
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
「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)を意味することができる。
100……ストレージシステム、110……ファイルクライアント、120……ノード。

Claims (4)

  1. ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノードがネットワークを介して接続されているストレージシステムであって、
    データを記憶する第1の記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換する第1のファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記第1の記憶装置に対するI/Oを実行するための処理を行う第1のブロック処理部とを含んで構成される第1のノードと、
    データを記憶する第2の記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換する第2のファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記第2の記憶装置に対するI/Oを実行するための処理を行う第2のブロック処理部とを含んで構成される第2のノードと、
    前記第1のファイル処理部と前記第2のファイル処理部とをペアとして管理し、前記第1のファイル処理部を動作可能に設定し、前記第1のブロック処理部と前記第2のブロック処理部とをペアとして管理し、前記第1のブロック処理部を動作可能に設定する管理部と、
    を備え、
    前記第1のノードに障害が発生した場合、前記管理部は、
    前記第2のブロック処理部に対して前記第1のブロック処理部の処理を引き継ぐようにブロック処理部引継指示を行い、
    前記ブロック処理部引継指示に対する応答であって、前記第1のブロック処理部の処理の引継ぎが完了したことを示す応答を受信した後に、前記第2のファイル処理部に対して前記第1のファイル処理部の処理を引き継ぐようにファイル処理部引継指示を行う、
    ストレージシステム。
  2. 前記第1のノードは、前記第1のファイル処理部で変換されたブロックI/O要求が前記第1の記憶装置にデータを書き込む要求である場合、前記第1の記憶装置に前記データを書き込むための処理を行い、更に、前記第2のノードに対して前記データを前記第2の記憶装置に書き込むように指示を送信する、
    請求項1に記載のストレージシステム。
  3. ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノードがネットワークを介して接続されているストレージシステムにおいて、前記ファイルサービスと前記ブロックサービスとを連携するための連携方法であって、
    前記ストレージシステムは、
    データを記憶する第1の記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換する第1のファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記第1の記憶装置に対するI/Oを実行するための処理を行う第1のブロック処理部とを含んで構成される第1のノードと、
    データを記憶する第2の記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換する第2のファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記第2の記憶装置に対するI/Oを実行するための処理を行う第2のブロック処理部とを含んで構成される第2のノードと、
    管理部と、を備え、
    前記管理部が、
    前記第1のファイル処理部と前記第2のファイル処理部とをペアとして管理することと、
    前記第1のファイル処理部を動作可能に設定することと、
    前記第1のブロック処理部と前記第2のブロック処理部とをペアとして管理することと、
    前記第1のブロック処理部を動作可能に設定することと、
    を含み、
    前記第1のノードに障害が発生した場合、前記管理部は、
    前記第2のブロック処理部に対して前記第1のブロック処理部の処理を引き継ぐようにブロック処理部引継指示を行い、
    前記ブロック処理部引継指示に対する応答であって、前記第1のブロック処理部の処理の引継ぎが完了したことを示す応答を受信した後に、前記第2のファイル処理部に対して前記第1のファイル処理部の処理を引き継ぐようにファイル処理部引継指示を行う、
    連携方法。
  4. ファイル単位のI/O(Input / Output)を行うためのファイルサービスと、ブロック単位のI/Oを行うためのブロックサービスとを提供する複数のノードがネットワークを介して接続されているストレージシステムにおいて、前記ファイルサービスと前記ブロックサービスとを提供するためのプログラムであって、
    前記ストレージシステムは、
    データを記憶する第1の記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換する第1のファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記第1の記憶装置に対するI/Oを実行するための処理を行う第1のブロック処理部とを含んで構成される第1のノードと、
    データを記憶する第2の記憶装置と、前記ファイルサービスにおいて、ファイルクライアントからのファイルI/O要求を受け付け、前記ファイルI/O要求をブロックI/O要求に変換する第2のファイル処理部と、前記ブロックサービスにおいて、前記ブロックI/O要求をもとに前記第2の記憶装置に対するI/Oを実行するための処理を行う第2のブロック処理部とを含んで構成される第2のノードと、
    を備え、
    前記第1のファイル処理部と前記第2のファイル処理部とをペアとして管理し、前記第1のファイル処理部を動作可能に設定し、前記第1のブロック処理部と前記第2のブロック処理部とをペアとして管理し、前記第1のブロック処理部を動作可能に設定する処理と、
    前記第1のノードに障害が発生した場合、
    前記第2のブロック処理部に対して前記第1のブロック処理部の処理を引き継ぐようにブロック処理部引継指示を行い、
    前記ブロック処理部引継指示に対する応答であって、前記第1のブロック処理部の処理の引継ぎが完了したことを示す応答を受信した後に、前記第2のファイル処理部に対して前記第1のファイル処理部の処理を引き継ぐようにファイル処理部引継指示を行う処理と、を前記ストレージシステムに設けられているノードに実行させるためのプログラム。
JP2020130800A 2020-07-31 2020-07-31 ストレージシステム、連携方法、およびプログラム Active JP7100090B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020130800A JP7100090B2 (ja) 2020-07-31 2020-07-31 ストレージシステム、連携方法、およびプログラム
US17/037,841 US11165850B1 (en) 2020-07-31 2020-09-30 Storage system and method of storing data in nodes
CN202110260903.3A CN114063896A (zh) 2020-07-31 2021-03-10 存储系统、协作方法以及程序
US17/487,541 US11496547B2 (en) 2020-07-31 2021-09-28 Storage system node communication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020130800A JP7100090B2 (ja) 2020-07-31 2020-07-31 ストレージシステム、連携方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2022027033A JP2022027033A (ja) 2022-02-10
JP7100090B2 true JP7100090B2 (ja) 2022-07-12

Family

ID=78331478

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020130800A Active JP7100090B2 (ja) 2020-07-31 2020-07-31 ストレージシステム、連携方法、およびプログラム

Country Status (3)

Country Link
US (2) US11165850B1 (ja)
JP (1) JP7100090B2 (ja)
CN (1) CN114063896A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338650B (zh) * 2021-12-23 2024-10-29 中电金信软件有限公司 文件传输方法、装置、电子设备及可读存储介质
JP2023103850A (ja) * 2022-01-14 2023-07-27 株式会社日立製作所 ストレージシステム、連携方法、およびプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233467A (ja) 2001-12-14 2003-08-22 Hitachi Ltd ストレージベースリモートコピーでのパス選択方式
JP2005535034A (ja) 2002-08-02 2005-11-17 グラス・バレー(ユー・エス)インコーポレイテッド メディア・エリア・ネットワークのためのリアルタイム故障回復

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7398302B2 (en) 2001-03-30 2008-07-08 Hitachi, Ltd. Remote copy with path selection and prioritization
US7096269B2 (en) 2001-03-30 2006-08-22 Hitachi, Ltd. Path selection methods for storage based remote copy
JP2004220216A (ja) * 2003-01-14 2004-08-05 Hitachi Ltd San/nas統合型ストレージ装置
US8892689B1 (en) * 2008-04-30 2014-11-18 Netapp, Inc. Method and apparatus for a storage server to automatically discover and join a network storage cluster
US8868492B2 (en) * 2011-06-15 2014-10-21 Oracle International Corporation Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica
WO2014115188A1 (en) * 2013-01-28 2014-07-31 Hitachi, Ltd. Storage system and method for allocating resource
ES2718683T3 (es) * 2014-11-25 2019-07-03 Philipp Gabler Procedimiento para la comunicación entre al menos dos terminales
US10942815B2 (en) * 2015-07-09 2021-03-09 Hitachi, Ltd. Storage control system managing file-level and block-level storage services, and methods for controlling such storage control system
US10831465B2 (en) 2016-02-12 2020-11-10 Nutanix, Inc. Virtualized file server distribution across clusters
US10039363B2 (en) * 2016-05-02 2018-08-07 L'oreal Multi-phase cosmetic composition mixing pack
CN111193600B (zh) * 2018-11-14 2023-04-07 杭州海康威视系统技术有限公司 一种接管服务的方法、装置及系统
US11416354B2 (en) * 2019-09-05 2022-08-16 EMC IP Holding Company LLC Techniques for providing intersite high availability of data nodes in a virtual cluster

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233467A (ja) 2001-12-14 2003-08-22 Hitachi Ltd ストレージベースリモートコピーでのパス選択方式
JP2005535034A (ja) 2002-08-02 2005-11-17 グラス・バレー(ユー・エス)インコーポレイテッド メディア・エリア・ネットワークのためのリアルタイム故障回復

Also Published As

Publication number Publication date
US11165850B1 (en) 2021-11-02
US11496547B2 (en) 2022-11-08
CN114063896A (zh) 2022-02-18
JP2022027033A (ja) 2022-02-10
US20220038526A1 (en) 2022-02-03

Similar Documents

Publication Publication Date Title
US9329795B2 (en) Logical volume transfer method and storage network system
US20190310925A1 (en) Information processing system and path management method
US7415506B2 (en) Storage virtualization and storage management to provide higher level storage services
US8914610B2 (en) Configuring object storage system for input/output operations
US6854034B1 (en) Computer system and a method of assigning a storage device to a computer
JP3843713B2 (ja) 計算機システム及びそのデバイスの割り当て方法
US9098466B2 (en) Switching between mirrored volumes
US9262087B2 (en) Non-disruptive configuration of a virtualization controller in a data storage system
US10241712B1 (en) Method and apparatus for automated orchestration of long distance protection of virtualized storage
US11789840B2 (en) Managing containers on a data storage system
JP4955996B2 (ja) ボリューム移行方法およびストレージネットワークシステム
US20140143391A1 (en) Computer system and virtual server migration control method for computer system
US10884622B2 (en) Storage area network having fabric-attached storage drives, SAN agent-executing client devices, and SAN manager that manages logical volume without handling data transfer between client computing device and storage drive that provides drive volume of the logical volume
JP7100090B2 (ja) ストレージシステム、連携方法、およびプログラム
JP6772202B2 (ja) ストレージシステム及び記憶制御方法
JP2023103850A (ja) ストレージシステム、連携方法、およびプログラム
US9612769B1 (en) Method and apparatus for automated multi site protection and recovery for cloud storage
WO2019003416A1 (ja) ストレージシステム及び記憶制御方法
US20210334043A1 (en) Storage system and storage system control method
US12086159B1 (en) Techniques for adding and removing storage objects from groups
JP6606235B1 (ja) ストレージシステム
JP2022020926A (ja) ストレージシステム及び処理移行方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220502

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220607

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220630

R150 Certificate of patent or registration of utility model

Ref document number: 7100090

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350