JP7229214B2 - 計算機システム及び負荷分散方法 - Google Patents

計算機システム及び負荷分散方法 Download PDF

Info

Publication number
JP7229214B2
JP7229214B2 JP2020169812A JP2020169812A JP7229214B2 JP 7229214 B2 JP7229214 B2 JP 7229214B2 JP 2020169812 A JP2020169812 A JP 2020169812A JP 2020169812 A JP2020169812 A JP 2020169812A JP 7229214 B2 JP7229214 B2 JP 7229214B2
Authority
JP
Japan
Prior art keywords
volume
migration
storage device
server
information
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
JP2020169812A
Other languages
English (en)
Other versions
JP2022061706A (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 JP2020169812A priority Critical patent/JP7229214B2/ja
Priority to US17/187,071 priority patent/US11550488B2/en
Publication of JP2022061706A publication Critical patent/JP2022061706A/ja
Application granted granted Critical
Publication of JP7229214B2 publication Critical patent/JP7229214B2/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、計算機システム及び負荷分散方法に関する。
HCI(Hyper-Converged Infrastructure)のような、データを格納するストレージデバイスを管理する複数のサーバを備えた計算機システムが知られている。この種の計算機システムでは、ストレージデバイスに格納されているデータを別のサーバで管理されているストレージデバイスに移行するデータマイグレーションを行い、そのデータに対するI/O処理を別のサーバに実行させることで、各サーバに係る負荷を分散させることができる。
近年、複数のストレージデバイスボックスと複数のサーバとをネットワークを介して接続し、複数のサーバが同一のドライブボックスを共用する計算機システムが提案されている。この種の計算機システムでは、ストレージデバイスボックスにアクセスするためのメタデータを別のサーバに移行するデータマイグレーションであるメタマイグレーションを行うことで、そのデータに対するI/O処理を別のサーバに実行させることが可能になる。
メタマイグレーションでは、従来のデータマイグレーションのようなストレージデバイスに格納されているデータの移行を行う必要がないため、データマイグレーションによる移動負荷を低減することが可能になる。
しかしながら、メタデータのデータ量は種々の条件に応じて異なるため、単にメタマイグレーションを行うだけでは、データ量の大きいメタデータが移行されるなど、移動負荷を適切に低減することができないという問題がある。
本開示の目的は、マイグレーションの移動負荷を低減することが可能な計算機システム及び負荷分散方法を提供することにある。
本開示の一態様に従う計算機システムは、データを記憶する記憶デバイスと、前記記憶デバイスに対するリード及びライトを行う複数の計算機ノードと、を有する計算機システムであって、各計算機ノードは、前記記憶デバイスの物理的な記憶領域にマッピングされた論理的な記憶領域を有するボリュームを管理するための管理情報を格納し、当該管理情報に応じて前記ボリュームをコンピュートホストに提供し、前記計算機システムは、前記ボリュームごとに、当該ボリュームを管理するための管理情報のデータ量であるメタデータ量を算出し、各メタデータ量に基づいて、前記ボリュームの中から移動対象ボリュームを決定し、当該移動対象ボリュームを前記コンピュートホストに提供する計算機ノードを移動先の計算機ノードに移行するボリュームマイグレーションを行う。
本発明によれば、マイグレーションの移動負荷を低減することが可能になる。
本開示の一実施形態の計算機システムを示す構成図である。 ストレージデバイスボックスのハードウェア構成を示す図である。 サーバのハードウェア構成を示す図である。 ストレージデバイスボックス及びサーバの機能的な構成を示す図である。 ブロックマッピングを説明するための図である。 サーバのメモリに記憶されたメタデータ及びプログラムの内部構成を示す図である。 サーバ情報の一例を示す図である。 ストレージデバイス情報の一例を示す図である。 ネットワーク情報の一例を示す図である。 ネットワークI/F情報の一例を示す図である。 アプリケーション情報の一例を示す図である。 コンピュートホスト情報の一例を示す図である。 システムコントローラ情報の一例を示す図である。 フォールトドメイン情報の一例を示す図である。 ストレージコントローラ情報の一例を示す図である。 ボリューム情報の一例を示す図である。 ブロックマッピング情報の一例を示す図である。 ストレージデバイスボックスのメモリに記憶されたメタデータ及びプログラムの内部構成を示す図である。 ストレージデバイスボックス情報401の一例を示す図である。 ライト処理の一例を説明するためのフローチャートである。 新規割当処理の一例を説明するためのフローチャートである。 リード処理の一例を説明するためのフローチャートである。 マイグレーションの概要を説明するための図である。 マイグレーションジョブ処理の一例を説明するためのフローチャートである。 移動先サーバ候補の評価処理の一例を説明するためのフローチャートである。 移動対象ボリュームの選択処理の一例を説明するためのフローチャートである。 コンピュートホストとボリュームのマイグレーション処理の一例を説明するためのフローチャートである。
以下、本開示の実施形態について図面を参照して説明する。
なお、以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサ(例えば、CPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)及び/又は通信インターフェースデバイス(例えば、ポート)を用いながら行うため、処理の主体はプロセッサ又はそのプロセッサを有するデバイス(例えば、計算機)としてもよい。また、「AAAテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」を「AAA情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
図1は、本開示の一実施形態の計算機システムを示す構成図である。図1に示す計算機システム1は、1つ以上のフォールトドメイン(Fault Domain)2を有する。フォールトドメイン2が複数ある場合、各フォールトドメイン2は、ネットワーク(Network)3を介して相互に通信可能に接続される。
フォールトドメイン2は、1つ以上のストレージデバイスボックス(Storage Device Box)10と、1つ以上のサーバ(Server)20とを有する。各ストレージデバイスボックス10と各サーバ20とは、ネットワーク30を介して相互に通信可能に接続される。ネットワーク30は、例えば、イーサネット(登録商標)などの高速ネットワークである。なお、フォールトドメイン2が複数ある場合、ネットワーク30は、各フォールトドメイン2を相互に接続するネットワーク3と接続される。
ストレージデバイスボックス10は、データを格納するストレージデバイスを1つ以上備えたデバイスであり、ストレージデバイスの制御に特化している。
サーバ20は、ストレージデバイスを管理する計算機ノードであり、計算機システムのユーザにて使用されるアプリケーションプログラム及びストレージデバイスを制御するストレージコントローラなどを実行するデバイスである。サーバ20は、ストレージデバイスを備えていてもよい。
なお、フォールトドメイン2が複数ある場合、複数のフォールトドメイン2のいずれかがダウンしても、他のフォールトドメイン2で計算機システム1が継続できるように、2つ以上のフォールトドメインのそれぞれのストレージデバイス間でデータの冗長化が行われてもよい。データの冗長化方法としては、例えば、レプリケーション及びイレージャーコーディング(Erasure Coding)などが挙げられる。
図2は、ストレージデバイスボックス10のハードウェア構成を示す図である。図2に示すストレージデバイスボックス10は、ストレージデバイス(Storage Device)11と、ネットワークI/F(Network I/F)12と、メモリ(Memory)13と、CPU(Central Processing Unit)14とを有する。
ストレージデバイス11は、データを記憶する記憶デバイスである。ストレージデバイス11の種類は、特に限定されないが、例えば、ハードディスクドライブ及びSSD(Solid State Drive)などである。また、ストレージデバイス11は、複数あってもよい。
ネットワークI/F12は、ネットワーク30を介してサーバ20と通信可能に接続し、サーバ20との間でデータの送受信を行う。
メモリ13は、CPU14にて読み取り可能な記録媒体であり、CPU14の動作を規定するプログラムを記憶する。メモリ13は、DRAM(Dynamic Random Access Memory)のような揮発性のメモリでもよいし、SCM(Storage Class Memory)のような不揮発性のメモリでもよい。
CPU14は、メモリ13に記憶されたプログラムを読み取り、その読み取ったプログラムを実行することで、種々の機能を実現するプロセッサである。
図3は、サーバ20のハードウェア構成を示す図である。図3に示すサーバ20は、ストレージデバイス21と、ネットワークI/F22と、メモリ23と、CPU24とを有する。
ストレージデバイス21は、データを記憶する記憶デバイスである。ストレージデバイス21の種類は、特に限定されないが、例えば、ハードディスクドライブ及びSSDなどである。また、ストレージデバイス21は、複数あってもよい。
ネットワークI/F22は、ネットワーク30を介してストレージデバイスボックス10及び他のサーバ20と通信可能に接続し、ストレージデバイスボックス10及び他のサーバ20との間でデータの送受信を行う。
メモリ23は、CPU24にて読み取り可能な記録媒体であり、CPU24の動作を規定するプログラムと、CPU24で使用される種々の情報を記憶する。メモリ23は、DRAMのような揮発性のメモリでもよいし、SCMのような不揮発性のメモリでもよい。
CPU24は、メモリ23に記憶されたプログラムを読み取り、その読み取ったプログラムを実行することで、種々の機能を実現するプロセッサである。
図4は、ストレージデバイスボックス10及びサーバ20の機能的な構成を示す図である。図4に示すようにストレージデバイスボックス10は、ストレージデバイス11と、システムコントローラ(System Controller)15と、ストレージデバイスボックスコントローラ(Storage Device Box Controller)16とを有する。
システムコントローラ15は、ストレージデバイスボックス10のハードウェア及びソフトウェアを制御するプログラムであり、例えば、OS(Operating System)又はハイパーバイザ(hypervisor)などである。また、システムコントローラ15は、サーバ20との間でデータの送受信を行う機能を有する。
ストレージデバイスボックスコントローラ16は、システムコントローラ15上で動作するプログラムであり、ストレージデバイス11を制御する。例えば、ストレージデバイスボックスコントローラ16は、サーバ20(具体的には、後述のストレージコントローラ26)と通信し、サーバ20からのI/O要求に応じて、ストレージデバイス11に対するI/O処理を実行し、その処理結果をサーバ20に返却する。
また、図4に示すようにサーバ20は、ストレージデバイス21と、システムコントローラ25と、ストレージコントローラ(Storage Controller)26と、コンピュートホスト(Compute Host)27とを有する。
システムコントローラ25は、サーバ20のハードウェア及びソフトウェアを制御するプログラムであり、例えば、OS(Operating System)又はハイパーバイザ(hypervisor)などである。また、システムコントローラ25は、ストレージデバイスボックス10及び他のサーバ20との間でデータの送受信を行う機能を有する。
ストレージコントローラ26及びコンピュートホスト27は、システムコントローラ25上で動作するプログラムである。
ストレージコントローラ26は、サーバ20自身のストレージデバイス21及びストレージデバイスボックス10内のストレージデバイス11を制御する。
例えば、ストレージコントローラ26は、コンピュートホスト27(具体的には、後述のアプリケーションプログラム29)に提供する論理的な記憶領域であるボリューム(Volume)28を管理する。ボリューム28は、1つのサーバ20内に複数あってもよい。ボリューム28は、複数の論理ブロックにて構成され、各論理ブロックは、ストレージデバイス11及び21の物理的な記憶領域の管理単位である物理ブロックにマッピングされる。論理ブロックと物理ブロックとの間のマッピング関係は、ブロックマッピングと呼ばれ、ストレージコントローラ26にて管理される(図5参照)。
ストレージコントローラ26は、コンピュートホスト27からのボリューム28に対するI/O要求に応じて、ボリューム28に対するリード及びライトを実行し、その結果をコンピュートホスト27に返却する。
また、ストレージコントローラ26は、ボリューム28並びにストレージデバイス11及び21へのアクセスを担当するオーナ権を管理する。オーナ権を他のサーバ20のストレージコントローラ26に移動させることで計算機システムの負荷分散を行うことができる。オーナ権の移動は、オーナ権に関するメタデータの転送にて実施される。
また、ストレージコントローラ26は、ボリューム28に対して、そのボリューム28に関する種々のデータ管理機能を提供する。データ管理機能は、例えば、容量仮想化機能(例えば、シンプロビジョニング機能)、容量削減機能(例えば、圧縮機能、重複排除機能及びスナップショット機能)、及び、データ保護機能(例えば、RAID(Redundant Arrays of Inexpensive Disks)機能及びイレージャーコーディング(Erasure Coding機能)などを提供する。データ管理機能によってボリューム28のメタデータのデータ量であるメタデータ量が変化する。
コンピュートホスト27は、サーバ20のハードウェア資源(ネットワークI/F22、メモリ23及びCPU24など)を制御するプログラムである。コンピュートホスト27は、例えば、VMM(Virtual Machine Monitor)又はコンテナなどである。
コンピュートホスト27上でアプロケーションプログラム(Application Program)が実行される。アプリケーションプログラム29は、計算機システムのユーザにて使用されるプログラムである。アプリケーションプログラム29は、ストレージコントローラ26から提供されるボリューム28に対するI/O要求を行う。
図5は、ブロックマッピングを説明するための図である。
ボリューム28は、論理ブロック(Logical Block)31と呼ばれる単位で管理される。また、ストレージデバイス11及び21のデータ記憶領域は物理ブロック(Physical Block)32と呼ばれる単位で管理される。論理ブロック41と物理ブロック42との対応関係は、ブロックマッピング(Block Mapping)40と呼ばれる。論理ブロック41のサイズは、固定されていてもよいが、本実施形態では、データの圧縮処理などに対応するため可変であるとする。
ブロックマッピング40では、1つの論理ブロック41が1つ以上の物理ブロック42に対応する。また、あるボリューム28の論理ブロック41は、他のボリューム28の論理ブロック41と共用(同じ物理ブロックにマッピング)されることがある。例えば、重複排除機能又はスナップショット機能が使用される場合、あるボリューム28の論理ブロック41は、他のボリューム28の論理ブロック41と共用される
ストレージコントローラ26が、論理ブロック41のデータが更新される際に物理ブロックのデータを更新せずに、新たなデータを新たな物理ブロックに追記するログ構造化方式に対応してもよい。この場合、データのライトが行われるたびに、そのデータの格納先となる物理ブロック42が変更されるため、新しいブロックマッピング40が生成される。古いブロックマッピング40は、そのブロックマッピング40を使用するストレージコントローラ26が存在しなくなると、ガベージコレクション処理などで削除される。
図6は、サーバ20のメモリ23に記憶されたメタデータ及びプログラムの内部構成を示す図である。図6に示すメタデータ100は、当該メタデータ100を記憶しているサーバ20(以下、当該サーバ20と称する)に関するデータであり、サーバ情報(Server Information)101と、ストレージデバイス情報(Storage Device Information)102と、ネットワーク情報(Network Information)103と、ネットワークI/F情報(Network I/F Information)104と、アプリケーション情報(Application Informaion)105と、コンピュートホスト情報(Compute Host Information)106と、システムコントローラ情報(System Controller Information)107と、フォールトドメイン情報(Fault Domain Information)108と、ストレージコントローラ情報(Storage Controller Information)109と、ボリューム情報(Volume Information)110と、ブロックマッピング情報(Block Mapping Information)111とを含む。また、プログラム150は、システムコントローラ25と、ストレージコントローラ26と、コンピュートホスト27と、アプリケーションプログラム29とを有する。
図7は、サーバ情報101の一例を示す図である。図7に示すサーバ情報101は、フィールド201~206を含む。
フィールド201は、当該サーバ20を識別する識別情報であるサーバID(Server ID)を格納する。フィールド202は、当該サーバ20が属するフォールトドメイン2を識別する識別情報であるフォールトドメインID(Fault Domain ID)を格納する。フィールド203は、当該サーバ20に記憶されているネットワークI/F情報104の一覧であるネットワークI/F情報リスト(Network I/F Information List)を格納する。フィールド204は、当該サーバ20に記憶されているストレージデバイス情報102の一覧であるストレージデバイス情報リスト(Storage Device Information List)を格納する。フィールド205は、当該サーバ20のハードウェアに関するサーバハードウェア情報(Hardware Information of Server)を格納する。フィールド206は、当該サーバ20のハードウェア及びソフトウェアに関連するモニタ情報であるサーバモニタ情報(Monitoring Information of Server)を格納する。サーバモニタ情報は、例えば、メモリ23及びCPU24の負荷(利用率)などである。
図8は、ストレージデバイス情報102の一例を示す図である。図8に示すストレージデバイス情報102は、フィールド211~215を含む。なお、ストレージデバイス情報102は、当該サーバ20が備えるストレージデバイス21(以下、当該ストレージデバイス21と称する)ごとに用意される。
フィールド211は、当該ストレージデバイス21を識別する識別情報であるストレージデバイスID(Storage Device ID)を格納する。フィールド212は、当該サーバ20(当該ストレージデバイス21を備えるサーバ20)を識別するサーバIDを格納する。フィールド213は、当該ストレージデバイス21のハードウェアに関するストレージデバイスハードウェア情報(Hardware Information of Storage Device)を格納する。ストレージデバイスハードウェア情報は、例えば、記憶容量などのスペックを示す。フィールド214は、ストレージデバイスに関するモニタ情報であるストレージデバイスモニタ情報(Monitoring Information of Storage Device)を格納する。ストレージデバイスモニタ情報は、例えば、負荷(I/O要求の量など)などを示す。フィールド215は、当該ストレージデバイス21に対応する物理ブロックを有するブロックマッピング情報111の一覧であるブロックマッピング情報リストを格納する。
図9は、ネットワーク情報103の一例を示す図である。図9に示すネットワーク情報103は、フィールド221~228を含む。なお、ネットワーク情報103は、当該サーバ20が接続されているネットワーク3(以下、当該ネットワーク3と称する)ごとに用意される。
フィールド221は、当該ネットワーク3を識別する識別情報であるネットワークID(Network ID)を格納する。フィールド222は、当該ネットワーク3が属するフォールトドメインを識別するフォールトドメインIDを格納する。フィールド223は、当該ネットワーク3と接続されているネットワークI/F12及び22のネットワークI/F情報104の一覧であるネットワークI/F情報リスト(Network I/F Information List)を格納する。フィールド224は、当該ネットワーク3と接続されているサーバ20のサーバIDの一覧であるサーバIDリスト(Server ID List)を格納する。
フィールド225は、当該ネットワーク3と接続されているストレージデバイスボックス10を識別する識別情報であるストレージデバイスボックスIDの一覧であるストレージデバイスボックスIDリスト(Storage Device Box ID List)を格納する。フィールド226は、当該ネットワーク3と接続されている他のネットワーク3のネットワークIDの一覧であるネットワークIDリスト(Network ID List)を格納する。フィールド227は、当該ネットワーク3のハードウェアに関する情報であるネットワークハードウェア情報(Hardware Information of Network)を格納する。ネットワークハードウェア情報は、例えば、ネットワーク3上のスイッチ(図示せず)などに関する情報である。フィールド228は、当該ネットワーク3に関するモニタ情報であるネットワークモニタ情報(Monitoring Information of Network)を格納する。ネットワークモニタ情報は、例えば、ネットワーク3上のスイッチの負荷などである。
図10は、ネットワークI/F情報104の一例を示す図である。図10に示すネットワークI/F情報104は、フィールド231~233を含む。なお、ネットワークI/F情報104は、当該サーバ20が備えるネットワークI/F22(以下、当該ネットワークI/F22と称する)ごとに用意される。
フィールド231は、当該ネットワークI/F22を識別する識別情報であるネットワークI/FID(Network I/F ID)を格納する。フィールド232は、当該ネットワークI/F22のネットワーク3上のアドレス(Address)を格納する。アドレスは、例えば、IPアドレス及びポート番号である。フィールド233は、当該ネットワークI/F22の種別(Type)を格納する。種別は、例えば、当該ネットワークI/Fの用途(管理用、データ転送用など)を示す。
図11は、アプリケーション情報105の一例を示す図である。図11に示すアプリケーション情報105は、フィールド241~243を含む。なお、アプリケーション情報105は、当該サーバ20が備えるアプリケーションプログラム29(以下、当該アプリケーションプログラム29と称する)ごとに用意される。
フィールド241は、当該アプリケーションプログラム29を識別する識別情報であるアプリケーションID(Application ID)を格納する。フィールド242は、当該アプリケーションプログラム29の実行するコンピュートホスト27を識別する識別情報であるコンピュートホストID(Compute Host ID)を格納する。フィールド243は、当該アプリケーションプログラム29に関するモニタ情報であるアプリケーションモニタ情報(Monitoring Information of Application)を格納する。アプリケーションモニタ情報は、例えば、当該アプリケーションプログラム29のハードウェア資源に対する負荷などである。
図12は、コンピュートホスト情報106の一例を示す図である。図12に示すコンピュートホスト情報106は、フィールド251~253を含む。なお、コンピュートホスト情報106は、当該サーバ20が備えるコンピュートホスト27(以下、当該コンピュートホスト27と称する)ごとに用意される。
フィールド251は、当該コンピュートホスト27を識別する識別情報であるコンピュートホストIDを格納する。フィールド252は、当該コンピュートホスト27上で実行されるアプリケーションプログラム29を識別する識別情報であるアプリケーションIDを格納する。フィールド253は、当該コンピュートホスト27に関するモニタ情報であるコンピュートホストモニタ情報(Monitoring Information of Compute Host)を格納する。コンピュートホストモニタ情報は、例えば、当該コンピュートホスト27のハードウェア資源に対する負荷などである。
図13は、システムコントローラ情報107の一例を示す図である。図13に示すシステムコントローラ情報107は、フィールド261~263を含む。なお、システムコントローラ情報107は、当該サーバ20が備えるシステムコントローラ25(以下、当該システムコントローラ25と称する)ごとに用意される。
フィールド261は、当該システムコントローラ25を識別する識別情報であるシステムコントローラIDを格納する。フィールド262は、当該サーバ20(当該システムコントローラ25を実行するサーバ20)のサーバIDを格納する。フィールド263は、当該システムコントローラ25に関するモニタ情報であるシステムコントローラモニタ情報(Monitoring Information of System Controller)を格納する。コンピュートホストモニタ情報は、例えば、当該システムコントローラ25のハードウェア資源に対する負荷などである。
図14は、フォールトドメイン情報108の一例を示す図である。図14に示すフォールトドメイン情報108は、フィールド271~274を含む。
フィールド271は、当該サーバ20が属するフォールトドメイン2(以下、当該フォールトドメイン2と称する)を識別情報であるフォールトドメインID(Fault Domain ID)を格納する。フィールド272は、当該フォールトドメイン2に属するサーバ20のサーバIDの一覧であるサーバIDリストを格納する。フィールド273は、当該フォールトドメイン2に属するストレージデバイスボックス10のストレージデバイスボックスIDの一覧であるストレージデバイスボックスIDリストを格納する。フィールド274は、当該フォールトドメイン2に属するネットワーク3のネットワークIDの一覧であるネットワークIDリストを格納する。
図15は、ストレージコントローラ情報109の一例を示す図である。図15に示すストレージコントローラ情報109は、フィールド281~284を含む。なお、ストレージコントローラ情報109は、当該サーバ20が備えるストレージコントローラ26(以下、当該ストレージコントローラ26と称する)ごとに用意される。
フィールド281は、当該ストレージコントローラ26を識別する識別情報であるストレージコントローラIDを格納する。フィールド282は、当該サーバ20(当該ストレージコントローラ26を実行するサーバ20)のサーバIDを格納する。フィールド283は、当該ストレージコントローラ26がオーナ権を有するボリュームを識別する識別情報であるボリュームIDの一覧であるボリュームIDリスト(Volume ID List)を格納する。フィールド284は、当該ストレージコントローラ26がオーナ権を有するブロックマッピング情報111の一覧であるブロックマッピング情報リストを格納する。
図16は、ボリューム情報110の一例を示す図である。図16に示すボリューム情報110は、フィールド291~297を含む。なお、ボリューム情報110は、当該ストレージコントローラ26がオーナ権を有するボリューム28(以下、当該ボリューム28と称する)ごとに用意される。
フィールド291は、当該ボリューム28を識別する識別情報であるボリュームID(Volume ID)を格納する。フィールド292は、当該ボリューム28のオーナ権を有するストレージコントローラ26のストレージコントローラIDを格納する。フィールド293は、当該ボリューム28を使用するコンピュートホスト27のコンピュートホストIDを格納する。フィールド294は、当該ボリューム28に対応する論理ブロックを有するブロックマッピング情報111の一覧であるブロックマッピング情報リストを格納する。フィールド295は、当該ボリューム28に対して適用されるデータ管理機能を示すストレージ特徴情報(Storage Features Information)を格納する。フィールド296は、当該ボリューム28に関するモニタ情報であるボリュームモニタ情報(Monitoring Information of Volume)を格納する。ボリュームモニタ情報は、例えば、IOPS(当該ボリューム28のハードウェア資源に対する負荷)などである。フィールド297は、当該ボリューム28のボリュームマイグレーションのコスト(移動データ量、CPU負荷など)である移動コスト(マイグレーション処理コスト)を示す移動コスト情報(Cache of Current Volume Migration Cost)を格納する。
図17は、ブロックマッピング情報111の一例を示す図である。図17に示すブロックマッピング情報111は、フィールド301~303を含む。なお、ブロックマッピング情報111は、当該ストレージコントローラ26がオーナ権を有するブロックマッピング情報111(以下、当該ブロックマッピング情報111と称する)ごとに用意される。
フィールド301は、当該ブロックマッピング情報111を識別する識別情報であるブロックマッピングID(Block Mapping ID)を格納する。フィールド302は、当該ブロックマッピング情報111に関連する関連論理ブロックに関する論理ブロック情報を格納する。フィールド303は、当該ブロックマッピング情報111に関連する関連物理ブロックに関する物理ブロック情報を格納する。
重複排除機能及びスナップショット機能のようなデータ管理機能が使用される場合、複数のボリュームが同一の物理ブロックを共用することがあるため、論理ブロック情報は、ボリュームごとに設けられる。各論理ブロック情報は、関連論理ブロックに対応するボリュームのボリュームIDと、関連論理ブロックの論理アドレス(LBA:Logical Block Address)と、関連論理ブロックのサイズ(Logical Block Size)とを含むタプル(tuple)である。
物理ブロック情報は、ストレージデバイスごとに設けられる。各物理ブロック情報は、関連物理ブロックに対応するストレージデバイスのストレージデバイスIDと、関連物理ブロックの開始アドレス(Physical Block Address)と、使用されるデータ保護機能の種別(Data Protection Type)と、データ保護機能によるデータ保護の組みの中での優先度(Rank)とを含むタプルである。
図18は、ストレージデバイスボックス10のメモリ13に記憶されたメタデータ及びプログラムの内部構成を示す図である。図18に示すメタデータ400は、当該メタデータ100を記憶しているストレージデバイスボックス10(以下、当該ストレージデバイスボックス10と称する)に関するデータであり、ストレージデバイスボックス情報(Storage Device Box Information)401と、ストレージデバイス情報402と、ネットワーク情報403と、ネットワークI/F情報404と、システムコントローラ情報405と、フォールトドメイン情報406と、ストレージデバイスボックスコントローラ情報(Storage Device Box Controller Information)407と、を有する。また、プログラム450は、システムコントローラ15と、ストレージデバイスボックスコントローラ16とを有する。
図19は、ストレージデバイスボックス情報401の一例を示す図である。図19に示すストレージデバイスボックス情報401は、フィールド411~416を含む。
フィールド411は、当該ストレージデバイスボックス10を識別する識別情報であるストレージデバイスボックスID(Storage Device Box ID)を格納する。フィールド412は、当該ストレージデバイスボックス10が属するフォールトドメイン2のフォールトドメインIDを格納する。フィールド413は、当該ストレージデバイスボックス10に記憶されているネットワークI/F情報404の一覧であるネットワークI/F情報リストを格納する。フィールド414は、当該ストレージデバイスボックス10に記憶されているストレージデバイス情報402の一覧であるストレージデバイス情報リストを格納する。フィールド415は、当該ストレージデバイスボックス10のハードウェアに関するストレージデバイスボックスハードウェア情報(Hardware Information of Storage Device Box)を格納する。フィールド416は、当該ストレージデバイスボックス10のハードウェア及びソフトウェアに関連するモニタ情報であるストレージデバイスボックスモニタ情報(Monitoring Information of Storage Device Box)を格納する。ストレージデバイスボックスモニタ情報は、例えば、メモリ13及びCPU14の負荷(利用率)などである。
なお、図18において、ストレージデバイス情報402、ネットワーク情報403、ネットワークI/F情報404、システムコントローラ情報405、フォールトドメイン情報406及びストレージデバイスボックスコントローラ情報407は、それぞれストレージデバイス情報102、ネットワーク情報103、ネットワークI/F情報104、システムコントローラ情報107、フォールトドメイン情報108及びストレージコントローラ情報109と対応している。
ただし、ストレージデバイス情報402では、図8に示したサーバIDの代わりにストレージデバイスボックスIDを格納する。システムコントローラ情報107では、図13に示したサーバIDの代わりにストレージデバイスボックスIDを格納する。
以上説明したメタデータ100及び400は、ストレージデバイスボックス10のストレージデバイス11及びサーバ20のストレージデバイス21の少なくとも一方に永続化(格納)されてもよい。このとき、同じメタデータを複数のストレージデバイスに格納することで、メタデータの冗長化が行われてもよい。メタデータ100及び400を格納するストエージデバイスは特に限定されない。また、プログラム150及び450もストレージデバイス11及び21の少なくとも一方に永続化されてもよい。また、各メタデータに含まれる種々の識別情報(ID)は、計算機システム1でユニークな値であるとする。識別情報は、例えば、数値又はUUID(Universally Unique Identifier)のような文字列で構成される。
図20は、本計算機システムによるライト処理の一例を説明するためのフローチャートである。サーバ20のアプリケーションプログラム29がライト要求を発行すると、以下のライト処理が実行される。
ライト処理では、先ず、コンピュートホスト27は、ストレージコントローラ26に対してライト要求を発行する(ステップS501)。ストレージコントローラ26は、ライト要求を受信すると、メモリ23に格納されているメタデータから、ライト要求の対象となるボリューム28に関するメタデータを取得する(ステップS502)。
ストレージコントローラ26は、取得したメタデータに基づいて、ライト要求にてライトデータが書き込まれる記憶領域(物理ブロック)の新規割当が必要か否かを判断する(ステップS503)。新規割当は、所定のデータ管理機能が有効な場合、必要となる。、所定のデータ管理機能は、例えば、データ保護機能、圧縮機能、重複解除機能、スナップショット機能及びシンプロビジョニング機能である。ただし、シンプロビジョニング機能の場合には、ライトデータに記憶領域が未割当の場合のみ、新規割当が必要となる。なお、ライト要求が多いほど、新規割当によりボリューム28に関するメタデータ量が増加する
新規割当が必要な場合、ストレージコントローラ26は、新規割当処理(図21参照)を実行して、ライト要求に応じたライトデータを格納する物理ブロックを決定する(ステップS504)。新規割当が必要でない場合、ストレージコントローラ26は、ステップS504の処理をスキップする。
ストレージコントローラ26は、ライトデータを格納する記憶領域を有するストレージデバイス11又は21を有するストレージデバイスボックス10又はサーバ20のストレージデバイスボックスコントローラ16又はストレージコントローラ26にライト要求を転送する(ステップS505)
ストレージデバイスボックスコントローラ16又はストレージコントローラ26は、ライト要求を受信すると、そのライト要求に従ってストレージデバイス11又は21にライトデータをライトし、その処理結果を、ライト要求の送信元であるストレージコントローラ26に返却する(ステップS506)。
ストレージコントローラ26は、処理結果を受信すると、その処理結果をコンピュートホスト27に返却する(ステップS507)。コンピュートホスト27は、処理結果をアプリケーションプログラム29に返却する(ステップS508)。
また、ストレージコントローラ26は、ガベージコレクションが必要か否かを判断する(ステップS509)。例えば、新たなデータを新たな物理ブロックに追記するログ構造化方式に対応しているデータ管理機能(所定のデータ管理機能(圧縮機能、重複排除機能、スナップショット機能及びデータ保護機能など)が使用される場合、ストレージコントローラ26は、ガベージコレクションが必要と判断する。
ガベージコレクションが必要な場合、ストレージコントローラ26は、ガベージコレクションのジョブを起動して(ステップS510)、処理を終了する。一方、ガベージコレクションが必要でない場合、ストレージコントローラ26は、ステップS510の処理をスキップして処理を終了する。ガベージコレクションのジョブは、同期実行方式のジョブでもよいし、非同期実行方式のジョブでもよい。
図21は、図20のステップS504の新規割当処理の一例を説明するためのフローチャートである。
新規割当処理では、ストレージコントローラ26は、ライト要求と、ライト要求の対象となるボリューム28に対して有効なデータ管理機能(例えば、データ削減機能及びデータ容量仮想化機能など)の設定に基づいて、ライト要求によるライトデータの格納に必要な記憶領域のサイズを算出する(ステップS601)。
ストレージコントローラ26は、算出したデータ領域のサイズと、ライト要求の対象となるボリューム28に対して有効なデータ保護機能の設定とに基づいて、ストレージデバイス11及び21の空き領域を検索して記憶領域を確保する(ステップS602)。
ストレージコントローラ26は、メタデータの作成及び更新を実行し(ステップS603)、処理を終了する。
図22は、本計算機システムによるリード処理の一例を説明するためのフローチャートである。サーバ20のアプリケーションプログラム29がリード要求を発行すると、以下のリード処理が実行される。
リード処理では、先ず、コンピュートホスト27は、ストレージコントローラ26に対してリード要求を発行する(ステップS701)。ストレージコントローラ26は、リード要求を受信すると、メモリ23に格納されているメタデータから、リード要求の対象となるボリューム28に関するメタデータを取得する(ステップS502)。
ストレージコントローラ26は、取得したメタデータに基づいて、リード要求によるリード対象のデータが記憶された記憶領域(物理ブロック)が割り当て済みか否かを判断する(ステップS703)。
記憶領域が割り当て済みの場合、ストレージコントローラ26は、リード要求によるリード対象のデータが記憶された記憶領域を有するストレージデバイス11又は21を有するストレージデバイスボックス10又はサーバ20のストレージデバイスボックスコントローラ16又はストレージコントローラ26にリード要求を転送する(ステップS704)
ストレージデバイスボックスコントローラ16又はストレージコントローラ26は、リード要求を受信すると、そのリード要求に従ってストレージデバイス11又は21からリードデータをリードし、その処理結果を、リード要求の送信元であるストレージコントローラ26に返却する(ステップS705)。
ストレージコントローラ26は、処理結果を受信すると、その処理結果をコンピュートホスト27に返却する(ステップS706)。コンピュートホスト27は、処理結果をアプリケーションプログラム29に返却して(ステップS707)、処理を終了する。
なお、上記のリード処理のステップS703で記憶領域が割り当て済みでない場合、ストレージコントローラ26は、ステップS704及びS705の処理をスキップし、ステップS706でゼロデータ又は記憶領域が未割当であることを示す情報を処理結果としてコンピュートホスト27に返却する。
図23は、マイグレーションの概要を説明するための図である。
マイグレーションは、サーバ20の負荷を分散させるために、ストレージデバイス11及び21に記憶されたデータに対するリード及びライトを行うサーバ20を他のサーバに移行する処理である。本実施形態では、計算機システム1は、ストレージデバイス11及び12に格納されているデータを移動させるデータマイグレーションをなるべく行わずに、ボリューム28を移動させるボリュームマイグレーション(Volume Migration)を行うことで、負荷分散を行う。より具体的には、計算機システム1は、ボリューム28のオーナ権を移動させるメタマイグレーションを行う。このとき、移動元(Source)及び移動先(Destination)のサーバ20は、それらのサーバ20間の関係性などに基づいて、マイグレーションの移動コストが低くなるように選択される。例えば、フォールトドメイン2間の通信は、フォールトドメイン2内の通信と比べて、通常、ホップ数及びレイテンシなどが大きくなるため、移動元及び移動先のサーバ20は、同じフォールトドメイン2に属するサーバ20(つまり、ストレージデバイスボックス10を共用する(Shared)するサーバ20)から選択されることが望ましい。
以下では、マイグレーションについてより詳細に説明する。
図24は、計算機システム1によるマイグレーションのジョブが起動された際のマイグレーションジョブ処理の一例を説明するためのフローチャートである。マイグレーションジョブ処理は、所定の契機によりサーバ20のストレージコントローラ26にて実行される。所定の契機は、例えば、新たなサーバ20が計算機システム1に追加された場合、サーバ20のいずれかが計算機システム1から削除された場合、及び、サーバ20のいずれかが別のサーバ20に交換された場合などである。また、所定の契機は、サーバ20のいずれかが高負荷となるなど、計算機システム1の負荷分散の必要が生じた場合などでもよい。
マイグレーションジョブ処理では、ストレージコントローラ26は、マイグレーションの候補となるボリューム28である候補ボリュームごとに、その候補ボリュームの移動先のサーバの候補である移動先サーバ候補を評価する「移動先サーバ候補の評価処理(図25参照)」を実行する(ステップS801)。候補ボリュームは、例えば、サーバ20単位で指定されてもよいし、ストレージコントローラ26単位で指定されてもよいし、個々のボリューム28単位で指定されてもよい。移動先サーバ候補は、例えば、候補ボリュームを有するサーバ20以外の全てのサーバ20である。
続いて、ストレージコントローラ26は、ステップS801の移動先サーバ候補の評価処理の評価結果に基づいて、候補ボリュームの移動先(マイグレーション先)サーバとして選択可能な移動先サーバ候補である移動可能サーバ候補が存在する候補ボリュームの中から、移動させるボリュームである移動対象ボリュームを選択する「移動対象ボリュームの選択処理(図26参照)」を実行する(ステップS802)。
ストレージコントローラ26は、移動対象ボリュームの選択処理にて移動対象ボリュームが選択されたか否かを判断する(ステップS803)。
移動対象ボリュームが選択された場合、ストレージコントローラ26は、その移動対象ボリュームに対して「マイグレーション処理」(図27参照)を実行して(ステップS804)、処理を終了する。なお、移動対象ボリュームが選択されていない場合、ストレージコントローラ26は、ステップS804の処理をスキップして処理を終了する。
図25は、図4のS801の移動先サーバ候補の評価処理の一例を説明するためのフローチャートである。ストレージコントローラ26は、以下の移動先サーバ候補の評価処理を、候補ボリュームごとに行う。
移動先サーバ候補の評価処理では、ストレージコントローラ26は、計算機システム1内のサーバ20のいずれかを、移動先サーバ候補として選択し、その移動先サーバ候補がメタマイグレーションの可能なサーバか否かを判断する(ステップS901)。メタマイグレーションの可能なサーバは、例えば、リソース(メモリ13、CPU14及びストレージデバイス11及び21)に空きがあり、かつ、当該候補ボリュームを有するサーバ20と同じストレージデバイスボックス10を共用しているサーバ(例えば、同じフォールトドメイン2に含まれるサーバ)である。なお、リソースに空きがあるサーバ20は、例えば、各リソースの負荷(メモリ23及びCPU24の使用量など)が所定値よりも低いサーバである。
移動先サーバ候補がメタマイグレーションの可能なサーバの場合、ストレージコントローラ26は、その移動先サーバ候補が候補ボリュームに関するメタデータのレプリケーション先のサーバか否かを判断する(ステップS902)。レプリケーション先のサーバは、メタデータを冗長化した場合に、そのメタデータのレプリカを格納しているサーバである。
移動先サーバ候補がレプリケーション先のサーバの場合、ストレージコントローラ26は、移動先サーバ候補を「メタデータ転送レスメタマイグレーション可能な移動先サーバ」として評価する(ステップS903)。一方、移動先サーバ候補がレプリケーション先のサーバでない場合、ストレージコントローラ26は、移動先サーバ候補を「メタデータ転送メタマイグレーション可能な移動先サーバ」として評価する(ステップS904)。メタデータ転送レスメタマイグレーション及びメタデータ転送メタマイグレーションは、共にメタマイグレーションの一種である。メタデータ転送レスメタマイグレーションは、メタデータの転送を行わずに、オーナ権だけを移動させるマイグレーションであり、メタデータ転送メタマイグレーションは、メタデータを転送すると共にオーナ権を移動させるマイグレーションである。
また、移動先サーバ候補がメタマイグレーションの可能なサーバでない場合、ストレージコントローラ26は、移動先サーバ候補がデータマイグレーションの可能なサーバか否かを判断する(ステップS905)。データマイグレーションの可能なサーバは、リソースに空きがあり、当該候補ボリュームを有するサーバ20とネットワーク30等を介して接続されているサーバである。ただし、当該候補ボリュームを有するサーバ20が格納しているデータと同じ冗長化グループに属するデータを格納しているサーバは、データマイグレーションの可能なサーバから除外される。冗長化グループは、データとそのデータを復元するための冗長コードとを含むグループである。
移動先サーバ候補がデータマイグレーションの可能なサーバである場合、ストレージコントローラ26は、移動先サーバ候補を「データマイグレーション可能な移動先サーバ」として評価する(ステップS906)。一方、移動先サーバ候補がデータマイグレーションの可能なサーバでない場合、ストレージコントローラ26は、移動先サーバ候補を「マイグレーションできない移動先サーバ」として評価する(ステップS907)。
そして、ステップS903、S904、S906又はS907で移動先サーバ候補を評価すると、ストレージコントローラ26は、計算機システム1内の全てのサーバ20を移動先サーバ候補として選択したか否かを判断する(ステップS908)。
全てのサーバ20を選択していない場合、ストレージコントローラ26は、ステップS901の処理に戻り、未だ選択されていないサーバを移動先サーバ候補として選択する。一方、全てのサーバを選択した場合、ストレージコントローラ26は、移動先サーバ候補の評価処理を終了する。
図26は、図24のステップS802の移動対象ボリュームの選択処理の一例を説明するためのフローチャートである。
移動対象ボリュームの選択処理では、先ず、ストレージコントローラ26は、移動先サーバ候補の評価処理の評価結果に基づいて、候補ボリュームのうち、移動可能サーバ候補が存在する候補ボリュームのいずれかを対象候補ボリュームとして選択し、その対象候補ボリュームに関するメタデータのデータ量であるメタデータ量を算出する(ステップS1001)。移動可能サーバ候補は、移動先サーバ候補の評価処理において、メタデータ転送レスメタマイグレーション可能な移動先サーバ、メタデータ転送メタマイグレーション可能な移動先サーバ及びメタマイグレーションの可能な移動先サーバと評価されたサーバである。
対象候補ボリュームに関するメタデータは、対象候補ボリュームの管理に必要な管理情報であり、例えば、対象候補ボリュームのボリューム情報110及び対象候補ボリュームの(割り当て済みの)論理ブロックに対応するブロックマッピング情報111などである。メタデータ量は、例えば、対象候補ボリュームに関するメタデータのデータ量そのものでもよいし、対象候補ボリュームにおける割り当て済みの論理ブロックを有するブロックマッピング情報の数でもよいし、対象候補ボリュームにおける割り当て済みの論理ブロックのブロックマッピング情報へのエントリ数でもよいし、対象候補ボリュームにおける割り当て済みの論理ブロックを有するブロックマッピング情報111の1つ当たりの対象候補ボリュームに関するデータ量とエントリ数との積などでもよい。
ストレージコントローラ26は、対象候補ボリュームに関連するボリューム28である関連ボリュームのメタデータ量である関連メタデータ量を算出する(ステップS1002)。関連ボリュームは、重複排除機能及びスナップショット機能などのデータ管理機能が有効な場合に生じ、例えば、対象候補ボリュームの割り当て済みの論理ブロックと同じ物理ブロックにマッピングされている論理ブロックを有するボリュームである。関連ボリュームは複数あってもよい。関連ボリュームは、対象候補ボリュームを提供するサーバ20と同じサーバ20にて提供される方が運用時のコスト的に有利であるため、ボリュームマイグレーション時に対象候補ボリュームと共に同じ移動先サーバにマイグレーションすることが好ましい。関連メタデータ量は、各関連ボリュームのメタデータ量の総和である。関連ボリュームのメタデータ量の算出方法は、対象候補ボリュームのメタデータ量の算出方法と同様である。
ストレージコントローラ26は、対象候補ボリュームのメタデータ量と、関連ボリュームの関連メタデータ量とに基づいて、対象候補ボリュームのマイグレーションに係る負荷である移動コストを評価する(ステップS1003)。移動コストは、例えば、対象候補ボリュームのメタデータ量と関連ボリュームの関連メタデータ量との和である。
そして、ストレージコントローラ26は、移動可能サーバ候補が存在する候補ボリュームを全て選択したか否かを判断する(ステップS1004)。移動可能サーバ候補が存在する候補ボリュームを全て選択していない場合、ストレージコントローラ26は、ステップS1001の処理に戻り、未だ選択されていない移動可能サーバ候補が存在する候補ボリュームを選択する。
移動可能サーバ候補が存在する候補ボリュームを全て選択した場合、ストレージコントローラ26は、予め定められたボリューム選択ポリシーと、各候補ボリュームの移動コストとに基づいて、マイグレーションを実行する候補ボリュームを移動対象ボリュームとして決定する(ステップS1005)。
ボリューム選択ポリシーは、例えば、「移動コストが最も低い候補ボリュームを移動対象ボリュームとして決定する」などである。このとき、移動コストが最も低い候補ボリュームが複数ある場合、ストレージコントローラ26は、その複数の候補ボリュームのそれぞれを移動対象ボリュームとして決定してもよいし、その複数の候補ボリュームのいずれかを移動対象ボリュームとして決定してもよい。また、ボリューム選択ポリシーは、例えば、「移動コストが低い方から順に所定個の候補ボリュームを移動対象ボリュームとして決定する」でもよいし、「移動コストが閾値以下の候補ボリュームを移動対象ボリュームとして決定する」などでもよい。また、ボリューム選択ポリシーは、「候補ボリュームを有するサーバ20の負荷(例えば、CPU24の負荷)が閾値以下となるように、移動コストが低い方から順に移動対象ボリュームを決定する」などでもよい。なお、ボリューム選択ポリシーは、「移動可能サーバ候補が存在する候補ボリュームの全て」でもよい。この場合、候補ボリュームの移動コストの算出を省略することができる。
ストレージコントローラ26は、予め定められたサーバ選択ポリシーに基づいて、移動対象ボリュームごとに、その移動対象ボリュームの移動先サーバ候補のいずれかを移動先サーバとして決定し、移動対象ボリュームと移動先サーバとの組み合わせのリストを生成して(ステップS1006)、処理を終了する。
移動先サーバの決定では、ストレージコントローラ26は、移動先サーバ候補に対して、優先度を、高い方から「メタデータ転送レスメタマイグレーション可能な移動先サーバ」、「メタデータ転送メタマイグレーション可能な移動先サーバ」「データマイグレーション可能な移動先サーバ」の順に設定し、優先度の最も高い移動先サーバ候補を移動先サーバとして決定する。なお、同じ優先度の移動先サーバ候補が複数ある場合、ストレージコントローラ26は、その複数の移動先サーバ候補のいずれかを移動先サーバとして決定する。このとき、ストレージコントローラ26は、異なる移動対象ボリュームの移動先サーバができるだけ異なるように、移動先サーバが決定してもよい。また、ストレージコントローラ26は、各移動先サーバのリソースの状況などに応じて移動先サーバを決定してもよい
図27は、図24のステップS804のマイグレーション処理の一例を説明するためのフローチャートである。以下では、マイグレーション処理として、ボリューム28とそのボリュームの提供を受けるコンピュートホスト27との両方を移動先サーバにマイグレーションする「コンピュートホストとボリュームのマイグレーション処理」の一例を説明する。コンピュートホストとボリュームのマイグレーション処理は、移動先サーバがメタデータ転送レスメタマイグレーション及びメタデータ転送メタマイグレーション可能な場合に行われる。なお、移動先サーバがデータマイグレーション可能な場合に行われるデータマイグレーションの説明は省略する。
コンピュートホストとボリュームのマイグレーション処理は、移動対象ボリュームを有するサーバ20である移動元サーバのストレージコントローラ26が移動対象ボリュームごとに行う。具体的には、先ず、ストレージコントローラ26は、移動対象ボリュームに関するメタデータの転送が必要か否かを判断する(ステップS1101)。具体的には、ストレージコントローラ26は、移動対象ボリュームに対応する移動先サーバがメタデータ転送レスメタマイグレーション可能な場合、メタデータの転送が必要ないと判断し、移動対象ボリュームに対応する移動先サーバがメタデータ転送メタマイグレーション可能な場合、メタデータの転送が必要であると判断する。
メタデータの転送が必要な場合、ストレージコントローラ26は、メタデータのスナップショットを作成する(ステップS1102)。その後、ストレージコントローラ26は、そのスナップショットをメタデータとして移動先サーバへの転送を行う(ステップS1103)。なお、対象候補ボリュームに関連ボリュームが存在する場合、ストレージコントローラ26は、その関連ボリュームのメタデータのスナップショットの作成と転送も行う。
ストレージコントローラ26は、転送が終了すると、その転送したスナップショットと保持しているメタデータとの差分のスナップショットに対する割合である差分割合が規定量未満か否かを判断する(ステップS1104)。この段階では、移動元サーバのコンピュートホスト27は停止されていないので、スナップショットの転送中に移動対象ボリュームに対するライト処理が発生してメタデータが更新され、メタデータとそのスナップショットとに差が生じることがある。なお、規定量は、例えば、5%である。
差分割合が規定量以上の場合、ストレージコントローラ26は、ステップS1102の処理に戻る。なお、ステップS1103では、ストレージコントローラ26は、メタデータとそのスナップショットとの差分に該当するデータを転送してもよい。
ステップS1101でメタデータの転送が必要ないと判断された場合、又は、ステップS1104で差分が規定量未満と判断された場合、ストレージコントローラ26は、移動元サーバのコンピュートホスト27を一時停止する(ステップS1105)。
ストレージコントローラ26は、移動元のメタデータと移動先のメタデータとに差分があるか否かを判断する(ステップS1106)。なお、ステップS1101でメタデータの転送が必要ないと判断された場合には、ストレージコントローラ26は、メタデータに差分がないと判断する。
差分がある場合、ストレージコントローラ26は、その差分を転送する(ステップS1107)。差分がない場合、ストレージコントローラ26は、ステップS1107の処理をスキップする。
そして、ストレージコントローラ26は、移動先のサーバに、転送したメタデータに応じたボリューム28の提供を受けるコンピュートホスト27を起動させることで、コンピュートホスト27のマイグレーションを行い(ステップS1108)、処理を終了する。ステップS1108では、ストレージコントローラ26は、コンピュートホスト27の起動に必要なデータ(転送したメタデータに応じたボリューム28のオーナ権など)を移動先のサーバに渡す。
なお、コンピュートホスト27のマイグレーションが何らかの理由でできない場合には、ボリューム28のマイグレーションだけを行ってもよい。また、メタデータの転送を行う前に、移動元サーバ上のコンピュートホスト27を停止してもよい。この場合、メタデータの転送中に移動対象ボリュームに対するライト処理が発生することがない、メタデータのスナップショットを作成する必要はない。
以上説明したように本実施形態によれば、各サーバ20は、ストレージデバイス11及び21の物理ブロックにマッピングされた論理ブロックを有するボリューム28を管理するためのメタデータを格納し、そのメタデータに応じてボリューム28をコンピュートホスト27に提供する。計算機システム1は、ボリューム28ごとに、そのボリューム28のメタデータのデータ量であるメタデータ量を算出し、各メタデータ量に基づいて、ボリューム28の中から移動対象ボリュームを決定し、当該移動対象ボリュームをコンピュートホスト27に提供するサーバ20を移動先のサーバ20に移行するボリュームマイグレーションを行う。したがって、ボリューム28のメタデータのメタデータ量に基づいて移動対象ボリュームが決定されるので、マイグレーションの移動負荷を低減することが可能になる。
また、本実施形態では、計算機システム1は、移動対象ボリュームが有する論理ブロックと同じ物理ブロックにマッピングされている論理ブロックを有するボリューム28である関連ボリュームに対してさらにボリュームマイグレーションを行う。特に、このとき、関連ボリュームをコンピュートホストに提供する計算機ノードを移動対象ボリュームの移動先の計算機ノードに移行する。したがって、移動対象ボリュームと関連ボリュームとを同一のサーバ20で管理することが可能となるため、計算機システム1の負荷をより適切に分散することが可能になる。
また、本実施形態では、計算機システム1は、ボリューム28ごとに、当該ボリュームの関連ボリュームのデータ量である関連メタデータ量を算出し、各メタデータ量及び各関連メタデータ量に基づいて、移動対象ボリュームを決定する。したがって、移動対象ボリュームのメタデータと共に転送される関連ボリュームのデータ量を考慮して移動対象ボリュームが決定されるので、マイグレーションの移動負荷をより適切に低減することが可能になる。
また、本実施形態では、計算機システム1は、移動対象ボリュームを提供している移動元のサーバ20と各サーバ20との関係性に基づいて、移動先のサーバ20を決定する。このため、適切な移動先へのマイグレーションが可能になる。
また、本実施形態では、計算機システム1は、移動元のサーバ20とストレージデバイス11又は21を共有しているサーバを移動先のサーバに決定する。このため、データの移行(データマイグレーション)を行わずに、マイグレーションが可能となるため、マイグレーションの移動負荷をより適切に低減することが可能になる。
また、本実施形態では、ストレージデバイス11は、複数のサーバ20とネットワーク30を介して接続された複数のデバイスボックス2のそれぞれに収容されている。このため、各サーバ20が他のサーバ20を経由することなく、ストレージデバイス21にアクセスすることが可能になるため、計算機システム1の負荷を低減することが可能となる。
また、本実施形態では、計算機システム1は、移動元のサーバとストレージデバイス11又は21を共有している計算機ノードの中で、移動対象ボリュームのメタデータのレプリカを格納しているサーバ20が存在する場合、そのサーバ20を移動先のサーバに決定する。このため、レプリカを管理情報として使用することが可能になるため、管理情報の移行を行わずにボリュームマイグレーションが可能となり、マイグレーションの移動負荷をより適切に低減することが可能になる。
上述した本開示の実施形態は、本開示の説明のための例示であり、本開示の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本開示の範囲を逸脱することなしに、他の様々な態様で本開示を実施することができる。
1:計算機システム、2:フォールトドメイン、3:ネットワーク、10:ストレージデバイスボックス、11:ストレージデバイス、12:ネットワークI/F、13:メモリ、14:CPU、15:システムコントローラ、16:ストレージデバイスボックスコントローラ、20:サーバ、21:ストレージデバイス、22:ネットワークI/F、23:メモリ、24:CPU、25:システムコントローラ、26:ストレージコントローラ、27:コンピュートホスト、28:ボリューム、29:アプリケーションプログラム、30:ネットワーク

Claims (9)

  1. データを記憶する記憶デバイスと、前記記憶デバイスに対するリード及びライトを行う複数の計算機ノードと、を有する計算機システムであって、
    各計算機ノードは、
    前記記憶デバイスの物理的な記憶領域にマッピングされた論理的な記憶領域を有するボリュームを提供するコントローラと、当該提供されたボリュームに対するI/O要求を行うコンピュートホストと、前記ボリュームを管理するための管理情報と、を有し、
    前記複数の計算機ノードのいずれかである移動元の計算機ノードのコントローラは、
    当該計算機ノードが管理する前記ボリュームごとに、当該ボリュームを管理するための管理情報のデータ量であるメタデータ量を算出し、各メタデータ量に基づいて、当該ボリュームの中から移動対象ボリュームを決定し、当該移動対象ボリュームと当該移動対象ボリュームの提供を受ける前記コンピュートホストとを移動先の計算機ノードに移行するボリュームマイグレーションを行う、計算機システム。
  2. 前記コントローラは、前記移動対象ボリュームが有する論理的な記憶領域と同じ物理的な記憶領域にマッピングされている論理的な記憶領域を有するボリュームである関連ボリュームに対してさらに前記ボリュームマイグレーションを行う、請求項1に記載の計算機システム。
  3. 前記コントローラは、前記ボリュームごとに、当該ボリュームの前記関連ボリュームを管理するための管理情報のデータ量である関連メタデータ量を算出し、各メタデータ量及び各関連メタデータ量に基づいて、前記移動対象ボリュームを決定する、請求項2に記載の計算機システム。
  4. 前記コントローラは、前記移動対象ボリュームの前記関連ボリュームを前記コンピュートホストに提供する計算機ノードを前記移動先の計算機ノードに移行する、請求項2に記載の計算機システム。
  5. 前記コントローラは、当該移動元の計算機ノードと各計算機ノードとの関係性に基づいて、前記移動先の計算機ノードを決定する、請求項1に記載の計算機システム。
  6. 前記記憶デバイスは、複数あり、
    複数の前記計算機ノードには、リード及びライトを行う前記記憶デバイスを共用しているものがあり、
    前記コントローラは、当該移動元の計算機ノードと前記記憶デバイスを共用している計算機ノードを前記移動先の計算機ノードに決定する、請求項5に記載の計算機システム。
  7. 前記記憶デバイスは、複数の前記計算機ノードとネットワークを介して接続された複数のデバイスボックスのそれぞれに収容されている、請求項6に記載の計算機システム。
  8. 前記コントローラは、当該移動元の計算機ノードと前記記憶デバイスを共用している計算機ノードの中で、前記移動対象ボリュームの管理情報のレプリカを格納している前記計算機ノードが存在する場合、当該計算機ノードを前記移動先の計算機ノードに決定する、請求項6に記載の計算機システム。
  9. データを記憶する記憶デバイスと、前記記憶デバイスに対するリード及びライトを行う複数の計算機ノードと、を有し、各計算機ノードは、前記記憶デバイスの物理的な記憶領域にマッピングされた論理的な記憶領域を有するボリュームを提供するコントローラと、当該提供されたボリュームに対するI/O要求を行うコンピュートホストと、前記ボリュームを管理するための管理情報と、を有する、計算機システムによる負荷分散方法であって、
    前記複数の計算機ノードのいずれかである移動元の計算機ノードのコントローラが、
    当該計算機ノードが管理する前記ボリュームごとに、当該ボリュームを管理するための管理情報のデータ量であるメタデータ量を算出し、
    各メタデータ量に基づいて、当該ボリュームの中から移動対象ボリュームを決定し、当該移動対象ボリュームと当該移動対象ボリュームの提供を受ける前記コンピュートホストとを移動先の計算機ノードに移行するボリュームマイグレーションを行う、負荷分散方法
JP2020169812A 2020-10-07 2020-10-07 計算機システム及び負荷分散方法 Active JP7229214B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020169812A JP7229214B2 (ja) 2020-10-07 2020-10-07 計算機システム及び負荷分散方法
US17/187,071 US11550488B2 (en) 2020-10-07 2021-02-26 Computer system and load distribution method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020169812A JP7229214B2 (ja) 2020-10-07 2020-10-07 計算機システム及び負荷分散方法

Publications (2)

Publication Number Publication Date
JP2022061706A JP2022061706A (ja) 2022-04-19
JP7229214B2 true JP7229214B2 (ja) 2023-02-27

Family

ID=80931362

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020169812A Active JP7229214B2 (ja) 2020-10-07 2020-10-07 計算機システム及び負荷分散方法

Country Status (2)

Country Link
US (1) US11550488B2 (ja)
JP (1) JP7229214B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100100678A1 (en) 2008-10-16 2010-04-22 Hitachi, Ltd. Volume management system
WO2018029820A1 (ja) 2016-08-10 2018-02-15 株式会社日立製作所 計算機システム
JP2020086644A (ja) 2018-11-19 2020-06-04 株式会社日立製作所 ストレージシステム及びストレージシステムの管理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117244B2 (en) * 2007-11-12 2012-02-14 F5 Networks, Inc. Non-disruptive file migration
US8793443B2 (en) * 2011-09-09 2014-07-29 Lsi Corporation Methods and structure for improved buffer allocation in a storage controller
US8719533B2 (en) * 2011-09-20 2014-05-06 Hitachi, Ltd. Storage apparatus, computer system, and data migration method
US8832325B1 (en) * 2012-06-28 2014-09-09 Emc Corporation Transfer between storage devices
US10467107B1 (en) * 2017-11-01 2019-11-05 Pure Storage, Inc. Maintaining metadata resiliency among storage device failures
US10924548B1 (en) * 2018-03-15 2021-02-16 Pure Storage, Inc. Symmetric storage using a cloud-based storage system
US11169723B2 (en) * 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
US11226758B2 (en) * 2020-03-13 2022-01-18 EMC IP Holding Company LLC Volume migration using cross-appliance asymmetric namespace access group

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100100678A1 (en) 2008-10-16 2010-04-22 Hitachi, Ltd. Volume management system
JP2010097372A (ja) 2008-10-16 2010-04-30 Hitachi Ltd ボリューム管理方式
WO2018029820A1 (ja) 2016-08-10 2018-02-15 株式会社日立製作所 計算機システム
US20180285016A1 (en) 2016-08-10 2018-10-04 Hitachi, Ltd. Computer system
JP2020086644A (ja) 2018-11-19 2020-06-04 株式会社日立製作所 ストレージシステム及びストレージシステムの管理方法

Also Published As

Publication number Publication date
US20220107747A1 (en) 2022-04-07
JP2022061706A (ja) 2022-04-19
US11550488B2 (en) 2023-01-10

Similar Documents

Publication Publication Date Title
JP6957431B2 (ja) Hci環境でのvm/コンテナおよびボリューム配置決定方法及びストレージシステム
US10437486B2 (en) Method and apparatus for tenant-aware storage sharing platform
JP6231207B2 (ja) リソースの負荷バランシング
JP6807376B2 (ja) 仮想ストレージシステム
JP5685676B2 (ja) 計算機システム及びデータ管理方法
US10346075B2 (en) Distributed storage system and control method for distributed storage system
JP5595530B2 (ja) データ移行システム及びデータ移行方法
US7506101B2 (en) Data migration method and system
JP5073259B2 (ja) 仮想化システム及び領域割当て制御方法
JP5124551B2 (ja) ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法
JP5931196B2 (ja) I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法
US10895995B2 (en) Capacity based load balancing in distributed storage systems with deduplication and compression functionalities
US9886304B1 (en) Storage device sharing among virtual machines
JP2022539950A (ja) ストレージシステム、メモリ管理方法、および管理ノード
US11740823B2 (en) Storage system and storage control method
JP7229214B2 (ja) 計算機システム及び負荷分散方法
US20210334043A1 (en) Storage system and storage system control method
JP7107981B2 (ja) 計算機システム
JPWO2006054334A1 (ja) 記憶領域割当装置、記憶領域割当方法および記憶領域割当プログラム
US11550489B2 (en) Storage system and processing migration method
JP7140807B2 (ja) 仮想ストレージシステム
JP7113698B2 (ja) 情報システム
JP2004070971A (ja) 情報処理システム、記憶装置の割り当て方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230214

R150 Certificate of patent or registration of utility model

Ref document number: 7229214

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150