JP2020021235A - ストレージ管理装置、ストレージシステムおよびプログラム - Google Patents

ストレージ管理装置、ストレージシステムおよびプログラム Download PDF

Info

Publication number
JP2020021235A
JP2020021235A JP2018143800A JP2018143800A JP2020021235A JP 2020021235 A JP2020021235 A JP 2020021235A JP 2018143800 A JP2018143800 A JP 2018143800A JP 2018143800 A JP2018143800 A JP 2018143800A JP 2020021235 A JP2020021235 A JP 2020021235A
Authority
JP
Japan
Prior art keywords
nodes
node
meta
sharing
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.)
Granted
Application number
JP2018143800A
Other languages
English (en)
Other versions
JP7111964B2 (ja
Inventor
安仁 菊地
Yasuhito Kikuchi
安仁 菊地
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018143800A priority Critical patent/JP7111964B2/ja
Publication of JP2020021235A publication Critical patent/JP2020021235A/ja
Application granted granted Critical
Publication of JP7111964B2 publication Critical patent/JP7111964B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】負荷集中の抑制を図る。【解決手段】ストレージ管理装置1は、制御部1aと記憶部1bを含む。制御部1aは、ストレージに対するデータのI/O処理を行う複数のノードに接続して、複数のノードn1、・・・、n4の負荷状況の監視を行う。また、制御部1aは、グループ化されている複数のノード(n1、・・・、n4)の負荷状況の監視を行い、データの入出力処理を行ったノードがそれぞれ保持するデータのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、データのメタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、負荷状況にもとづいて遷移させる。記憶部1bは、I/Oのデータ、メタ情報、メタ情報を共有しているノードの組合せを登録したメタ共有情報および運用管理に関する制御情報等を格納する。【選択図】図1

Description

本発明は、ストレージ管理装置、ストレージシステムおよびプログラムに関する。
ストレージシステムは、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の記憶装置と、記憶装置を制御するためのサーバとを有して、情報処理で扱う大量のデータを記録管理する。また、サーバは、2台以上のノードを含む装置で冗長構成が組まれている。
システム性能を向上させる場合、近年では、ハードウェアを高性能にするスケールアップよりも、ハードウェアの数を増やして処理能力を上げるスケールアウトが主流になっている。このため、スケールアウトによるシステム拡張化に伴い、システムの冗長構成も増加している。
多ノード構成のストレージシステムにおいて、負荷の偏りがノードに発生した場合、他ノードへの負荷分散を行って、システム運用を継続する技術が提案されている。
特表2004−537126号公報 特開2010−267156号公報
特定ノードに対して、ホストからのI/O(入出力)処理のアクセス集中を防ぐためには、各ノードへのI/Oの負荷分散処理が行われる。
しかし、ノードは、通常、自身が処理を担当するLBA(Logical Block Addressing:論理ブロックアドレス)に関係したメタ情報しか持たない。このため、特定ノードが処理するはずであったI/Oを他ノードが受け取った場合、他ノードが特定ノードのメタ情報を持っていなければ、アドレス変換等の処理ができず、記憶装置へのデータ転送を実行することができない。
負荷分散処理時におけるこのような状況を改善するため、メタ情報を効率よく各ノードへ共有化させて負荷集中を抑制する技術が望まれている。
1つの側面では、本発明は、メタ情報の共有化を効率よく行って負荷集中の抑制を図ったストレージ管理装置、ストレージシステムおよびプログラムを提供することを目的とする。
上記課題を解決するために、ストレージに対するデータの入出力処理を行う複数のノードを制御するストレージ管理装置が提供される。ストレージ管理装置は、グループ化されている複数のノードの負荷状況の監視を行い、データの入出力処理を行ったノードがそれぞれ保持するデータのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、データのメタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、負荷状況にもとづいて遷移させる制御部を有する。
また、上記課題を解決するために、上記ストレージ管理装置と同様の制御を行うストレージシステムが提供される。
さらに、上記課題を解決するために、コンピュータに上記ストレージ管理装置と同様の制御を実行させるプログラムが提供される。
1側面によれば、負荷集中の抑制を図ることが可能になる。
ストレージ管理装置の構成の一例を示す図である。 ストレージシステムの構成の一例を示す図である。 負荷集中が発生する状態の一例を示す図である。 ノードのハードウェア構成の一例を示す図である。 ノードの機能ブロックの一例を示す図である。 ボリュームを分割したブロック構造の一例を示す図である。 ノード故障時に再計算されたブロック構造の一例を示す図である。 キャッシュメモリの保持データの2重化の一例を示す図である。 メタテーブルの構成の一例を示す図である。 メタテーブルの共有制限の一例を示す図である。 メタテーブルの共有制限の一例を示す図である。 管理ノードを含むストレージシステムの構成の一例を示す図である。 過負荷ノードがない場合のメタテーブルの共有状態の一例を示す図である。 過負荷ノードが発生した場合のメタテーブルの共有状態の一例を示す図である。 メタ共有テーブルの構成の一例を示す図である。 ノード故障が発生したシステム構成の一例を示す図である。 キャッシュデータの2重化の一例を示す図である。 復旧時の動作の流れの一例を示す図である。 復旧時の動作の流れの一例を示す図である。 復旧時の動作の流れの一例を示す図である。 メタテーブルの共有解除が行われた構成の一例を示す図である。 メタテーブルの共有解除が行われた構成の一例を示す図である。 メタ共有テーブルの更新の一例を示す図である。 管理ノードの全体動作を示すフローチャートである。 メタ共有テーブルの更新動作を示すフローチャートである。 論理担当ノードの判断処理を示すフローチャートである。 キャッシュ制御の動作を示すフローチャートである。 アドレス変換処理を含む制御動作を示すフローチャートである。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態について図1を用いて説明する。図1はストレージ管理装置の構成の一例を示す図である。ストレージ管理装置1は、制御部1aと記憶部1bを含む。制御部1aは、ストレージに対するデータのI/O処理を行う複数のノードに接続して、複数のノードn1、・・・、n4の負荷状況の監視を行う。
また、制御部1aは、データの入出力処理を行ったノードがそれぞれ保持するデータのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、データのメタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、監視結果にもとづいて遷移させる。なお、メタ情報とは、データに関するプロパティ情報である(具体例については後述)。
記憶部1bは、I/O関連のデータ、メタ情報、および運用管理に関する制御情報等を格納する。また、記憶部1bは、メタ情報を共有しているノードの組合せを登録した後述のメタ共有情報を記憶する。
図1に示す例を用いて動作について説明する。ストレージシステム1−1は、サーバsv1、sv2と、ストレージ20a、20bを備える(図中のステップS2、S3ではストレージ20a、20bの図示は省略している)。
サーバsv1はストレージ20aに接続され、サーバsv2はストレージ20bに接続され、サーバsv1、sv2は互いに接続される。サーバsv1は、一対のノードn1、n2を有し、サーバsv2は、一対のノードn3、n4を有する。ノードn1、n2は互いに接続され、ノードn3、n4は互いに接続される。
ノードn1、・・・、n4は、データのメタ情報にもとづいてストレージ20a、20bに対するデータのI/O処理を行う。なお、システムの運用中、ノードn1、・・・、n4のうちのいずれかのノードが管理ノードになって、ストレージ管理装置1の機能を実行する。
ここでは、ノードn1がストレージ管理装置1に相当し、制御部1aの動作を行うとする。また、グループ化としては、同じサーバ内でペアとなるノード同士を1つのグループとする。
〔ステップS1〕システムの初期運用時、ノードn1は、自身がI/O処理を担当するLBAに関するメタ情報m1を有し、ノードn2は、自身がI/O処理を担当するLBAに関するメタ情報m2を有する。また、ノードn3は、自身がI/O処理を担当するLBAに関するメタ情報m3を有し、ノードn4は、自身がI/O処理を担当するLBAに関するメタ情報m4を有する。これらのメタ情報は、各ノードの記憶部1bに保持される。
〔ステップS2〕ノードn1内の制御部1aは、ノードn1、・・・、n4の負荷状況の監視を行う。システム運用における1回目の負荷状況の監視では、ノードn1、・・・、n4のいずれの負荷も閾値より低い状態にある。
この場合、制御部1aは、同一グループ内のノード間で、すなわちこの例では同一サーバ内のペアとなるノード間で、メタ情報を共有するように各ノードに指示を出す。該指示を受信したノードは、同一サーバ内でメタ情報の共有化を行う(第1の共有状態)。
具体的には、ノードn1はメタ情報m1をノードn2へコピーし、ノードn2はメタ情報m2をノードn1へコピーする。したがって、サーバsv1内のノードn1、n2間でメタ情報m1、m2が共有される。
また、ノードn3はメタ情報m3をノードn4へコピーし、ノードn4はメタ情報m4をノードn3へコピーする。したがって、サーバsv2内のノードn3、n4間でメタ情報m3、m4が共有される。
〔ステップS3〕制御部1aは、負荷状況の監視を行い、監視の結果、負荷が閾値より高くなるノードを検出したとする。例えば、ノードn2の負荷が閾値より高く、ノードn2が高負荷状態になったことを検出したとする。
この場合、制御部1aは、メタ情報を異なるグループに跨ったノード間で、すなわちこの例ではサーバsv1、sv2に跨ったノード間で、メタ情報を共有するように各ノードに指示を出す。該指示を受信したノードは、異なるサーバに跨ってメタ情報の共有化を行う(第2の共有状態)。
具体的に例えば、ノードn1がメタ情報m1、m2をノードn3へコピーし、ノードn3がメタ情報m1、m2をノードn4へコピーする。またノードn3がメタ情報m3、m4をノードn1へコピーし、ノードn1がメタ情報m3、m4をノードn2へコピーする。したがって、ノードn1、・・・、n4のそれぞれにおいて、メタ情報m1、・・・、m4が共有される。なお、メタ情報の共有化が行われた場合、どのノードとメタ情報を共有しているかを示す、後述のメタ共有情報が生成されて各ノードで管理される。
〔ステップS4〕制御部1aは、負荷状況の監視を行い、監視の結果、ノードn1、・・・、n4のいずれの負荷も閾値より低い状態になったことを検出したとする。この場合、同じサーバ内で対となるノード間でメタ情報を共有させるステップS2の状態に遷移させる。このように、負荷が下がって閾値より低くなれば、同一グループ内のノード間の共有化に戻る。
ここで、ステップS1の状態において、例えば、ノードn2が故障した場合、サーバsv1に生き残ったノードn1が、ノードn2へのアクセスを引き継ぐことが考えられる。しかし、ノードn1は、自分が処理を担当するメタ情報m1しか持たないため、故障したノードn2が処理するはずだったI/Oを受け取ってもストレージ20aへのデータ転送を行えない可能性がある。これに対し、ステップS2の状態では、ノードn1は、ノードn2のメタ情報m2を共有しているから、ノードn2が故障してもノードn2の処理を引き継ぐことが可能である。
したがって、通常運用時、ステップS2またはステップS3の状態に遷移した場合、負荷が低下することでステップS3からステップS2の状態へ遷移することはあっても、ステップS2またはステップS3からステップS1の状態へ遷移することはない。故障が復旧した場合でも、ストレージ管理装置1の機能が稼働してからは、ステップS2またはステップS3の状態で運用されることになる。
このように、通常運用時には、ステップS2またはステップS3のいずれかのメタ情報共有化によってシステムが運用されるので、ノード故障が発生しても、故障ノードと対となるノードが処理を引き継ぐことができる。
上記のように、ストレージ管理装置1は、ノードの負荷状況を監視し、データのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、データのメタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、負荷状況にもとづいて遷移させる。
これにより、ノードの負荷状況に応じたメタ情報の共有化が行われる。このため例えば、特定ノードが処理するI/Oを他ノードが受け取っても、他ノードは特定ノードのメタ情報をすでに有しているため、アドレス変換等の処理を行って担当記憶装置へのデータ転送を実行することができ、負荷集中の抑制を図ることが可能になる。
[第2の実施の形態]
次に第2の実施の形態について説明する。まず、システム構成について説明する。図2はストレージシステムの構成の一例を示す図である。ストレージシステム1−2は、サーバSv1、Sv2、DE(Disc Enclosure)20−1、20−2、スイッチ30、ホスト40および管理端末50を備える。
サーバSv1は、一対のノードN1、N2を含み、サーバSv2は、一対のノードN3、N4を含む。ノードN1、N2には、ホスト40、管理端末50およびDE20−1が接続され、ノードN3、N4には、ホスト40、管理端末50およびDE20−2が接続される。ノードN1、N2は互いに接続され、ノードN3、N4は互いに接続される。
スイッチ30は、例えば、InfiniBandスイッチであり、ノードN1、・・・、N4はスイッチ30に接続され、スイッチ30を介してノードの拡張化が可能なスケールアウトの接続構成になる。ストレージシステム1−2のスケールアウトでは、例えば、サーバ単位での増設が行われる。
また、同じサーバ内のノードは、サーバ内部で接続され、サーバを跨ぐノード間も接続しあい、他のノードと自由にアクセスできるようになっている。なお、データを保存するストレージ(記憶装置)に対して、該ストレージに接続しているサーバ内のノードからアクセスができ、接続していないサーバ内のノードからはアクセスは不可になっているとする。
ノードN1は、プロセッサ11−1、メモリ12−1、IF(インタフェース)部13−1、14−1およびドライバ15−1を含み、ノードN2は、プロセッサ11−2、メモリ12−2、IF部13−2、14−2およびドライバ15−2を含む。
ノードN3は、プロセッサ11−3、メモリ12−3、IF部13−3、14−3およびドライバ15−3を含み、ノードN4は、プロセッサ11−4、メモリ12−4、IF部13−4、14−4およびドライバ15−4を含む。
DE20−1は、IOM(Input Output Module:中継モジュール)2a1、2a2および記憶装置21a1、・・・21anを含み、DE20−2は、IOM2b1、2b2および記憶装置21b1、・・・21bnを含む。
ノードN1、N2は、ホスト40からのデータ読み出し(Read IO)およびデータ書き込み(Write IO)の要求にもとづいて、記憶装置21a1、・・・、21anに対してI/O制御を行う。同様に、ノードN3、N4は、ホスト40からの要求にもとづいて、記憶装置21b1、・・・、21bnに対してI/O制御を行う。
なお、プロセッサ11−1、・・・、11−4は、図1に示した制御部1aの機能を実現でき、メモリ12−1、・・・、12−4は、図1に示した記憶部1bの機能を実現できる。
ここで、ノードN1、N2およびDE20−1の構成要素において、プロセッサ11−1、11−2と、ホスト40および管理端末50とは、IF部13−1、13−2を介して接続される。IF部13−1、13−2は、拡張カードであり例えば、EC−H(Expansion Card for Host)が使用される。
プロセッサ11−1は、例えば、CPU(Central Processing Unit)またはMPU(Micro Processing Unit)等であって、マルチプロセッサ構成をとり、ノードN1内の機能全体を制御する。プロセッサ11−2も同様な構成であり、ノードN2内の機能全体を制御する。
メモリ12−1は、ノードN1のメインメモリとして利用され、プロセッサ11−1に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。メモリ12−2も同様にしてノードN2のメインメモリとして利用される。
ドライバ15−1は、IOM2a1を介して、プロセッサ11−1と、記憶装置21a1、・・・21anとの間でデータ転送を行う。ドライバ15−2は、IOM2a2を介して、プロセッサ11−2と、記憶装置21a1、・・・21anとの間でデータ転送を行う。
ドライバ15−1、15−2は、例えば、PCIe(Peripheral Component Interconnect Express)プロトコルにしたがって、データをドライブ転送するPCIeSW(Switch)が使用される。IF部14−1、14−2は、拡張カードであってスイッチ30に接続してノード間のインタフェース制御を行う。
記憶装置21a1、・・・、21anは、例えば、HDDやSSDであり、ディスクアレイ化されている。記憶装置21a1、・・・、21anは、IOM2a1、2a2を介して、ノードN1のドライバ15−1と、ノードN2のドライバ15−2との双方に接続して、ノードN1、N2間で共有される。
また、記憶装置21a1、・・・、21anは、プールによって管理される。プールとは、記憶装置の仮想的な集合体である。スケールアウト型のシステムでは、複数のサーバに搭載された記憶装置をプールにまとめて、サーバ間に跨ってRAID(Redundant Array of Inexpensive Disks)を構築してボリュームの切り出しを行う。ノードN3、N4およびDE20−2の構成要素についても同様であり説明は省略する。
次に負荷集中が発生する状態および課題について説明する。図3は負荷集中が発生する状態の一例を示す図である。ストレージシステム2は、ホスト40およびサーバ61、62を備える。また、サーバ61はノード6a1、6a2を備え、サーバ62はノード6a3、6a4を備える。ホスト40は、マルチパスドライバ41を有する。ホスト40は、マルチパスドライバ41を介して、ノード6a1、・・・、6a4に対し、業務アプリケーション4aのI/O処理の要求を行う。
ここで、ノード6a2に故障が発生し、ノード6a2によるI/O処理の実行が不可になったとする。キャッシュデータや、メタデータ(メタテーブル)の情報は、同一サーバ上で2重化されているが、ノード6a2に故障が発生するとそれらの情報が再構築されることはない。このため、サーバ61に生き残ったノード6a1に対して、ノード6a2へのアクセスがすべて引き継がれ、ノード故障によって負荷の偏り(負荷集中)が発生してしまう。
負荷の集中を防ぐには、ホスト40からのI/Oを1つのノード6a1に集中させずに、他の生存ノード6a3、6a4にも分散させることが考えられる。しかし、各ノードは自分が処理を担当するLBAに関係したメタテーブルしか持たないため、故障したノード6a2が処理するはずだったI/Oを他ノード(ノード6a3、6a4)が受け取っても、論理アドレスから物理アドレスへのアドレス変換ができず、実記憶装置へのデータ転送ができない。
また、スケールアウト型のストレージシステムでは、ノード増設が行われるため、全ノードで単純にメタテーブルを共有するシステム構成にすると、スケールアウトの最大増設時のメタテーブルを確保しておく領域が大幅に増大してしまう。
例えば、最大で128ノードまでノード数が増えるとする。この場合、2ノードで共有していたメタテーブルが最大増設時の64倍の容量のメタテーブルの領域として確保しておかなければならず、メタテーブルが格納される記憶領域が圧迫してしまう。
さらに64倍に増えたメタデータを共有するために通信トラフィックが増大し、ホストからのI/Oに悪影響を与える可能性もある。本発明はこのような点に鑑みてなされたものであり、メタ情報の共有化を効率よく行って負荷集中の抑制を図るものである。
<ハードウェア>
以降、第2の実施の形態について詳しく説明する。図4はノードのハードウェア構成の一例を示す図である。ノード10は、図2に示したノードN1、・・・、N4のいずれかに該当し、プロセッサ(コンピュータ)100によって装置全体が制御されている。すなわち、プロセッサ100は、ノード10の制御部として機能する。
プロセッサ100には、バス103を介して、メモリ101および複数の周辺機器が接続されている。プロセッサ100は、マルチプロセッサであってもよい。プロセッサ100は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ100は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
メモリ101は、ノード10の主記憶装置として使用される。メモリ101には、プロセッサ100に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ101には、プロセッサ100による処理に要する各種データが格納される。例えば、メタテーブル(メタ情報)の構造を有するデータ等が格納される。
また、メモリ101は、ノード10の補助記憶装置としても使用され、OSのプログラム、アプリケーションプログラム、および各種データが格納される。メモリ101は、補助記憶装置として、フラッシュメモリやSSD等の半導体記憶装置やHDD等の磁気記録媒体を含んでもよい。
バス103に接続されている周辺機器としては、入出力インタフェース102、ネットワークインタフェース104およびストレージインタフェース105がある。入出力インタフェース102は、プロセッサ100からの命令にしたがってノード10の状態を表示する表示装置として機能するモニタ(例えば、LED(Light Emitting Diode)やLCD(Liquid Crystal Display)等)が接続されている。
また、入出力インタフェース102は、キーボードやマウス等の情報入力装置を接続可能であって、情報入力装置から送られてくる信号をプロセッサ100に送信する。
さらにまた、入出力インタフェース102は、周辺機器を接続するための通信インタフェースとしても機能する。例えば、入出力インタフェース102は、レーザ光等を利用して、光ディスクに記録されたデータの読み取りを行う光学ドライブ装置を接続することができる。光ディスクには、Blu−rayDisc(登録商標)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(Rewritable)等がある。
また、入出力インタフェース102は、メモリ装置やメモリリーダライタを接続することができる。メモリ装置は、入出力インタフェース102との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しを行う装置である。メモリカードは、カード型の記録媒体である。
ネットワークインタフェース104は、ホスト40、管理端末50およびスイッチ30とのインタフェース制御を行う。また、ネットワークインタフェース104は、外部ネットワークとのインタフェース制御を有し、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等が使用できる。ネットワークインタフェース104で受信されたデータは、メモリ101やプロセッサ100に出力される。ストレージインタフェース105は、DE20−1、20−2とのインタフェース制御を行う。
以上のようなハードウェア構成によって、ノード10の処理機能を実現することができる。例えば、ノード10は、プロセッサ100がそれぞれ所定のプログラムを実行することで本発明の制御を行うことができる。
ノード10は、例えば、コンピュータで読み取り可能な記録媒体に記録されたプログラムを実行することにより、本発明の処理機能を実現する。ノード10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。
例えば、ノード10に実行させるプログラムを補助記憶装置に格納しておくことができる。プロセッサ100は、補助記憶装置内のプログラムの少なくとも一部を主記憶装置にロードし、プログラムを実行する。
また、光ディスク、メモリ装置、メモリカード等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、プロセッサ100からの制御により、補助記憶装置にインストールされた後、実行可能となる。またプロセッサ100が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
<機能ブロック>
図5はノードの機能ブロックの一例を示す図である。ノード10は、制御部11、記憶部12、ディスクアクセス部13およびインタフェース部14を備える。制御部11は、I/O受付部11a、論理担当ノード判断部11b、キャッシュ制御部11c、アドレス変換部11dおよびシステム管理部11eを含む。
I/O受付部11aは、ホスト40によるI/O(ホストI/O)の受付処理を行う。論理担当ノード判断部11bは、受付されたホストI/Oの処理を担当して論理アドレスを物理アドレスに変換するノードである論理担当ノードを決定する。
キャッシュ制御部11cは、ホストI/Oに関連するデータ(以下、ホストI/Oデータと呼ぶ場合がある)を記憶部12に保存する、またメタテーブルを共有しているノードに対してホストI/Oデータを転送する制御等を行う。
アドレス変換部11dは、メタテーブルを参照して、ホストI/Oデータの論理アドレスを物理アドレスに変換する。システム管理部11eは、通信制御を行い、またノード10が管理ノードになった場合には、ノードの故障判定、他ノードの性能情報の取得等を行う。さらに、システム管理部11eは、性能情報にもとづいて、メタテーブルの共有化の指示およびメタ共有テーブル(メタ共有情報)の生成の制御等を行う。
ディスクアクセス部13は、物理アドレスにもとづいて、ストレージ20内の該当記憶装置にアクセスする(以降では記憶装置をディスクと呼ぶ場合がある)。インタフェース部14は、システム管理部11eで生成された各種命令の他ノードへの転送インタフェース、および他ノードから送信された情報の受信インタフェースの制御を行う。
記憶部12は、例えば、キャッシュメモリに該当する。記憶部12は、ホストI/Oデータを格納し、またメタテーブルM0(メタ情報)の構造を有するデータ、メタ共有テーブルMc0の構造を有するデータを格納する。メタテーブルM0およびメタ共有テーブルMc0については図9、図15で後述する。
なお、制御部11は、図4のプロセッサ100によって実現され、記憶部12は、図4のメモリ101によって実現される。また、ディスクアクセス部13は、図4のストレージインタフェース105で実現され、インタフェース部14は、図4のネットワークインタフェース104で実現される。
<I/O負荷分散および論理担当ノードの決定>
図6はボリュームを分割したブロック構造の一例を示す図である。制御部11は、プールから切り出したボリュームV0、・・・、V3に対して、ボリューム毎に所定サイズのブロックに分割し、該ブロックを各ノード(例えば、ノードN0、・・・、N3)に割り当ててI/Oを分散して処理する。
例えば、ボリュームV0に対してホストからI/Oアクセスが行われた場合、アクセスされたボリュームV0は、実際はノードN0のディスクであったり、ノードN1のディスクであったりして、異なるノードのディスクに対するアクセスとなる。このような分散処理によってノードN0、・・・、N3毎の負荷が平準化される。
ここで、ホストがI/Oを受け付けるノードを決定すると、I/Oを受け付けたノードは、LBAから論理アドレス/物理アドレスの変換処理を行う論理担当ノードになって、論理担当ノードにホストI/Oデータが受け渡される。
なお、制御部11は、仮想ボリュームのLBAに対して以下の式(1)によって均等に担当ノード番号を算出することで、論理担当ノードを決定する。
担当ノード番号=((LBA)÷(分割ブロックサイズ)+(ボリューム番号))/(構成ノード数)・・・(1)
図7はノード故障時に再計算されたブロック構造の一例を示す図である。図7の例ではノードN2が故障したときのブロック構造を示しており、ノードN2以外のノードN0、N1、N3でボリュームが分割されている。
制御部11は、ノード故障の発生時に担当ノード番号の再計算を行い、故障したノードが担当していたLBAの処理を他ノードに移し替えて負荷の分散を行う。故障が発生したノード以外の残されたノードでボリュームを分割することによって、ノード故障時の負荷分散が実現される。
<キャッシュメモリの保持データの2重化>
図8はキャッシュメモリの保持データの2重化の一例を示す図である。制御部11は、I/Oを一時的にキャッシュメモリに保持する。また、キャッシュメモリに保持されるデータ(以下、キャッシュデータ)の内容は、同じサーバ内のノードと2重化され、さらにサーバを跨って他サーバ内のノードと2重化される。
図8の例では、サーバSv1内のノードN1、N2でキャッシュデータが2重化され、サーバSv2内のノードN3、N4でキャッシュデータが2重化される。また、サーバSv1内のノードN1と、サーバSv2内のノードN3のキャッシュデータが2重化され、さらにサーバSv1内のノードN1と、サーバSv2内のノードN4のキャッシュデータが2重化される。
また、サーバSv1内のノードN2と、サーバSv2内のノードN3のキャッシュデータが2重化され、さらにサーバSv1内のノードN2と、サーバSv2内のノードN4のキャッシュデータが2重化される。
このように、キャッシュデータについては、同一サーバ内での2重化だけでなく、サーバを跨いだ2重化も行われる。この場合、例えば、ノードN1に故障が発生した後の命令については、残ったノードN2と他サーバのノード間でキャッシュデータの2重化が行われることにより、高速アクセスを維持することができる。
なお、ストレージシステム1−2では、ノード間は高速なスイッチ30で接続されているために、十分なデータ転送速度があり、サーバ内と同じようにキャッシュデータの転送が可能である。
<メタテーブル>
図9はメタテーブルの構成の一例を示す図である。制御部11は、キャッシュメモリ上のメタテーブルM0から、どのサーバのディスクにアクセスするかを判断し、判断したディスクにアクセス可能なノードにI/Oを受け渡す。
メタテーブルM0は、プロパティ情報として、仮想ボリューム番号、仮想LBA、実ディスクおよび実LBAを有する。実ディスクは、仮想ボリュームに対応する実際のディスクであり、実LBAは、仮想LBAに対応する実際のLBAである。
なお、メタテーブルM0は、ノードのメモリ容量節約のために、各ノードが担当するLBAの分だけがキャッシュメモリ上に保持されている。またメタテーブルM0は、制御部11によって、同一サーバ内でのノード間または異なるサーバに跨ってのノード間で共有される。このため例えば、ノード故障時にメタテーブルM0を再構築する処理が不要になる。
<メタテーブルの共有制限>
ストレージシステム1−2では、スケールアウト時、例えば、最大で128ノードまで増設が行われる。このようなノード増設が行われた場合、すべてのノードでメタテーブルを共有しているとキャッシュ容量の増大を招くため、メタテーブルの共有には制限を設けることにする。
制御部11は、ノードから取得した性能情報(例えば、CPU使用率)にもとづいてノードの負荷を認識し、メタテーブルを共有するノード台数を、ノードの負荷によって変動させる。故障したノードの負荷を他のノード何台分に分散させるかを計算することで、メタテーブルを共有するノードの制限台数を決定する。
例えば、制御部11は、他のノードへ負荷分散する場合、故障したノードに含まれる故障後のCPU使用率を、以下の式(2)で算出する。
(故障後のCPU使用率)=((故障前のCPU使用率)×(故障前のノード台数))/(故障後のノード台数)・・・(2)
そして、制御部11は、1台故障後のCPU使用率が100%を超えないような共有数を、以下の式(3)で算出する。
100%≧((CPU使用率)×(共有台数))/(共有台数−1)・・・(3)
具体例としては、平均負荷を表す平均CPU使用率が50%未満のとき、メタテーブルはノード2台で共有され、平均CPU使用率が75%未満のとき、メタテーブルはノード4台で共有される。
また、平均CPU使用率が80%未満のとき、メタテーブルはノード5台で共有され、平均CPU使用率が84%未満のとき、メタテーブルはノード6台で共有される。
さらに平均CPU使用率が88%未満のとき、メタテーブルはノード8台で共有され、平均CPU使用率が90%未満のとき、メタテーブルはノード10台で共有される。
上記の分け方よりも大きくノード制限台数を分けてもよい。例えば、平均CPU使用率が50%未満のとき、メタテーブルはノード2台で共有し、平均CPU使用率が75%未満のとき、メタテーブルはノード4台で共有し、平均CPU使用率が90%未満のとき、メタテーブルはノード10台で共有する等としてもよい。
なお、これらの平均CPU使用率とノード制限台数の対応関係は正常運用時に予め設定しておくので、ノード故障が発生した場合には、即時に対応できる構成になっている。また、平均CPU使用率が90%以上の場合は、過負荷の状態であるため、10台を超えてのノード制限台数は設定しない(例えば、平均CPU使用率が95%になってもノード制限台数は10とする)。
図10、図11はメタテーブルの共有制限の一例を示す図である。メタテーブルを共有する際の平均CPU使用率とノード制限台数との対応関係の例を示している。
〔状態St1〕ストレージシステム1−2−1は、ノードN1、・・・、N8を備える。ストレージシステム1−2−1の全ノードの平均CPU使用率が40%のとき、メタテーブルがノード2台で共有される。
したがって、ノードN1、N2でメタテーブルを共有し、ノードN3、N4でメタテーブルを共有し、ノードN5、N6でメタテーブルを共有し、ノードN7、N8でメタテーブルを共有する。
〔状態St2〕ストレージシステム1−2−1の全ノードの平均CPU使用率が80%のとき、メタテーブルがノード4台で共有される。したがって、ノードN1、N2、N3、N4でメタテーブルを共有し、ノードN5、N6、N7、N8でメタテーブルを共有する。
〔状態St3〕ストレージシステム1−2−1の全ノードの平均CPU使用率が90%のとき、メタテーブルがノード8台で共有される。したがって、ノードN1、・・・、N8でメタテーブルを共有する。
〔状態St4〕ストレージシステム1−2−2は、状態St3から2台のノードが増設されたものであり、ノードN1、・・・、N10を備えている。ストレージシステム1−2−2の全ノードの平均CPU使用率が84%のとき、メタテーブルがノード5台で共有される。したがって、ノードN1、・・・、N5でメタテーブルを共有し、ノードN6、・・・、N10でメタテーブルを共有する。
〔状態St5〕ストレージシステム1−2−3は、状態St4から、128台までノードが増設されたものであり、ノードN1、・・・、N128を備えている。ストレージシステム1−2−3の全ノードの平均CPU使用率が60%のとき、メタテーブルがノード4台で共有される。
したがって、ノードN1、・・・、N4でメタテーブルを共有し、ノードN5、・・・、N8でメタテーブルを共有する。以降同様にして、ノードN121、・・・、N124でメタテーブルを共有し、ノードN125、・・・、N128でメタテーブルを共有する。
このように、メタテーブルの共有するノード台数に制限を設けることで、メタテーブルを格納するキャッシュメモリ容量を抑制することができ、処理が複雑化するのを防ぎながら、ノード故障時にも負荷分散を実行することが可能になる。
<正常時における動作>
次にシステムの正常時の動作(ノード故障がないときの動作)について、図12から図15を用いて説明する。図12は管理ノードを含むストレージシステムの構成の一例を示す図である。ストレージシステム1−2aは、サーバSv1、Sv2、ホスト40および管理端末50を備え(ストレージの図示は省略)、サーバSv1はノードN1、N2を含み、サーバSv2はノードN3、4を含む。
また、ノードN1、・・・、N4のうち、1台のノードが管理ノードになって、メタテーブルの共有化制御および負荷分散処理を行う。以降ではノードN1が管理ノードになるものとして説明する。
管理ノードN1内の制御部11は、GUI(Graphical User Interface)機能を有し(図4の入出力インタフェース102に該当)、管理端末50からの命令を受け取って、ノードN2、N3、N4それぞれの性能情報(例えば、CPU使用率)を定期的に取得する。
制御部11は、一定時間毎の性能情報を取得することで、システム内の各ノードの負荷状態を監視する。なお、管理ノードN1が故障した場合、他のノードが管理ノードN1の役割を引き継ぐ。
図13は過負荷ノードがない場合のメタテーブルの共有状態の一例を示す図である。制御部11は、自ノード(ノードN1)の負荷状態も含めて、システム内のノードN1、・・・、N4それぞれのCPU使用率が所定値(例えば、50%とする)より低いことを検出したとする。
この場合、同一サーバ内でメタテーブルが共有される。図13の例では、サーバSv1内のノードN1、N2でメタテーブルM1、M2が共有され、サーバSv2内のノードN3、N4でメタテーブルM3、M4が共有される。
図14は過負荷ノードが発生した場合のメタテーブルの共有状態の一例を示す図である。制御部11が、定期的に各ノードのCPU使用率を監視し、例えば、ノードN1、・・・、N4のうちいずれか1台でもCPU使用率が50%より高いノードがあることを検出したとする。
このような状態で例えば、過負荷ノードが故障した場合、同一サーバ内で過負荷ノードとペアとなるノードに負荷が集中する可能性がある。よって、制御部11は、各ノードに対してメタテーブルを共有するための共有指示を出力し、各ノードがメタテーブルを持っておくようにして負荷分散を行う。
図14の例では、制御部11は、ノードN3、N4に対して、メタテーブルM1、M2の共有指示(コピー指示)を出力する。また、制御部11は、メタテーブルM3、M4を自ノードN1にコピーし、さらにノードN2に対して、メタテーブルM3、M4の共有指示を出力する。メタテーブルの共有化が行われると、ノードN1、・・・、N4は、メタ共有テーブルMc0を生成して管理する。
なお、メタテーブルの共有指示は、ホストI/Oに影響を与えないように、負荷の高いときはメタテーブルの転送量を制限して行われる。また、ノード故障が発生する前の高負荷状態の検出時に共有指示が発せられて、各ノードでメタテーブルのコピーが行われるので、メタテーブル共有化処理は所定時間をかけて完了させても問題はない。
さらに、制御部11は、メタテーブルのコピー中にノード故障が発生した場合、メタテーブルのコピーを最優先に行って、複数ノードに負荷分散できる環境を整えるようにする。
図15はメタ共有テーブルの構成の一例を示す図である。ノードN1、・・・、N4は、メタ共有テーブルMc0を持ち、メタ共有テーブルMc0は、メタテーブルをコピーしあったノードの組み合わせを登録している。
ノード故障時には、メタ共有テーブルMc0を参照してキャッシュデータの同期先が判断される。メタ共有テーブルMc0を各ノードが有することで、どのノードがどのメタテーブルを共有しているかを容易に認識することができ、保守管理の効率性を向上できる。
メタ共有テーブルMc0は、横方向にノードの番号、縦方向にメタテーブルを所有しているメタテーブル共有対象ノードの番号が登録され、各ノードがどのノードのメタテーブルを持っているのかがわかる構造をしている。
図15の例では、ノードN1は、メタテーブル共有対象ノードN1、・・・、N4に○印が付されているので、ノードN1は、ノードN1、・・・、N4で使用されるメタテーブルを共有していることがわかる。
同様に、ノードN5は、メタテーブル共有対象ノードN5、・・・、N8に○印が付されているので、ノードN5は、ノードN5、・・・、N8で使用されるメタテーブルを共有していることがわかる。
なお、メタ共有テーブルMc0の更新は、全ノードから性能情報を取得している管理ノードが行う。一定時間(例えば、1時間)毎に管理ノードから全ノードへ通信が行われて各ノードの持つメタ共有テーブルMc0が更新される。
また、各ノードは、自身の持つメタ共有テーブルMc0の情報を参考にして、ノード間でメタテーブルM0を共有する。メタテーブルM0を共有することによりメタテーブルの容量が増えたときには、キャッシュメモリの容量を削ってメタテーブルM0の記憶容量が確保される。メタテーブルの容量は、キャッシュメモリのデータ記憶容量より小さいため性能に影響を与えることはない。
<ノード故障発生時における動作>
次にノード故障が発生した場合の動作について、図16、図17を用いて説明する。ノード故障が発生すると、故障ノードの代わりにI/O処理を行うための論理担当ノードの再構成が行われる。
図16はノード故障が発生したシステム構成の一例を示す図である。制御部11は、ノード故障が発生した場合、論理担当ノードの再計算を行い、故障ノードが担当していたLBAの処理を他ノードに移し替えて負荷分散を行う。
例えば、ノードN2に故障が発生した場合、制御部11は、論理担当ノードの再計算を行い、ノードN2が担当していたLBAの処理をノードN1、N3、N4のいずれかまたはすべてに移し替えて負荷分散を行う。故障ノードのメタテーブルは、移し替える先のノードへ事前にコピーされているためスムーズに論理担当処理の変更を行うことができる。
また、ノードの故障を検出した管理ノードが、生存している各ノードに対して、故障ノードの情報(ノード番号)を送信し、各ノードで故障時の処理を開始する。
制御部11は、論理担当ノードの移し替え時、最初に式(1)による計算で担当ノードを割り出し、担当ノードが故障したノードでなければ、該ノードにデータ転送を行う。また、制御部11は、割り出した該ノードが故障したノードであることを認識した場合は、メタテーブルを共有しているノードへの割り振りを再計算する。
具体的には、制御部11は、式(1)の計算の結果、担当ノード番号が故障しているノードの番号だった場合、以下の式(4)を計算し、メタテーブルを共有しているノードのうちから、故障ノードの代わりに処理を請け負う論理担当ノードをあらためて決定する。
担当ノード番号=((LBA)÷(分割ブロックサイズ)+ボリューム番号))/(メタテーブル共有ノード数−1)・・・(4)
図17はキャッシュデータの2重化の一例を示す図である。通常動作時では上述したようにキャッシュデータは2重化される。サーバ内の2重化を示すと、ノードN1のキャッシュデータd1は、ノードN2のキャッシュメモリにミラーリングされ、ノードN2のキャッシュデータd2はノードN1のキャッシュメモリにミラーリングされる。これにより、サーバSv1内のノードN1、N2間でキャッシュデータが2重化される。
また、ノードN3のキャッシュデータd3はノードN4のキャッシュメモリにミラーリングされ、ノードN4のキャッシュメモリのキャッシュデータd4はノードN3のキャッシュメモリにミラーリングされる。これにより、サーバSv2内のノードN3、N4間でキャッシュデータが2重化される。
一方、サーバSv1、Sv2間に渡ってキャッシュデータの2重化が行われるが、例えば、ノードN2に故障が生じた場合、ノード故障時にキャッシュメモリ上のデータをクリアして、その後にタスキ掛けでキャッシュデータの2重化を組み直す。
図17の例では、ノードN1のキャッシュデータd1はノードN3のキャッシュメモリにミラーリングされ、ノードN4のキャッシュデータd3はノードN1のキャッシュメモリにミラーリングされる。また、ノードN3のキャッシュデータd3はノードN4のキャッシュメモリにミラーリングされる。
このような動作によって、キャッシュメモリの容量を増やすことなくサーバSv1、Sv2間に渡ってキャッシュデータの2重化が実現できる。なお、ノードが故障した場合、ノード間の負荷を抑えるために故障ノードのキャッシュデータのコピーは行わない。
書込みデータは新しい論理担当ノードのキャッシュメモリに保存されるため性能影響はない。読み出しデータは新しい論理担当ノードでは以前のキャッシュデータを利用できないため一時的に性能が低下するが、読み出しを続けていくうちにキャッシュデータがたまり性能が回復する。
<復旧時における動作>
次にノード故障が復旧した場合の動作について、図18から図20を用いて説明する。図18から図20は復旧時の動作の流れの一例を示す図である。
〔状態St11〕制御部11は、故障していたノードN2の復旧を検知する。
〔状態St12〕制御部11は、ノードN2に対してメタテーブルおよびメタ共有テーブルをコピーする。
〔状態St13〕制御部11は、コピー完了後、各ノードに対して装置復旧を連絡し、論理担当ノードの変更を行う。これにより、故障前の負荷分散が行われていたシステムに復旧する。
このように、故障していたノードが復旧した場合、制御部11は、ペアとなるノードからメタテーブルおよびメタ共有テーブルのコピーを行う。そして、コピー完了後、制御部11は、各ノードに対して装置復旧を通知し、論理担当ノードの変更を行って故障前の負荷分散状態に復旧させる。
なお、キャッシュデータの2重化も故障前の状態に復旧させる。このときキャッシュデータのコピーは行わず、ホストI/Oによって自然にキャッシュデータがたまるのを待つ。
<メタテーブルの共有解除>
通常運用時、またはノード故障からの復旧時において、システム全体でCPU使用率が所定値より低下して負荷の低下が認識された場合、メタテーブルの共有解除が行われる。
図21、図22はメタテーブルの共有解除が行われた構成の一例を示す図である。
〔状態St21〕ノードN1、・・・、N4は、メタテーブルM1、・・・、M4を共有している。この状態で、ノードN1の制御部11が、システム全体の平均CPU使用率が所定値より低下したことを検出した場合、ノードN2、N3、N4に対して、メタテーブルの共有解除の指示を送信する。
〔状態St22〕メタテーブルの共有解除を認識したノードN1、・・・、N4は、不要になったメタテーブルの削除を行う。メタテーブルM3、M4は、ノードN1、N2から削除され、メタテーブルM3、M4は、ノードN1、N2から削除される。また、メタ共有テーブルMc0の更新が行われ、メタ共有テーブルMc0−1となる。
図23はメタ共有テーブルの更新の一例を示す図である。メタ共有テーブルMc0−1は、メタ共有テーブルMc0から更新されたときの登録状態を示している。
メタ共有テーブルMc0−1の登録状態から、サーバSv1、Sv2間に渡って共有されていたメタテーブルは削除されていることがわかる。例えば、ノードN1はメタテーブルの共有時にはメタテーブルM1、・・・、M4を共有していたが、メタ共有テーブルMc0−1の登録状態から、メタテーブルM3、M4は現在削除されていることがわかる。
このように、システム全体でCPU使用率が低下した場合、管理ノードの制御部11からメタテーブル共有解除の指示が行われ、メタ共有テーブルが更新され、不要になったメタテーブルの削除が行われる。このように、負荷低下時にはメタテーブルの共有解除が行われるので、メタテーブルを記憶していた容量を解放することができる。
<フローチャート>
図24は管理ノードの全体動作を示すフローチャートである。以下の処理は、管理ノードの処理であり、システムの初期終了後、常時動作するものである。
〔ステップS11〕管理ノードの制御部11は、システム内の全ノードとの疎通確認を行う。例えば、PINGによるポーリング応答の受信にもとづく疎通確認を行うことができる。
〔ステップS12〕制御部11は、生存ノード数の変化があるか否かを判定する。生存ノード数に変化がある場合はステップS13へ処理が進み、変化がない場合はステップS19へ処理が進む。
〔ステップS13〕制御部11は、ノード故障が生じたか、または故障ノードが復旧したかを判定する。ノード故障が生じて生存ノード数に変化があった場合はステップS14へ処理が進み、故障ノードが復旧して生存ノード数に変化があった場合はステップS15へ処理が進む。
〔ステップS14〕制御部11は、全ノードに対して、故障ノードのノード番号を通知する。ステップS19へ処理が進む。
〔ステップS15〕制御部11は、故障から復旧した復旧ノードが含まれるサーバ内でペアになっているペアノードに対し、復旧ノードへメタテーブルのコピーをするように指示する。
〔ステップS16〕制御部11は、メタテーブルのコピー状況を確認する。
〔ステップS17〕制御部11は、メタテーブルのコピーが完了したか否かを判定する。コピーが未完了の場合は、ステップS16へ処理が戻り、コピーが完了した場合は、ステップS18へ処理が進む。
〔ステップS18〕制御部11は、全ノードに対して、故障ノードが復旧したことを通知する。
〔ステップS19〕制御部11は、全ノードから性能情報(例えば、CPU使用率)を取得する。
〔ステップS20〕制御部11は、取得した性能情報にもとづき、システム全体の負荷を検出し、検出した負荷に変動があるか否かを判定する。負荷が所定範囲内にあり変動なしと判定した場合はステップS11へ処理が戻る。また、負荷が所定範囲外にあり変動あり(高負荷または低負荷)と判定した場合はステップS21へ処理が進む。
〔ステップS21〕制御部11は、メタ共有テーブルの更新を行い、更新後のメタ共有テーブルを全ノードに配布する。または、管理ノードの制御部がメタ共有テーブルの更新指示を各ノードに送信し、ノード毎にメタ共有テーブルを更新するとしてもよい。ステップS11へ処理が戻る。
図25はメタ共有テーブルの更新動作を示すフローチャートである。以下の処理は、管理ノードから送信されたメタ共有テーブルの更新指示を各ノードが受信し、ノード毎にメタ共有テーブルを更新する動作を示している。よって、以下の処理は、管理ノード以外のノードの処理であり、システムの初期終了後、常時動作する。
〔ステップS31〕管理ノード以外のノードの制御部11は、管理ノードからメタ共有テーブルの更新指示を受信したか否かを判定する。更新指示を受信した場合はステップS32へ処理が進み、受信しない場合はステップS31の処理を繰り返す。
〔ステップS32〕制御部11は、メタテーブルを共有する相手ノードを認識する。
〔ステップS33〕制御部11は、メタテーブルを共有するノード数の増減を判定する。メタテーブルを共有するノード数が減少している場合はステップS34の処理へ進み、メタテーブルを共有するノード数が増加している場合はステップS35の処理へ進む。
〔ステップS34〕制御部11は、減少したノードのノード番号をメタ共有テーブルから削除する。ステップS31の処理へ戻る。
〔ステップS35〕制御部11は、増加したノードのノード番号をメタ共有テーブルに追加する。この場合、増加したノード数分のI/Oデータをキャッシュメモリにライトバックし、ライトバックによって空いたメモリ領域をクリアして、該領域にメタ共有テーブルの追加分を確保する。
〔ステップS36〕制御部11は、ホストI/Oのアクセスの割合を監視する。アクセスの割合が所定値(例えば、50%とする)以上ある場合は、ステップS36の処理を繰り返す。アクセスの割合が50%未満の場合は、ステップS37へ処理が進む。
〔ステップS37〕制御部11は、ホストI/Oのアクセスの割合が少ないときを見計らって自身のメタテーブルを新しく追加された共有対象のノードへ転送する。ステップS31へ処理が戻る。
図26は論理担当ノードの判断処理を示すフローチャートである。
〔ステップS41〕制御部11は、ホストI/Oの発生を認識する。
〔ステップS42〕制御部11は、ホストI/Oを処理する論理担当ノードを求める。
〔ステップS43〕制御部11は、求めた論理担当ノードが故障中か否かを判定する。故障中の場合はステップS44へ処理が進み、故障していない場合はステップS45へ処理が進む。
〔ステップS44〕制御部11は、代替の論理担当ノードを求める。
〔ステップS45〕制御部11は、論理担当ノードへホストI/Oデータを転送する。
図27はキャッシュ制御の動作を示すフローチャートである。
〔ステップS51〕制御部11は、受信したホストI/Oデータをキャッシュメモリに保持する。
〔ステップS52〕制御部11は、ペアノードは故障中か否かを判定する。故障中の場合はステップS53へ処理が進み、故障していない場合はステップS54へ処理が進む。
〔ステップS53〕制御部11は、メタテーブルを共有している他ノードとホストI/Oデータを共有する。
〔ステップS54〕制御部11は、ペアノードとホストI/Oデータを共有する。
図28はアドレス変換処理を含む制御動作を示すフローチャートである。
〔ステップS61〕制御部11は、ホストI/O処理の指示を受信する。
〔ステップS62〕制御部11は、メタテーブルを参照して論理アドレス/物理アドレス変換を行う。
〔ステップS63〕制御部11は、変換後の物理アドレスにしたがい担当ディスクへデータ転送を行う。
〔ステップS64〕制御部11は、メタテーブルの更新がある場合、自身のメタテーブルを更新する。
〔ステップS65〕制御部11は、メタ共有テーブルを参照して、更新後のメタテーブルの情報を、メタテーブルを共有しているノードへ転送する。
以上説明したように、本発明によれば、スケールアウト型のストレージシステムで高負荷状態が発生した場合、同一サーバ上の他ノードにホストI/Oを移すのではなく、複数のノードに跨ってメタテーブルを共有化して、論理担当ノードの処理を分散させる。これにより負荷集中を防ぐことができる。
また、メタテーブルを複数のノードで共有化することで、ノード故障が起きた場合でもメタテーブルのデータ移動が不要になるので、早急な復旧が可能になる。さらに、メタテーブルの共有化はシステムの負荷に応じてノードで共有させる台数を制限するのでメモリ容量の節約が可能になる。
上記で説明した本発明のストレージ管理装置1およびノード10の処理機能は、コンピュータによって実現することができる。この場合、ストレージ管理装置1およびノード10が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等がある。光ディスクには、CD−ROM/RW等がある。光磁気記録媒体には、MO(Magneto Optical disk)等がある。
プログラムを流通させる場合、例えば、そのプログラムが記録されたCD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLD等の電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
(付記1) ストレージに対するデータの入出力処理を行う複数のノードを管理するストレージ管理装置であって、
グループ化されている前記複数のノードの負荷状況の監視を行い、前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、前記負荷状況にもとづいて遷移させる制御部
を有するストレージ管理装置。
(付記2) 前記制御部は、前記複数のノードすべての負荷が閾値より低いことを検出した場合、前記第1の共有状態に遷移させ、前記複数のノードのうち少なくとも一の前記ノードの前記負荷が前記閾値より高いことを検出した場合、前記第2の共有状態に遷移させる付記1記載のストレージ管理装置。
(付記3) 前記制御部は、前記ノードそれぞれの性能情報を取得し、前記性能情報から検出した前記負荷を平均化して平均負荷を算出し、前記平均負荷にもとづいて、前記メタ情報を共有する前記ノードの共有範囲を決定する付記1記載のストレージ管理装置。
(付記4) 前記制御部は、前記メタ情報を共有している前記ノードの組合せに関するメタ共有情報を生成して保持する付記1記載のストレージ管理装置。
(付記5) 前記制御部は、前記ノードそれぞれの性能情報を取得し、前記性能情報から検出した前記負荷が前記閾値より低下したことを検出した場合、前記メタ情報の共有の復帰を行う付記2記載のストレージ管理装置。
(付記6) 前記制御部は、同一の筐体に実装されている前記ノードの組を同一のグループとし、前記負荷が前記閾値より低いことを検出した場合、前記メタ情報を同一の前記筐体内でペアになって実装されているノード間で共有させる共有化を行い、前記負荷が前記閾値より高いことを検出した場合、同一の前記筐体内での前記共有化の状態からさらに、前記メタ情報を異なる前記筐体に跨ったノード間で共有させる付記2記載のストレージ管理装置。
(付記7) ストレージと、
前記ストレージに対するデータの入出力処理を行う複数のノードと、
グループ化されている前記複数のノードの負荷状況の監視を行い、前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、前記負荷状況にもとづいて遷移させる管理ノードと、
を有するストレージシステム。
(付記8) ストレージに対するデータの入出力処理を行う複数のノードに対し、グループ化されている前記複数のノードの負荷状況の監視を行い、
前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、前記負荷状況にもとづいて遷移させる、
処理をコンピュータに実行させるプログラム。
(付記9) ストレージと、
前記ストレージへのデータの第1のメタ情報にもとづいて前記ストレージに対する前記データの入出力処理を行う第1のノードと、前記データの第2のメタ情報にもとづいて前記ストレージに対する前記データの入出力処理を行う第2のノードとを有する第1のサーバと、
前記データの第3のメタ情報にもとづいて前記ストレージに対する前記データの入出力処理を行う第3のノードと、前記データの第4のメタ情報にもとづいて前記ストレージに対する前記データの入出力処理を行う第4のノードとを有する第2のサーバと、
を備え、
前記第1のノードは、
前記第1、第2、第3、第4のノードの負荷状況の監視を行い、
前記第1、第2、第3、第4のノードの負荷が閾値より低いことを検出した場合、前記第1のサーバ内でペアとなる前記第1のノードと前記第2のノード間で前記第1のメタ情報と前記第2のメタ情報を共有させ、前記第2のサーバ内でペアとなる前記第3のノードと前記第4のノード間で前記第3のメタ情報と前記第4のメタ情報を共有させる共有化を行い、
前記第1、第2、第3、第4のノードのうち少なくとも1台のノードの負荷が閾値より高いことを検出した場合、同一の前記第1、第2のサーバ内での前記共有化の状態からさらに、前記第1のサーバと前記第2のサーバとに跨って、前記第1のノードに前記第1、第2、第3、第4のメタ情報を共有させ、前記第2のノードに前記第1、第2、第3、第4のメタ情報を共有させ、前記第3のノードに前記第1、第2、第3、第4のメタ情報を共有させ、前記第4のノードに前記第1、第2、第3、第4のメタ情報を共有させる
ストレージシステム。
1 ストレージ管理装置
1a 制御部
1b 記憶部
1−1 ストレージシステム
sv1、sv2 サーバ
n1、n2、n3、n4 ノード
20a、20b ストレージ
m1、m2、m3、m4 メタ情報

