JP2022033515A - 記憶システム及び記憶制御方法 - Google Patents

記憶システム及び記憶制御方法 Download PDF

Info

Publication number
JP2022033515A
JP2022033515A JP2020137460A JP2020137460A JP2022033515A JP 2022033515 A JP2022033515 A JP 2022033515A JP 2020137460 A JP2020137460 A JP 2020137460A JP 2020137460 A JP2020137460 A JP 2020137460A JP 2022033515 A JP2022033515 A JP 2022033515A
Authority
JP
Japan
Prior art keywords
storage
metadata
control program
storage control
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020137460A
Other languages
English (en)
Inventor
幸恵 田島
Yukie Tajima
匡邦 揚妻
Masakuni Agetsuma
晋太郎 伊藤
Shintaro Ito
貴大 山本
Takahiro Yamamoto
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 JP2020137460A priority Critical patent/JP2022033515A/ja
Priority to US17/200,387 priority patent/US11341007B2/en
Publication of JP2022033515A publication Critical patent/JP2022033515A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • G06F11/2092Techniques of failing over between control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】ストレージノード障害が生じてもI/Oを継続することに加えて、メモリ消費量を低減し、且つ、フェイルオーバ後のI/Oレイテンシ増大を低減する。【解決手段】冗長化グループを構成する二つ以上のストレージ制御プログラムがそれぞれ配置された二つ以上のノードが、メタデータの当該二つ以上のノードにおける冗長化を維持する。ノード障害が生じた場合に当該アクティブのストレージ制御プログラムからスタンバイのストレージ制御プログラムへのフェイルオーバが行われるようになっている。少なくとも一つのスタンバイのストレージ制御プログラムについて、当該スタンバイのストレージ制御プログラムが配置されているノードが、当該ノードに当該冗長化グループについて存在するメタデータのうちフェイルオーバ後にアクセスされ得るメタデータ部分を含む対象メタデータ部分を圧縮して当該ノードのメモリに格納しておく。【選択図】図13

Description

