JP2019191951A - 情報処理システム及びボリューム割当て方法 - Google Patents
情報処理システム及びボリューム割当て方法 Download PDFInfo
- Publication number
- JP2019191951A JP2019191951A JP2018084296A JP2018084296A JP2019191951A JP 2019191951 A JP2019191951 A JP 2019191951A JP 2018084296 A JP2018084296 A JP 2018084296A JP 2018084296 A JP2018084296 A JP 2018084296A JP 2019191951 A JP2019191951 A JP 2019191951A
- Authority
- JP
- Japan
- Prior art keywords
- node
- storage
- replication
- volume
- nodes
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
- G06F11/2092—Techniques of failing over between control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】システム全体としての運用コストの低減を図ることができる情報処理システム及びボリューム割当て方法を提案する。【解決手段】レプリケーションを実行するレプリケーショングループが1又は複数のノードにより構成され、ストレージノードが、搭載された各記憶装置を、当該記憶装置のドライブ種別に応じて複数の記憶階層に分けて管理し、コントローラノードが、レプリケーショングループを構成する各ノードに対して、当該ノードが利用するミドルウェアの種別及びレプリケーショングループにおける当該ノードのノード種別に応じた記憶階層の記憶装置が記憶領域を提供するボリュームをそれぞれ割り当てるようにした。【選択図】 図11
Description
本発明はストレージシステム及びその制御方法に関し、例えば、レプリケーションを実行し、要求されるボリュームの応答性能がそれぞれ異なる複数種別の仮想マシンが稼動する情報処理システムに適用して好適なものである。
近年、ビッグデータ分析や顧客向けのWebスケールサービスなどにHadoopやNoSQL(Not only SQL(Structured Query Language))等のミドルウェアが広く用いられている。
特に、大規模ユーザは、TCO(Total Cost of Ownership)削減のため、従来はローカルドライブを使用していたのに対して、近年では分散型SDS(Software Defined Storage)を導入し、ストレージと、ストレージの上位装置であるコンピュートとを独立にスケールさせている。
しかしながら、OSS(Open Source Software)ミドルウェアのユーザは、ストレージの知識に乏しいことが多い。このためストレージ装置に搭載された階層記憶制御機能や、圧縮・重複排除機能といった使いこなしが複雑な機能は、使用する際の難易度が高く、OSSミドルウェアのユーザには受け入れられていない。
このため、分散型SDSを導入した情報処理システムでは、OSSミドルウェアと連携することでSDS機能の使いこなしを容易化することが求められている。なお、特許文献1には、ミドルウェア込みで仮想マシン(VM:Virtual Machine)を自動的にデプロイすることにより、ミドルウェアごとに異なる手順で環境を構築する難しさを緩和する方法が開示されている。
ところで、仮想マシン又は仮想マシンで実行されるプロセス(以下、これらをまとめてノードと呼ぶ)が利用するミドルウェアの種別によってはノード間でI/O処理の実行頻度に偏りが生じることがある。このため従来から、コスト削減のために、レプリケーションを実行するノードが利用するミドルウェアの種別や、レプリケーション構成におけるそのノードの種別(以下、これをノード種別と呼ぶ)に対して適切な特性のボリュームを割り当てたいという要求がある。
ここで、「レプリケーション構成」とは、レプリケーションを実行するノードの合計数や、そのレプリケーションにおいてレプリケート元やレプリケート先にそれぞれ設定されるノード数などのレプリケーション環境の構成を指す。また「ノード種別」とは、そのノードにおけるレプリケーションの役割(レプリケート元又はレプリケート先)を指す。さらに「ボリュームの特性」とは、そのボリュームの応答性能を指す。従って、「ボリュームの特性」は、そのボリュームに記憶領域を提供する記憶装置(ハードディスク装置又はSSD(Solid State Drive)など)の応答性能に依存する。
しかしながら、従来では、ミドルウェアの種別やレプリケーション構成におけるノード種別に応じた適切な特性のボリュームを各ノードに割り当てるための技術の提案はなされていない。
本発明は以上の点を考慮してなされたもので、レプリケーションを実行する各ノードに対して、そのノードが利用するミドルウェアの種別及びレプリケーション構成におけるそのノードのノード種別に応じた適切な特性のボリュームをそれぞれ割り当てることにより、システム全体としての運用コストの低減を図り得る情報処理システム及びボリューム割当て方法を提案しようとするものである。
かかる課題を解決するため本発明においては、データのリード及び又はライト処理を実行する複数のノードが稼動する情報処理システムにおいて、前記ノードを構成し、又は1若しくは複数の前記ノードが稼動するコンピュートサーバと、応答性能が異なる複数のドライブ種別の記憶装置がそれぞれ搭載され、いずれかのドライブ種別の前記記憶装置が記憶領域を提供するボリュームが作成されるストレージノードと、前記コンピュートサーバ及び前記ストレージノードを制御するコントローラノードとを設け、前記ノードが、1又は複数の他の前記ノードと共にレプリケーションを実行するレプリケーショングループをそれぞれ構成し、前記ストレージノードが、搭載された各前記記憶装置を、当該記憶装置の前記ドライブ種別に応じて複数の記憶階層に分けて管理し、前記コントローラノードが、各前記ノードに対して、当該ノードが利用するミドルウェアの種別及び前記レプリケーショングループにおける当該ノードのノード種別に応じた記憶階層の前記記憶装置が記憶領域を提供する前記ボリュームをそれぞれ割り当てるようにした。
また本発明においては、データのリード及び又はライト処理を実行する複数のノードが稼動する情報処理システムにおいて実行されるボリューム割当て方法において、前記情報処理システムは、前記ノードを構成し、又は1若しくは複数の前記ノードが稼動するコンピュートサーバと、応答性能が異なる複数のドライブ種別の記憶装置がそれぞれ搭載され、いずれかのドライブ種別の前記記憶装置が記憶領域を提供するボリュームが作成されるストレージノードと、前記コンピュートサーバ及び前記ストレージノードを制御するコントローラノードとを設け、前記ノードは、1又は複数の他の前記ノードと共にレプリケーションを実行するレプリケーショングループをそれぞれ構成し、前記ストレージノードが、搭載された各前記記憶装置を、当該記憶装置の前記ドライブ種別に応じて複数の記憶階層に分けて管理する第1のステップと、前記コントローラノードが、各前記ノードに対して、当該ノードが利用するミドルウェアの種別及び前記レプリケーショングループにおける当該ノードのノード種別に応じた記憶階層の前記記憶装置が記憶領域を提供する前記ボリュームをそれぞれ割り当てる第2のステップとを設けるようにした。
本情報処理システム及びボリューム割当て方法によれば、レプリケーショングループを構成する各ノードに対して、そのノードが利用するミドルウェアの種別及び当該プリケーショングループにおけるそのノードのノード種別に応じた適切な記憶階層の仮想ボリュームを割り当てることができる。
本発明によれば、システム全体としての運用コストの低減を図ることができる情報処理システム及びボリューム割当て方法を実現できる。
以下図面について、本発明の一実施の形態を詳述する。
以下、図面を参照して、本発明の一実施の形態を詳述する。以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加や変更等を行うことができる。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は複数でも単数でも構わない。
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、又は、ホストであってもよい。プログラムを実行して行う処理の主体(例えばプロセッサ)は、処理の一部又は全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、又は圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
(1)本実施の形態による情報処理システムの構成
図1において、1は全体として本実施の形態による情報処理システムを示す。この情報処理システムは、1又は複数のコンピュートサーバ2と、1又は複数のストレージノード3と、コントローラノード4とがネットワーク5を介して相互に接続されて構成される。
図1において、1は全体として本実施の形態による情報処理システムを示す。この情報処理システムは、1又は複数のコンピュートサーバ2と、1又は複数のストレージノード3と、コントローラノード4とがネットワーク5を介して相互に接続されて構成される。
コンピュートサーバ2は、ストレージノード3に対してホスト(上位装置)として機能するサーバ装置であり、クライアント6から与えられるリード要求やライト要求に応じて、要求されたデータをネットワーク5を介してストレージノード3に読み書きする。
このコンピュートサーバ2は、内部ネットワーク10を介して接続された1以上のCPU(Central Processing Unit)11、1以上のメモリ12、1以上の記憶装置13及び1以上の通信装置14を備えた汎用のサーバ装置から構成される。
CPU11は、コンピュートサーバ2全体の動作制御を司るプロセッサである。またメモリ12は、DRAM(Dynamic RAM(Random Access Memory))又はSRAM(Static RAM)などの揮発性の半導体メモリから構成され、主としてCPU11のワークメモリとして利用される。
記憶装置13は、例えば、ハードディスク装置やSSD(Solid State Disk)などの不揮発性の大容量の記憶装置から構成され、プログラムや制御データを長期間保持するために利用される。記憶装置13に格納されたプログラムがコンピュートサーバ2の起動時や必要時にメモリ12にロードされ、このプログラムをCPU11が実行することによりコンピュートサーバ2全体としての各種処理が実行される。
通信装置14は、例えば、NIC(Network Interface Card)から構成され、ネットワーク5を介したストレージノード3やコントローラノード4との通信時におけるプロトコル制御を行う。
ストレージノード3は、1又は複数のSDS(Software Defined Storage)を提供する物理的なサーバ装置である。ただしストレージノード3がディスクアレイ装置等の通常のストレージ装置であってもよい。またストレージノード3がコンピュートサーバ2と同一の物理サーバに同居する構成であってもよい。
ストレージノード3は、内部ネットワーク20を介して相互に接続された1以上のCPU21、1以上のメモリ22、複数の記憶装置23及び1以上の通信装置24を備える。CPU21、メモリ22及び通信装置24の機能及び構成はコンピュートサーバ2の対応部位(CPU11、メモリ12又は通信装置14)と同様であるため、ここでの詳細説明は省略する。
記憶装置23は、SSD、ATA(Advanced Technology Attachment)ハードディスク装置及びSATA(Serial ATA)ハードディスク装置などの応答性能が異なる複数のドライブ種別のドライブから構成される。同一のドライブ種別(SSD、ATAハードディスク装置、SATAハードディスク装置など)の1又は複数の記憶装置23がプールとして纏めて管理される。
この場合、各プールは、最も応答性能が高いドライブ種別の記憶装置23から構成されるプールが「Tier1(第1の記憶階層)」、次に応答性能が高いドライブ種別の記憶装置23から構成されるプールが「Tier2(第2の記憶階層)」、……といった具合に、そのプールを構成する記憶装置23のドライブ種別の応答性能に応じて複数の階層(以下、これを記憶階層又はTierと呼ぶ)に分けて管理される。従って、応答性能が要求されるデータについては、より高い記憶階層(「Tier○」や「第○の記憶階層」の○に入る数字がより小さい)のプールに格納することにより、より迅速にそのデータの読み書きを行うことができる。
なお以下においては、「Tier(ティア)」や「記憶階層」という用語はプールだけでなく、そのプールを構成する記憶装置23やそのプールに対応付けられる仮想ボリュームに対しても同様に用いる場合がある。例えば、最も応答性能が高いドライブ種別の記憶装置23や、その記憶装置23により構成されるプールと対応付けられた(そのプールから記憶領域が割り当てられる)仮想ボリュームを「Tier1」若しくは「第1の記憶階層」の記憶装置23又は仮想ボリュームと呼び、次に応答性能が高いドライブ種別の記憶装置23や、その記憶装置23により構成されるプールと対応付けられた仮想ボリュームを「Tier2」又は「第2の記憶階層」の記憶装置23又は仮想ボリュームと呼ぶものとする。
コントローラノード4は、本情報処理システム1の管理者がネットワーク5を介してコンピュートサーバ2やストレージノード3に対する各種設定やメンテナンスを行う際に利用するコンピュータ装置である。コントローラノード4は、内部ネットワーク30を介して接続された1以上のCPU31、1以上のメモリ32、1以上の記憶装置33及び1以上の通信装置34を備えた汎用のコンピュータ装置から構成される。これらCPU31、メモリ32、記憶装置33及び通信装置34の機能及び構成はコンピュートサーバ2の対応部位(CPU11、メモリ12、記憶装置13又は通信装置14)と同様であるため、ここでの詳細説明は省略する。
図2は、コンピュートサーバ2のメモリ12の論理構成を示す。この図2に示すように、コンピュートサーバ2のメモリ12には、ハイパバイザプログラム40及び複数の仮想マシンテンプレート41が格納される。ハイパバイザプログラム40は、コンピュートサーバ2を仮想化して1又は複数の仮想マシンをクライアント6に提供する機能を有するプログラムである。従って、本情報処理システム1の場合、クライアント6は、仮想マシンに対してリード要求やライト要求を発行することになる。
また仮想マシンテンプレート41は、対応する仮想マシンのOS(Operating System)種別や、CPU性能、メモリ容量、及び、その仮想マシンに割り当てるボリュームの容量、その仮想マシンが利用するミドルウェアの種別などが定義されたテンプレートである。各コンピュートサーバ2は、自コンピュートサーバ2上に作成する仮想マシンごとの仮想マシンテンプレート41をメモリ12内に保持しており、ハイパバイザプログラム40が、これら仮想マシンテンプレート41に従った構成及び機能を有する仮想マシンを作成してクライアント6に提供する。
さらにコンピュートサーバ2のメモリ12には、各仮想マシンテンプレート41にそれぞれ対応させて、仮想マシン使用領域42が確保される。この仮想マシン使用領域42は、対応する仮想マシンテンプレート41を用いて作成された仮想マシンが使用するメモリ領域であり、当該仮想マシンテンプレート41において定義された容量(メモリ容量)を有する。
各仮想マシン使用領域42には、対応する仮想マシンテンプレート41を用いて作成された仮想マシンが利用するアプリケーションプログラム43と、MongoDBやNeo4jなどのミドルウェアプログラム44と、仮想マシンがストレージノード3に格納されたファイルにアクセスするために利用するファイルシステムプログラム45となどの必要なプログラムがそれぞれ格納される。
図3は、ストレージノード3のメモリ22の論理構成を示す。この図3に示すように、ストレージノード3のメモリ22には、1又は複数のSDS制御プログラム50と、Tier(ティア)制御プログラム51と、ボリューム管理テーブル52とが格納される。
SDS制御プログラム50は、SDSのストレージコントローラとして機能するプログラムである。SDS制御プログラム50は、仮想マシンに対して仮想的な論理ボリューム(以下、これを仮想ボリュームと呼ぶ)を提供し、当該仮想ボリュームに対する仮想マシンからのライト要求に応じてその仮想ボリュームと対応付けられたプールから記憶領域を動的に割り当て、その記憶領域にライト対象のデータを格納する。またSDS制御プログラム50は、仮想ボリュームに対する仮想マシンからのリード要求に応じてその仮想ボリュームと対応付けられたプールから要求されたデータを読み出してリード要求の送信元の仮想マシンに転送する。
Tier制御プログラム51は、自ストレージノード3内に作成された各プールの記憶階層を管理し、必要に応じて一の記憶階層のプールに格納されたデータを他の記憶階層のプールに移動させる機能を有するプログラムである。
ボリューム管理テーブル52は、自ストレージノード3内に作成された仮想ボリュームを管理するために利用されるテーブルである。ボリューム管理テーブル52の詳細については後述する。
(2)ボリューム割当て機能
次に、コントローラノード4に搭載されたボリューム割当て機能について説明する。図1について説明した構成を有する情報処理システム1では、仮想マシンが利用するミドルウェアプログラム44(図2)の種別やレプリケーション構成によっては、ストレージノード3や仮想ボリュームごとのI/O(Input/Output)頻度に偏りが生じる場合がある。このためコスト削減を考えた場合、各仮想マシンや各仮想マシンが実行するプロセス(ノード)に対して適切な記憶階層の仮想ボリュームを割り当てたいという要求がある。
次に、コントローラノード4に搭載されたボリューム割当て機能について説明する。図1について説明した構成を有する情報処理システム1では、仮想マシンが利用するミドルウェアプログラム44(図2)の種別やレプリケーション構成によっては、ストレージノード3や仮想ボリュームごとのI/O(Input/Output)頻度に偏りが生じる場合がある。このためコスト削減を考えた場合、各仮想マシンや各仮想マシンが実行するプロセス(ノード)に対して適切な記憶階層の仮想ボリュームを割り当てたいという要求がある。
例えば、図2について上述した仮想マシンテンプレート41に基づいて作成される仮想マシンが利用するミドルウェアプログラム44がMongoDBであり、レプリケーション構成が「プライマリ(Primary)」と呼ばれるレプリケーションの元となるノード(仮想マシン又はプロセス)が1つ、プライマリに追従してデータの複製を行う「セカンダリ(Secondary)」と呼ばれるノードが2つのレプリケーション構成(レプリカセット)である場合について考える。なお、「セカンダリ」の各ノードは、それぞれ「プライマリ」のノードが存在するコンピュートサーバ2以外の互いに異なるコンピュートサーバ2内に存在するノードの中から選択される。
この場合、クライアント6(図1)のライト要求やリード要求は、「プライマリ」に設定されたノードに与えられる。そして、「プライマリ」のノードは、クライアント6からのライト要求及びライト対象のデータを受信した場合には、ネットワーク5を介して対応するストレージノード3にアクセスし、そのストレージノード3内の自仮想マシンに割り当てられた仮想ボリュームにそのライト対象のデータを書き込む。
また「プライマリ」のノードは、これと併せてそのデータを、「セカンダリ」に設定された各ノードにそれぞれ転送する。そして、このデータを受信した「セカンダリ」のノードは、受信したデータを自ノードに割り当てられた仮想ボリュームに書き込む。
これに対して、「プライマリ」のノードは、クライアント6からのリード要求を受信した場合には、ネットワーク5を介して対応するストレージノード3にアクセスし、当該ストレージノード3内の自ノードに割り当てられた仮想ボリュームから要求されたデータを読み出し、読み出したデータをリード要求の送信元のクライアント6に転送する。
このようにMongoDBのレプリカセットでは、「プライマリ」のノードに割り当てられた仮想ボリュームに対してはランダムリードやシーケンシャルライトが行われる一方で、「セカンダリ」のノードに割り当てられた仮想ボリュームに対してはシーケンシャルライトだけが行われる。ただし、これは1つの構成例である。
このため、上述のような構成例の場合、「プライマリ」のノードに割り当てる仮想ボリュームについては高い応答性能が求められ、「セカンダリ」のノードに割り当てる仮想ボリュームについてはそれ程高い応答性能が求められない。よって、「プライマリ」のノードに対しては、高価ではあるが応答性能が高いドライブ種別の記憶装置23により構成されるプールから記憶領域が提供される仮想ボリュームを割り当て、「セカンダリ」のノードに対しては、応答性能は高くないが安価なドライブ種別の記憶装置23により構成されるプールから記憶領域が提供される仮想ボリュームを割り当てることが望ましい。
以上のことは、ノードがミドルウェアプログラム44としてNeo4jを利用する場合にも同様に言える。例えば、Neo4jの場合、マスタ−スレーブ方式のレプリケーションを設定することができ、この場合に古典的な設定では、ライト要求を「マスタ」のノードが処理し、リード要求を「スレーブ」のノードが処理する。従って、Neo4jでは、「スレーブ」のノードに割り当てる仮想ボリュームについては高い応答性能が求められ、「マスタ」のノードに割り当てる仮想ボリュームについてはそれ程高い応答性能が求められない。なお、以下においては、同一のレプリケーションを実行するノードの集合体を「レプリケーショングループ」と呼ぶものとする。
このように本情報処理システム1においては、レプリケーショングループを構成する各ノードに対して、そのノードが利用するミドルウェアプログラム44の種別やレプリケーションにおけるそのノードのノード種別に応じた適切な記憶階層の仮想ボリュームを割り当てることがコスト削減の観点からも望ましい。しかしながら、従来では、レプリケーショングループを構成する各ノードに対して、そのノードが利用するミドルウェアプログラム44の種別や、そのノードのノード種別に応じた適切な記憶階層の仮想ボリュームを割り当てるための技術の提案はない。
そこで本実施の形態による情報処理システム1では、レプリケーショングループを構成するノードを起動する際、そのノードが利用するミドルウェアプログラム44の種別及びレプリケーション構成におけるそのノードのノード種別に基づいて、そのノードに対して適切な記憶階層の仮想ボリュームを割り当てるボリューム割当て機能がコントローラノード4に搭載されている。
具体的に、コントローラノード4は、MongoDBにおける「プライマリ」や、Neo4jにおける「マスタ」といった、より高い応答性能が求められるノードに対しては最も記憶階層が高い仮想ボリュームを割り当て、MongoDBにおける「セカンダリ」や、Neo4jにおける「マスタ」といった、それ程高い応答性能が求められないノードに対してはそれよりも低い記憶階層の仮想ボリュームを割り当てるようにコンピュートサーバ2やストレージノード3を制御する。またコントローラノード4は、この際、各ノードに割り当てる仮想ボリュームを、対応する記憶階層の空き容量が最も多いストレージノード3内に作成された仮想ボリュームの中からそれぞれ選択する。
一方、例えば、MongoDB規格では、「プライマリ」のノードが稼動するコンピュートサーバ2や、「プライマリ」のノードに割り当てられた仮想ボリュームを提供するストレージノード3に障害が発生した場合には、「セカンダリ」のノードの1つが自動的に「プライマリ」に昇格する機能が規定されている。
このため、本情報処理システム1において、各ノードが利用するミドルウェアとしてMongoDBを利用し、各ノードに割り当てる仮想ボリュームを固定とした場合、「プライマリ」に昇格したノードに対して、そのノードが「セカンダリ」であったときに割り当てられていた記憶階層の低い仮想ボリュームがそのまま割り当て続けられることとなり、クライアント6(図1)から見た本情報処理システム1の応答性能が低下するという事態が発生する問題がある。
そこで本実施の形態による情報処理システム1では、本情報処理システム1内のいずれかのコンピュートサーバ2又はストレージノード3に障害が発生した場合に、その障害の内容に応じた必要なノードについて、そのノードに割り当てる仮想ボリュームを適切な記憶階層の仮想ボリュームに切り替えるようコンピュートサーバ2やストレージノード3を制御する構成変更機能がコントローラノード4に搭載されている。
実際上、コントローラノード4は、あるレプリケーショングループのレプリケート元に設定されたノードが稼動するコンピュートサーバ2の障害を検知した場合には、障害発生の契機でレプリケート元に昇格したノードに割り当てられている仮想ボリュームが、そのレプリケーショングループのレプリケート元のノードに割り当てられるべき記憶階層の仮想ボリュームであるか否かを判定する。そしてコントローラノード4は、この判定で否定結果を得た場合には、それまでレプリケート元のノードに割り当てていた仮想ボリュームを新たなコンピュートサーバ2内に存在する新たなノードに割り当てた上で、その新たなノードをそのレプリケーショングループにおけるレプリケート先として起動し、その後、そのノードをレプリケート元に昇格させる。なお、ここで言う「新たなコンピュートサーバ」とは、そのレプリケーショングループを構成するいずれのノードも存在しないコンピュートサーバ2を指し、「新たなノード」とは、そのレプリケーショングループに属さないノードを指す。以下においても同様である。
またコントローラノード4は、あるレプリケーショングループのレプリケート元に設定されたノードに割り当てられた仮想ボリュームを提供するストレージノード3の障害を検知した場合にも、上述と同様に、障害発生の契機でレプリケート元に昇格したノードに割り当てられている仮想ボリュームが、そのレプリケーショングループのレプリケート元のノードに割り当てられるべき記憶階層の仮想ボリュームであるか否かを判定する。そしてコントローラノード4は、この判定で否定結果を得た場合には、その仮想ボリュームに格納されていたデータを、レプリケート元のノードに割り当てるべき記憶階層のプールに移動させると共に、冗長度を維持するため、新たなコンピュートサーバ2内に存在する新たなノードに新たな仮想ボリュームを割り当てた上で、その新たなノードをそのレプリケーショングループの新たなレプリケート先として起動する。なお、ここで言う「新たな仮想ボリューム」とは、そのレプリケーショングループのいずれのノードにも割り当てられていない仮想ボリュームを指す。以下においても同様である。
一方、コントローラノード4は、あるレプリケーショングループのレプリケート先に設定されたノードが稼動するコンピュートサーバ2の障害を検知した場合には、そのノードに割り当てられていた仮想ボリュームを新たなコンピュートサーバ2内に存在する新たなノードに割り当て、その新たなノードをそのレプリケーショングループの新たなレプリケート先として起動する。
またコントローラノード4は、あるレプリケーショングループのレプリケート先に設定されたノードに割り当てられた仮想ボリュームを提供するストレージノード3の障害を検知した場合には、新たなコンピュートサーバ2内に存在する新たなノードに新たな仮想ボリュームを割り当て、その新たなノードをそのレプリケーショングループの新たなレプリケート先として起動する。
以上のような本実施の形態のボリューム割当て機能及び構成変更機能を実現するための手段として、図4に示すように、コントローラノード4のメモリ32には、プログラムとして、ミドルウェアデプロイプログラム60、ボリューム作成プログラム61、障害検知プログラム62及び構成変更プログラム63が格納され、制御情報として、ドライブ判定テーブル64、ストレージ容量管理テーブル65、コンピュートサーバ管理テーブル66及びレプリケーション管理テーブル67が格納されている。
ミドルウェアデプロイプログラム60は、ミドルウェアプログラム44の種別や、レプリケーション構成などの運用条件を指定したノードのデプロイ指示が管理者から与えられた場合に、指定された運用条件を満たす環境を構築してそのノードをミドルウェアプログラム44込みでデプロイする機能を有するプログラムである。
またボリューム作成プログラム61は、ミドルウェアデプロイプログラム60がノードをデプロイする際にデプロイ対象のノードに割り当てるべき仮想ボリュームを作成して当該ノードに割り当てる機能を有するプログラムである。
障害検知プログラム62は、本情報処理システム1内の各コンピュートサーバ2及び各ストレージノード3を監視し、いずれかのコンピュートサーバ2やストレージノード3に障害が発生した場合にこれを検知する機能を有するプログラムである。さらに構成変更プログラム63は、障害検知プログラム62が検知した障害の内容に応じて必要なレプリケーション構成の構成変更を行う機能を有するプログラムである。
一方、ドライブ判定テーブル64は、ミドルウェアプログラム44の種別ごとに、レプリケート元及びレプリケート先とするノードの数(ノード数)や、これらレプリケート元及びレプリケート先の各ノードにそれぞれ割り当てるべき記憶装置23(図1)のドライブ種別を規定したテーブルである。このドライブ判定テーブル64は、予め本情報処理システム1の管理者などにより作成されてコントローラノード4のメモリ32に格納される。
このドライブ判定テーブル64は、図5に示すように、ミドルウェア種別欄64A、ノード区分欄64B、ノード数欄64C、ノード種別欄64D及びドライブ種別欄64Eを備えて構成される。そしてミドルウェア種別欄64Aには、MongoDBやNeo4jといった、本情報処理システム1においてノードが利用可能なミドルウェアプログラム44(図2)の種別がすべて格納される。
またノード区分欄64Bには、対応するミドルウェアプログラム44の種別において規定されるノード種別の区分(以下、これをノード区分と呼ぶ)が格納される。本実施の形態においては、MongoDBの「プライマリ」やNeo4jの「スレーブ」といった、より高い応答性能が求められるノード種別のノードは第1区分、MongoDBの「セカンダリ」やNo4jの「マスタ」といった、第1区分のノードよりも低い応答性能でもよいノード種別のノードは第2区分というように、より記憶階層が高い仮想ボリュームを割り当てるべきノード種別がより高い区分(第○区分の○の数字がより小さい区分)となるように、各ノード種別のノード区分がそれぞれ決定される。
またノード数欄64Cには、対応するミドルウェアプログラム44の種別及びレプリケーション構成において、対応するノード区分のノード種別に設定されるべきノードの数が格納され、ノード種別欄64Dには、そのノード区分に属するノード種別が格納される。さらにドライブ種別欄64Eには、対応するノード区分に属するノード種別のノードに割り当てるべき仮想ボリュームが対応付けられたプールを構成する記憶装置23(つまり対応するノード区分に属するノードに記憶領域を提供する記憶装置23)のドライブ種別が格納される。
従って、図5の例の場合、種別が「ミドルウェア1」のミドルウェアプログラム44を利用するノードのレプリケーション構成では、ノード種別が「プライマリ(Primary)」に設定される「1」つのノードのノード区分が「第1区分」であり、第1区分のノードに対しては「SSD」から構成されるプールが対応付けられた仮想ボリュームを割り当て、ノード種別が「セカンダリ(Secondary)」に設定される「残り」のノードのノード区分が「第2区分」であり、第2の区分のノードに対しては「HDD(ハードディスク装置)」から構成されるプールが対応付けられた仮想ボリュームを割り当てるべきことが規定されている。
なお図5の例では、記憶装置23のドライブ種別が「SSD」及び「HDD(ハードディスク装置)」の2種類しか存在しない場合について例示しているが、ドライブ種別が3つ以上あってもよい。
ストレージ容量管理テーブル65は、本情報処理システム1内に存在する各ストレージノード3におけるドライブ種別ごとの記憶装置23の空き容量の合計をコントローラノード4が管理するために利用するテーブルであり、図6に示すように、ストレージノードID欄65A、ドライブ種別欄65B及び空き容量欄65Cを備えて構成される。
そしてストレージノードID欄65Aには、本情報処理システム1内に存在する各ストレージノード3にそれぞれ付与されたそのストレージノード3に固有の識別子(ストレージノードID)が格納される。図6では、かかるストレージノードIDとして、「1」から始まる連番が各ストレージノード3に付与された場合を例示している。
また1つのストレージノードID欄65Aに対応するドライブ種別欄65Bには、対応するストレージノード3に搭載されたすべての記憶装置23のドライブ種別が格納され、1つのドライブ種別に対応する空き容量欄65Cには、対応するストレージノード3に搭載された対応するドライブ種別の記憶装置23の空き容量の合計が格納される。
従って、図6の例の場合、「1」というストレージノードIDが付与されたストレージノード3については、「SSD」というドライブ種別の記憶装置23と、「HDD(ハードディスク装置)」というドライブ種別の記憶装置23とが搭載されており、このうち「SSD」の空き容量の合計が「1500GB」、「HDD」の空き容量の合計が「10000GB」であることが示されている。
なお図6では、各ストレージノード3が「SSD」及び「HDD(ハードディス装置)」の2種類のドライブ種別の記憶装置23のみを備える場合について例示しているが、図5についても上述したように、記憶装置23として「SSD」及び「HDD(ハードディスク装置)」以外のドライブ種別の記憶装置23が各ストレージノード3に搭載されていてもよい。
コンピュートサーバ管理テーブル66は、本情報処理システム1内に存在するコンピュートサーバ2をコントローラノード4が管理するために利用するテーブルであり、図7に示すように、コンピュートサーバID欄66A、仮想マシンID欄66B、プロセスID欄66C、ミドルウェア種別欄66D、ノード種別欄66E、ストレージノードID欄66F、ボリュームID欄66G及びドライブ種別欄66Hを備えて構成される。
そしてコンピュートサーバID欄66Aには、本情報処理システム1内に存在する各コンピュートサーバ2にそれぞれ付与されたそのコンピュートサーバ2に固有の識別子(コンピュートサーバID)が格納される。図7では、かかるコンピュートサーバIDとして、「1」から始まる連番が各コンピュートサーバ2に付与された場合を例示している。
また仮想マシンID欄66Bは、対応するコンピュートサーバ2上で稼動する各仮想マシンにそれぞれ対応させて分割されており、これら分割された各欄内に、対応する仮想マシンに付与されたその仮想マシンに固有の識別子(仮想マシンID)がそれぞれ格納される。図7では、かかる仮想マシンIDとして、個々のコンピュートサーバ2内においてのみ固有の番号が各仮想マシンにそれぞれ付与された場合を例示している。
またプロセスID欄66Cは、対応する仮想マシンで実行される各プロセスにそれぞれ対応させて分割されており、これら分割された各欄内に、対応する仮想マシンで実行される対応するプロセスに対して付与されたそのプロセスに固有の識別子(プロセスID)がそれぞれ格納される。図7では、かかるプロセスIDとして、個々のコンピュートサーバ2内においてのみ固有の番号が各プロセスにそれぞれ付与された場合を例示している。
ミドルウェア種別欄66Dも対応する仮想マシンで実行される各プロセスにそれぞれ対応させて分割されており、これら分割された各欄内に、対応する仮想マシンが利用するミドルウェアプログラム44(図2)の種別(MongoDB、Neo4jなど)がそれぞれ格納される。
ノード種別欄66Eも対応する仮想マシンで実行される各プロセスにそれぞれ対応させて分割されており、これら分割された各欄内に、対応するノード(仮想マシン又はプロセス)のノード種別が格納される。
例えば、ミドルウェアプログラム44がMongoDBであれば、ノード種別として、上述のようにクライアント6(図1)からのI/O要求を処理すると共にレプリケーションのレプリケート元となる「プライマリ」と、当該レプリケーションのレプリケート先となる「セカンダリ」の2つの種別があるため、これら「プライマリ」及び「セカンダリ」のうちのいずれかが各欄にそれぞれ格納される。またミドルウェアプログラム44がNeo4jの場合には、ノード種別として、クライアント6からのI/O要求を処理すると共にレプリケーションのレプリケート元となる「マスタ」と、当該レプリケーションのレプリケート先となる「スレーブ」の2つの区分があるため、これら「マスタ」及び「スレーブ」のいずれかが各欄にそれぞれ格納される。
ボリュームID欄66G及びストレージノードID欄66Fも対応する仮想マシンで実行される各プロセスにそれぞれ対応させて分割されており、これら分割された各欄内に、対応するノード(仮想マシン又はプロセス)に割り当てられた仮想ボリュームの仮想ボリュームID(ボリュームID欄66Gの場合)や、その仮想ボリュームを提供するストレージノード3のストレージノードID(ストレージノードID欄66Fの場合)が格納される。
さらにドライブ種別欄66Hも対応する仮想マシンで実行される各プロセスにそれぞれ対応させて分割されており、これら分割された各欄内に、対応するノードに割り当てられた仮想ボリュームに記憶領域を提供する記憶装置(その仮想ボリュームに割り当てられた仮想ボリュームと対応付けられたプールを構成する記憶装置)23のドライブ種別がそれぞれ格納される。
従って、図7の例の場合、「1」というコンピュートサーバIDが付与されたコンピュートサーバ2上では、「ミドルウェア1」というミドルウェアプログラム44を利用し、「1」という仮想マシンIDが付与された仮想マシンが稼動しており、この仮想マシンは、少なくとも「1」というプロセスIDが付与されたノード種別が「プライマリ」のプロセスと、「2」というプロセスIDが付与されたノード種別が「プライマリ」のプロセスとを実行していることが示されている。
また図7では、かかる「1」というプロセスIDが付与されたプロセスには、「1」というストレージノードIDが付与されたストレージノード3内の、「SSD」から構成されるプールと対応付けられたボリュームIDが「1」の仮想ボリュームが割り当てられ、かかる「2」というプロセスIDが付与されたプロセスには、「4」というストレージノードIDが付与されたストレージノード3内の、「SSD」から構成されるプールと対応付けられたボリュームIDが「41」の仮想ボリュームが割り当てられていることも併せて示されている。
レプリケーション管理テーブル67は、コンピュートサーバ2が、本情報処理システム1内に設定されたレプリケーション(の設定)を管理するために利用するテーブルであり、図8に示すように、レプリケーションID欄67A及び複数の区分欄67Bを備えて構成される。
そしてレプリケーションID欄67Aには、対応するレプリケーション(の設定)に対して付与されたそのレプリケーション(の設定)に固有の識別子(レプリケーションID)が格納される。
また区分欄67Bは、対応するレプリケーション(の設定)のレプリケーション構成におけるノード区分にそれぞれ対応させて設けられており、これらの区分欄67BがそれぞれコンピュートサーバID欄67BA、仮想マシンID欄67BB及びプロセスID欄67BCに分割されている。またノードが2つ以上設定されたノード区分に対応する区分欄67Bについては、コンピュートサーバID欄67BA、仮想マシンID欄67BB及びプロセスID欄67BCがそのノード区分を構成する各ノードにそれぞれ対応させた行に分割されている。
そしてコンピュートサーバID欄67BAには、対応するレプリケーション(の設定)において第1区分に設定されたノードが仮想マシンである場合には、その仮想マシンが存在するコンピュートサーバ2のコンピュートサーバID、そのノードがプロセスである場合には、そのプロセスを実行する仮想マシンが存在するコンピュートサーバ2のコンピュートサーバIDが格納される。
また仮想マシンID欄67BBには、対応するそのノードが仮想マシンである場合にはその仮想マシンID、そのノードがプロセスである場合には、そのプロセスを実行する仮想マシンの仮想マシンIDが格納される。さらにプロセスID欄67BCには、対応するノードが仮想マシンである場合には何も情報が格納されず、対応するノードがプロセスである場合には、そのプロセスのプロセスIDが格納される。
従って、図8の例の場合、「レプリケーション1」というレプリケーションIDが付与されたレプリケーション(の設定)では、第1区分のノードが、「1」というコンピュートサーバIDが付与されたコンピュートサーバ2上で稼動する「1」という仮想マシンIDが付与された仮想マシンが実行するプロセスIDが「1」のプロセスであり、第2区分のノードが、「2」というコンピュートサーバIDが付与されたコンピュートサーバ2上で稼動する「2」という仮想マシンIDが付与された仮想マシンが実行するプロセスIDが「4」のプロセスと、「4」というコンピュートサーバIDが付与されたコンピュートサーバ2上で稼動する「1」という仮想マシンIDが付与された仮想マシンが実行するプロセスIDが「2」のプロセスとであることが示されている。
ボリューム管理テーブル52(図3)は、ストレージノード3が、本情報処理システム1内に存在する仮想ボリュームを管理するために利用するテーブルであり、図9に示すように、ボリュームID欄52A、ページID欄52B及びTier欄52Cを備えて構成される。
そしてボリュームID欄52Aには、本情報処理システム1内に存在する各仮想ボリュームの識別子(ボリュームID)が格納される。またページID欄52B及びTier欄52Cは、それぞれ対応する仮想ボリューム内のページにそれぞれ対応させて分割されており、ページID欄52Bにおける分割された各欄に、それぞれ対応するページに付与されたそのページに固有の識別子(ページID)が格納され、Tier欄52Cにおける分割された各欄に、それぞれ対応する仮想ボリューム内の対応するページに割り当てられた記憶領域の記憶階層(その記憶領域を提供するプールの記憶階層)が格納される。
従って、図9の例の場合、ボリュームIDが「1」の仮想ボリュームにおけるページIDが「1」〜「3」の各ページには、それぞれ「Tier1」の記憶階層のプールから記憶領域が割り当てられていることが示されている。
(3)本実施の形態によるボリューム割当て機能及び構成変更機能に関連する各種処理
次に、上述した本実施の形態によるボリューム割当て機能及び構成変更機能に関連して図4について上述したコントローラノード4のミドルウェアデプロイプログラム60、ボリューム作成プログラム61、障害検知プログラム62及び構成変更プログラム63によりそれぞれ実行される処理の内容について説明する。
次に、上述した本実施の形態によるボリューム割当て機能及び構成変更機能に関連して図4について上述したコントローラノード4のミドルウェアデプロイプログラム60、ボリューム作成プログラム61、障害検知プログラム62及び構成変更プログラム63によりそれぞれ実行される処理の内容について説明する。
(3−1)レプリケーション設定処理
図10は、かかるボリューム割当て機能に関連してコントローラノード4のミドルウェアデプロイプログラム60(図4)により実行されるレプリケーション設定処理の処理内容を示す。
図10は、かかるボリューム割当て機能に関連してコントローラノード4のミドルウェアデプロイプログラム60(図4)により実行されるレプリケーション設定処理の処理内容を示す。
ミドルウェアデプロイプログラム60は、管理者がコントローラノード4を操作して、レプリケーションを設定すべき旨の指示(以下、この指示をレプリケーション設定指示と呼ぶ)が与えられると、この図10に示すレプリケーション設定処理を開始する。なお、このレプリケーション設定指示には、そのレプリケーションを実行するレプリケーショングループを構成するノードの数や、各ノード種別の数、及び、そのノードが利用するミドルウェアの種別などのそのレプリケーションの環境条件が含まれる。
そしてミドルウェアデプロイプログラム60は、このレプリケーション設定処理を開始すると、まず、かかるレプリケーション設定指示において指定された環境条件の中から、そのとき設定すべきレプリケーションを実行するノードの数(対応するレプリケーショングループを構成するノードの数)と、これらノードが利用するミドルウェアプログラム44の種別とを抽出する(S1)。
続いて、ミドルウェアデプロイプログラム60は、ステップS1で抽出したノード数及びミドルウェアプログラム44の種別に基づいて、要求されたレプリケーションを実行する各ノードにそれぞれ割り当てる仮想ボリュームをそれぞれ異なるストレージノード3内に作成する(S2)。
次いで、ミドルウェアデプロイプログラム60は、ステップS1で抽出したノード数のノードをそれぞれ異なるコンピュートサーバ2内にそれぞれ作成し、作成した各ノードに対して、ステップS2で作成した仮想ボリュームの中からそのノードのノード種別に応じた特性を有する仮想ボリュームをそれぞれ割り当て、この後、これらノードを起動する(S3)。
そしてミドルウェアデプロイプログラム60は、レプリケーション設定指示において指定されたレプリケーションの設定が完了した旨を表示し(S4)、この後、このレプリケーション設定処理を終了する。
(3−2)ボリューム作成処理
図11は、図10について上述したレプリケーション設定処理のステップS2においてミドルウェアデプロイプログラム60により実行されるボリューム作成処理の処理内容を示す。
図11は、図10について上述したレプリケーション設定処理のステップS2においてミドルウェアデプロイプログラム60により実行されるボリューム作成処理の処理内容を示す。
ミドルウェアデプロイプログラム60は、レプリケーション設定処理のステップS2に進むと、この図11に示すボリューム作成処理を開始し、まずドライブ判定テーブル64(図5)を参照して、レプリケーション設定指示において指定されたミドルウェアプログラム44の種別(以下、これを指定ミドルウェア種別と呼ぶ)に対するノード区分の数(ノード区分数)Nを取得する(S10)。
例えば、図5の例の場合、指定ミドルウェア種別が「ミドルウェア1」である場合には、ノード区分の数が「第1区分」及び「第2区分」の「2」つ、指定ミドルウェア種別が「ミドルウェア3」である場合には、ノード区分数Nが「第1区分」、「第2区分」及び「第3区分」の「3」つとして取得される。
続いて、ミドルウェアデプロイプログラム60は、変数nをリセット(nを「1」にセット)する(S11)。またミドルウェアデプロイプログラム60は、ドライブ判定テーブル64(図5)を参照して、指定ミドルウェア種別における第n区分のノード数及びドライブ種別を当該ドライブ判定テーブル64から取得する(S12)。例えば、図5の例で、指定ミドルウェア種別が「ミドルウェア1」の場合、この段階ではnが「1」であるため、「ミドルウェア1」の第1区分のノード数は「1」、ドライブ種別は「SSD」として取得されることになる。なお、指定ミドルウェア種別がドライブ判定テーブル64に登録されていない場合には、指定ミドルウェア種別における第n区分のノード数をすべて予め設定されたノード数(例えば1つ)とし、ドライブ種別をすべて最も応答性能が高いドライブ種別としてもよい。
次いで、ミドルウェアデプロイプログラム60は、ステップS12で取得したノード数が「残り」であるか否かを判断する(S13)。そしてミドルウェアデプロイプログラム60は、この判断で否定結果を得ると、ステップS12で取得したドライブ種別の空き容量が最も多いストレージノード3内に、そのドライブ種別の記憶装置23(図1)から構成されたプールを対応付ける仮想ボリュームを作成する(S14)。
具体的に、ミドルウェアデプロイプログラム60は、ストレージ容量管理テーブル65(図6)を参照して、ステップS12で取得したドライブ種別の空き容量が最も多いストレージノード3を選択する。またミドルウェアデプロイプログラム60は、選択したストレージノード3のSDS制御プログラム50(図3)に対して、ステップS12で取得したドライブ種別の記憶装置23(図1)から構成されるプールに対応付けた仮想ボリュームを作成するよう指示を与える。この際、ミドルウェアデプロイプログラム60は、そのとき作成すべき仮想ボリュームの容量も指定する。
かくして、この指示を受けたSDS制御プログラム50は、要求された容量の仮想ボリュームを、指定されたドライブ種別の記憶装置23から構成されるプールに対応付けて作成する。
次いで、ミドルウェアデプロイプログラム60は、コンピュートサーバ2を1つ選択する。このとき選択するコンピュートサーバ2としては、例えば、そのときの負荷が最も少ないコンピュートサーバ2や、稼動する仮想マシンの数が最も少ないコンピュートサーバ2を適用することができる。そして、ミドルウェアデプロイプログラム60は、ステップS14で作成を指示した仮想ボリュームと対応付けて仮想マシンテンプレート41(図2)を作成し、作成した仮想マシンテンプレート41をそのコンピュートサーバ2に与える(S15)。かくして、この仮想マシンテンプレート41を受領したコンピュートサーバ2は、この仮想マシンテンプレート41をメモリ12(図1)に保存すると共に、その仮想マシンテンプレート41に対応付けた仮想マシン使用領域42(図2)をメモリ12上に確保する。
続いて、ミドルウェアデプロイプログラム60は、ステップS14〜ステップS15の処理をステップS12で取得したノード数と同じ回数実行したか否かを判断する(S16)。そしてミドルウェアデプロイプログラム60は、この判断で否定結果を得ると、ステップS14に戻り、この後、ステップS14〜ステップS16の処理を繰り返す。
そしてミドルウェアデプロイプログラム60は、やがてステップS14〜ステップS15の処理をステップS12で取得したノード数と同じ回数実行し終えることによりステップS16で肯定結果を得ると、変数nをインクリメント(nの値を1だけ増加)する(S17)。またミドルウェアデプロイプログラム60は、nの値が、ステップS10で取得したノード区分数Nよりも大きくなったか否か(nがN+1となったか否か)を判断する(S18)。
ミドルウェアデプロイプログラム60は、この判断で否定結果を得るとステップS12に戻り、この後、ステップS12以降の処理を繰り返す。そしてミドルウェアデプロイプログラム60は、やがてステップS10で取得した区分数NだけステップS12以降の処理を実行し終えることによりステップS18で肯定結果を得ると、このボリューム作成処理を終了する。
これに対して、ミドルウェアデプロイプログラム60は、ステップS13の判断で肯定結果を得ると、「残り」のノード数を算出する(S19)。具体的に、ミドルウェアデプロイプログラム60は、図10について上述したレプリケーション設定処理のステップS1で取得したノード数から、そのとき対象としている区分(以下、これを対象区分と呼ぶ)よりも前のすべての区分のノード数をそれぞれ減算することにより、「残り」のノード数を算出する。この際、「対象区分よりも前の各区分のノード数」は、ドライブ判定テーブル64(図5)から取得する。
続いて、ミドルウェアデプロイプログラム60は、ステップS14〜ステップS16と同様にしてステップS20〜ステップS22を処理することにより、対象区分の各ノードに対応する仮想ボリュームと仮想マシンテンプレート41とをそれぞれ作成させる(S20〜S22)。
そしてミドルウェアデプロイプログラム60は、対象区分の各ノードに対応する仮想ボリューム及び仮想マシンテンプレート41を作成し終えることによりステップS22で肯定結果を得ると、ステップS17に進み、この後、ステップS17以降の処理を上述のように処理する。
(3−3)ノード作成処理
一方、図12は、図10について上述したレプリケーション設定処理のステップS3においてミドルウェアデプロイプログラム60により実行されるノード作成処理の処理内容を示す。
一方、図12は、図10について上述したレプリケーション設定処理のステップS3においてミドルウェアデプロイプログラム60により実行されるノード作成処理の処理内容を示す。
ミドルウェアデプロイプログラム60は、レプリケーション設定処理のステップS3に進むとこの図12に示すノード作成処理を開始し、まず、ボリューム作成処理のステップS15やステップS21で該当するストレージノード3に保存させた仮想マシンテンプレート41の中からステップS31以降が未処理の仮想マシンテンプレート41を1つ選択する(S30)。
続いて、ミドルウェアデプロイプログラム60は、ステップS30で選択した仮想マシンテンプレート41を保存しているコンピュートサーバ2のハイパバイザプログラム40(図2)に対して、ステップS30で選択した仮想マシンテンプレート41を用いて仮想マシンを作成するよう指示を与える(S31)。かくして、この指示が与えられたコンピュートサーバ2は、指定された仮想マシンテンプレート41を用いて仮想マシンを作成する。またミドルウェアデプロイプログラム60は、その仮想マシンに対する必要な情報をコンピュートサーバ管理テーブル66(図7)やレプリケーション管理テーブル67(図8)に登録する。
次いで、ミドルウェアデプロイプログラム60は、そのとき作成すべきノードがプロセスであるか否かを判断する(S32)。この判断は、そのときコントローラノード4から与えられたレプリケーション設定指示に基づいて行われる。
そしてミドルウェアデプロイプログラム60は、この判断で否定結果を得るとステップS34に進む。またミドルウェアデプロイプログラム60は、ステップS32の判断で肯定結果を得ると、ステップS31で作成した仮想マシンが実行するプロセスを作成するよう当該仮想マシンを作成させたストレージノード3に指示を与える(S33)。
この後、ミドルウェアデプロイプログラム60は、ノードが仮想マシンの場合にはステップS31で作成した仮想マシン、ノードがプロセスの場合にはステップS33で作成したプロセスに対して直前のボリューム作成処理(図11)で作成した仮想ボリュームを割り当てるよう対応するコンピュートサーバ2及びストレージノード3に指示を与える(S34)。
続いて、ミドルウェアデプロイプログラム60は、ボリューム作成処理のステップS15やステップS21で該当するコンピュートサーバ2に保存させたすべての仮想マシンテンプレート41に対するステップS31〜ステップS33の処理を完了し終えたか否かを判断する(S35)。
ミドルウェアデプロイプログラム60は、この判断で否定結果を得るとステップS30に戻り、この後ステップS30で選択する仮想マシンテンプレート41をステップS31以降が未処理の他の仮想マシンテンプレート41に順次切り替えながらステップS30〜ステップS35の処理を繰り返す。
そしてミドルウェアデプロイプログラム60は、やがてボリューム作成処理のステップS15やステップS21で該当するストレージノード3に保存させたすべての仮想マシンテンプレート41に基づく仮想マシンを作成し終えることによりステップS35で肯定結果を得ると、このノード作成処理を終了する。
(3−4)障害検知時処理
他方、図13は、上述した構成変更機能に関連して、障害検知プログラム62(図4)が、障害を検知した場合に実行する障害検知時処理の処理手順を示す。障害検知プログラム62は、本情報処理システム1内の各コンピュートサーバ2及び各ストレージノード3の状態をポーリングにより監視しており、いずれかのコンピュートサーバ2又はストレージノード3の障害を検知すると、この図13に示す障害検知時処理を実行する。ただし、コンピュートサーバ2やストレージノード3が障害発生を契機としてその障害の発生をコントローラノード4(障害検知プログラム62)に通知するようにしてもよい。
他方、図13は、上述した構成変更機能に関連して、障害検知プログラム62(図4)が、障害を検知した場合に実行する障害検知時処理の処理手順を示す。障害検知プログラム62は、本情報処理システム1内の各コンピュートサーバ2及び各ストレージノード3の状態をポーリングにより監視しており、いずれかのコンピュートサーバ2又はストレージノード3の障害を検知すると、この図13に示す障害検知時処理を実行する。ただし、コンピュートサーバ2やストレージノード3が障害発生を契機としてその障害の発生をコントローラノード4(障害検知プログラム62)に通知するようにしてもよい。
そして障害検知プログラム62は、いずれかのコンピュートサーバ2又はストレージノード3の障害を検知すると、この障害検知処理を開始し、まず、障害のタイプを判定する(S40)。具体的には、いずれかのレプリケーションにおけるレプリケート元の仮想マシン又は当該仮想マシンが稼動するコンピュートサーバ2に障害が発生した第1の障害タイプと、いずれかのレプリケーションにおけるレプリケート元の仮想マシンに割当てられた仮想ボリュームが配置されたストレージノード3に障害が発生した第2の障害タイプと、いずれかのレプリケーションにおけるレプリケート先の仮想マシン又は当該仮想マシンが稼動するコンピュートサーバ2に障害が発生した第3の障害タイプと、いずれかのレプリケーションにおけるレプリケート先の仮想マシンに割当てられた仮想ボリュームが配置されたストレージノード3に障害が発生した第4の障害タイプとのうちのいずれの障害タイプの障害が発生したかを判定する。
そして障害検知プログラム62は、そのとき検知した障害タイプに応じた構成変更処理を構成変更プログラム63(図4)に実行させる(S41〜S44)。具体的に、障害検知プログラム62は、検知した障害のタイプが第1の障害タイプであると判定した場合には、図14について後述する第1の構成変更処理を構成変更プログラム63に実行させ(S41)、第2の障害タイプであると判定した場合には、図15について後述する第2の構成変更処理を構成変更プログラム63に実行させる(S42)。そして障害検知プログラム62は、この後、この障害検知処理を終了する。
また障害検知プログラム62は、検知した障害のタイプが第3の障害タイプであると判定した場合には、コンピュートサーバ管理テーブル66(図7)及びレプリケーション管理テーブル67(図8)を参照して、そのとき検知した障害が発生したコンピュートサーバ2上で稼動していたレプリケート先のノードの代わりとなるノードを新たなコンピュートサーバ2上に作成し、作成したノードに、元のレプリケート先のノードに割り当てられていた仮想ボリュームを割り当てた上で、そのノードを稼動させる(S43)。そして障害検知プログラムは、この後、この障害検知処理を終了する。
さらに障害検知プログラム62は、検知した障害のタイプが第4の障害タイプであると判定した場合には、それまで障害が発生したストレージノード3内の仮想ボリュームが割り当てられていたノード(以下、これを障害ノードと呼ぶ)の代わりとなる新たなノードを新たなストレージノード3内に作成し、障害ノードに割り当てられていた仮想ボリュームと同じ記憶階層の仮想ボリュームを上述の新たなノードに割り当てた上で、その新たなノードを再稼動させる(S44)。そして障害検知プログラム62は、この後、この障害検知処理を終了する。
(3−5)第1の構成変更処理
図14は、図13について上述した障害検知処理のステップS41において障害検知プログラム62(図4)からの指示を受けた構成変更プログラム63(図4)により実行される第1の構成変更処理の処理内容を示す。
図14は、図13について上述した障害検知処理のステップS41において障害検知プログラム62(図4)からの指示を受けた構成変更プログラム63(図4)により実行される第1の構成変更処理の処理内容を示す。
構成変更プログラム63は、かかる指示が障害検知プログラム62から与えられると、この図14に示す第1の構成変更処理を開始し、まず、コンピュートサーバ管理テーブル66(図7)を参照して、障害発生の契機で自動的にレプリケート元に昇格したノードに割当られた仮想ボリュームに記憶領域を割り当てる記憶装置23(その仮想ボリュームに対応付けられたプールを構成する記憶装置23)のドライブ種別を取得する(S50)。
具体的に、構成変更プログラム63は、コンピュートサーバ管理テーブル66の各レコードのうち、そのとき障害が発生したコンピュートサーバ2のコンピュートサーバIDがコンピュートサーバID欄66A(図7)に格納され、かつその障害の発生を契機としてレプリケート元に昇格したノードが仮想マシンである場合にはその仮想マシンIDが仮想マシンID欄66B(図7)に格納されたレコード、そのノードがプロセスである場合にはそのプロセスのプロセスIDがプロセスID欄66C(図7)に格納されたレコードを特定し、そのレコードのドライブ種別欄66H(図7)に格納されているドライブ種別を取得する。
続いて、構成変更プログラム63は、ドライブ判定テーブル64(図5)を参照して、ステップS50で取得したドライブ種別と、第1区分のノードに割り当てるべき記憶装置23のドライブ種別とが一致するか否かを判断する(S51)。
この判断は、ドライブ判定テーブル64のレコードのうち、ミドルウェア種別欄64A(図5)に、そのノードが利用するミドルウェアプログラム44の種別が格納され、ノード区分欄64B(図5)に格納された区分が第1区分であるレコードのドライブ種別欄64E(図5)に格納されたドライブ種別と、ステップS50で取得したドライブ種別と比較し、これらが一致するか否かを判定することにより行われる。そして構成変更プログラム63は、この判断で肯定結果を得ると、第1の構成変更処理を終了する。
これに対して、構成変更プログラム63は、ステップS51の判断で否定結果を得ると、新しいコンピュートサーバ2内に新しいレプリケート先のノードを作成すると共に、そのノードに元のレプリケート元のノードに割り当てられていた仮想ボリュームを割り当てた上で、そのノードを起動させる(S52)。
具体的に、構成変更プログラム63は、レプリケーション管理テーブル67(図8)を参照して、そのとき対象としているレプリケーションを実行する各ノードがそれぞれ配置された各コンピュートサーバ2のコンピュートサーバIDをすべて取得する。そして構成変更プログラム63は、コンピュートサーバ管理テーブル66を参照して、上述のように取得したコンピュートサーバID以外のコンピュートサーバIDが付与されたコンピュートサーバ2を選択し、そのコンピュートサーバ2に新たなノードを作成するよう指示を与える。
なお、このとき構成変更プログラム63が、コンピュートサーバ2のフォルトセット(Fault Set)をも考慮して新たなノードを作成するコンピュートサーバ2を選択するようにしてもよい。ここで、「フォルトセット」とは、電源系統やネットワークスイッチを共有するコンピュートサーバ2のグループである。レプリケーショングループを構成する各ノードが、それぞれ異なるフォルトセットに属するコンピュートサーバ2上で稼動するようにノードの配置先を選択することにより、より耐障害性の高いレプリケーショングループを構築することができる。
従って、ステップS52において構成変更プログラム63が、上述の条件に加えて、そのとき対象としているレプリケーションを実行する他のノードがそれぞれ稼動する各コンピュートサーバ2のいずれも属さないフォルトセットに属するという条件を満たすコンピュートサーバ2の中から、かかる新たなノードを作成するコンピュートサーバ2を選択するようにしてもよい。
そして構成変更プログラム63は、元のレプリケート元のノードに割り当てられていた仮想ボリュームをその新たなノードに割り当てるよう、そのコンピュートサーバ2に指示を与え、この後、その新たなノードを起動するようそのコンピュートサーバ2に指示を与える。
続いて、構成変更プログラム63は、そのとき対象としているレプリケーションにおけるレプリケート先としてステップS52で起動した新たなノードのノード種別を、そのレプリケーションにおけるレプリケート元に切り替える(S53)。
具体的に、構成変更プログラム63は障害発生を契機としてそのレプリケーションにおけるレプリケート元に昇格したノードが配置されたコンピュートサーバ2に、そのノードのノード種別をそのレプリケーション構成におけるレプリケート先に戻すよう指示を与える。かくして、この指示を受領したそのコンピュートサーバ2のそのノードが利用するミドルウェアプログラム44は、そのノードのノード種別をレプリケート先に変更する。
また構成変更プログラム63は、これと並行して、ステップS52で新たなノードを起動したコンピュートサーバ2に対して、そのノードのノード種別をレプリケート元に変更するよう指示を与える。かくして、この指示を受領したそのコンピュートサーバ2のそのノードが利用するミドルウェアプログラム44は、そのノードのノード種別をレプリケート元に変更する。
そして構成変更プログラム63は、以上の処理が完了すると、ステップS53において実行した新たなノードのノード種別の切り替えに応じてコンピュートサーバ管理テーブル66の対応するレコードのノード種別欄66Eや、レプリケーション管理テーブル67の対応するレコードの必要な区分欄67Bの情報を更新し、この後、この第1の構成変更処理を終了する。
(3−6)第2の構成変更処理
図15は、図13について上述した障害検知処理のステップS42において障害検知プログラム62(図4)からの指示を受けた構成変更プログラム63(図4)により実行される第2の構成変更処理の処理内容を示す。
図15は、図13について上述した障害検知処理のステップS42において障害検知プログラム62(図4)からの指示を受けた構成変更プログラム63(図4)により実行される第2の構成変更処理の処理内容を示す。
構成変更プログラム63は、かかる指示が障害検知プログラム62から与えられると、この図15に示す第2の構成変更処理を開始し、まず、第1の構成変更処理のステップS50と同様にして、障害発生の契機で自動的にレプリケート元に昇格したノードに割当られた仮想ボリュームに記憶領域を割り当てる記憶装置23(その仮想ボリュームに対応付けられたプールを構成する記憶装置23)のドライブ種別を取得する(S60)。
続いて、構成変更プログラム63は、第1の構成変更処理のステップS61と同様にして、ステップS60で取得したドライブ種別と、対応するレプリケーション構成における第1区分のノードに割り当てるべき記憶装置23のドライブ種別とが一致するか否かを判断する(S61)。そして構成変更プログラム63は、この判断で肯定結果を得ると、ステップS63に進む。
これに対して、構成変更プログラム63は、ステップS61の判断で否定結果を得ると、レプリケート元に昇格したノードに割り当てられた仮想ボリュームに格納されているデータを、そのレプリケーションにおいて第1区分のノードに割り当てるべき記憶装置23のドライブ種別から構成されるプールに再配置するよう、そのノードに割り当てられた仮想ボリュームが設定されているストレージノード3に指示を与える(S62)。
かくして、この指示を受けたストレージノード3のTier制御プログラム51(図3)は、レプリケート元に昇格したノードに割り当てられている仮想ボリュームに格納されているデータを、そのレプリケーションにおいて第1区分のノードに割り当てるべき記憶装置23のドライブ種別から構成されるいずれかのプールにページ単位で移動させる。またTier制御プログラム51は、自ストレージノード3内で管理しているその仮想ボリュームにおける各ページに書き込まれたデータの保存先を、そのデータの移動先のプールにおけるそのデータの移動先のページに変更する。さらにTier制御プログラム51は、上述のようなデータの移動に応じてボリューム管理テーブル52(図9)を更新する。
この後、構成変更プログラム63は、新たなノードに新たな仮想ボリュームを割り当て、そのノードをそのとき対象としているレプリケーションにおける新たなレプリケート先として起動させる(S63)。
具体的に、構成変更プログラム63は、まず、レプリケーション管理テーブル67(図8)を参照して、本情報処理システム1内のコンピュートサーバ2の中から、そのとき対象としているレプリケーションを実行するいずれかのノードが存在するコンピュートサーバ2以外のコンピュートサーバ2の中から1つのコンピュートサーバ2を選択する。この際、構成変更プログラム63が、上述の条件に加えて、図14のステップS52について上述したようにコンピュートサーバ2のフォルトセットをも考慮してコンピュートサーバ2を選択するようにしてもよい。そして構成変更プログラム63は、選択したコンピュートサーバ2に対して、そのレプリケーションのレプリケート元に昇格したノードに代えて、新たにレプリケート先とするノードを作成するよう指示を与える。以下においては、このとき作成されたノードを新規ノードと呼ぶ。
また構成変更プログラム63は、コンピュートサーバ管理テーブル66(図7)及びボリューム管理テーブル52を参照して、本情報処理システム1内のストレージノード3の中から1つのストレージノード3を選択する。より詳しくは、そのとき対象としているレプリケーションを実行するいずれかのノードに対して仮想ボリュームを提供していないストレージノード3を1つ選択する。この際、構成変更プログラム63が、ストレージノード3のフォルトセットをも考慮してストレージノード3を選択するようにしてもよい。この場合、構成変更プログラム63が、上述の条件に加えて、そのとき対象としているレプリケーションを実行するいずれかのノードに仮想ボリュームを提供しているストレージノード3のいずれも属さないフォルトセットに属するという条件を満たすストレージノード3の中からストレージノード3を選択すればよい。
そして構成変更プログラム63は、選択したストレージノード3に対して、所定容量の仮想ボリュームを新規に作成するよう指示を与える。以下においては、このとき作成された仮想ボリュームを新規仮想ノードと呼ぶ。
そして構成変更プログラム63は、上述のようにして作成させた新規ノードに上述のようにして作成させた新規仮想ボリュームを割り当て、この後、その新規ノードをそのとき対象としているレクリエーションのレプリケート先として起動するようかかるコンピュートサーバ2に指示を与える。
そして構成変更プログラム63は、以上の処理が完了すると、ステップS63において実行した新たなレプリケート先のノード及びそのノードに対する仮想ボリュームの割り当てに応じて、コンピュートサーバ管理テーブル66やレプリケーション管理テーブル67の対応するレコードの情報を更新し、この後、この第2の構成変更処理を終了する。
(4)本実施の形態の効果
以上のように本実施の形態の情報処理システム1では、コンピュートサーバ2がミドルウェア込みでノードをデプロイする際に、そのノードが利用するミドルウェアプログラム44の種別と、そのノードが属するレプリケーショングループにおけるそのノードのノード種別との組み合わせに対して予め規定されたドライブ種別の記憶装置23から構成されるプールが対応付けられた仮想ボリュームを割り当てる。
以上のように本実施の形態の情報処理システム1では、コンピュートサーバ2がミドルウェア込みでノードをデプロイする際に、そのノードが利用するミドルウェアプログラム44の種別と、そのノードが属するレプリケーショングループにおけるそのノードのノード種別との組み合わせに対して予め規定されたドライブ種別の記憶装置23から構成されるプールが対応付けられた仮想ボリュームを割り当てる。
従って、本情報処理システム1によれば、ノードが利用するミドルウェアプログラム44の種別(ミドルウェアの種別)及び当該ノードのノード種別に応じた適切な記憶階層の仮想ボリュームをそのノードに割り当てることができるため、例えば、ミドルウェアプログラム44の種別がMongoDBである場合に、「セカンダリ」に設定されたノードに対してSSDなどの高価な記憶装置23から構成されるプールと対応付けられた仮想ボリュームが割り当てられるのを防止することができ、その分、本情報処理システム1の運用コストの低減を図ることができる。
また本情報処理システム1では、この際、各ノードに割り当てる仮想ボリュームを、その仮想ボリュームが属する記憶階層の空き容量が最も多いストレージノード3内に作成されたものから選択するため、各ストレージノード3間におけるI/O頻度の偏りが発生するのを未然に防止することができる。
さらに本情報処理システム1では、いずれかのコンピュートサーバ2又はストレージノード3に障害が発生した場合に、コントローラノード4が、その障害の内容に応じた必要なノードについて、そのノードに割り当てる仮想ボリュームを適切な記憶階層の仮想ボリュームに切り替えるようコンピュートサーバ2やストレージノード3を制御する。
従って、本情報処理システム1によれば、例えば、レプリケート元のノードが配置されたコンピュートサーバ2やそのノードに割り当てられた仮想ボリュームが存在するストレージノード3に障害が発生し、それまでレプリケート先であったノードがレプリケート元に昇格した場合においても、クライアント6から見た本情報処理システム1の応答性能が劣化するのを未然に防止することができる。
(5)他の実施の形態
なお上述の実施の形態においては、本発明を図1のように構成された情報処理システム1に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成の情報処理システムに広く適用することができる。
なお上述の実施の形態においては、本発明を図1のように構成された情報処理システム1に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成の情報処理システムに広く適用することができる。
また上述の実施の形態においては、各仮想マシンやプロセスに割り当てるボリュームとして仮想ボリュームを適用するようにした場合について述べたが、本発明はこれに限らず、例えば、記憶装置23が直接記憶領域を提供する論理ボリューム(仮想ではなく、実体を有する論理ボリューム)を適用するようにしてもよい。
さらに上述の実施の形態においては、ノードがコンピュートサーバ上2上で稼動する仮想マシン又は仮想マシンが実行する1つのプロセスである場合について述べたが、本発明はこれに限らず、ノードがコンテナであってもよく、さらにはコンピュートサーバ2自体がノード(コンピュートサーバ2がノードを構成)であってもよい。
さらに上述の実施の形態においては、1つのノードに1つの仮想ボリュームが割り当てられる場合について述べたが、本発明はこれに限らず、1つのノードに複数のノード(例えば、データボリューム及びジャーナルボリュームの2つのボリューム)が割り当てられる構成であっても本発明を適用することができる。
さらに上述の実施の形態においては、より高いノード区分のノード種別のノードに対してより高い記憶階層の仮想ボリュームを割り当てるようにした場合について述べたが、本発明はこれに限らず、例えば、Neo4jのように、より低いノード区分のノード種別のノードに対してより高い記憶階層の仮想ボリュームを割り当てるようにしてもよく、どのノード区分のノード種別のノードにどのような記憶階層の仮想ボリュームを割り当てるかについては、ノードが利用するミドルウェアの種別に応じて適宜決定すればよい。
さらに上述の実施の形態においては、図11のボリューム作成処理について上述したように、レプリケーショングループを構成する各ノードにそれぞれ割り当てる仮想ボリュームの配置先を、対応する記憶階層の空き容量が多いストレージノード3から選択するようにした場合について述べたが、本発明はこれに限らず、ストレージノード3のフォルトセットをも考慮して各ノードにそれぞれ割り当てる仮想ボリュームの配置先のストレージノード3を選択するようにしてもよい。
本発明は、レプリケーショングループをそれぞれ構成し、要求されるボリュームの応答性能がそれぞれ異なる複数種別のノードが稼動する情報処理システムに適用することができる。
1……情報処理システム、2……コンピュートサーバ、3……ストレージノード、4……コントローラノード、11,21,31……CPU、12,22,32……メモリ、13,23,33……記憶装置、40……ハイパバイザプログラム、41……仮想マシンテンプレート、44……ミドルウェアプログラム、51……Tier制御プログラム、52……ボリューム管理テーブル、60……ミドルウェアデプロイプログラム、61……ボリューム作成プログラム、62……障害検知プログラム、63……構成変更プログラム、64……ドライブ判定テーブル、65……ストレージ容量管理テーブル、66……コンピュートサーバ管理テーブル、67……レプリケーション管理テーブル。
Claims (12)
- データのリード及び又はライト処理を実行する複数のノードが稼動する情報処理システムにおいて、
前記ノードを構成し、又は1若しくは複数の前記ノードが稼動するコンピュートサーバと、
応答性能が異なる複数のドライブ種別の記憶装置がそれぞれ搭載され、いずれかのドライブ種別の前記記憶装置が記憶領域を提供するボリュームが作成されるストレージノードと、
前記コンピュートサーバ及び前記ストレージノードを制御するコントローラノードと
を備え、
前記ノードは、
1又は複数の他の前記ノードと共にレプリケーションを実行するレプリケーショングループをそれぞれ構成し、
前記ストレージノードは、
搭載された各前記記憶装置を、当該記憶装置の前記ドライブ種別に応じて複数の記憶階層に分けて管理し、
前記コントローラノードは、
各前記ノードに対して、当該ノードが利用するミドルウェアの種別及び前記レプリケーショングループにおける当該ノードのノード種別に応じた記憶階層の前記記憶装置が記憶領域を提供する前記ボリュームをそれぞれ割り当てる
ことを特徴とする情報処理システム。 - 前記コントローラノードは、
各前記ストレージノードの前記記憶階層ごとの空き容量をそれぞれ管理し、
必要な前記ノードに対して、対応する前記記憶階層の空き容量が最も多い前記ストレージノードから前記ボリュームを割り当てる
ことを特徴とする請求項1に記載の情報処理システム。 - 前記コントローラノードは、
前記ノードを構成するコンピュートサーバの障害を検出したときに、当該ノード以外の他の前記ノードに対して、前記障害が発生した前記ノードに割り当てられていた前記ボリュームを割り当てて起動する
ことを特徴とする請求項1に記載の情報処理システム。 - 前記コントローラノードは、
前記レプリケーショングループにおけるノード種別がレプリケート元である前記ノードを構成するコンピュートサーバ又は当該ノードが存在する前記コンピュートサーバの障害を検出した場合であって、当該ノードに代えて当該レプリケーショングループを構成する他の前記ノードが前記レプリケート元に昇格したときには、当該レプリケーショングループを構成する他の前記ノード以外のノードに対して当該障害が発生する前の前記レプリケート元のノードに割り当てられていた前記ボリュームを割り当て、当該ボリュームを割り当てた前記ノードを当該レプリケーショングループにおけるレプリケート先として起動した後に、起動した当該ノードのノード種別を当該レプリケーショングループにおける前記レプリケート元に切り替える
ことを特徴とする請求項3に記載の情報処理システム。 - 前記コントローラノードは、
前記レプリケーショングループにおけるノード種別がレプリケート元である前記ノードに割り当てられた前記ボリュームが存在する前記ストレージノードの障害を検出した場合であって、当該ノードに代えて当該レプリケーショングループを構成する他の前記ノードがレプリケート元に昇格したときには、前記レプリケート元に昇格した前記ノードに割り当てられている前記ボリュームに記憶領域を提供する前記記憶装置の前記記憶階層が、当該レプリケーショングループにおける前記レプリケート元の前記ノードに割り当てるべき前記記憶階層であるか否かを判定し、否定結果を得た場合には、前記レプリケート元に昇格した前記ノードに割り当てられている前記ボリュームに格納されたデータを、当該レプリケーショングループにおける前記レプリケート元の前記ノードに割り当てるべき前記記憶階層の前記記憶装置が提供する記憶領域に移動させる
ことを特徴とする請求項1に記載の情報処理システム。 - 前記コントローラノードは、
同一の前記レプリケーショングループを構成する各前記ノードに対して、互いに異なるフォルトセットにそれぞれ属する前記ストレージノード内に作成された前記ボリュームを割り当てる
ことを特徴とする請求項2に記載の情報処理システム。 - データのリード及び又はライト処理を実行する複数のノードが稼動する情報処理システムにおいて実行されるボリューム割当て方法において、
前記情報処理システムは、
前記ノードを構成し、又は1若しくは複数の前記ノードが稼動するコンピュートサーバと、
応答性能が異なる複数のドライブ種別の記憶装置がそれぞれ搭載され、いずれかのドライブ種別の前記記憶装置が記憶領域を提供するボリュームが作成されるストレージノードと、
前記コンピュートサーバ及び前記ストレージノードを制御するコントローラノードと
を有し、
前記ノードは、
1又は複数の他の前記ノードと共にレプリケーションを実行するレプリケーショングループをそれぞれ構成し、
前記ストレージノードが、搭載された各前記記憶装置を、当該記憶装置の前記ドライブ種別に応じて複数の記憶階層に分けて管理する第1のステップと、
前記コントローラノードが、各前記ノードに対して、当該ノードが利用するミドルウェアの種別及び前記レプリケーショングループにおける当該ノードのノード種別に応じた記憶階層の前記記憶装置が記憶領域を提供する前記ボリュームをそれぞれ割り当てる第2のステップと
を備えることを特徴とするボリューム割当て方法。 - 前記第1のステップにおいて、前記コントローラノードは、
各前記ストレージノードの前記記憶階層ごとの空き容量をそれぞれ管理し、
前記第2のステップにおいて、前記コントローラノードは、
必要な前記ノードに対して、対応する前記記憶階層の空き容量が最も多い前記ストレージノードから前記ボリュームを割り当てる
ことを特徴とする請求項7に記載のボリューム割当て方法。 - 前記コントローラノードが、前記ノードを構成するコンピュートサーバの障害を検出したときに、当該ノード以外の他の前記ノードに対して、前記障害が発生した前記ノードに割り当てられていた前記ボリュームを割り当てて起動する第3のステップ
を備えることを特徴とする請求項7に記載のボリューム割当て方法。 - 前記第3のステップにおいて、前記コントローラは、
前記レプリケーショングループにおけるノード種別がレプリケート元である前記ノードを構成するコンピュートサーバ又は当該ノードが存在する前記コンピュートサーバの障害を検出した場合であって、当該ノードに代えて当該レプリケーショングループを構成する他の前記ノードが前記レプリケート元に昇格したときに、当該レプリケーショングループを構成する他の前記ノード以外のノードに対して当該障害が発生する前の前記レプリケート元のノードに割り当てられていた前記ボリュームを割り当て、当該ボリュームを割り当てた前記ノードを当該レプリケーショングループにおけるレプリケート先として起動した後に、起動した当該ノードのノード種別を当該レプリケーショングループにおける前記レプリケート元に切り替える
を備えることを特徴とする請求項9に記載のボリューム割当て方法。 - 前記コントローラノードが、前記レプリケーショングループにおけるノード種別がレプリケート元である前記ノードに割り当てられた前記ボリュームが存在する前記ストレージノードの障害を検出した場合であって、当該ノードに代えて当該レプリケーショングループを構成する他の前記ノードがレプリケート元に昇格したときには、前記レプリケート元に昇格した前記ノードに割り当てられている前記ボリュームに記憶領域を提供する前記記憶装置の前記記憶階層が、当該レプリケーショングループにおける前記レプリケート元の前記ノードに割り当てるべき前記記憶階層であるか否かを判定し、否定結果を得た場合には、前記レプリケート元に昇格した前記ノードに割り当てられている前記ボリュームに格納されたデータを、当該レプリケーショングループにおける前記レプリケート元の前記ノードに割り当てるべき前記記憶階層の前記記憶装置が提供する記憶領域に移動させる第3のステップを備える
ことを特徴とする請求項7に記載のボリューム割当て方法。 - 記第2のステップにおいて、前記コントローラノードは、
同一の前記レプリケーショングループを構成する各前記ノードに対して、互いに異なるフォルトセットにそれぞれ属する前記ストレージノード内に作成された前記ボリュームを割り当てる
ことを特徴とする請求項8に記載のボリューム割当て方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018084296A JP2019191951A (ja) | 2018-04-25 | 2018-04-25 | 情報処理システム及びボリューム割当て方法 |
US16/299,242 US11199972B2 (en) | 2018-04-25 | 2019-03-12 | Information processing system and volume allocation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018084296A JP2019191951A (ja) | 2018-04-25 | 2018-04-25 | 情報処理システム及びボリューム割当て方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019191951A true JP2019191951A (ja) | 2019-10-31 |
Family
ID=68291168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018084296A Pending JP2019191951A (ja) | 2018-04-25 | 2018-04-25 | 情報処理システム及びボリューム割当て方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11199972B2 (ja) |
JP (1) | JP2019191951A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022072408A (ja) * | 2020-10-29 | 2022-05-17 | 株式会社日立製作所 | ストレージシステム及びストレージシステムのファイル再配置方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11169719B2 (en) * | 2019-08-01 | 2021-11-09 | EMC IP Holding Company, LLC | System and method for deploying multi-node virtual storage appliances |
US11163485B2 (en) * | 2019-08-15 | 2021-11-02 | International Business Machines Corporation | Intelligently choosing transport channels across protocols by drive type |
US20220318042A1 (en) * | 2021-04-01 | 2022-10-06 | RAMScaler, Inc. | Distributed memory block device storage |
US11579780B1 (en) * | 2021-08-27 | 2023-02-14 | Hitachi, Ltd. | Volume remote copy based on application priority |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2524433B (en) * | 2013-01-25 | 2020-11-25 | Hitachi Ltd | Storage system and data management method |
US9361336B2 (en) * | 2013-10-11 | 2016-06-07 | Vmware, Inc. | Methods and apparatus to manage virtual machines |
US11113312B2 (en) * | 2017-06-29 | 2021-09-07 | Microsoft Technology Licensing, Llc | Reliable hierarchical storage management with data synchronization |
US10621059B2 (en) * | 2017-12-19 | 2020-04-14 | International Business Machines Corporation | Site recovery solution in a multi-tier storage environment |
US10834190B2 (en) * | 2018-01-18 | 2020-11-10 | Portworx, Inc. | Provisioning of clustered containerized applications |
-
2018
- 2018-04-25 JP JP2018084296A patent/JP2019191951A/ja active Pending
-
2019
- 2019-03-12 US US16/299,242 patent/US11199972B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022072408A (ja) * | 2020-10-29 | 2022-05-17 | 株式会社日立製作所 | ストレージシステム及びストレージシステムのファイル再配置方法 |
JP7219746B2 (ja) | 2020-10-29 | 2023-02-08 | 株式会社日立製作所 | ストレージシステム及びストレージシステムのファイル再配置方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190332275A1 (en) | 2019-10-31 |
US11199972B2 (en) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857445B (zh) | 存储系统和控制软件配置方法 | |
US10838829B2 (en) | Method and apparatus for loading data from a mirror server and a non-transitory computer readable storage medium | |
JP2019191951A (ja) | 情報処理システム及びボリューム割当て方法 | |
JP5600361B2 (ja) | ハイパーバイザベースのサーバ二重化システム、その方法およびサーバ二重化コンピュータプログラムが記録された記録媒体 | |
US11544226B2 (en) | Metadata control in a load-balanced distributed storage system | |
US7966470B2 (en) | Apparatus and method for managing logical volume in distributed storage systems | |
JP6734251B2 (ja) | システム及びその制御方法並びにプログラム | |
US10909072B2 (en) | Key value store snapshot in a distributed memory object architecture | |
US8954706B2 (en) | Storage apparatus, computer system, and control method for storage apparatus | |
US8849966B2 (en) | Server image capacity optimization | |
US9854037B2 (en) | Identifying workload and sizing of buffers for the purpose of volume replication | |
WO2015029133A1 (ja) | ストレージシステム及びストレージシステム管理方法 | |
JP5444104B2 (ja) | 記憶手段の管理方法、仮想計算機システムおよびプログラム | |
US7849264B2 (en) | Storage area management method for a storage system | |
CN112181736A (zh) | 分布式存储系统及分布式存储系统的配置方法 | |
JP2014044553A (ja) | プログラム、情報処理装置および情報処理システム | |
JP2007041888A (ja) | データベース再構成装置、およびデータベース再構成プログラム | |
JP6961045B2 (ja) | システム及びその制御方法並びにプログラム | |
WO2016174739A1 (ja) | 複合計算機システム、管理計算機、およびデータ連携管理方法 | |
KR101654969B1 (ko) | 가상화 클러스터 환경에서 네임 노드를 할당하는 방법 및 장치 | |
JP7057408B2 (ja) | 記憶システム及びその制御方法 | |
CN113312139B (zh) | 信息处理系统和方法 | |
US11609711B2 (en) | Distributed control path | |
WO2020024589A1 (en) | Key value store snapshot in a distributed memory object architecture | |
JP2023094302A (ja) | 情報処理システム及び構成管理方法 |