Claims (8)

  1. ストレージに対するデータの入出力処理を行う複数のノードを管理するストレージ管理装置であって、
    グループ化されている前記複数のノードの負荷状況の監視を行い、前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、前記負荷状況にもとづいて遷移させる制御部
    を有するストレージ管理装置。
  2. 前記制御部は、前記複数のノードすべての負荷が閾値より低いことを検出した場合、前記第1の共有状態に遷移させ、前記複数のノードのうち少なくとも一の前記ノードの前記負荷が前記閾値より高いことを検出した場合、前記第2の共有状態に遷移させる請求項1記載のストレージ管理装置。
  3. 前記制御部は、前記ノードそれぞれの性能情報を取得し、前記性能情報から検出した前記負荷を平均化して平均負荷を算出し、前記平均負荷にもとづいて、前記メタ情報を共有する前記ノードの共有範囲を決定する請求項1記載のストレージ管理装置。
  4. 前記制御部は、前記メタ情報を共有している前記ノードの組合せに関するメタ共有情報を生成して保持する請求項1記載のストレージ管理装置。
  5. 前記制御部は、前記ノードそれぞれの性能情報を取得し、前記性能情報から検出した前記負荷が前記閾値より低下したことを検出した場合、前記メタ情報の共有の復帰を行う請求項2記載のストレージ管理装置。
  6. 前記制御部は、同一の筐体に実装されている前記ノードの組を同一のグループとし、前記負荷が前記閾値より低いことを検出した場合、前記メタ情報を同一の前記筐体内でペアになって実装されているノード間で共有させる共有化を行い、前記負荷が前記閾値より高いことを検出した場合、同一の前記筐体内での前記共有化の状態からさらに、前記メタ情報を異なる前記筐体に跨ったノード間で共有させる請求項2記載のストレージ管理装置。
  7. ストレージと、
    前記ストレージに対するデータの入出力処理を行う複数のノードと、
    グループ化されている前記複数のノードの負荷状況の監視を行い、前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、前記負荷状況にもとづいて遷移させる管理ノードと、
    を有するストレージシステム。
  8. ストレージに対するデータの入出力処理を行う複数のノードに対し、グループ化されている前記複数のノードの負荷状況の監視を行い、
    前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第1の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第2の共有状態とを、前記負荷状況にもとづいて遷移させる、
    処理をコンピュータに実行させるプログラム。