本発明は、概して、複数のストレージノードで構成された記憶システムの記憶制御に関する。
この種の記憶システムとして、例えば、特許文献1に開示の記憶システムが知られている。特許文献1は、例えば次のことを開示している。すなわち、アクティブ-スタンバイ(パッシブ)構成の冗長化グループを構成する二つ以上のストレージ制御プログラムが異なる二つ以上のストレージノードにそれぞれ配置されている。当該冗長化グループについて、要求されたデータを記憶装置に読み書きするために必要な構成情報が、当該二つ以上のストレージノードに冗長化される。
特開2019-101703号公報
複数のストレージノードの各々で所定のソフトウェアが実行されることで複数のストレージノードに基づく一つ(又は複数)のSDS(Software Defined Storage)が実現されてよい。SDSに基づく複数のストレージノードに一つ又は複数の冗長化グループが配置されてよい。各冗長化グループについて、アクティブのストレージ制御プログラムが配置されているストレージノードに障害が生じた場合、当該アクティブのストレージ制御プログラムからいずれかのスタンバイのストレージ制御プログラムへのフェイルオーバが行われる。特許文献1に開示の構成情報は、メタデータの一例である。
SDSでは、例えば、以下の(A)乃至(C)を満たすことが望まれる。
(A)メモリの消費量(消費記憶容量)を低減すること。
(B)ストレージノード障害が生じてもI/Oを継続すること。
(C)フェイルオーバ後のI/Oレイテンシが増大する(劣化する)ことを低減すること。
冗長化グループについて、メタデータが二つ以上のストレージノードに冗長化されていれば、(B)を実現することが可能である。
しかし、フェイルオーバ先のストレージ制御プログラムが使用するメタデータが記憶装置に格納されていると、フェイルオーバ後にメタデータへのアクセスが行われる都度に記憶装置に対するI/O(具体的には、記憶装置からメモリへのメタデータの読み出し)が必要になるため、フェイルオーバ後にI/Oレイテンシが増大する。つまり、(A)を満たすことができない。
一方、フェイルオーバ先のストレージ制御プログラムが使用するメタデータがメモリに格納されていると、メタデータのデータ量の分、メモリ消費量が増加する。つまり、(C)を満たすことができない。
以上のような問題は、ストレージノード間のフェイルオーバが可能な他種の記憶システムについてもあり得る。
冗長化グループについて、当該冗長化グループを構成する二つ以上のストレージ制御プログラムがそれぞれ配置された二つ以上のストレージノードが、ストレージ制御においてアクセスされるメタデータの二つ以上のストレージノードにおける冗長化を維持する。アクティブのストレージ制御プログラムについて、当該アクティブのストレージ制御プログラムが配置されているストレージノードのプロセッサが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうち少なくとも当該アクティブのストレージ制御プログラムに使用される部分であるアクティブメタデータ部分を非圧縮で当該ストレージノードのメモリに格納しておき、当該メモリにある非圧縮のアクティブメタデータ部分を使用してI/Oを行うようになっている。アクティブのストレージ制御プログラムが配置されているストレージノードに障害が生じた場合に当該アクティブのストレージ制御プログラムからスタンバイのストレージ制御プログラムへの同一冗長化グループ内でのフェイルオーバが行われるようになっている。少なくとも一つのスタンバイのストレージ制御プログラムについて、当該スタンバイのストレージ制御プログラムが配置されているストレージノードが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうちフェイルオーバ後にアクセスされ得るメタデータ部分を含む対象メタデータ部分を圧縮して当該ストレージノードのメモリに格納しておく。
本発明によれば、ストレージノード障害が生じてもI/Oを継続することに加えて、メモリ消費量を低減し、且つ、フェイルオーバ後のI/Oレイテンシ増大を低減することができる。
一実施形態に係るシステム全体の構成例を示す。 フェイルオーバ前の記憶システムの構成例を示す。 フェイルオーバ後の記憶システムの構成例を示す。 ストレージノードに格納されるプログラム及びデータの一例を示す。 格納先制御テーブルの構成例を示す。 条件適用テーブルの構成例を示す。 条件1反映処理の流れの一例を示す。 条件2反映処理の流れの一例を示す。 メタデータライト処理の流れの一例を示す。 メタデータリード処理の流れの一例を示す。 格納方式設定UIの一例を示す。 状態変更処理の流れの一例を示す。 一比較例の概要の一例を示す。 実施形態の概要の一例を示す。
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「記憶装置」は、一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、参照符号を使用することがある。
図12は、一比較例の概要の一例を示す。図13は、実施形態の概要の一例を示す。
図12及び図13において、文字「A」又は「B」が付された方形は、ユーザデータを意味する。文字「M」が付された三角形は、メタデータ部分を意味する。灰色で表現されたユーザデータに同じ灰色で表現されたメタデータ部分が対応し、白色で表現されたユーザデータに同じ白色で表現されたメタデータ部分が対応している。「ユーザデータ」は、I/O要求に応答して入出力されるデータである。
図12が例示するように、一比較例によれば、或る冗長化グループについて、アクティブのストレージ制御プログラム2Aがストレージノード10Aに配置されており、スタンバイのストレージ制御プログラム2Sがストレージノード10Bに配置されている。ユーザデータA及びBのいずれも、ストレージノード10Aの記憶装置13Aとストレージノード10Bの記憶装置13Bに格納されている。ユーザデータA及びBの各々のメタデータ部分も、記憶装置13A及び13Bに格納されている。しかし、ストレージノード10Bのメモリ12Bには、ユーザデータA及びBのいずれのメタデータ部分も格納されていない。
ストレージノード10Aに障害が発生した場合、アクティブのストレージ制御プログラム2Aからスタンバイのストレージ制御プログラム2Sへのフェイルオーバが行われ(S1)、スタンバイのストレージ制御プログラム2Sがアクティブのストレージ制御プログラムとなる。その後、当該アクティブのストレージ制御プログラムが、ユーザデータAのリード要求を受けた場合、ユーザデータAを読み出すべくユーザデータAのメタデータ部分にアクセスするために、ユーザデータAのメタデータ部分を記憶装置13Bからメモリ12Bへ読み出す必要がある(S2)。このため、フェイルオーバ後にI/Oレイテンシが増大する。
I/Oレイテンシの増大を避けるためには、ストレージノード10Aに障害が発生する前に予めユーザデータA及びBの各々のメタデータ部分をメモリ12Bに読み出しておくことが考えられる。しかし、そうすると、メモリ12Bの消費量が増えてしまう。
そこで、図13が例示するように、本実施形態によれば、スタンバイのストレージ制御プログラム21Sが配置されているストレージノード100Bにおいて、フェイルオーバ後にアクセスされ得るメタデータ部分の一例として、ユーザデータA及びBの各々のメタデータ部分が、メモリ102Bに圧縮された上で格納されている。このため、アクティブのストレージ制御プログラム21Aからスタンバイのストレージ制御プログラム21Sへの同一冗長化グループ内でのフェイルオーバ(S11)の後、フェイルオーバ先のストレージ制御プログラムが、ユーザデータAのリード要求を受けた場合、ユーザデータAの圧縮メタデータ部分が伸長されればよい(S12)。すなわち、ユーザデータAのメタデータ部分の記憶装置103Bからメモリ102Bへの読出しは不要である。このため、フェイルオーバ後にI/Oレイテンシが増大することを低減できる。また、ユーザデータAのメタデータ部分は圧縮された上でメモリ102Bに格納されているため、メモリ12Bの消費量を低減することもできる。
以下、本実施形態を詳細に説明する。
図1は、本実施形態に係るシステム全体の構成例を示す。
複数(又は一つ)のコンピュートノード110と記憶システム50とが備えられる。記憶システム50は、複数のストレージノード100を備える。複数のストレージノード100の各々が所定のソフトウェアを実行することで、記憶システム50は、一つ(又は複数)のSDS(Software Defined Storage)(又はSDDC(Software Defined DataCenter))として機能よい。記憶システム50は、ストレージノード100の増減によりスケール調整がされてよい。記憶システム50は、分散システムでよい。
各コンピュートノード110及び各ストレージノード100は、フロントエンドネットワーク120に接続される。また、各ストレージノード100は、バックエンドネットワーク130にも接続される。コンピュートノード110とストレージノード100間の通信が、フロントエンドネットワーク120経由で行われ、ストレージノード100間の通信が、バックエンドネットワーク130経由で行われる。フロントエンドネットワーク120及びバックエンドネットワーク130の各々は、ファイバーチャネル(Fibre Channel)、イーサネット(登録商標)、InfiniBand又は無線LAN(Local Area Network)等でよい。フロントエンドネットワーク120及びバックエンドネットワーク130は、通信ネットワークの一例である。フロントエンドネットワーク120及びバックエンドネットワーク130に代えて、一つの通信ネットワークに各コンピュートノード110及び各ストレージノード100が接続されてもよい。
コンピュートノード110は、ストレージノード100に対してホスト(上位装置)として機能する計算機である。少なくとも一つのコンピュートノード110は、仮想マシンやコンテナのような仮想的な計算機でもよい。コンピュートノード110は、図示しないクライアントから指示を受け付け、当該指示に応答して、フロントエンドネットワーク120を介してストレージノード100にI/O要求を発行する。なお、コンピュートノード110に代えて、コンピュートノード110の機能がストレージノード100に備えられてもよい。すなわち、ストレージノード100がI/O要求発行とストレージ制御との両方を行ういわゆるハイパーコンバージドインフラストラクチャが採用されてもよい。また、ベアメタル上にコンピュートノード110とストレージノード100とがそれぞれプロセスとして同居していてもよい(この場合、ベアメタルがストレージノード(及びコンピュートノード)として機能する)。
ストレージノード100は、コンピュートノード110に記憶領域(例えば、論理ボリューム)を提供する計算機(例えばサーバ装置)である。ストレージノード100は、仮想マシンであってもよい。ストレージノード100は、汎用計算機でもよいし、専用計算機(例えば、複数の永続記憶デバイスを有するいわゆるディスクアレイ装置)でもよい。
ストレージノード100は、インターフェース装置104、記憶装置103、メモリ102及びそれらに接続されたプロセッサ101を備える。インターフェース装置104が、フロントエンドネットワーク120及びバックエンドネットワーク130に接続される。記憶装置103が、コンピュートノード110に提供される記憶領域の基になる。
図2は、フェイルオーバ前の記憶システム50の構成例を示す。
図2が示す例によれば、六つのストレージノード100A~100Fがある。それらのストレージノード100A~100Fに、六つの冗長化グループA~Fが配置されている。各冗長化グループは、一つのアクティブのストレージ制御プログラム21Aと、二つのスタンバイのストレージ制御プログラム21S1及び21S2(一つ又は二つ以上のスタンバイのストレージ制御プログラムの一例)とで構成されている。各ストレージ制御プログラムの参照符号の枝符号は、冗長化グループの識別子(A~Fのいずれか)である。
図2が示す例によれば、冗長化グループの配置は、下記のルールの通りである。つまり、ストレージノード100A~100Fに複数のアクティブのストレージ制御プログラム21Aも複数のスタンバイのストレージ制御プログラム21Sも均等に配置される。
・冗長化グループを構成する三つのストレージ制御プログラム21A、21S1及び21S2は、異なる三つのストレージノード100にそれぞれ配置される。
・各ストレージノード100に、少なくとも一つのアクティブのストレージ制御プログラム21Aが配置される。
なお、全ての冗長化グループの構成(具体的には、スタンバイのストレージ制御プログラムの数)が同じである必要は無い。各冗長化グループについて、N重障害の耐性が望まれれば(Nは自然数)、スタンバイのストレージ制御プログラム21Sの数はNとされる。
また、アクティブのストレージ制御プログラム21Aが配置されていないストレージノード100が存在してもよいし、スタンバイのストレージ制御プログラム21Sが配置されていないストレージノード100が存在してもよい。
図3は、フェイルオーバ後の記憶システム50の構成例を示す。
ストレージノード100Fで障害が発生したとする。ストレージノード100Fに配置されているアクティブのストレージ制御プログラム21Aは、冗長化グループFに属するストレージ制御プログラム21A-Fのみである。このため、冗長化グループFについて、フェイルオーバが行われる。フェイルオーバ先は、スタンバイのストレージ制御プログラム21S1-F及び21S2-Fのいずれでもよい。図3が示す例によれば、フェイルオーバ先は、ストレージノード100Aにおけるスタンバイのストレージ制御プログラム21S1-Fである。アクティブのストレージ制御プログラム21A-Fが停止し、スタンバイのストレージ制御プログラム21S1-Fの状態が“アクティブ”に昇格する。
なお、少なくとも一つの冗長化グループについて、全てのスタンバイのストレージ制御プログラム21Sが稼働していてもよいし(但し、I/O要求の受け付けを行わない)、フェイルオーバ先となるスタンバイのストレージ制御プログラム21S以外のスタンバイのストレージ制御プログラム21Sが停止していてもよい。障害が発生したストレージノード100Fでは、スタンバイのストレージ制御プログラム21S1-E及び21S2-Dが停止するが、それぞれ同一の冗長化グループにおけるスタンバイのストレージ制御プログラム21S2-E及び21S1-Dが稼働してもよい。
記憶システム50では、ユーザデータが二つ以上のストレージノード100に冗長化される。これにより、いずれかのストレージノード100で障害が発生しても、別のストレージノード100からユーザデータを読み出すことができる。ユーザデータの冗長化としては、例えば、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングといった冗長化が採用されてよい。ユーザデータの冗長化に基づく二つ以上のデータセットが、二つ以上のストレージノード100の記憶装置103に格納されてよい。「データセット」は、ストレージ制御プログラム21のようなプログラムから見た電子データの塊でよく、具体的には、例えば、ユーザデータそれ自体でもよいし、パリティでもよい。
また、記憶システム50では、メタデータも二つ以上のストレージノード100に冗長化される。具体的には、例えば、各冗長化グループについて、当該冗長化グループを構成する二つ以上のストレージ制御プログラム21が配置されている二つ以上のストレージノード100にメタデータが格納される。メタデータは、冗長化グループ毎に異なるメタデータ部分を含んでいてもよいし、全ての冗長化グループに共通のメタデータ部分を含んでいてもよい。メタデータは、例えば、ユーザデータの冗長化に基づく複数のデータセットの各々の位置(例えば、論理ボリュームIDとアドレス(例えばLBA(Logical Block Address))との組)をユーザデータ毎に表すデータ(例えば、特許文献1に開示の構成情報)を含んでよい。各冗長化グループについて、冗長化されているメタデータは同期的に更新される。例えば、或るストレージ制御プログラム21によりアクセスされるメタデータ部分が更新された場合、当該メタデータ部分の更新が、当該或るストレージ制御プログラム21が属する冗長化グループにおける残りの各ストレージ制御プログラムのメタデータ部分に反映される。なお、本実施形態において、「メタデータ」とは、ユーザデータ以外のデータのうちの少なくとも一部でよく、例えば、ユーザデータ以外の一つ又は複数種類のデータうち所定種類のデータに分類されたデータでよい。
図4は、ストレージノード100に格納されるプログラム及びデータの一例を示す。
ストレージノード100の記憶装置103に、メタデータ43が格納される。本実施形態では、例えば、ストレージノード100に、一つのアクティブのストレージ制御プログラム21Aと、二つのスタンバイのストレージ制御プログラム21S1及び21S2とが存在するため、メタデータ43としては、アクティブのストレージ制御プログラム21Aによりアクセスされるメタデータ43Aと、スタンバイのストレージ制御プログラム21S1及び21S2にそれぞれアクセスされるメタデータ43S1及び43S2とがある。メタデータ43のうちの少なくとも一部が、圧縮されて記憶装置103に格納されてもよい。
ストレージノードのメモリ102に格納されプロセッサ101により実行されるプログラムとして、それぞれストレージ制御を行う上述したストレージ制御プログラム21A、21S1及び21S2の他に、OS(Operating System)410及び支援プログラム203がある。ストレージ制御は、I/O要求に従うユーザデータのI/Oを含んでよく、更に、論理ボリューム間のデータコピーといった他種のストレージ制御を含んでもよい。支援プログラム203は、メタデータ43の冗長化及び同期を行ってよく、具体的には、例えば、特許文献1に開示の冗長化部22及びクラスタ制御部23のうちの少なくとも一つを含んでもよい。支援プログラム203の機能は、ストレージ制御プログラム21に含まれていてもよい。
ストレージノードのメモリ102に格納されるデータとして、記憶装置103から読み出されたメタデータ43がある。メモリ102に格納されたメタデータ43は、圧縮メタデータ部分44a(圧縮されているメタデータ部分)と、非圧縮メタデータ部分44n(圧縮されていないメタデータ部分)とのうちの少なくとも一つでよい。非圧縮メタデータ部分44nは、メタデータ43のうち圧縮メタデータ部分44a以外の部分である。また、本実施形態において、「メタデータ部分」は、メタデータ43のうちの少なくとも一部でよい。図4が示す例によれば、具体的には例えば以下の通りである。
アクティブのストレージ制御プログラム21Aに対応したメタデータ43Aについて、非圧縮メタデータ部分44nAと圧縮メタデータ部分44aAとの少なくとも一つがある。詳細としては、例えば、下記のうちの少なくとも一つが採用されてよい。
・各冗長化グループについて次のことが採用されてよい。すなわち、圧縮メタデータ部分44aAは、アクティブのストレージ制御プログラム21Aによるアクセスの頻度が閾値未満の部分でよい。具体的には、例えば、アクティブのストレージ制御プログラム21A(又は支援プログラム203)が、当該ストレージノード100に当該冗長化グループについて存在するメタデータ43Aのうちアクセス頻度が閾値未満の部分を圧縮してメモリ102に格納しておいてよい。これにより、メモリ消費量の低減とフェイルオーバ後のI/Oレイテンシ増大の低減とを実現しつつ、伸長による負荷増大も低減することが期待できる。なお、ここで言う「閾値」は、所定の閾値でもよいし、メタデータを構成する複数のメタデータ部分にそれぞれ対応した複数のアクセス頻度の統計(例えば、アクセス頻度の相対的な関係)を基に決定された閾値でもよい。
・各冗長化グループについて次のことが採用されてよい。すなわち、圧縮メタデータ部分44aAは、アクセス頻度が上述の閾値以上でもI/O要求に従うI/Oのために必要としない部分でよい。具体的には、例えば、アクティブのストレージ制御プログラム21A(又は支援プログラム203)が、当該ストレージノード100に当該冗長化グループについて存在するメタデータ43Aのうち、アクセス頻度が上述の閾値以上でもI/O要求に従うI/Oのために必要としない部分を圧縮してメモリ102に格納しておいてよい。これにより、フェイルオーバ後のI/Oレイテンシ増大の低減を実現しつつメモリ消費量の一層の低減が期待できる。
・各冗長化グループについて次のことが採用されてよい。すなわち、圧縮メタデータ部分44aAは、アクティブのストレージ制御プログラム21Aの起動処理に必要なメタデータ部分でよい。具体的には、例えば、アクティブのストレージ制御プログラム21A(又は支援プログラム203)が、当該ストレージノード100に当該冗長化グループについて存在するメタデータ43Aのうち、当該アクティブのストレージ制御プログラム21Aの起動処理に必要なメタデータ部分を圧縮してメモリ102に格納しておいてよい。フェイルオーバ後に状態が“スタンバイ”から“アクティブ”に昇格したストレージ制御プログラム21Aは、起動処理に必要なメタデータ部分を基に起動するが、起動処理後には、当該メタデータ部分を参照する可能性は低い。そのようなメタデータ部分が圧縮されるので、フェイルオーバ後のI/Oレイテンシ増大の低減を実現しつつメモリ消費量の一層の低減が期待できる。
スタンバイのストレージ制御プログラム21S1について、非圧縮メタデータ部分44nS1と圧縮メタデータ部分44aS1とのうちの少なくとも一つがある。各冗長化グループについて次のことが採用されてよい。すなわち、圧縮メタデータ部分44aS1は、フェイルオーバ後にアクセスされ得るメタデータ部分を含むメタデータ部分でよい。具体的には、例えば、当該スタンバイのストレージ制御プログラム21S1が配置されているストレージノード100のプロセッサ101(例えば、ストレージ制御プログラム21S1又は支援プログラム203)が、当該ストレージノード100に当該冗長化グループについて存在するメタデータ43S1のうちフェイルオーバ後にアクセスされ得るメタデータ部分を含む対象メタデータ部分を圧縮してメモリ102に格納しておいてよい。これにより、ストレージノード障害が生じてもI/Oを継続することに加えて、メモリ消費量を低減し、且つ、フェイルオーバ後のI/Oレイテンシ増大を低減することができる。
なお、少なくとも一つの冗長化グループについて、当該スタンバイのストレージ制御プログラム21S1は、スタンバイのストレージ制御プログラム21S1及び21S2のうちフェイルオーバ先に決定されたスタンバイのストレージ制御プログラム21Sでよい。これにより、メモリ消費量を低減しつつフェイルオーバ後のI/Oレイテンシ増大を低減することの確実性が高まる。この場合、図4が例示する通り、スタンバイのストレージ制御プログラム21S2が配置されているストレージノード100のプロセッサ101(例えば、ストレージ制御プログラム21S1又は支援プログラム203)が、メタデータ43S2の少なくとも一部をメモリ102に格納しておかないでもよい。これによりメモリ消費量の一層の低減が期待できる。
また、ストレージ制御プログラム21のアクセス対象のメタデータ部分がメモリ102に格納されておらず記憶装置103に格納されている場合、当該ストレージ制御プログラム21(又は支援プログラム203)は、当該メタデータ部分を記憶装置103からメモリ102に読み出す。また、ストレージ制御プログラム21のアクセス対象のメタデータ部分がメモリ102に格納されているが圧縮されている場合、当該ストレージ制御プログラム21(又は支援プログラム203)は、メモリ102における圧縮されているメタデータ部分を伸長する。このため、フェイルオーバ後には、適宜、いわゆるオンデマンドで、圧縮メタデータ部分が伸長されることになる。
各冗長化グループについて、メモリ102における圧縮メタデータ部分44aは、メタデータのうち下記(X)及び(Y)を除く部分を含んでよい。下記(X)及び(Y)がメモリ102にあるものの圧縮されていると、フェイルオーバによるアクティブ昇格後の起動及びI/O継続の速度低下が懸念されるからである。
(X)スタンバイのストレージ制御プログラム21Sがフェイルオーバによりアクティブとなり起動する処理のためにアクセスされる部分。
(Y)当該フェイルオーバにより起動したときに行われるI/Oのためにアクセスされる部分。
さて、ストレージノードのメモリ102に格納されるデータとして、更に、条件1データ451、条件2データ452、格納先制御テーブル453及び条件適用テーブル454がある。これらのうちの少なくとも一部が、メタデータに属してもよい。
条件1データ451は、条件1を表すデータである。条件1は、メモリ格納が採用される(格納先がメモリである)ことの条件であり、具体的には、例えば、優先度閾値を含んでよい。本実施形態では、優先度閾値(条件1)以下の優先度に対応したメタデータ部分(つまり、条件1を満たすほどに高い優先度が付与されているメタデータ部分)が、メモリ102に格納される。言い換えれば、条件1が満たされない場合、すなわち、優先度閾値よりも大きい優先度に対応したメタデータ部分(つまり、条件1を満たさないほどに低い優先度が付与されているメタデータ部分)は、記憶装置103に格納される。
条件2データ452は、条件2を表すデータである。条件2は、非圧縮が採用されることの条件であり、具体的には、例えば、優先度閾値を含んでよい。本実施形態では、優先度閾値(条件2)以下の優先度に対応したメタデータ部分(つまり、優先度が条件2を満たすほどに高い優先度が付与されているメタデータ部分)は、メモリ102において非圧縮とされる。メモリ102に格納される程に優先度が高いが非圧縮に維持する程に優先度が高くないメタデータ部分が、メモリ102において圧縮されていることとなる。
条件1及び条件2の組合せによれば、メタデータの格納方式として、メモリ格納が採用されるか否かと圧縮が採用されるか否かとのうちの少なくとも一つに従う複数の格納方式がある。条件1としての優先度閾値と条件2としての優先度閾値は、同じでもよいが、条件1としての優先度閾値よりも条件2としての優先度閾値が小さいことが好ましい。これにより、メモリ102に格納されたメタデータ部分を非圧縮とするか圧縮とするかの区別が可能である。
格納先制御テーブル453は、メタデータ部分の格納先の制御に使用されるテーブルである。
条件適用テーブル454は、条件1及び条件2の各々の適用状況を表すテーブル(別の言い方をすれば、採用されている格納方式を表すテーブル)である。
図5Aは、格納先制御テーブル453の構成例を示す。
格納先制御テーブル453は、メタデータ部分毎にレコードを有する。各レコードは、ID501、状態502、開始アドレス503、終了アドレス504、種類505及び優先度506といった情報を保持する。一つのメタデータ部分を例に取る(図5Aの説明において「注目メタデータ部分」)。
ID501は、注目メタデータ部分にアクセスするストレージ制御プログラム21のIDを表す。状態502は、当該ストレージ制御プログラム21の状態(アクティブ又はスタンバイ)を表す。
開始アドレス503は、注目メタデータ部分の開始アドレス(記憶装置103でのアドレス)を表す。終了アドレス504は、注目メタデータ部分の終了アドレス(記憶装置103でのアドレス)を表す。開始アドレス503及び終了アドレス504の組合せから、注目メタデータ部分の読出し元(記憶装置103における範囲)がわかる。なお、注目メタデータ部分がメモリ102に読み出された場合、注目メタデータ部分がメモリ102のどこに存在するかは、メタデータに含まれるテーブル(図示せず)により管理されてもよいし、格納先制御テーブル453において管理されてもよい。
種類505は、注目メタデータ部分の種類を表す。すなわち、メタデータ43は、一つ又は複数種類のメタデータを含んでよい。各種のメタデータが、メタデータ43における一つのメタデータ部分でよい。本実施形態によれば、メタデータの種類として、“モニタ”、“起動”及び“キャッシュ”がある。種類“モニタ”に属するメタデータであるモニタデータは、定期的なモニタリングのためにアクセスされるメタデータ部分である。種類“起動”に属するメタデータである起動データは、起動処理のためにアクセスされるメタデータ部分である。種類“キャッシュ”に属するメタデータであるキャッシュデータは、I/O要求に従うI/Oのためにアクセスされるメタデータ部分(例えば、I/O対象のデータがメモリ102におけるいずれの領域にキャッシュされているかを表すメタデータ部分)である。なお、少なくとも種類505はレコードに存在しなくてもよい。
優先度506は、注目メタデータ部分の優先度(例えば、優先順位)を表す。本実施形態では、優先度としての値が小さい程、優先度が高い。図5Aによれば、同一種類のメタデータであっても、当該メタデータにアクセスするストレージ制御プログラム21の状態によって優先度は異なる。例えば、図5Aによれば、下記の基準が採用されている。
・優先度“1”は、アクティブのストレージ制御プログラム21Aに対応したキャッシュデータに付与される。I/Oレイテンシ増大の低減のためである。
・優先度“2”は、スタンバイのストレージ制御プログラム21Sに対応した起動データに付与される。フェイルオーバに伴う迅速な起動が望ましいためである。
・優先度“3”は、スタンバイのストレージ制御プログラム21Sに対応したキャッシュデータに付与される。フェイルオーバ後のI/O継続におけるI/Oレイテンシ増大を低減するためである。
・優先度“4”は、アクティブのストレージ制御プログラム21Aに対応したモニタデータに付与される。モニタデータは、定期的にアクセスされるが、優先度“1”~“3”のいずれかが付与された上述の種類のメタデータに比べて重要性は低いためである。
・優先度“5”は、スタンバイのストレージ制御プログラム21Sに対応したモニタデータに付与される。モニタデータの重要性については上述の通りであるが、アクティブのストレージ制御プログラム21Aによりアクセスされるモニタデータに比べれば、スタンバイのストレージ制御プログラム21Sによりアクセスされるモニタデータの重要性は更に低くてよいためである。
・優先度“6”は、アクティブのストレージ制御プログラム21Aに対応した起動データに付与される。フェイルオーバによりスタンバイのストレージ制御プログラム21Sの状態が“アクティブ”に昇格した後、当該起動データがアクセスされる可能性は低いためである。
この基準によれば、例えば、条件1としての優先度閾値(メモリ格納が採用される優先度閾値)は、“4”が採用され、条件2としての優先度閾値(非圧縮が採用れる優先度閾値)として“3”が採用されてよい。この場合、優先度“4”以下の優先度が付与されているメタデータ種類のメタデータが、メモリ102に格納され、優先度“3”以下の優先度が付与されているメタデータ種類のメタデータが非圧縮となる。つまり、優先度“4”が付与されているメタデータ種類のメタデータが圧縮されてメモリ102に格納される。
図5Bは、条件適用テーブル454の構成例を示す。
条件適用テーブル454は、メタデータ部分毎にレコードを有する。各レコードは、アドレス521、条件1適用522及び条件2適用523といった情報を保持する。一つのメタデータ部分を例に取る(図5Bの説明において「注目メタデータ部分」)。
アドレス521は、注目メタデータ部分のアドレス(記憶装置103でのアドレス)を表す。アドレス521は、注目メタデータ部分に対応する開始アドレス503及び終了アドレス504が表す範囲に属する値である。アドレス521をキーに格納先制御テーブル453を参照することで、アドレス521に対応したメタデータ部分の特定が可能である。
条件1適用522は、注目メタデータ部分に条件1が適用されるか否かを表す。条件2適用523は、注目メタデータ部分に条件2が適用されるか否かを表す。条件1及び条件2の各々について、“適用”、“非適用”及び“対象外”がある。なお、本実施形態において、“対象外”がある理由は、条件1と条件2に順序性(依存性)があるためである。条件1と条件2に順序性が無ければ、“対象外”は採用されないでよい。条件1と条件2の組合せの例としては、下記の通りである。
・条件1が“適用”且つ条件2が“適用”の場合、注目メタデータ部分が圧縮されてメモリに格納される。つまり、注目メタデータ部分が、圧縮メタデータ部分としてメモリに存在する。
・条件1が“適用”且つ条件2が“非適用”の場合、注目メタデータ部分がメモリに格納されるが圧縮されない。つまり、注目メタデータ部分が、非圧縮メタデータ部分としてメモリに存在する。
・条件1が“非適用”なら条件2が“対象外”となる。つまり、本実施形態では、注目メタデータ部分がメモリに格納されなければ、記憶装置103において非圧縮の注目メタデータ部分が存在することとなる。
以下、本実施形態で行われる処理の例を説明する。
図6は、条件1反映処理の流れの一例を示す。
条件1反映処理は、例えば、ストレージ制御プログラム21の初期起動時と、優先度変更時とのうちの少なくとも一つの時に行われる。優先度変更時とは、少なくとも一つのストレージ制御プログラム21について、当該ストレージ制御プログラム21によりアクセスされる少なくとも一つのメタデータ部分の優先度が変更される時であり、例えば、ストレージ制御プログラム21の起動完了時、スタンバイのストレージ制御プログラム21Sのアクティブ昇格時、ユーザにより優先度が変更された時、及び、メモリ102の空き領域の不足時、のうちの少なくとも一つでよい。ここでは、優先度が変更されたメタデータ部分を例に取る(図6の説明において「注目メタデータ部分」)。
支援プログラム203が、注目メタデータ部分の優先度506が、条件1データ451表す優先度閾値以下か否かを判定する(S601)。
S601の判定結果が真であることは、注目メタデータ部分がメモリ102に格納される程に優先度が高いことを意味する。この場合、支援プログラム203が、注目メタデータ部分の条件1適用522が、注目メタデータ部分の現在の格納形式に一致するか否か(注目メタデータ部分が既にメモリ102に格納されているか否か)を判定する(S602)。S602の判定結果が真の場合、条件1反映処理が終了する。S602の判定結果が偽の場合、支援プログラム203が、メモリ102のうち注目メタデータ部分の格納先とする領域をロックし、当該領域に注目メタデータ部分を格納する(S604)。このメモリロックには、例えば、OS410が提供する機能(例えば、Linux(登録商標)のmlock)が利用される。これにより、メモリ102の空き容量が不足した場合でも当該領域に格納された注目メタデータ部分が記憶装置103に格納されない(スワップアウトしない)ように制御される。メモリロックは、OS410が提供する機能の利用に代えて、支援プログラム203それ自身により行われてもよい。S604の後、支援プログラム203が、注目メタデータ部分に対応した条件1適用522を“非適用”から“適用”に更新する(S606)。
S601の判定結果が偽であることは、注目メタデータ部分がメモリ102に格納される程に優先度が高くないことを意味する。この場合、支援プログラム203が、注目メタデータ部分の条件1適用522が、注目メタデータ部分の現在の格納形式に一致するか否か(注目メタデータ部分がメモリ102に非格納か否か)を判定する(S603)。S603の判定結果が真の場合、条件1反映処理が終了する。S603の判定結果が偽の場合、支援プログラム203が、メモリ102のうち注目メタデータ部分が格納されている領域のロックを解除する(S605)。これにより、当該領域に格納されている注目メタデータ部分がスワップアウト又は削除可能な状態となる(この段階で、注目メタデータ部分が当該領域から削除されてもよいし、当該領域が空き領域として管理されてもよい)。支援プログラム203が、注目メタデータ部分に対応した条件1適用522を“適用”から“非適用”に更新する(S606)。
図7は、条件2反映処理の流れの一例を示す。
条件2反映処理は、例えば、優先度変更時に行われる。ここでは、優先度が変更されたメタデータ部分を例に取る(図7の説明において「注目メタデータ部分」)。
支援プログラム203が、注目メタデータ部分の優先度506が、条件2データ452表す優先度閾値以下か否かを判定する(S701)。
S701の判定結果が真であることは、注目メタデータ部分がメモリ102において非圧縮である程に優先度が高いことを意味する。この場合、支援プログラム203が、注目メタデータ部分の条件2適用522が、注目メタデータ部分の現在の格納形式に一致するか否か(注目メタデータ部分がメモリ102において非圧縮か否か)を判定する(S702)。S702の判定結果が真の場合、条件2反映処理が終了する。S702の判定結果が偽の場合、支援プログラム203が、メモリ102における圧縮済の注目メタデータ部分を伸長し(S704)、圧縮済の注目メタデータ部分をメモリ102から削除し(S705)、非圧縮の(伸長された)メタデータ部分をメモリ102に格納する(S706)。支援プログラム203が、注目メタデータ部分に対応した条件2適用522を“非適用”から“適用”に更新する(S710)。
S701の判定結果が偽であることは、注目メタデータ部分がメモリ102において圧縮されておく程に優先度が低いことを意味する。この場合、支援プログラム203が、注目メタデータ部分の条件2適用522が、注目メタデータ部分の現在の格納形式に一致するか否か(注目メタデータ部分がメモリ102において圧縮済か否か)を判定する(S703)。S703の判定結果が真の場合、条件2反映処理が終了する。S703の判定結果が偽の場合、支援プログラム203が、メモリ102における注目メタデータ部分を圧縮し(S707)、圧縮前の注目メタデータ部分をメモリ102から削除し(S708)、圧縮メタデータ部分をメモリ102に格納する(S709)。支援プログラム203が、注目メタデータ部分に対応した条件2適用522を“適用”から“非適用”に更新する(S710)。
図8は、メタデータライト処理の流れの一例を示す。
メタデータライト処理は、例えば、支援プログラム203がメタデータ部分のライト指示をストレージ制御プログラム21から受けた場合に開始される。支援プログラム203が、ライト対象のメタデータ部分の優先度506が、条件2データ452表す優先度閾値以下か否かを判定する(S801)。S801の判定結果が偽の場合、支援プログラム203が、ライト対象のメタデータ部分を圧縮する(S802)。
S801の判定結果が真の場合、又は、S802の後、支援プログラム203が、非圧縮又は圧縮済のメタデータ部分の容量と、メモリ102の空き容量とから、メモリ102の空き不足又は空き過剰の条件が満たされるか否かを判定する(S803)。メモリ102の空き不足の条件が満たされるとは、例えば、非圧縮又は圧縮済のメタデータ部分の容量が、メモリ102の空き容量以上であることでよい。メモリ102の空き過剰の条件が満たされるとは、例えば、メモリ102の容量に対して空き容量の割合が一定値以上であることでよい。
S803の判定結果が真の場合、支援プログラム203が、条件1及び条件2のうちの少なくとも一つ(条件1データ451及び/又は条件2データ452)を更新する(S804)。例えば、支援プログラム203が、条件1及び条件2のうちの少なくとも一つについて、優先度閾値をより小さくする、すなわち、メモリ格納が採用される条件としての優先度と非圧縮が採用される条件としての優先度とのうちの少なくとも一つを高くする。結果として、以後、メモリ消費量がより低減されることとなる。なお、条件1及び条件2のうちの少なくとも一つを更新することに代えて、支援プログラム203は、少なくとも一種類のメタデータの優先度506の値を大きくすること(優先度を低くすること)を行ってもよい。つまり、条件1及び条件2の少なくとも一つの優先度閾値と、少なくとも一種類のメタデータの優先度506との相対的な関係が、メモリ消費量がより低減される関係に更新されればよい。
S804の後、支援プログラム203は、図6に示した条件1適用処理(S805)と、図7に示した条件2適用処理(S806)とを行う。S805とS806はどちらが先に行われてもよい。
S806の後、又は、S803の判定結果が偽の場合、支援プログラム203は、非圧縮又は圧縮済のメタデータ部分(ライト対象のメタデータ部分)をメモリ102に格納する(S807)。そして、支援プログラム203は、条件適用テーブル454に、当該メタデータ部分に対応したレコードを追加する(S808)。
図9は、メタデータリード処理の流れの一例を示す。
メタデータリード処理は、例えば、支援プログラム203がメタデータ部分のリード指示をストレージ制御プログラム21から受けた場合に開始される。支援プログラム203が、リード対象のメタデータ部分に対応した条件2適用523を参照し(S901)、条件2適用523が“適用”か否かを判定する(S902)。
S902の判定結果が真の場合、支援プログラム203は、リード対象のメタデータ部分をメモリ102から読み出し、読み出したメタデータ部分を応答する(S908)。
S902の判定結果が偽の場合、支援プログラム203は、メモリ102からリード対象の圧縮メタデータ部分を読み出し、読み出した圧縮メタデータ部分を伸長する(S903)。支援プログラム203は、当該メタデータ部分に対応した優先度506が、条件2としての優先度閾値以下か否かを判定する(S904)。
S904の判定結果が偽の場合、支援プログラム203は、S903で伸張されたメタデータ部分を応答する(S908)。
一方、S904の判定結果が真の場合、支援プログラム203は、S903で伸長されたメタデータ部分をメモリ102に格納し(対応する圧縮メタデータ部分が格納されている領域を空き領域として管理し)(S905)、当該メタデータ部分に対応した条件2適用523を“非適用”から“適用”に更新する(S906)。支援プログラム203は、S903で伸張されたメタデータ部分を応答する(S908)。
上述した優先度変更時に、条件1反映処理と条件2反映処理の両方が行われてよいが、それらの処理の実施前に、メタデータ部分のリード指示を支援プログラム203が受けることがあり得る。この場合、図9に示すように、メタデータリード処理において、いわゆるオンデマンドで、変更後の優先度に適切な格納方式でリード対象のメタデータ部分が格納されることとなる。
図10は、格納方式設定UIの一例を示す。
格納方式設定UI1000は、メタデータ種類毎の格納方式を設定するためのUI(User Interface)でよい。格納方式設定UI1000は、例えばGUIである。格納方式設定UI1000は、支援プログラム203により図示しない管理ノード(例えば、フロントエンドネットワーク120に接続されている管理用の計算機)に提供される。
格納方式の設定は、例えば、メタデータ種類毎の優先度設定である。格納方式設定UI1000に表示される情報は、格納先制御テーブル453に基づく。具体的には、例えば、格納方式設定UI1000は、アクティブ用の各種メタデータについての優先度を受け付けるUI部分1001Aと、スタンバイ用の各種メタデータについての優先度を受け付けるUI部分1001Sとを有する。UI部分1001A及び1001Sのいずれにおいても、優先度の欄が、管理者(例えばユーザの一例)が優先度の入力が可能な欄である。
格納方式設定UI1000における更新ボタン1002が押された場合に、UI部分1001A及び1001Sの各々に入力された優先度が、格納先制御テーブル453に登録される。
図10が示す例では、各冗長化グループについて、アクティブ用のメタデータ種類毎の優先度は共通であり、且つ、スタンバイ用のメタデータ種類毎の優先度も共通でよい。また、各冗長化グループについて、スタンバイ用のメタデータ種類毎の優先度は、全てのスタンバイのストレージ制御プログラム21Sについて共通でよい。
格納方式設定UIについて、下記のうちの少なくとも一つが採用されてもよい。
・冗長化グループ毎に、アクティブ用のメタデータ種類毎の優先度と、スタンバイ用のメタデータ種類毎の優先度との設定が可能であること。
・少なくとも一つの冗長化グループについて、フェイルオーバ先として決定されたスタンバイのストレージ制御プログラム21Sについての各種メタデータの優先度と、それ以外のスタンバイのストレージ制御プログラム21Sについての各種メタデータの優先度とを違えて設定可能であること。
・条件1として優先度閾値と、条件2としての優先度閾値とのうちの少なくとも一つが設定可能であること。
・優先度を設定することに代えて、メタデータ種類毎に、メモリ格納が採用されるか否かと圧縮が採用されるか否かとの指定が可能であること。
図11は、状態変更処理の流れの一例を示す。
状態変更処理は、ストレージ制御プログラム21についての各種メタデータの優先度が変更されることになる処理の一例である。状態変更処理は、例えば、下記のうちのいずれかに応答して開始される。
・ストレージノード100の障害発生に伴う状態昇格。すなわち、或るストレージノード100で障害が発生した場合、当該ストレージノード100におけるアクティブのストレージ制御プログラム21Aと同一の冗長化グループに属するいずれかのスタンバイのストレージ制御プログラム21Sの状態が“アクティブ”に昇格する。
・障害が発生したストレージノードの復旧に伴う状態降格。すなわち、障害対応としてストレージノード100が追加される等により、別ストレージノード100でアクティブのストレージ制御プログラムが稼働可能になった場合、当該別ストレージノード100に自身(アクティブ)のストレージ制御プログラムと冗長化グループを構成するスタンバイのストレージ制御プログラムが稼働し、自身のストレージ制御プログラムの状態が“アクティブ”から“スタンバイ”に降格し、その後、稼働したスタンバイのストレージ制御プログラムの状態が“スタンバイ”から“アクティブ”に昇格する。これにより、一つのストレージノード100で複数のアクティブのストレージ制御プログラムが存在する状況を回避することができる。
支援プログラム203は、ストレージ制御プログラム21の状態変更が、“アクティブ”への昇格か否かを判定する(S1101)。
S1101の判定結果が真であることは、当該状態変更が“アクティブ”への昇格である。この場合、支援プログラム203が、状態が昇格したストレージ制御プログラム21に対応した状態502を“アクティブ”に変更し(S1102)、当該ストレージ制御プログラム21に対応した各種メタデータの優先度506を、アクティブ用の各種メタデータの優先度に変更する(S1103)。
S1101の判定結果が偽であることは、当該状態変更が“スタンバイ”への降格である。この場合、支援プログラム203が、状態が降格したストレージ制御プログラム21に対応した状態502を“スタンバイ”に変更し(S1104)、当該ストレージ制御プログラム21に対応した各種メタデータの優先度506を、スタンバイ用の各種メタデータの優先度に変更する(S1105)。
以上の図6~図11を参照した説明によれば、例えば下記のことが言える。
各冗長化グループについて、メタデータの格納方式として、メモリ格納が採用されるか否かと圧縮が採用される否かとのうちの少なくとも一つに従う複数の格納方式がある。これにより、I/Oレイテンシ増大の低減を優先するのかメモリ消費量の低減を優先するのかに応じてメタデータ部分の格納方式を決定することができる。対象メタデータ部分(スタンバイのストレージ制御プログラム21Sの状態が“アクティブ”に昇格し当該ストレージ制御プログラムによりフェイルオーバ後にアクセスされ得るメタデータ部分を含む部分)は、メモリ格納及び圧縮が採用された格納方式に従い格納される。
また、各冗長化グループについて、メタデータ種類毎に、当該種類のメタデータの優先度が、当該種類のメタデータにアクセスするストレージ制御プログラムがアクティブであるかスタンバイであるかによって異なる。スタンバイのストレージ制御プログラム21Sについてフェイルオーバ後にアクセスされ得るメタデータ部分に該当するメタデータ種類についての優先度は、メモリ格納及び圧縮が採用された格納方式に対応した優先度である(具体的には、例えば、条件1としての優先度閾値以下であるが条件2としての優先度閾値より大きい値の優先度である)。各冗長化グループについて、当該冗長化グループに属するストレージ制御プログラム毎に、当該ストレージ制御プログラムが配置されたストレージノードにおける支援プログラム203が、メタデータ種類毎に、当該メタデータ種類と当該ストレージ制御プログラムの状態(アクティブであるかスタンバイであるか)とに対応した優先度に従い、当該種類のメタデータの格納方式を決定し、当該決定した格納方式に従い当該種類のメタデータを格納する。これにより、メタデータ種類とストレージ制御プログラム21の状態との組合せに最適な格納方式で各種のメタデータが格納される。
また、各冗長化グループについて、当該冗長化グループに属するいずれかのストレージ制御プログラム21によりいずれかの種類のメタデータがアクセス対象となる場合に、当該ストレージ制御プログラム21が配置されたストレージノード100における支援プログラム203が、当該種類のメタデータの格納方式が、当該メタデータ種類と当該ストレージ制御プログラム21の状態(アクティブかスタンバイであるか)とに対応した優先度に適切な格納方式であるか否かを判定する。この判定の結果が偽の場合、支援プログラム203が、当該種類のメタデータを、当該適切な格納方式に従い格納する。ストレージ制御プログラムの状態は適宜変更されるが、ストレージ制御プログラムの状態が変更されても、各種メタデータについて適切な格納方式に従う格納を維持することができる。例えば、図9のS904のように、リード対象のメタデータ部分の格納方式が当該メタデータ部分をリード対象としたストレージ制御プログラム21の状態との関係で不適切であれば、当該リード対象のメタデータ部分は適切な格納方式でストレージノード100に格納されることとなる。
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、支援プログラム203が行う処理の少なくとも一部を、支援プログラム203に代えてストレージ制御プログラム21が行ってもよい。
50……記憶システム

