(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-02
(45)【発行日】2024-08-13
(54)【発明の名称】計算機クラスタ、管理方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20240805BHJP
G06F 13/10 20060101ALI20240805BHJP
【FI】
G06F3/06 304B
G06F13/10 340A
(21)【出願番号】P 2023036243
(22)【出願日】2023-03-09
(62)【分割の表示】P 2020208086の分割
【原出願日】2020-12-16
【審査請求日】2023-03-09
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】中村 隆喜
(72)【発明者】
【氏名】揚妻 匡邦
(72)【発明者】
【氏名】山本 貴大
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2004-178253(JP,A)
【文献】特開2010-033395(JP,A)
【文献】特開2020-173727(JP,A)
【文献】特開2006-302077(JP,A)
【文献】特開2020-052730(JP,A)
【文献】特開2002-297427(JP,A)
【文献】特開2020-154587(JP,A)
【文献】特開2020-008944(JP,A)
【文献】米国特許出願公開第2012/0210059(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 13/10-13/14
(57)【特許請求の範囲】
【請求項1】
プロセッサを有し複数のストレージを管理するストレージ管理システム、および前記複数のストレージを含む計算機クラスタであって、
前記ストレージは、複数の種類のコンポーネントを有して、前記複数のコンポーネントを組み合わせて、格納するデータの冗長化を行い、
前記コンポーネント自身に設定されている冗長度を示したコンポーネント管理情報を有し、
前記プロセッサは、前記コンポーネント管理情報と、前記ストレージに保存するデータに対するデータ保護の要求と、に基づき、
前記ストレージにおいてデータを格納する前記コンポーネントの組み合わせを決定し、
前記データ保護の要求には、障害の種類と冗長度との組合せが含まれ、
前記プロセッサは、前記データ保護の要求に含まれる前記障害の種類について、前記コンポーネント管理情報に記される前記コンポーネント自身の冗長度と、前記複数のコンポーネントを組み合わせて設定する冗長度と、の合計が、前記データ保護の要求に含まれるデータの冗長度を満たすように前記コンポーネントの組み合わせを決定する、計算機クラスタ。
【請求項2】
請求項1に記載の計算機クラスタであって、
前記複数のストレージに含まれる少なくとも1つのストレージは、前記計算機クラスタが管理しないバックエンドでのデータ保護であるバックエンド保護が実行されており、
前記バックエンド保護と前記データ保護の要求
から前記バックエンド保護により保護される要求を除き、残りの要求を満たすように前記ストレージにおいてデータを格納する前記コンポーネントの組み合わせを決定する計算機クラスタ。
【請求項3】
請求項1に記載の計算機クラスタであって、
前記データ保護の要求には、
稼働率が含まれ
、
前記プロセッサは、前記データ保護の要求に含まれる前記稼働率を満たすように前記コンポーネントの組み合わせを決定する計算機クラスタ。
【請求項4】
請求項1に記載の計算機クラスタであって、
前記データ保護の要求には、データ保護に要するコストが含まれ
、
前記プロセッサは、前記データ保護の要求に含まれる前記コストの条件を満たすように前記コンポーネントの組み合わせを決定する計算機クラスタ。
【請求項5】
請求項1に記載の計算機クラスタであって、
前記データ保護の要求には、前記ストレージを利用することが想定される想定アプリケーションが実施するデータ保護
であるアプリ保護の情報が含まれ、
前記プロセッサは、から前記アプリ保護により保護される要求を除き、残りの要求を満たすように前記ストレージにおいてデータを格納する前記コンポーネントの組み合わせを決定する計算機クラスタ。
【請求項6】
請求項1に記載の計算機クラスタであって、
前記複数のストレージにおける障害を検出し、障害が検出されたストレージに格納されていたデータを、当該データに対するデータ保護の要求に応じて、前記複数のストレージのうち前記障害が検出されたストレージを除くいずれかのストレージに保存する回復処理を行う計算機クラスタ。
【請求項7】
請求項1に記載の計算機クラスタであって、
前記コンポーネントは、ノード、および、ストレージデバイスを含む計算機クラスタ。
【請求項8】
プロセッサを有し複数のストレージを管理するストレージ管理システム、および前記複数のストレージを含む計算機クラスタが実行する管理方法であって、
前記ストレージは、複数の種類のコンポーネントを有して、前記複数のコンポーネントを組み合わせて、格納するデータが冗長化され、
前記コンポーネント自身に設定されている冗長度を示したコンポーネント管理情報を有し、
前記プロセッサは、前記コンポーネント管理情報と、前記ストレージに保存するデータに対するデータ保護の要求と、に基づき、
前記ストレージにおいてデータを格納する前記コンポーネントの組み合わせを決定し、
前記データ保護の要求には、障害の種類と冗長度との組合せが含まれ、
前記プロセッサが、前記データ保護の要求に含まれる前記障害の種類について、前記コンポーネント管理情報に記される前記コンポーネント自身の冗長度と、前記複数のコンポーネントを組み合わせて設定する冗長度と、の合計が、前記データ保護の要求に含まれるデータの冗長度を満たすように前記コンポーネントの組み合わせを決定することを含む管理方法。
【請求項9】
請求項1に記載の計算機クラスタであって、
当該計算機クラスタにおいて動作するストレージサービスコンテナをさらに含む計算機クラスタ。
【請求項10】
請求項1に記載の計算機クラスタであって、
当該計算機クラスタにおいて動作するアプリケーションコンテナをさらに含む計算機クラスタ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算機クラスタ、および管理方法に関する。
【背景技術】
【0002】
複数の物理計算機から構成され、各々の物理計算機ではコンピューティングサービスとストレージサービスとの両方が稼働するハイパーコンバージドインフラストラクチャ(Hyper Converged Infrastructure:HCI)がある。HCIの構成において、コンテナコンピューティングサービスは、物理計算機で稼働するコンテナ基盤上のコンテナとして稼働する場合、物理計算機で稼働するハイパーバイザ上の仮想計算機として稼働する場合がある。ここで、コンピューティングサービスを行うコンテナ、仮想計算機をアプリケーションインスタンスと呼ぶ。
【0003】
HCIの構成において、ストレージサービスは、物理計算機上で稼働するホストOSやハイパーバイザ上のプロセスとして稼働する場合、物理計算機で稼働するコンテナ基盤上のコンテナとして稼働する場合、物理計算機で稼働するハイパーバイザ上の仮想計算機として稼働する場合がある。ここで、ストレージサービスを行うプロセス、コンテナもしくは仮想計算機をストレージサービスインスタンスと呼ぶ。ストレージサービスインスタンスは、アプリケーションインスタンスに対してボリュームを提供する。ストレージサービスにおけるデータ保護として、たとえば特許文献1に記載の方法が知られている。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許出願公開第2020/0073552号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載されている発明では、過剰なデータ保護となる可能性がある。
【課題を解決するための手段】
【0006】
本発明の第1の態様による計算機クラスタは、プロセッサを有し複数のストレージを管理するストレージ管理システム、および前記複数のストレージを含む計算機クラスタであって、前記ストレージは、複数の種類のコンポーネントを有して、前記複数のコンポーネントを組み合わせて、格納するデータの冗長化を行い、前記コンポーネント自身に設定されている冗長度を示したコンポーネント管理情報を有し、前記プロセッサは、前記コンポーネント管理情報と、前記ストレージに保存するデータに対するデータ保護の要求と、に基づき、前記ストレージにおいてデータを格納する前記コンポーネントの組み合わせを決定し、前記データ保護の要求には、障害の種類と冗長度との組合せが含まれ、前記プロセッサは、前記データ保護の要求に含まれる前記障害の種類について、前記コンポーネント管理情報に記されるコンポーネント自身の冗長度と、前記複数のコンポーネントを組み合わせて設定する冗長度と、の合計が、前記データ保護の要求に含まれるデータの冗長度を満たすように前記コンポーネントの組み合わせを決定する。
本発明の第2の態様による管理方法は、プロセッサを有し複数のストレージを管理するストレージ管理システム、および前記複数のストレージを含む計算機クラスタが実行する管理方法であって、前記ストレージは、複数の種類のコンポーネントを有して、前記複数のコンポーネントを組み合わせて、格納するデータが冗長化され、前記コンポーネント自身に設定されている冗長度を示したコンポーネント管理情報を有し、前記プロセッサは、前記コンポーネント管理情報と、前記ストレージに保存するデータに対するデータ保護の要求と、に基づき、前記ストレージにおいてデータを格納する前記コンポーネントの組み合わせを決定し、前記データ保護の要求には、障害の種類と冗長度との組合せが含まれ、前記プロセッサが、前記データ保護の要求に含まれる前記障害の種類について、前記コンポーネント管理情報に記されるコンポーネント自身の冗長度と、前記複数のコンポーネントを組み合わせて設定する冗長度と、の合計が、前記データ保護の要求に含まれるデータの冗長度を満たすように前記コンポーネントの組み合わせを決定することを含む。
【発明の効果】
【0007】
本発明によれば、指定されるデータ保護の要求に基づき、適切にデータ保護を実行できる。
【図面の簡単な説明】
【0008】
【
図3】クラスタ管理用計算機およびノードのハードウェア構成図
【
図5】クラスタ管理用計算機のメモリに格納される情報を示す図
【
図7】バックエンドデバイス管理テーブルの一例を示す図
【
図8】クラスタ外データ保護先管理テーブルの一例を示す図
【
図9】ストレージクラス管理テーブルの一例を示す図
【
図12】ストレージクラス設定プログラムが実行するストレージクラス設定処理を示すフローチャート
【
図13】
図12におけるステップS1230の処理を示すフローチャート
【
図15】ボリューム作成プログラムが実行するボリューム作成処理を示すフローチャート
【
図16】データ冗長度維持回復プログラムが実行するデータ冗長度維持回復処理を示すフローチャート
【
図17】冗長化処理プログラムが実行する冗長化処理を示すフローチャート
【
図18】変形例1におけるストレージクラス設定処理を示すフローチャート
【発明を実施するための形態】
【0009】
実施の形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0010】
以下の説明では、「AAAテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」を「AAA情報」と呼ぶことができる。また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【0011】
また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ(たとえばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(たとえばメモリ)および/または通信インタフェース装置(たとえばポート)を用いながら行うため、処理の主体がプロセッサとされてもよい。プログラムを動作の主体として説明された処理は、プロセッサを含む装置が行う処理としてもよい。また、プロセッサが行う処理の一部または全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースから装置にインストールされてもよい。プログラムソースは、たとえば、プログラム配布サーバ、または、計算機が読み取り可能な記憶メディアであってもよい。
【0012】
また、以下の説明では、「コンテナ」を管理対象として説明する場合があるが、コンテナの代わりに、物理計算機のハードウェアをエミュレートする仮想化方式である「仮想計算機(VM)」や物理計算機そのものである「ベアメタル」が管理対象であってもよい。
【0013】
―第1の実施の形態―
以下、
図1~
図17を参照して、計算機システムの第1の実施の形態を説明する。
【0014】
図1は、計算機システム100の構成図である。計算機システム100は、第1プライベートクラウド102-1と、第2プライベートクラウド102-2と、第1パブリッククラウド103-1と、第2パブリッククラウド103-2と、を含む。第1パブリッククラウド103-1は、第1サイト104-1および第2サイト104-2を含む。第1サイト104-1は、第1アベイラビリティゾーン105-1と第2アベイラビリティゾーン105-2を含む。
図1では図示の都合によりいくつかのサイトおよびアベイラビリティゾーン(以下では「AZ」とも記載する)の記載を省略している。
【0015】
第1プライベートクラウド102-1には、分離型第1計算機クラスタ111-1および第1ストレージシステム120-1が含まれる。第2プライベートクラウド102-2には、一体型第1計算機クラスタ112-1が含まれる。第1パブリッククラウド103-1における第1アベイラビリティゾーン105-1には、分離型第2計算機クラスタ111-2および第2ストレージシステム120-2が含まれる。第1パブリッククラウド103-1における第2アベイラビリティゾーン105-2には、一体型第2計算機クラスタ112-2が含まれる。第1パブリッククラウド103-1における第2サイト104-2には、一体型第3計算機クラスタ112-3が含まれる。第2パブリッククラウド103-2には、一体型第4計算機クラスタ112-4が含まれる。
【0016】
以下では、分離型第1計算機クラスタ111-1と分離型第2計算機クラスタ111-2とをあわせて分離型計算機クラスタ111と呼ぶ。第1ストレージシステム120-1と第2ストレージシステム120-2とをあわせてストレージシステム120と呼ぶ。一体型第1計算機クラスタ112-1と、一体型第2計算機クラスタ112-2と、一体型第3計算機クラスタ112-3と、一体型第4計算機クラスタ112-4と、をあわせて一体型計算機クラスタ112と呼ぶ。
【0017】
図2は、分離型計算機クラスタ111の構成図である。分離型計算機クラスタ111は、1または複数のノード201と、ネットワークスイッチ202と、クラスタ管理用計算機203と、管理用端末204とを含む。ノード201のそれぞれは、1または複数のアプリケーションコンテナ210と、ストレージサービスコンテナ211と、コンテナ管理基盤212とを含む。
【0018】
図2では、クラスタ管理用計算機203とノード201とが別に構成されている例を示しているが、クラスタ管理用計算機203とノード201とを一つのベアメタル、すなわち物理計算機を用いて構成してもよい。また、ノード201およびクラスタ管理用計算機203は仮想計算機の形態であってもよく、コンテナ仮想化技術により構成されたコンテナの形態であってもよい。また、クラスタ管理用計算機203は必ずしも独立した装置である必要はなく、その機能をノード201のいずれかに内包してもよい。
【0019】
ストレージサービスコンテナ211は、アプリケーションコンテナ210に対してボリュームサービスを提供する、ストレージサービスインスタンスの一例である。なお、
図2のストレージサービスコンテナ211は、独立したOS空間を模擬するコンテナ基盤上で動作する単一のコンテナで構成されているが、物理計算機のハードウェアをエミュレートするハイパーバイザ上で動作する仮想計算機の形態であってもよいし、ベアメタルのハイパーバイザやホストOS上で動作するストレージサービスの形態であってもよい。また複数のコンテナや複数の仮想計算機でストレージサービスを提供する形態であってもよい。
【0020】
アプリケーションコンテナ210は、ハイパーコンバージドインフラの利用者が利用するコンテナであり、アプリケーションサービスインスタンスの一例である。アプリケーションコンテナ210は、仮想計算機の形態であってもよいし、ベアメタルのハイパーバイザやホストOS上で動作するアプリケーションの形態であってもよい。コンテナ管理基盤212はアプリケーションコンテナ210とストレージサービスコンテナ211を管理する。ストレージサービスとアプリケーションの動作形態に応じて、コンテナ管理基盤212は仮想計算機管理基盤の形態やベアメタル管理基盤の形態であってもよい。
【0021】
計算機システム100におけるデータ保護処理は、ユーザが管理用端末204を用いてストレージクラスの要件を入力することから始まる。ストレージクラスの要件とは、ストレージに保存するデータに対するデータ保護の要求である。データ保護の要求には、障害の種類と冗長度との組合せ、可用性の確率、およびコストが含まれる。ただしそれぞれのデータ保護の要求には、これら3つのうち少なくとも1つが含まれていればよい。なお以下では、障害の種類と冗長度との組合せを「各コンポーネント観点」と呼ぶことがあり、可用性の確率を「全システム観点」と呼ぶこともある。
【0022】
計算機システム100は、要件が入力されるとその要件に合致するデータ保護先の候補を算出し、ストレージクラス管理番号とともに記憶する。次にユーザが、ストレージクラス管理番号と必要なボリュームのサイズとを指定すると、計算機システム100はボリュームを作成する。作成されたボリュームには、ユーザが指定するデータやユーザがしてするアプリケーションコンテナ210が生成するデータが格納される。
【0023】
図3は、クラスタ管理用計算機203およびノード201のハードウェア構成図である。以下では
図3を参照してノード201の構成を説明するが、以下に説明する範囲ではクラスタ管理用計算機203のハードウェア構成も同一である。
【0024】
ノード201は、たとえば、PCやサーバ等の計算機によって構成され、プロセッサ部の一例としてのCPU(Central Processing Unit)301、メモリ302、HBA(Host Bus Adapter)303、NIC(Network Inferface Card)304、USB(Universal Serial Bus)305、VGA(Video Graphics Array)306、およびストレージデバイスを含む。これら構成要素は、内部バスや外部バスで接続されている。ストレージデバイスにはたとえば、NVMe(Non-Volatile Memory express)ドライブ310、SAS(Serial Attached SCSI)ドライブ311、SATA(Serial ATA)ドライブ312等である。
【0025】
ノード201は、ストレージシステム120とは、NIC304やHBA303を介して接続する。また、NvMeドライブ310などのストレージデバイスは、不図示のRAIDカードを経由してCPU301などと接続されてもよい。
【0026】
図4は、ノード201のメモリ302に格納される情報を示す図である。ノード201のメモリ302は、コンテナ管理基盤用メモリ領域410と、ストレージサービスコンテナ用メモリ領域420と、アプリケーションコンテナ用メモリ領域430とを含む。ストレージサービスコンテナ用メモリ領域420には、ボリューム管理テーブル421と、ストレージサービス処理プログラム422と、冗長化処理プログラム423と、冗長度回復処理プログラム424と、が格納される。アプリケーションコンテナ用メモリ領域430には、1以上のアプリケーションプログラム431が格納される。
【0027】
ボリューム管理テーブル421には、ボリュームごとのデータ保護先の情報が格納される。ストレージサービス処理プログラム422は、ハイパーコンバージドインフラストラクチャのサービスを実現するための公知の処理を行うプログラムである。ストレージサービス処理プログラム422は、必要に応じて冗長化処理プログラム423に動作指令を出力する。冗長化処理プログラム423は、冗長化処理を実行するプログラムである。冗長化処理プログラム423の動作は、後に
図17を参照して詳述する。冗長度回復処理プログラム424は、データ冗長度維持回復プログラム512から呼び出され、冗長度を回復させるために指定されたデータ保護先へデータの書き込みを行う。
【0028】
図5は、クラスタ管理用計算機203のメモリ302に格納される情報を示す図である。ノード201のメモリ302には、ノード管理テーブル501と、バックエンドデバイス管理テーブル502と、クラスタ外データ保護先管理テーブル503と、ストレージクラス管理テーブル504と、冗長化関係性テーブル505と、ストレージクラス設定プログラム510と、ボリューム作成プログラム511と、データ冗長度維持回復プログラム512と、が格納される。
【0029】
ノード管理テーブル501には、特定のクラスタ内の各ノードの情報が記載される。ただしクラスタ管理用計算機203にノード管理テーブル501が格納される代わりに、各ノードのノード管理テーブル501に相当する情報が対応する各ノードの内部に格納されてもよい。バックエンドデバイス管理テーブル502には、特定のクラスタに含まれるすべての機器に関する情報が格納される。ただしクラスタ管理用計算機203にバックエンドデバイス管理テーブル502が格納される代わりに、各ノードのバックエンドデバイス管理テーブル502に相当する情報が対応する各ノードの内部に格納されてもよい。また以下では、バックエンドデバイス管理テーブル502を「コンポーネント管理情報」とも呼ぶ。
【0030】
クラスタ外データ保護先管理テーブル503には、他のクラスタにおけるデータ保存領域の情報が格納される。ストレージクラス管理テーブル504には、ユーザが要求するデータ保護の要件事のデータ保護先の候補の一覧が格納される。冗長化関係性テーブル505には、冗長性を担保するために、指定されたコンポーネント以外でも同等の冗長性を確保できるコンポーネントが示されている。
【0031】
ストレージクラス設定プログラム510は、管理用端末204からストレージクラスの要件を受信して動作を開始し、指定された要件を満たす候補をストレージクラス管理テーブル504に記載する。ストレージクラス設定プログラム510の動作は後に
図12を参照して詳述する。ボリューム作成プログラム511は、管理用端末204から指定されるボリュームの要件を満たすボリュームを作成する。ボリューム作成プログラム511の動作は後に
図15を参照して詳述する。データ冗長度維持回復プログラム512は、障害を検出してデータ冗長の維持回復を行う。データ冗長度維持回復プログラム512の動作は後に
図16を参照して詳述する。
【0032】
図6は、ノード管理テーブル501の一例を示す図である。ノード管理テーブル501は複数のレコードから構成され、各レコードは、ノード番号601、障害耐性リソース602、稼働率603、AFR604、MTBF605、およびMTTR606のフィールドを有する。ノード番号601には、各ノードの識別子が格納される。本実施の形態ではノードの識別子は「N」と数字の組み合わせとする。障害耐性リソース602には、ノードが有する耐性の種類が格納される。たとえば電源が二重化されているノードは、障害耐性リソース602のフィールドに「電源」と記載される。ノード番号「N1」のノードは、電源、ファン、およびネットワークの耐性があることが示されている。
【0033】
稼働率603には、ノードの稼働率が格納される。AFR604には、ノードの年間平均故障率(Annual Failure Rate)が格納される。MTBF605には、ノードの平均故障間隔(mean time between failures)が格納される。MTTR606には、そのノードの平均復旧時間(Mean Time To Repair)が格納される。
【0034】
図7は、バックエンドデバイス管理テーブル502の一例を示す図である。バックエンドデバイス管理テーブル502は複数のレコードから構成され、各レコードは、デバイス番号701、ノード番号702、冗長度703、障害耐性リソース704、スナップショットイメージ(SS-IMG)バックアップ705、稼働率706、AFR707、MTBF708、MTTR709、およびコスト710のフィールドを有する。
【0035】
デバイス番号701には、各デバイスの識別子が格納される。ノード番号702には、デバイスが属するノードの識別子が格納される。この識別子は、
図6におけるノード番号601と同じ意味である。冗長度703には、そのデバイスの冗長度合いを示す値が格納される。たとえば、冗長度703が「1」のデバイスは冗長性がないことを意味する。換言すると、冗長度703が「2」以上のデバイスはクラスタ管理用計算機203やストレージサービスコンテナ211が管理しないバックエンドでのデータ保護であるバックエンド保護が実行されている。
【0036】
障害耐性リソース704には、そのデバイスが有する耐性の種類が格納される。たとえば、あるデバイスがRAIDカードなどを内蔵してデバイス内でミラーリングを行う場合には、障害耐性リソース704に「デバイス」と記載される。また、外部ストレージシステムなどのボリュームを用いる場合に、そのデバイスがクラスタのノード間で冗長化されている場合は、障害耐性リソース704に「ノード」と記載される。
【0037】
SS-IMGバックアップ705には、デバイスに格納されている情報のスナップショットイメージ(SS-IMG)のバックアップがされているか否かを示す情報が格納される。稼働率706、AFR707、MTBF708、およびMTTR709は、
図6における稼働率603、AFR604、MTBF605、およびMTTR606と同一の情報なので説明を省略する。コスト710には、デバイスにデータを保存するコスト、より具体的には1GBのデータを1年間保存するための費用がドル単位で格納される。たとえばデバイスD1を用いて1GBのデータを1年間保存すると0.5ドルの費用が発生することが示されている。
【0038】
図8は、クラスタ外データ保護先管理テーブル503の一例を示す図である。クラスタ外データ保護先管理テーブル503は複数のレコードから構成され、各レコードは、保護先管理番号801、接続情報802、AZ803、サイト804、サービス事業者805、稼働率806、AFR807、およびコスト808のフィールドを有する。稼働率806、AFR807、およびコスト808は、
図7における稼働率706、AFR707、およびコスト710のそれぞれと同一の情報なので説明を省略する。
【0039】
保護先管理番号801には、クラスタの外部に存在するデータ保護先の識別子が格納される。本実施の形態では、データ保護先の識別子に、「P」と数字との組合せを用いる。接続情報802には、データ保護先の所在地、たとえばIPアドレスが格納される。AZ803には、クラスタ外データ保護先管理テーブル503を有するクラスタとデータ保護先のアベイラビリティゾーンが同一であるか否かを示す情報が格納される。サイト804には、クラスタ外データ保護先管理テーブル503を有するクラスタとデータ保護先のサイトが同一であるか否かを示す情報が格納される。サービス事業者805には、クラスタ外データ保護先管理テーブル503を有するクラスタとデータ保護先のサービス事業者が同一であるか否かを示す情報が格納される。
【0040】
なおクラスタ外データ保護先管理テーブル503には、MTBFやMTTRなど他の信頼性、可用性に関する指標が含まれてもよい。AZ803、サイト804、およびサービス事業者805には、同一か否かという情報に替えて、何らかの識別子を格納してもよい。その場合は、管理元のストレージクラスタのAZ、サイト、およびサービス事業者のIDを別途管理して、そのIDとの一致、不一致で同一か別かを判断する。
【0041】
図9は、ストレージクラス管理テーブル504の一例を示す図である。ストレージクラス管理テーブル504は複数のレコードから構成され、各レコードは、ストレージクラス管理番号901、要件902、およびデータ保護先候補903のフィールドを有する。ストレージクラス管理番号901には、ストレージクラスの識別子が格納される。本実施の形態では、ストレージクラスは「C」と数字の組み合わせの識別子を用いる。要件902には、ユーザから指定されたストレージクラスの要件、換言するとストレージに保存するデータに対するデータ保護の要求が格納される。データ保護先候補903には、ユーザから指定された要求を満たすデータ保護先の候補が格納される。この候補は、単独の場合もあるし、組合せの場合もある。
【0042】
たとえば
図9に示す最初のレコードでは、管理番号「C1」のストレージクラスは、ユーザからデバイスおよびAZの障害に耐えられる2冗長が求められており、D3とP5の組合せ、およびD4とP5の組合せのそれぞれで実現できることが示されている。ストレージクラスが追加されたときに、要件を満たす全ての組み合わせがデータ保護先候補903に格納されてもよいし、要件を満たす組合せの一部がデータ保護先候補903に格納されてもよい。後者の場合は、空き容量が所定の閾値よりも減少した際に、データ保護先候補903に新たなデータ保護先が追加される。
【0043】
図10は、冗長化関係性テーブル505の一例を示す図である。冗長化関係性テーブル505は複数のレコードから構成され、各レコードは、コンポーネント種別1001、および代替種別1002のフィールドを有する。コンポーネント種別1001には、冗長化の対象となるコンポーネントの種別が格納される。代替種別1002には、代替して冗長化が可能となるコンポーネントの種別が格納される。
図10に示す最初のレコードは、ストレージデバイスの冗長は、ノードの冗長化で代替可能であることが示されている。なお
図10に示されている情報を集約すると、ネットワーク構成における下位のコンポーネントの冗長化は、上位のコンポーネントで代替できることが示されている。
【0044】
図11は、ボリューム管理テーブル421の一例を示す図である。ボリューム管理テーブル421は複数のレコードから構成され、各レコードは、ボリューム管理番号1101、ストレージクラス管理番号1102、およびデータ保護先1103のフィールドを有する。ボリューム管理番号1101には、ボリュームの識別子が格納される。本実施の形態ではボリュームの識別子に「V」と数字との組合せを用いる。ストレージクラス管理番号1102は、
図9におけるストレージクラス管理番号901と同じ意味なので説明を省略する。
【0045】
データ保護先1103は、ボリュームの情報を格納するデバイス等の識別子が格納される。
図11に示す例では、ボリューム管理番号V1~V3のいずれもストレージクラスC1に対応し、V1およびV2はD3とP5の組合せを利用し、V3はD4とP5の組合せを用いることが示されている。なおボリュームの一部ごとに保護先が異なる場合は、データ保護先に複数の情報が格納される。
【0046】
(フローチャート)
図12は、ストレージクラス設定プログラム510が実行するストレージクラス設定処理を示すフローチャートである。CPU301は、まずステップS1210において、管理用端末204からストレージクラスの要件を受信する。続くステップS1220ではCPU301は、ストレージクラス管理テーブル504を参照して新たな管理番号を決定し、その管理番号をストレージクラス管理テーブル504のストレージクラス管理番号901のフィールドに、ステップS1210において受信した要件を要件902のフィールドに記載する。
【0047】
続くステップS1230ではCPU301は、後述するように各コンポーネント観点での冗長化先選定処理、すなわち障害の種類と冗長度との組合せの要件を満たすデータ保護先の候補の決定を行う。ただし、ステップS1210において受信した要求にコンポーネント観点での条件が含まれない場合には、CPU301はステップS1230を実行しない。
【0048】
続くステップS1240ではCPU301は、全システム観点での冗長化先選定処理、すなわち可用性の確率の要件を満たすデータ保護先の候補の決定を行う。具体的にはCPU301は、ステップS1210において受信した要求にシステムの稼働率が含まれる場合に本ステップを実行し、システムの稼働率が要求された値以上となるようにデータ保護先の候補を決定する。なおCPU301は、ノード管理テーブル501およびバックエンドデバイス管理テーブル502のいずれかに稼働率が設定されていないノードまたはデバイスが存在する場合には、後述する処理により稼働率を算出する。
【0049】
ステップS1250ではCPU301は、システム観点でのコスト評価処理を行う。具体的にはCPU301は、ステップS1210において受信した要求にコストの条件が含まれている場合に実行され、ステップS1230およびステップS1240において選定された候補のそれぞれに対して、それぞれの候補に含まれるデバイスのコストを足し合わせて算出する。
【0050】
続くステップS1260ではCPU301は、ステップS1210において受信した要件を全て満たす候補をストレージクラス管理テーブル504のデータ保護先候補903に格納して
図12に示す処理を終了する。具体的にはCPU301は、ステップS1210において受信した要件が障害の種類と冗長度との組合せのみの場合はステップS1230における選定結果を出力する。CPU301は、ステップS1210において受信した要件が稼働率の要件のみの場合はステップS1240における選定結果を出力する。CPU301は、ステップS1210において受信した要件にコストが含まれる場合は、ステップS1250における選定結果を出力する。
【0051】
なおストレージクラス設定プログラム510は、ステップS1210においてデータ保護の要求を読み込むので、ストレージクラス設定プログラム510は「読込部」と呼ぶこともできる。またステップS1230~S1250の各ステップでは、コンポーネントの観点、システムの観点、およびコストの観点で、ユーザのデータ保護の要求に基づきストレージのデータ保護の方法を決定するので、ストレージクラス設定プログラム510は「決定部」と呼ぶこともできる。
【0052】
図13は、
図12におけるステップS1230、すなわち各コンポーネント観点での冗長化先選定処理を示すフローチャートである。まずステップS1510ではCPU301は、各コンポーネント観点での要件のリストを作成する。そしてCPU301は作成したリストの各項目を順番に処理対象として、ステップS1520~S1540の処理を実行する。ステップS1520ではCPU301は、処理対象である要件に合致する候補のデバイスをバックエンドデバイス管理テーブル502から抽出して列挙する。
【0053】
続くステップS1530ではCPU301は、ステップS1520の処理により少なくとも1つの候補が存在するか否かを判断する。CPU301は候補が少なくとも1つは存在すると判断する場合はステップS1550に進み、候補が1つもないと判断する場合はステップS1540に進む。ステップS1540ではCPU301は、冗長化関係性テーブル505を参照し、冗長化が代替可能なコンポーネント種別で、要件に合致する候補を列挙してステップS1550に進む。
【0054】
ステップS1550ではCPU301は、ステップS1510において作成した要件のリストの全てを処理対象としたか否かを判断する。そしてCPU301は、まだ処理対象としていない要件が存在する場合には、未処理の要件を処理対象としてステップS1520以下の処理を実行する。CPU301はリストの全てを処理対象としたと判断する場合は
図13に示す処理を終了する。
【0055】
図14は、
図12におけるステップS1240において必要に応じて呼び出される、稼働率計算処理を示すフローチャートである。CPU301は、稼働率が設定されていない全てのデバイスを対象としてステップS1620~S1640の処理を繰り返す。具体的にはCPU301は、稼働率が設定されていない全てのデバイスを列挙し、その1つずつを処理対象(以下、「処理対象デバイス」と呼ぶ)としてステップS1620~S1640の処理を行う。
【0056】
ステップS1620ではCPU301は、処理対象デバイスのMTBFと、処理対象デバイスが接続するノードのMTBFとを用いて、直列のMTBFを算出する。処理対象デバイスのMTBFをX、処理対象デバイスが接続するノードのMTBFをY、算出対象である直列のMTBFをZと置くと、(1/Z)=(1/X)+(1/Y)の関係にあるZの値を算出する。
【0057】
続くステップS1630ではCPU301は、ノード障害が発生した場合の冗長度回復処理に要する時間をMTTRに設定する。続くステップS1640ではCPU301は、MTBFとMTTRとを用いて、ノードとデバイスの直列の稼働率を算出する。具体的にはCPU301は、MTBFの値を、MTBFとMTTRの和で除することにより稼働率の値を得る。CPU301は、稼働率が設定されていない全てのデバイスを対象としてステップS1620~S1640の処理を繰り返すと、ステップS1660に進む。ステップS1660ではCPU301は、各組合せ候補の直列または並列の状況に応じて稼働率を計算し、
図14に示す処理を終了する。
【0058】
図15は、ボリューム作成プログラム511が実行するボリューム作成処理を示すフローチャートである。ボリューム作成プログラム511は、まずステップS1310において、管理用端末204から指定されたボリュームの要件を受信する。この要件には少なくともストレージクラスの管理番号か、過去に伝達済みのストレージクラスの要件が含まれ、ボリュームの容量の指定が含まれてもよい。この要件はたとえば、「管理番号C1に2TBのボリューム」、「デバイスが2冗長、かつAZが2冗長である2TBのボリューム」というものである。なお、
図9に示すストレージクラス管理テーブル504を前提とすればこの2つの要件は同一である。
【0059】
続くステップS1320ではCPU301は、ストレージクラス管理テーブル504を参照し、要件で指定されたストレージクラスの組合せ候補を取得する。たとえば先ほどの例ではCPU301は、D3とP5の組合せ、D4とP5の組合せ、およびD4とP5の組合せを候補として取得する。続くステップS1330ではCPU301は、ステップS1320において取得した少なくとも1つに候補に十分な空き容量があるか否かを判断する。十分な空き容量とは、ステップS1310において容量が指定されている場合にはそれ以上の空き容量であり、ステップS1310において容量が指定されていない場合には、たとえばあらかじめ定められた容量、たとえば1TBの空き容量である。
【0060】
CPU301は、十分な空き容量があると判断する場合はステップS1340に進み、いずれの候補にも空き容量がないと判断する場合はステップS1360においてエラーを出力して
図15に示す処理を終了する。ステップS1340ではCPU301は、ステップS1320において取得した候補のうち、空き容量を満たす組合せ候補をデータ保護先として決定する。続くステップS1350ではCPU301は、ステップS1340において決定したデータ保護先に容量を確保して
図15に示す処理を終了する。なお、シックプロビジョニングの場合は決定した保護先の容量を確保し、シンプロビジョニングの場合は必要最低限の領域のみを確保する。
【0061】
なおステップS1330において、空き容量を満たす単一の組合せ候補がない場合は、サブボリューム毎に異なる組合せ候補を用いてもよい。同じくステップS1330において空き容量が足りないと判断する場合は、エラーとするのではなく、新たに追加されたコンポーネントの有無を確認し、ストレージクラスの仕様を満たす新たな組合せ候補がある場合はストレージクラス管理テーブル504を更新し、ボリューム作成処理を再実行してもよい。
【0062】
図16は、データ冗長度維持回復プログラム512が実行するデータ冗長度維持回復処理を示すフローチャートである。CPU301は、まずステップS1410において、各表のノード、デバイス、クラスタ外データ保護先の障害を検出する。続くステップS1420ではCPU301は、ステップS1410において何らかの障害が検出されたか否かを判断する。CPU301は何らかの障害を検出したと判断する場合はステップS1430に進み、障害を検出していないと判断する場合はステップS1410に戻る。
【0063】
ステップS1430ではCPU301は、ボリューム管理テーブル421を参照して障害の発生先がデータ保護先に指定されているボリュームを特定する。たとえばステップS1410においてデバイスD3に障害が検知された場合は、ボリューム管理テーブル421を参照してボリュームV1とV2が特定される。
【0064】
続くステップS1440ではCPU301は、ステップS1430において特定したボリュームのリストを作成し、各ボリュームを順番に処理対象としてステップS1450~S1470の処理を実行する。ステップS1450ではCPU301は、ストレージクラス管理テーブル504を参照して処理対象のボリュームに対応するストレージクラス管理番号1102を特定し、別のデータ保護先の組合せ候補を特定する。処理対象のボリュームがV1の場合は、同じくストレージクラス管理番号C1のD4+P5が特定される。なおデータ保護先の選択において、元の組合せ候補と重複する複製先が多く含まれている組合せを選択することで、データの冗長度の回復のコストを低減することができる。
【0065】
続くステップS1460ではCPU301は、ステップS1450において新しく選択したデータ保護先候補を、ボリュームを管理するボリューム管理テーブル421に登録する。続くステップS1470ではCPU301は、ボリュームを管理するノードの冗長度回復処理プログラム424に対して新しく選択したデータ保護先への複製を指示してステップS1480に進む。
【0066】
ステップS1480ではCPU301は、ステップS1430において特定した全てのボリュームを処理対象としてステップS1450~S1470の処理を実行したか否かを判断する。CPU301は、特定した全てのボリュームを処理対象としてステップS1450~S1470の処理を実行したと判断する場合はステップS1410に戻り、未処理のボリュームが存在すると判断する場合は処理対象を変更してステップS1450に戻る。
【0067】
図17は、冗長化処理プログラム423が実行する冗長化処理を示すフローチャートである。CPU301はまずステップS1710において、ストレージサービス処理プログラム422から書込データ、すなわち冗長化のために書き込みを行うべきデータを受信する。
【0068】
続くステップS1720ではCPU301は、ボリューム管理テーブル421を参照し、データ保護先に対してステップS1710において受信した書込データを送信する。続くステップS1730ではCPU301は、同期書き込みが必要な全てのデータ保護先から書き込み完了報告を受信したか否かを判断する。CPU301は、完了報告を受信していないと判断するとステップS1730に留まり、完了報告を受信したと判断すると
図17に示す処理を終了する。
【0069】
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)ストレージ管理システムである計算機システム100は、プロセッサであるCPU301を有し、ストレージシステム120や一体型計算機クラスタ112に含まれる複数のストレージを管理する。ストレージは、複数の種類のコンポーネントを有して、前記複数のコンポーネントを組み合わせて、格納するデータの冗長化を行う。計算機システム100は、コンポーネント自身に設定されている冗長度を示したコンポーネント管理情報であるバックエンドデバイス管理テーブル502を有する。CPU301は、バックエンドデバイス管理テーブル502と、ストレージに保存するデータに対するデータ保護の要求と、に基づき、ストレージのデータ保護の方法を設定する(ストレージクラス設定プログラム510:
図12のステップS1230~S1250)。そのため、指定されるデータ保護の要求に基づき、適切にデータ保護を実行できる。
【0070】
(2)CPU301は、バックエンドデバイス管理テーブル502に記されるコンポーネント自身の冗長度と、複数のコンポーネントを組み合わせて設定する冗長度と、の合計が、データ保護の要求に含まれるデータの冗長度を満たすようにストレージのデータ保護の方法を設定する。
【0071】
(3)データ保護の要求は、データを保護するコンポーネントの障害の種類と、その生涯に対するデータの冗長度との組合せが含まれる。たとえば
図9に例示したストレージクラス管理テーブル504のストレージクラス管理番号901がC1とC3のストレージクラスには、障害の種類と冗長度の組合せが含まれる。ストレージクラス設定プログラム510は、
図12のステップS1230、すなわち
図13に示す処理により、要求された障害の種類と冗長度の組合せを満たすデバイスの組合せを選択する。そのため計算機システム100は、要求された障害の種類と冗長度を満たすデータ保護を実行できる。
【0072】
(4)データ保護の要求は、可用性の確率が含まれる。たとえば
図9に例示したストレージクラス管理テーブル504のストレージクラス管理番号901がC2のストレージクラスには、可用性の確率である稼働率が含まれる。ストレージクラス設定プログラム510は、
図12のステップS1240に示す処理、および必要に応じて
図14に示す処理により、要求された可用性の確率を満たすデバイスの組合せを選択する。そのため計算機システム100は、要求された可用性の要件を満たすデータ保護を実行できる。
【0073】
(5)データ保護の要求には、データ保護に要するコストが含まれる。たとえば
図9に例示したストレージクラス管理テーブル504のストレージクラス管理番号901がC3のストレージクラスには、コストが含まれる。ストレージクラス設定プログラム510は、
図12のステップS1250の処理により、要求されたコストを満たすデバイスの組合せを選択する。そのため計算機システム100は、要求されたコストの要件を満たすデータ保護を実行できる。
【0074】
(6)複数のストレージに含まれる少なくとも1つのストレージは、ストレージ管理システムが管理しないバックエンドでのデータ保護であるバックエンド保護が実行されている。決定部(ストレージクラス設定プログラム510:
図12のステップS1230)は、バックエンド保護とデータ保護の要求とに基づきストレージのデータ保護の方法を決定する。そのため、バックエンド保護がされているデバイスを用いる場合に、過剰な保護を防止できる。たとえば要求された保護の要件がデバイス障害について2冗長である場合に、
図7のデバイス番号D2のように「デバイス」の障害耐性を有する場合にはすでに要件を満たしているので、さらなる保護を行わずにデータを保存し過剰な保護を抑制する。たとえば、パブリッククラウドではサービス事業者がデバイスのデータ保護を標準またはオプションで提供し、さらにリージョンやサイトレベルでのバックエンドの保護も提供することがある。このようなパブリッククラウドのデバイスを利用する場合には、バックエンドでの保護を考慮することで過剰な保護を防止できる。
【0075】
(7)計算機システム100は、複数のストレージにおける障害を検出し、障害が検出されたストレージに格納されていたデータを、当該データに対するデータ保護の要求に応じて、複数のストレージのうち障害が検出されたストレージを除くいずれかのストレージに保存するデータ冗長度維持回復プログラム512を備える。そのため、ストレージに障害が発生した際にも、過不足なく適切なデータ保護を行える。
【0076】
(8)複数のストレージのそれぞれは、2以上のノードのいずれかによって管理される。決定部(
図13のステップS1540)は、ストレージの冗長化の代わりにノードの冗長化を選択可能である。そのため、異なる保護レベルでユーザの要求を満たすことができる。
【0077】
(9)計算機システム100に含まれるクラスタ管理用計算機203が実行する管理方法は、計算機システム100に含まれる複数のストレージを以下のように管理する。すなわち、複数のストレージに含まれる少なくとも1つのストレージに保存するデータに対するデータ保護の要求を読み込むこと(
図12のステップS1210)と、データ保護の要求に基づきストレージのデータ保護の方法を決定すること(
図12のステップS1230~S1250)とを含む。そのため、指定されるデータ保護の要求に基づき、適切にデータ保護を実行できる。
【0078】
(変形例1)
ストレージクラス設定プログラム510は、データを出力するアプリケーションにおけるデータ保護をさらに参酌してもよい。たとえばアプリケーションがデータを複数のアベイラビリティゾーンに保存しており、要求された保護の要件がAZ障害について2冗長である場合は、ストレージクラス設定プログラム510は、冗長度が「1」のデバイスを単独でデータ保護先に用いる。アプリケーションがすでに二重化を行っているので、ストレージクラス設定プログラム510がさらなる保護を行うと過剰になるためである。
【0079】
本変形例ではユーザは、管理用端末204を用いて、ストレージクラスの要件と、ボリュームの作成と、そのボリュームに書き込みを行うことが想定されているアプリケーション(以下、「想定アプリケーション」と呼ぶ)のデータ保護方式とを入力する。データ保護方式とは、データ保護の要件に対応する概念であり、データをどのように保護するかを示す。たとえばデータ保護方式は、異なるデバイスに同一のデータを格納するデバイス保護、異なるノードに同一のデータを格納するノード保護、異なるAZに同一のデータを格納するAZ保護などである。
【0080】
なお、ユーザが想定アプリケーションのデータ保護方式を入力する代わりに、想定アプリケーションの識別情報を入力し、ストレージクラス設定プログラム510が不図示であるその識別情報とデータ保護方式との対応表を参照してもよい。
【0081】
図18は、変形例1におけるストレージクラス設定処理を示すフローチャートであり、第1の実施の形態における
図12に相当する。以下では
図12との相違点を主に説明する。最初に実行されるステップS1215では、CPU301は、管理用端末204からストレージクラスの要件だけでなく、想定アプリケーションの情報を受信してステップS1220に進む。ステップS1220の次に実行されるステップS1225ではCPU301は、ストレージクラスに作成するボリュームに対して書き込みを行うアプリケーションのデータ保護方式を読み込む。ステップS1215において受信した想定アプリケーションの情報が想定アプリケーションのデータ保護方式である場合にはその情報をそのまま使用する。また、ステップS1215において受信した想定アプリケーションの情報が想定アプリケーションの識別情報である場合には、前述の識別情報とデータ保護方式との対応表を参照してデータ保護の方式を読み込む。ステップS1230およびS1240ではCPU301は、アプリケーションのデータ保護方式とデータ保護の要求とに基づきストレージのデータ保護の方法を決定する。
【0082】
この変形例1によれば、次の作用効果が得られる。
(10)データ保護の要求には、ストレージを利用することが想定される想定アプリケーションが実施するデータ保護の情報が含まれる。決定部(
図18のステップS1530~S1550)は、想定アプリケーションが実施するデータ保護とデータ保護の要求とに基づきストレージのデータ保護の方法を決定する。そのため計算機システム100は、ボリュームに書き込みを行うアプリケーションのデータ保護方式を考慮して過不足のないデータ保護を実現できる。
【0083】
上述した実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
【符号の説明】
【0084】
100…計算機システム
111…分離型計算機クラスタ
112…一体型計算機クラスタ
120…ストレージシステム
201…ノード
203…クラスタ管理用計算機
204…管理用端末
210…アプリケーションコンテナ
211…ストレージサービスコンテナ
410…コンテナ管理基盤用メモリ領域
420…ストレージサービスコンテナ用メモリ領域
421…ボリューム管理テーブル
422…ストレージサービス処理プログラム
423…冗長化処理プログラム
424…冗長度回復処理プログラム
430…アプリケーションコンテナ用メモリ領域
431…アプリケーションプログラム
501…ノード管理テーブル
502…バックエンドデバイス管理テーブル
503…クラスタ外データ保護先管理テーブル
504…ストレージクラス管理テーブル
505…冗長化関係性テーブル
510…ストレージクラス設定プログラム
511…ボリューム作成プログラム
512…データ冗長度維持回復プログラム