JP2018143800A 2018-07-31 2018-07-31 ストレージ管理装置、ストレージシステムおよびプログラム Active JP7111964B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018143800A JP7111964B2 (ja) 2018-07-31 2018-07-31 ストレージ管理装置、ストレージシステムおよびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018143800A JP7111964B2 (ja) 2018-07-31 2018-07-31 ストレージ管理装置、ストレージシステムおよびプログラム

Publications (2)

Publication Number Publication Date
JP2020021235A true JP2020021235A (ja) 2020-02-06
JP7111964B2 JP7111964B2 (ja) 2022-08-03

Family

ID=69588568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018143800A Active JP7111964B2 (ja) 2018-07-31 2018-07-31 ストレージ管理装置、ストレージシステムおよびプログラム

Country Status (1)

Country Link
JP (1) JP7111964B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051890A (ja) * 1999-08-10 2001-02-23 Toshiba Corp 仮想分散ファイルサーバシステム
JP2007279898A (ja) * 2006-04-04 2007-10-25 Toshiba Corp ストレージシステム及び同システムに適用されるアクセス処理方法
JP2013008387A (ja) * 2012-09-07 2013-01-10 Fujitsu Ltd データ管理プログラム、およびマルチノードストレージシステム
US20160088082A1 (en) * 2014-09-19 2016-03-24 Netapp, Inc. Techniques for coordinating parallel performance and cancellation of commands in a storage cluster system
JP2017515215A (ja) * 2014-03-31 2017-06-08 アマゾン・テクノロジーズ・インコーポレーテッド 分散格納システムにおける名前空間管理

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051890A (ja) * 1999-08-10 2001-02-23 Toshiba Corp 仮想分散ファイルサーバシステム
JP2007279898A (ja) * 2006-04-04 2007-10-25 Toshiba Corp ストレージシステム及び同システムに適用されるアクセス処理方法
JP2013008387A (ja) * 2012-09-07 2013-01-10 Fujitsu Ltd データ管理プログラム、およびマルチノードストレージシステム
JP2017515215A (ja) * 2014-03-31 2017-06-08 アマゾン・テクノロジーズ・インコーポレーテッド 分散格納システムにおける名前空間管理
US20160088082A1 (en) * 2014-09-19 2016-03-24 Netapp, Inc. Techniques for coordinating parallel performance and cancellation of commands in a storage cluster system