Claims (12)

  1. それぞれメモリ、記憶装置及びそれらに接続されたプロセッサを有する複数のストレージノードを備え、
    それぞれが二つ以上のストレージ制御プログラムで構成された一つ又は複数の冗長化グループが、前記複数のストレージノードに配置されており、
    前記一つ又は複数の冗長化グループの各々について、
    当該冗長化グループを構成しそれぞれプロセッサに実行されストレージ制御を行う二つ以上のストレージ制御プログラムは、異なる二つ以上のストレージノードに配置されており、
    当該二つ以上のストレージノードが、ストレージ制御においてアクセスされるメタデータの前記二つ以上のストレージノードにおける冗長化を維持し、
    いずれかのストレージ制御プログラムがアクティブであり、残りの一つ又は二つ以上のストレージ制御プログラムの各々がスタンバイであり、
    アクティブのストレージ制御プログラムについて、当該アクティブのストレージ制御プログラムが配置されているストレージノードのプロセッサが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうち少なくとも当該アクティブのストレージ制御プログラムに使用される部分であるアクティブメタデータ部分を非圧縮で当該ストレージノードのメモリに格納しておき、当該メモリにある非圧縮のアクティブメタデータ部分を使用してI/Oを行うようになっており、
    アクティブのストレージ制御プログラムが配置されているストレージノードに障害が生じた場合に当該アクティブのストレージ制御プログラムからいずれかのスタンバイのストレージ制御プログラムへの当該冗長化グループ内でのフェイルオーバが行われるようになっており、
    少なくとも一つのスタンバイのストレージ制御プログラムについて、当該スタンバイのストレージ制御プログラムが配置されているストレージノードのプロセッサが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうちフェイルオーバ後にアクセスされ得るメタデータ部分を含む対象メタデータ部分を圧縮して当該ストレージノードのメモリに格納しておく、
    記憶システム。
  2. 少なくとも一つの冗長化グループについて、
    前記少なくとも一つのスタンバイのストレージ制御プログラムは、前記二つ以上のスタンバイのストレージ制御プログラムのうちフェイルオーバ先に決定されたスタンバイのストレージ制御プログラムである、
    請求項1に記載の記憶システム。
  3. 前記少なくとも一つの冗長化グループについて、
    前記二つ以上のスタンバイのストレージ制御プログラムのうち前記フェイルオーバ先に決定されたスタンバイのストレージ制御プログラム以外のスタンバイのストレージ制御プログラムの各々について、当該スタンバイのストレージ制御プログラムが配置されているストレージノードのプロセッサが、当該ストレージノードに当該冗長化グループについて存在するメタデータの少なくとも一部をメモリに格納しておかず記憶装置に格納しておく、
    請求項2に記載の記憶システム。
  4. 各冗長化グループについて、前記対象メタデータ部分は、前記メタデータのうち下記(X)及び(Y)を除く部分を含む、
    (X)前記スタンバイのストレージ制御プログラムがフェイルオーバによりアクティブとなり起動する処理のためにアクセスされる部分、
    (Y)当該フェイルオーバにより起動したときに行われるI/Oのためにアクセスされる部分、
    請求項1に記載の記憶システム。
  5. 各冗長化グループについて、
    アクティブのストレージ制御プログラムについて、当該アクティブのストレージ制御プログラムが配置されているストレージノードのプロセッサが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうちアクセス頻度が閾値未満の部分を圧縮して当該ストレージノードのメモリに格納しておく、
    請求項1に記載の記憶システム。
  6. 前記各冗長化グループについて、
    アクティブのストレージ制御プログラムについて、当該アクティブのストレージ制御プログラムが配置されているストレージノードのプロセッサが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうち、アクセス頻度が前記閾値以上でもI/O要求に従うI/Oのために必要としない部分を圧縮して当該ストレージノードのメモリに格納しておく、
    請求項5に記載の記憶システム。
  7. 各冗長化グループについて、
    フェイルオーバ先とされたことによりスタンバイのストレージ制御プログラムが起動してアクティブのストレージ制御プログラムになった場合、当該ストレージ制御プログラムが配置されているストレージノードのプロセッサが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうち当該ストレージ制御プログラムの起動処理に必要なメタデータ部分を圧縮して当該ストレージノードのメモリに格納しておく、
    請求項1に記載の記憶システム。
  8. 各冗長化グループについて、
    メタデータの格納方式として、メモリ格納が採用されるか否かと圧縮が採用される否かとのうちの少なくとも一つに従う複数の格納方式があり、
    メモリ格納が採用されるか否かについて、メモリ格納が採用されない場合は記憶装置格納が採用され、
    前記対象メタデータ部分の格納方式は、メモリ格納及び圧縮が採用された格納方式である、
    請求項1に記載の記憶システム。
  9. 前記各冗長化グループについて、
    前記メタデータを構成する複数種類のメタデータの各々について、当該種類のメタデータの優先度が、当該種類のメタデータにアクセスするストレージ制御プログラムがアクティブであるかスタンバイであるかによって異なり、
    スタンバイのストレージ制御プログラムについてフェイルオーバ後にアクセスされ得るメタデータ部分に該当するメタデータ種類についての優先度は、メモリ格納及び圧縮が採用された格納方式に対応した優先度であり、
    当該冗長化グループに属する各ストレージ制御プログラムについて、当該ストレージ制御プログラムが配置されたストレージノードのプロセッサが、メタデータ種類毎に、
    当該メタデータ種類と当該ストレージ制御プログラムがアクティブであるかスタンバイであるかとに対応した優先度に従い、当該種類のメタデータの格納方式を決定し、
    当該決定した格納方式に従い当該種類のメタデータを格納する、
    請求項8に記載の記憶システム。
  10. 前記各冗長化グループについて、
    当該冗長化グループに属するいずれかのストレージ制御プログラムによりいずれかの種類のメタデータがアクセス対象となる場合に、当該ストレージ制御プログラムが配置されたストレージノードのプロセッサが、
    当該種類のメタデータの格納方式が、当該メタデータ種類と当該ストレージ制御プログラムがアクティブかスタンバイであるかとに対応した優先度に適切な格納方式であるか否かを判定し、
    当該判定の結果が偽の場合、当該種類のメタデータを、当該適切な格納方式に従い格納する、
    請求項9に記載の記憶システム。
  11. 前記各冗長化グループについて、
    前記二つ以上のストレージ制御プログラムの各々について、当該ストレージ制御プログラムを有するストレージノードにおけるプロセッサが、前記適切な格納方式に従い当該種類のメタデータを圧縮しても当該ストレージノードのメモリの空き容量が空き不足又は空き過剰の条件を満たしている場合、
    当該ストレージ制御プログラムがアクティブかスタンバイであるかとメタデータ種類とに対応した優先度と、適切な格納方式に対応した優先度との関係を、メモリ消費量がより低減される関係に相対的に変更し、
    当該変更後の関係に従い、少なくとも一種類のメタデータの格納方式を変更する、
    請求項10に記載の記憶システム。
  12. それぞれが二つ以上のストレージ制御プログラムで構成された一つ又は複数の冗長化グループが配置された複数のストレージノードで構成された記憶システムの記憶制御方法であって、
    前記一つ又は複数の冗長化グループの各々について、当該冗長化グループを構成しストレージ制御を行う二つ以上のストレージ制御プログラムが配置されている異なる二つ以上のストレージノードが、ストレージ制御においてアクセスされるメタデータの当該二つ以上のストレージノードにおける冗長化を維持し、
    前記一つ又は複数の冗長化グループの各々について、
    いずれかのストレージ制御プログラムがアクティブであり、残りの一つ又は二つ以上のストレージ制御プログラムの各々がスタンバイであり、
    アクティブのストレージ制御プログラムについて、当該アクティブのストレージ制御プログラムが配置されているストレージノードのプロセッサが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうち少なくとも当該アクティブのストレージ制御プログラムに使用される部分であるアクティブメタデータ部分を非圧縮で当該ストレージノードのメモリに格納しておき、当該メモリにある非圧縮のアクティブメタデータ部分を使用してI/Oを行うようになっており、
    アクティブのストレージ制御プログラムが配置されているストレージノードに障害が生じた場合に当該アクティブのストレージ制御プログラムからいずれかのスタンバイのストレージ制御プログラムへの当該冗長化グループ内でのフェイルオーバが行われるようになっており、
    少なくとも一つのスタンバイのストレージ制御プログラムについて、当該スタンバイのストレージ制御プログラムが配置されているストレージノードが、当該ストレージノードに当該冗長化グループについて存在するメタデータのうちフェイルオーバ後にアクセスされ得るメタデータ部分を含む対象メタデータ部分を圧縮して当該ストレージノードのメモリに格納しておく、
    記憶制御方法。
JP2020137460A 2020-08-17 2020-08-17 記憶システム及び記憶制御方法 Pending JP2022033515A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020137460A JP2022033515A (ja) 2020-08-17 2020-08-17 記憶システム及び記憶制御方法
US17/200,387 US11341007B2 (en) 2020-08-17 2021-03-12 Storage system and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020137460A JP2022033515A (ja) 2020-08-17 2020-08-17 記憶システム及び記憶制御方法

Publications (1)

Publication Number Publication Date
JP2022033515A true JP2022033515A (ja) 2022-03-02

Family

ID=80223521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020137460A Pending JP2022033515A (ja) 2020-08-17 2020-08-17 記憶システム及び記憶制御方法

Country Status (2)

Country Link
US (1) US11341007B2 (ja)
JP (1) JP2022033515A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220300374A1 (en) * 2021-03-17 2022-09-22 Micron Technology, Inc. Redundant array management techniques

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6791834B2 (ja) 2017-11-30 2020-11-25 株式会社日立製作所 記憶システム及び制御ソフトウェア配置方法
JP6949801B2 (ja) * 2018-10-17 2021-10-13 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ配置方法
US10852994B2 (en) * 2019-03-27 2020-12-01 Netapp Inc. Metadata compaction

Also Published As

Publication number Publication date
US20220050757A1 (en) 2022-02-17
US11341007B2 (en) 2022-05-24