Also Published As

Publication number Publication date
JP7111964B2 (ja) 2022-08-03

Similar Documents

Publication Publication Date Title
US9361038B1 (en) Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks
US10019364B2 (en) Access-based eviction of blocks from solid state drive cache memory
US7536508B2 (en) System and method for sharing SATA drives in active-active RAID controller system
US9626329B2 (en) Apparatus for enhancing performance of a parallel processing environment, and associated methods
US6957303B2 (en) System and managing method for cluster-type storage
EP1595363B1 (en) Scsi-to-ip cache storage device and method
JP6898393B2 (ja) ストレージシステム及びデータ転送方法
JP2015532985A (ja) 大規模なデータ記憶および受け渡しシステム
US20140122816A1 (en) Switching between mirrored volumes
JP2007086972A (ja) ストレージシステム、二重化制御方法、及びプログラム
JP2008040645A (ja) Nasマイグレーションによる負荷分散方法、並びに、その方法を用いた計算機システム及びnasサーバ
JP2013156977A (ja) 冗長キャッシュデータのエラスティックキャッシュ
US20170220249A1 (en) Systems and Methods to Maintain Consistent High Availability and Performance in Storage Area Networks
JP5147586B2 (ja) ストレージ装置及びその制御方法
JP5453872B2 (ja) ディスクアレイ装置、ディスク制御装置、ディスクアレイ装置における負荷分散方法
US11941253B2 (en) Storage system and method using persistent memory
WO2021012169A1 (zh) 一种提高存储系统可靠性的方法和相关装置
JP7111964B2 (ja) ストレージ管理装置、ストレージシステムおよびプログラム
US11636012B2 (en) Method and apparatus for performing node information exchange management of all flash array server
US20180307427A1 (en) Storage control apparatus and storage control method
CN113342258B (zh) 用以进行全快闪存储器阵列伺服器的数据存取管理的方法与设备
WO2019043815A1 (ja) ストレージシステム
US11366618B2 (en) All flash array server and control method thereof
KR20190048456A (ko) 컴퓨팅 디바이스 및 그것의 동작방법
US11809293B2 (en) Storage node failure detection based on register values for an all flash array server

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210408

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210413

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220125

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: 20220621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220704

R150 Certificate of patent or registration of utility model

Ref document number: 7111964

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150