Similar Documents

Publication Publication Date Title
US9081690B2 (en) Storage system and management method of control information therein
JP5154200B2 (ja) データ読出し方法、データ管理システム及びストレージシステム
JP4494420B2 (ja) 複数ファクタに基づく適応ファイル先読み
JP5124551B2 (ja) ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法
US11580162B2 (en) Key value append
JP6898393B2 (ja) ストレージシステム及びデータ転送方法
US11068367B2 (en) Storage system and storage system control method
CN115427941A (zh) 数据管理系统和控制的方法
JP6835949B2 (ja) 情報システム、管理プログラム及び情報システムのプログラム交換方法
JPWO2013186828A1 (ja) 計算機システム及び制御方法
US20170220249A1 (en) Systems and Methods to Maintain Consistent High Availability and Performance in Storage Area Networks
JP2020154587A (ja) 計算機システム及びデータ管理方法
WO2010131373A1 (en) Storage subsystem
JP2020173727A (ja) ストレージ管理装置、情報システム、及びストレージ管理方法
JP4409521B2 (ja) 記憶装置
US11675545B2 (en) Distributed storage system and storage control method
US11436256B2 (en) Information processing apparatus and information processing system
JP2022033515A (ja) 記憶システム及び記憶制御方法
WO2016013075A1 (ja) ストレージ、計算機およびその制御方法
US10846012B2 (en) Storage system for minimizing required storage capacity during remote volume replication pair duplication
CN117130565B (zh) 数据处理方法、装置、磁盘阵列卡及介质
JP7458610B2 (ja) データベースシステム、及びクエリ実行方法
US20230325324A1 (en) Caching techniques
US11836391B2 (en) Distributed storage system and storage control method
US20230273728A1 (en) Storage control apparatus and method