JP7506707B2 - 記憶システム及び障害対処方法 - Google Patents

記憶システム及び障害対処方法 Download PDF

Info

Publication number
JP7506707B2
JP7506707B2 JP2022074093A JP2022074093A JP7506707B2 JP 7506707 B2 JP7506707 B2 JP 7506707B2 JP 2022074093 A JP2022074093 A JP 2022074093A JP 2022074093 A JP2022074093 A JP 2022074093A JP 7506707 B2 JP7506707 B2 JP 7506707B2
Authority
JP
Japan
Prior art keywords
storage
storage node
control unit
node
data
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
JP2022074093A
Other languages
English (en)
Other versions
JP2023163298A (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 JP2022074093A priority Critical patent/JP7506707B2/ja
Priority to US17/946,632 priority patent/US12111730B2/en
Priority to CN202310134416.1A priority patent/CN116974462A/zh
Publication of JP2023163298A publication Critical patent/JP2023163298A/ja
Application granted granted Critical
Publication of JP7506707B2 publication Critical patent/JP7506707B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • 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/0614Improving the reliability of 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/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/84Using snapshots, i.e. a logical point-in-time copy of the data

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)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は記憶システム及び障害対処方法に関し、例えば、それぞれ1又は複数のSDS(Software Defined Storage)が実装された複数のストレージノードを備える記憶システムに適用して好適なものである。なお、以下において、SDSとは、ストレージ機能を有するソフトウェアを汎用のサーバ装置に実装することにより構築されるストレージ装置を指す。
従来、情報処理システムでは、可用性及び信頼性向上のためにサーバ装置の冗長化構成をとることが多い。例えば、特許文献1には、SDSのストレージ制御ソフトウェアのフェールオーバ方式が提案されている。
具体的に、特許文献1では、フェールオーバを実現する制御ソフトウェアのペアを、平時に動作するアクティブ側の制御ソフトウェア(以下、これをアクティブ制御ソフトウェアと呼ぶ)と、障害発生時にアクティブ制御ソフトウェアから処理を引き継ぐスタンバイ側の制御ソフトウェア(以下、これをスタンバイ制御ソフトウェアと呼ぶ)とで構成し、同じペアを構成するアクティブ制御ソフトウェア及びスタンバイ制御ソフトウェアをそれぞれ異なるサーバ装置に配置する。また同じペアを構成するアクティブ制御ソフトウェア及びスタンバイ制御ソフトウェアは、それぞれ同じ制御情報を保持し、これらの制御情報を常に同期して更新する。
このような技術によれば、システム全体の信頼性を維持しつつ、制御情報の読込み処理をサーバ内で閉じることができるため、高性能化を達成できるという利点がある。
一方、近年では、クラウド(特にパブリッククラウド)が情報処理システムのプラットフォームとして普及しつつある。このようなパブリッククラウドでは、パブリッククラウドベンダがIaaS(Infrastructure as a Service)として計算機資源やストレージ資源を提供するサービスを展開している。
パブリッククラウドのユーザは、これらパブリッククラウド上の計算機サービスやストレージサービスにAPI(Application Programming Interface)を通じてアクセスし、必要な量の計算機資源やストレージ資源を必要なタイミングで確保可能であり、またその構成も迅速に変更可能である。
特開2019-101703号公報
分散ストレージシステム全体としての信頼性及び性能の維持を考慮した場合、サーバ装置の障害を契機とした縮退構成から迅速に復旧するため、特許文献1が前提としている環境をはじめとするオンプレミスの環境においては、予備のサーバ装置を配置することが一般的である。また一般に、予備のサーバ装置には、予め記憶装置が取り付けられており、障害からの復旧時にはその記憶装置にデータを書き戻すことで縮退構成から復帰する。
しかしながら、このように予備のサーバ装置を予め用意するためにはその分の費用が必要となり、分散ストレージシステムの導入や構築に多くの費用を要するという問題があった。また、縮退構成からの復帰のためには、上述のように障害が発生したサーバ装置から予備のサーバ装置に接続された記憶装置に対してデータのコピーを行わなければならないために相応の時間を要し、迅速な復旧の阻害要因となっている問題があった。
本発明は以上の点を考慮してなされたもので、システム構築に要する費用を抑制しながら、障害発生時には縮退構成からの復帰を迅速に行い得る記憶システム及び障害対処方法を提案しようとするものである。
かかる課題を解決するため本発明においては、上位装置に対して記憶領域を提供する記憶システムにおいて、クラウドシステムに設けられ、それぞれ前記記憶領域を提供する1又は複数の記憶装置と、前記クラウドシステムに設けられ、前記上位装置からの要求に応じて自己に割り当てられた前記記憶装置にデータを読み書きする1又は複数のストレージノードと、前記クラウドシステムを制御するクラウド制御装置とを設け、前記ストレージノードが、他のストレージノードの障害を検知した場合に、新たなストレージノードの用意を前記クラウド制御装置に指示し、障害が発生したストレージノードに割り当てられていた前記記憶装置が故障しているか否かを判断し、当該記憶装置が故障していないと判断した場合には、前記障害が発生したストレージノードに割り当てられていた前記記憶装置を、前記新たなストレージノードに割り当てるよう前記クラウド制御装置に依頼し、前記新たなストレージノードが、障害の発生中に前記障害が発生したストレージノードに割り当てられていた前記記憶装置への書き込みが要求されていたデータを、前記新たなストレージノードに割り当てられた前記記録装置に書き込むようにした。
また本発明においては、上位装置に対して記憶領域を提供する記憶システムにおける障害対処方法において、前記記憶システムは、クラウドシステムに設けられ、それぞれ前記記憶領域を提供する1又は複数の記憶装置と、前記クラウドシステムに設けられ、前記上位装置からの要求に応じて自己に割り当てられた前記記憶装置にデータを読み書きする1又は複数のストレージノードと、前記クラウドシステムを制御するクラウド制御装置とを有し、前記ストレージノードが、他のストレージノードの障害を検知した場合に、新たなストレージノードの用意を前記クラウド制御装置に依頼する第1のステップと、当該ストレージノードが、障害が発生したストレージノードに割り当てられていた前記記憶装置が故障しているか否かを判断する第2のステップと、当該ストレージノードが、当該記憶装置が故障していないと判断した場合には、前記障害が発生したストレージノードに割り当てられていた前記記憶装置を、前記新たなストレージノードに割り当てるよう前記クラウド制御装置に依頼する第3のステップと、前記新たなストレージノードが、障害の発生中に前記障害が発生したストレージノードに割り当てられていた前記記憶装置への書き込みが要求されていたデータを、前記新たなストレージノードに割り当てられた前記記録装置に書き込む第4のステップとを設けるようにした。
本発明の記憶システム及び障害対処方法によれば、ユーザが分散ストレージシステムを構築するに際して予備の計算機資源やストレージ資源を事前に用意する必要がないため、ユーザ視点から見て安価に記憶システムを構築することができる。また障害が発生したストレージノードに割り当てられていた記憶装置に格納されているデータを、例えば新たなストレージノードに割り当てた記憶装置にコピーするといった作業も必要がなく、障害発生時の縮退構成からの復帰を迅速に行うことができる。
本発明によれば、システム構築に要する費用を抑制しながら、障害発生時には縮退構成からの復帰を迅速に行い得る記憶システム及び障害対処方法を実現できる。
本実施の形態による記憶システムの全体構成を示すブロック図である。 ストレージノードの概略構成を示すブロック図である。 ストレージノードのメモリに格納されたソフトウェア及び情報の説明に供するブロック図である。 チャンク管理テーブルの構成を示す図表である。 チャンクグループ管理テーブルの構成を示す図表である。 チャンク更新管理ビットマップテーブルの構成を示す図表である。 更新管理ビットマップの説明に供する概念図である。 本記憶システムにおける正常時のクラウドの構成及び各ストレージノードの動作説明に供するブロック図である。 本記憶システムにおける障害発生時の縮退動作の説明に供するブロック図である。 本記憶システムの縮退構成時におけるリード処理の流れの説明に供するブロック図である。 本記憶システムの縮退構成時におけるライト処理の流れの説明に供するブロック図である。 代替ストレージノードの作成処理の説明に供するブロック図である。 代替ストレージノードの作成処理の説明に供するブロック図である。 代替ストレージノードの作成処理の説明に供するブロック図である。 リビルド処理の説明に供するブロック図である。 代替ストレージノード作成処理の処理手順を示すフローチャートである。 構成情報更新処理の処理手順を示すフローチャートである。 リビルド処理の処理手順を示すフローチャートである。
以下図面について、本発明の一実施の形態を詳述する。なお、以下の記載及び図面は、本発明を説明するための一例であり、本発明の技術的範囲を限定するものではない。また各図において、共通の構成については同一の参照番号が付されている。
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、又はホストであってもよい。プログラムを実行して行う処理の主体(例えばプロセッサ)は、処理の一部又は全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、又は圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
(1)本実施の形態による記憶システムの概要
図1においては、1は全体して本実施の形態による記憶システムを示す。この記憶システム1は、例えばイーサネット(登録商標)又はLAN(Local Area Network)などから構成されるネットワーク2を介して相互に接続された複数のホスト装置3と、クラウドシステム4と、クラウド制御装置5とを備えて構成される。
ホスト装置3は、ユーザ操作や実装されたアプリケーションプログラムからの要求に応じてクラウドシステム4内の後述するストレージノード10に対してリード要求やライト要求(以下、適宜、これらを纏めてI/O(Input/Output)要求と呼ぶ)を送信する上位装置であり、汎用のコンピュータ装置から構成される。なお、ホスト装置3は、物理的なコンピュータ装置であっても、また仮想マシンのような仮想的なコンピュータ装置であってもよい。さらにホスト装置3がクラウドシステム4内に組み込まれていてもよい。
クラウドシステム4は、複数のストレージノード10から構成される計算機提供サービス部11と、複数の記憶装置12から構成されるブロックストレージ提供サービス部13とから構成され、計算機提供サービス部11を構成する各ストレージノード10と、ブロックストレージ提供サービス部13を構成する各記憶装置12とがそれぞれブロックストレージ提供サービス向けネットワーク14を介して相互に接続されている。
ストレージノード10は、ホスト装置3に対してデータを読み書きするための記憶領域を提供する物理的又は仮想的なサーバ装置である。実際上、各ストレージノード10には、ブロックストレージ提供サービス部13内の1又は複数の記憶装置12がそれぞれ割り当てられている。そしてストレージノード10は、これら割り当てられた記憶装置12が提供する記憶領域を仮想化してホスト装置3に提供する。
ストレージノード10は、図2に示すように、内部ネットワーク20を介して相互に接続されたCPU(Central Processing Unit)21、ホスト向け通信装置22及びブロックストレージサービス向け通信装置23と、CPU21に接続されたメモリ24とを備えて構成される。各ストレージノード10は、CPU21、ホスト向け通信装置22、ブロックストレージサービス向け通信装置23及びメモリ24をそれぞれ1つ以上備える。
ストレージノード10が物理的なサーバ装置の場合、CPU21、ホスト向け通信装置22、ブロックストレージサービス向け通信装置23及びメモリ24は物理的なデバイスから構成され、ストレージノード10が仮想的なサーバ装置の場合、CPU21、ホスト向け通信装置22、ブロックストレージサービス向け通信装置23及びメモリ24はそれぞれ仮想的なデバイスとして構成される。
CPU21は、ストレージノード10全体の動作制御を司るプロセッサである。またメモリ24は、SRAM(Static RAM(Random Access Memory))やDRAM(Dynamic RAM)などの揮発性の半導体メモリから構成され、各種プログラムや必要なデータを一時的に保持するために利用される。メモリ24に格納されたプログラムを、少なくとも1以上のCPU21が実行することにより、後述のようなストレージノード10全体としての各種処理が実行される。
ホスト向け通信装置22は、ストレージノード10がネットワーク2を介してホスト装置3や、他のストレージノード10又はクラウド制御装置5と通信を行うためのインタフェースであり、例えばNIC(Network Interface Card)などから構成される。ホスト向け通信装置22は、ホスト装置3や、他のストレージノード10又はクラウド制御装置5との通信時におけるプロトコル制御を行う。
ブロックストレージ提供サービス向け通信装置23は、ストレージノード10がブロックストレージ提供サービス向けネットワーク14を介してブロックストレージ提供サービス部13内の記憶装置12と通信を行うためのインタフェースであり、例えば、ホスト向け通信装置22と同様にNICなどから構成される。ブロックストレージ提供サービス向け通信装置23は、記憶装置12との通信時におけるプロトコル制御を行う。
なおホスト向け通信装置22及びブロックストレージ提供サービス向け通信装置23は、物理的に異なる通信装置であってもよいし、物理的に同一で論理的に分離されている通信装置であってもよい。さらには、ホスト向け通信装置22及びブロックストレージ提供サービス向け通信装置23が物理的及び論理的に同一の通信装置であってもよい。
各ストレージノード10は、図1に示すように、他の1又は複数のストレージノード10と共にクラスタ15と呼ぶ1つのグループに纏められて管理される。図1の例では、計算機提供サービス部11内にクラスタ15が1つのみ設定された場合について例示しているが、計算機提供サービス部11内に複数のクラスタ15を設定するようにしてもよい。またクラスタ15は、分散ストレージシステムと呼ばれるものであってもよい。
記憶装置12は、SAS(Serial Attached SCSI(Small Computer System Interface)) SSD(Solid State Drive)、NVMe(Non Volatile Memory express) SSD、SASハードディスクドライブ又はSATA(Serial ATA(Advanced Technology Attachment))ハードディスクドライブなどの1又は複数種類の大容量の不揮発性記憶装置から構成される。記憶装置12は、ホスト装置3からのI/O要求に応じてデータを読み書きするための物理的又は論理的な記憶領域を提供する。
クラウド制御装置5は、システム管理者がクラウドシステム4内の計算機提供サービス部11及びブロックストレージ提供サービス部13を制御する機能を有する汎用のコンピュータ装置である。クラウド制御装置5は、システム管理者の操作に応じて、計算機提供サービス部11内のストレージノード10及びクラスタ15や、ブロックストレージ提供サービス部13内の記憶装置12の追加、削除又は構成変更などをネットワーク2を介して行う。なお、クラウド制御装置5は、物理的なコンピュータ装置であっても、また仮想マシンのような仮想的なコンピュータ装置であってもよい。さらにクラウド制御装置5がクラウドシステム4内に組み込まれていてもよい。
(2)本記憶システムにおける各種処理の流れ
(2-1)各ストレージノードのメモリに格納されたプログラム及び情報
次に、本記憶システム1における各種処理の流れについて説明する。これに際して、まず、かかる各種処理に関連して各ストレージノード10のメモリ24(図2)に格納されるソフトウェア及び情報について、図3~図7を参照して説明する。
図3に示すように、各ストレージノード10のメモリ24には、ソフトウェアとして、複数のストレージ制御部30、クラスタ制御部31及び容量制御部32が格納され、構成情報として、各ストレージ制御部30にそれぞれ対応させて設けられた複数のストレージ構成情報33と、チャンク管理テーブル34、チャンクグループ管理テーブル35及びチャンク更新管理ビットマップテーブル36から構成される容量構成情報37とが格納されている。
ストレージ制御部30は、SDSのストレージコントローラとして機能するソフトウェアである。ストレージ制御部30は、ホスト装置3(図1)からのI/O要求を受け付け、容量制御部32に対して対応する記憶装置12(図1)へのデータの読み書きを依頼する機能を有する。ストレージ制御部30は、ストレージ制御プログラムと呼ばれてもよい。
本実施の形態の場合、図8に示すように、ストレージノード10に実装された各ストレージ制御部30は、それぞれ互いに異なる他のストレージノード10にそれぞれ実装された1又は複数の他のストレージ制御部30と共に冗長化のための1つのグループ(以下、これを冗長化グループと呼ぶ)38として管理される。
なお図8は、2つのストレージ制御部30により冗長化グループ38が構成されている場合を示しており、以下においても、2つのストレージ制御部30により冗長化グループ38が構成されるものとして説明を進めるが、3つ以上のストレージ制御部30により冗長化グループ38が構成されるものとしてもよい。
冗長化グループ38では、少なくとも1つのストレージ制御部30がホスト装置3からのI/O要求を受け付けることができる状態(現用系の状態であり、以下、これをアクティブモードと呼ぶ)に設定され、残りのストレージ制御部30がホスト装置3からのI/O要求を受け付けない状態(待機系の状態であり、以下、これをスタンバイモードと呼ぶ)に設定される。
従って、2つのストレージ制御部30から構成される冗長化グループ38は、これら2つのストレージ制御部30の双方がアクティブモードに設定された構成(アクティブ-アクティブ構成)と、一方のストレージ制御部30がアクティブモードに設定され、他方のストレージ制御部30がスタンバイモードに設定された構成(アクティブ-パッシブ構成)とのうちのいずれかの構成をとることになる。
そして、アクティブ-パッシブ構成が採用された冗長化グループ38では、アクティブモードに設定されたストレージ制御部30又はそのストレージ制御部30が稼動するストレージノード10に障害が発生した場合や、そのようなストレージノード10が撤去(ストレージノード10が減設)された場合に、それまでスタンバイモードに設定されていたストレージ制御部30の状態がアクティブモードに切り替えられる。これにより、アクティブモードに設定されたストレージ制御部30が稼動し得なくなった場合に、そのストレージ制御部30が実行していたI/O処理をそれまでスタンバイモードに設定されていたストレージ制御部30により引き継ぐことができる(フェールオーバ機能)。
このようなフェールオーバ機能を実現するため、同じ冗長化グループ38に属するストレージ制御部30は、常に同一内容のストレージ構成情報33を保持している。ストレージ構成情報33は、容量仮想化機能や、アクセス頻度の多いデータをより応答速度が速い記憶領域に移動させる階層記憶制御機能、格納されたデータの中から重複するデータを削除する重複排除機能、データを圧縮して記憶する圧縮機能、ある時点でのデータの状態を保持するSnapshot(スナップショット)機能、及び、災害対策のために同期あるいは非同期で遠隔地にデータをコピーするリモートコピー機能などの各種機能に関する処理をストレージ制御部が実行するために必要な情報である。
そして、冗長化グループ38を構成するアクティブモードのストレージ制御部30のストレージ構成情報33が更新された場合、更新前後のそのストレージ構成情報33の差分が差分データとしてその冗長化グループ38を構成する他方のストレージ制御部30に転送され、この差分データに基づいて当該他方のストレージ制御部30によりそのストレージ制御部30が保持するストレージ構成情報33が更新される。これにより冗長化グループ38を構成する各ストレージ制御部30がそれぞれ保持するストレージ構成情報33が常に同期した状態に維持される。
このように冗長化グループ38を構成する2つのストレージ制御部30同士が常に同じ内容のストレージ構成情報33を保持することにより、アクティブモードに設定されたストレージ制御部30や、当該ストレージ制御部30が稼動するストレージノード10に障害が発生し又は当該ストレージノード10が撤去された場合にも、それまでそのストレージ制御部30が実行していた処理を、そのストレージ制御部30と同じ冗長化グループ38内の他のストレージ制御部30が直ちに引き継ぐことが可能となる。
クラスタ制御部31は、クラスタ15(図1)を構成する各ストレージノード10と、これらのストレージノード10に割り当てられた各記憶装置12との状態を管理及び操作する機能を有するソフトウェアである。またクラスタ制御部31は、ストレージ制御部30及び容量制御部32の起動や、ストレージ制御部30の動作モード(後述するアクティブモード又はスタンバイモード)を管理及び操作する。
さらに各クラスタ制御部31は、互いの疎通状況を監視しており、電断やネットワーク途絶といった何らかの理由により他のストレージノード10に障害が発生した場合に、これを検知して他のクラスタ制御部31に通知する機能も有する。なお、「ストレージノードの障害」の状態としては、ストレージノード10に実装されたOS(Operating System)を動作させるために必要なソフトウェアが格納されたシステムディスクが故障した状態や、クラウドシステム4が提供するインタフェースがストレージノード10の故障を示している状態などがある。
加えて、クラスタ制御部31は、ホスト装置3から与えられたI/O要求を、ブロックストレージ提供サービス向けネットワーク14を介して対応する他のストレージノード10のクラスタ制御部31に転送したり、他のストレージノード10のクラスタ制御部31から転送されてきたI/O要求を、対応する冗長化グループ38のストレージ制御部30に引き渡す機能も有する。
実際上、本実施の形態の場合、図8に示すように、冗長化グループ38ごとに、その冗長化グループ38に対応させて1又は複数の仮想的な論理ボリューム(以下、これを仮想ボリュームと呼ぶ)LUが定義され、これら仮想ボリュームLUがデータをリード/ライトするための記憶領域としてホスト装置3に提供される。
また本実施の形態の場合、冗長化グループ38ごとに、1又は複数のプール(図8の「Pool」)が定義される。プールは、記憶装置12が提供する物理的な記憶領域を仮想化した記憶領域であり、このプールを介して仮想ボリュームLU内の仮想的な記憶領域と、記憶装置内の物理的な記憶領域とが対応付けられる。このような記憶装置12の物理的な記憶領域と、プール内の仮想的な記憶領域との対応関係や、プール内の仮想的な記憶領域と、仮想ボリュームLU内の仮想的な記憶領域との対応関係は、上述のストレージ構成情報33として管理される。
そしてホスト装置3は、所望する仮想ボリュームLUにデータをリード/ライトする場合、そのデータのリード/ライト先の仮想ボリュームLUの識別子(LUN:Logical Unit Number)と、その仮想ボリュームLUにおけるそのデータのリード/ライト先のアドレスと、そのデータのデータ長とを指定したI/O要求を対応するクラスタ15内のいずれかのストレージノード10に送信する。
かくして、このI/O要求を受信したストレージノード10のクラスタ制御部31は、そのI/O要求において指定されたリード/ライト対象の仮想ボリュームLUに対応付けられた冗長化グループ38のストレージ制御部30が配置されている各ストレージノード10のクラスタ制御部31にそのI/O要求をブロックストレージ提供サービス向けネットワーク14を介して転送する。
また、このI/O要求を受信したストレージノード10のクラスタ制御部31は、このI/O要求を、当該I/O要求においてリード/ライト先として指定された仮想ボリュームLUに対応付けられた冗長化グループ38のストレージ制御部30に引き渡す。そして、このI/O要求が引き渡されたストレージ制御部30のうち、アクティブモードに設定されたストレージ制御部30は、このI/O要求がライト要求である場合には、当該I/O要求においてデータのライト先として指定された仮想ボリュームLU内のデータのライト先として指定されたアドレス位置にプールを介して記憶装置12の物理的な記憶領域を動的に割り当てた上で、その物理的な記憶領域にデータをライトするよう容量制御部32に依頼する。
このような一連の処理を実行するための手段として、各ストレージノード10のクラスタ制御部31は、クラスタ15内に存在する各ストレージ制御部30がそれぞれどのストレージノード10に配置され、どの冗長化グループ38に所属し、動作モードがアクティブモード及びスタンバイモードのいずれに設定されているかといった情報を共有しており、この情報を利用して上述のようなホスト装置3からのI/O要求に対する処理を実行する。
容量制御部32は、図8に示すように、自ストレージノード10に割り当てられた記憶装置12が提供する物理的な記憶領域をチャンクCKと呼ぶ所定大きさ単位でストレージ制御部30に提供する機能を有するソフトウェアである。ストレージ制御部30は、容量制御部32から提供されたチャンクCKを纏めて上述のプールとして管理し、プール内のチャンクCKを仮想ボリュームLUに動的に割り当てる。これにより仮想ボリュームLU内の仮想的な記憶領域がプールを介してチャンクCK単位で記憶装置12内の物理的な記憶領域と対応付けられる。
また容量制御部32は、ストレージ制御部30から記憶装置12への書き込みを依頼されたデータを複数の部分データに分割し、これら部分データから消失訂正記号(Erasure Coding)を生成して、これら複数の部分データ及び消失訂正記号をそれぞれ異なる記憶装置12内のチャンクCKに格納したり、一部の部分データが障害等により読み出しできなくなった場合に、残りの部分データと消失訂正記号とを用いて読み出しできなくなった部分データを復元する機能をも有する。
容量制御部32は、このような1つのデータから生成した部分データや消失訂正記号がそれぞれ格納された複数のチャンクCKをチャンクグループ39として管理する。図8では、チャンクグループ39は3つのチャンクCKから構成される例が示されており、この場合、元のデータが2つの部分データ(図8の「A」及び「C」や、「B」及び「D」)に分割されてそれぞれチャンクグループ39内の異なるチャンクCKに格納され、これら2つの部分データから生成された消失訂正記号(図8の「α」及び「β」)がそのチャンクグループ39の残りのチャンクCKに格納される。
このようなデータ復元機能を実現するため、各ストレージノード10の容量制御部32は、常に同一内容の容量構成情報37を保持している。容量構成情報37は、上述のようにストレージ制御部30に対して使用可能領域を提供する機能や、データを復元する機能に関する処理を容量制御部32が実行するために必要な情報である。容量構成情報33には、図3のチャンク管理テーブル34、チャンクグループ管理テーブル35及びチャンク更新管理ビットマップテーブル36が含まれる。
そして容量構成情報37が更新された場合、更新前後のその容量構成情報37の差分が差分データとして他の各ストレージノード10上の容量制御部32に転送され、この差分データに基づいて当該ストレージノード10の容量制御部32によりその容量制御部32が保持する容量構成情報37が更新される。これにより各ストレージノード10の容量制御部32がそれぞれ保持する容量構成情報37が常に同期した状態に維持される。
図4は、容量構成情報37の一部を構成するチャンク管理テーブル34を示す。チャンク管理テーブル34は、クラスタ15(図1)内に存在するチャンクCKを管理するために利用されるテーブルであり、図4に示すように、チャンク番号欄34A、所属ノード番号欄34B、記憶装置番号欄34C、記憶装置内オフセット欄34D及び容量欄34Eを備えて構成される。チャンク管理テーブル34では、1つのレコード(行)がクラスタ15内に存在する1つのチャンクCKに対応する。
そしてチャンク番号欄34Aには、対応するチャンクCKに付与された、クラスタ15内でそのチャンクCKに固有の識別番号(チャンク番号)が格納される。また記憶装置番号欄34Cには、そのチャンクCKを提供する記憶装置12に付与された、クラスタ15内でその記憶装置12に固有の識別番号(記憶装置番号)が格納され、所属ノード番号欄34Bには、その記憶装置12が割り当てられたストレージノード10に付与された、クラスタ15内でそのストレージノード10に固有の識別番号(ノード番号)が格納される。
さらに記憶装置内オフセット欄34Dには、対応する記憶装置12が提供する記憶領域内における対応するチャンクCKの先頭アドレスが格納され、容量欄34Eには、そのチャンクCKの容量が格納される。
従って、図4の例の場合、例えば「0」というチャンク番号が付与されたチャンクCKは、「0」というノード番号のストレージノード10に割り当てられた「0」という記憶装置番号の記憶装置12における「0x00000」というアドレスから始まる「0x10000」という容量のチャンクであることが示されている。
また図5は、容量構成情報37の一部を構成するチャンクグループ管理テーブル35を示す。このチャンクグループ管理テーブル35は、クラスタ15内に存在するチャンクグループ39(図8)を管理するために利用されるテーブルであり、図5に示すように、チャンクグループ番号欄35Aと、複数のチャンク番号欄35Bとを備えて構成される。チャンクグループ管理テーブル35では、1つのレコード(行)がクラスタ15内に定義された1つのチャンクグループ39に対応する。
そしてチャンクグループ番号欄35Aには、対応するチャンクグループ39に付与された、クラスタ15内でそのチャンクグループ39に固有の識別番号(チャンクグループ番号)が格納される。また各チャンク番号欄35Bには、それぞれ対応するチャンクグループ39を構成する異なるチャンクCKのチャンク番号が格納される。
従って、図5の例の場合、「0」というチャンクグループ番号が付与されたチャンクグループ39は、「0」というチャンク番号のチャンクCKと、「4」というチャンク番号のチャンクCKと、「6」というチャンク番号のチャンクCKとから構成されていることが示されている。
さらに図6は、容量構成情報37の一部を構成するチャンク更新管理ビットマップテーブル36を示す。チャンク更新管理ビットマップテーブル36は、障害やその他の理由により当該チャンクCKにアクセスできない間にそのチャンクCKへのデータの書き込みや、そのチャンクCKに格納されているデータの更新があった場合に、そのチャンクCK内のどの箇所にデータが書き込まれ又はどの箇所に格納されているデータが更新されたかを管理するために利用されるテーブルである。
このチャンク更新管理ビットマップテーブル36は、図6に示すように、チャンク番号欄36A及び更新管理ビットマップ欄36Bを備えて構成される。チャンク更新管理ビットマップテーブル36では、1つのレコード(行)が1つのチャンクCKに対応しており、クラスタ15内に存在するすべてのチャンクCKにそれぞれ対応させてレコードが設けられている。
そしてチャンク番号欄36Aには、対応するチャンクCKのチャンク番号が格納される。また更新管理ビットマップ欄36Bには、そのチャンクCKに関する更新管理ビットマップが格納される。従って、図6の例の場合、「0」というチャンク番号のチャンクCKの更新管理ビットマップが「0011000001…」であることが示されている。
ここで、更新管理ビットマップについて説明する。図7に示すように、更新管理ビットマップBMは、チャンクCKを所定大きさ(例えば256KB)の複数の部分領域ARに分割したときの各部分領域ARにそれぞれ対応付けた複数の更新管理ビットBTから構成されるビットマップである。
更新管理ビットマップBMでは、初期時、すべての更新管理ビットBTが「0」に設定される。そして、その更新管理ビットマップBMに対応するチャンクCKが故障等によりアクセスできない間に、そのチャンクCKへのデータライト又はそのチャンクCKに格納されたデータの更新などがあった場合に、データライトされた又は格納されたデータが更新されたすべての部分領域ARに対応する更新管理ビットBTが「1」に設定される。
これにより、その後、そのチャンクCKがアクセスできるようになった段階に、更新管理ビットマップBMにおいて「1」に設定されている部分領域ARにホスト装置3からのデータを格納したり、その部分領域ARに格納されているデータを更新後のデータに更新することでチャンクCKの状態を最新化することができる。
なお、かかる部分領域ARに新たに格納すべきデータや更新後のデータは、そのチャンクCKが属すチャンクグループ39を構成する他のチャンクCKに格納されているデータ及び消失訂正符号(パリティ)を用いることでリビルドすることができる。
(2-2)各種処理の流れ
(2-2-1)本記憶システムの平常時の状態
図8は、本記憶システム1における平常時の状態を示す。この図8では、「ストレージノードA」~「ストレージノードC」は、それぞれストレージノード10を示し、「ストレージ制御部A(アクティブ)」~「ストレージ制御部C(アクティブ)」は、それぞれアクティブモードのストレージ制御部30、「ストレージ制御部A(スタンバイ)」~「ストレージ制御部C(スタンバイ)」は、それぞれスタンバイモードのストレージ制御部30を示す。
また図8では、「ストレージノードA」上で稼動する「ストレージ制御部A(アクティブ)」と、「ストレージノードB」上で稼動する「ストレージ制御部A(スタンバイ)」とが冗長化グループ38を構成し、「ストレージノードB」上で稼動する「ストレージ制御部B(アクティブ)」と、「ストレージノードC」上で稼動する「ストレージ制御部B(スタンバイ)」とが冗長化グループ38を構成し、「ストレージノードC」上で稼動する「ストレージ制御部C(アクティブ)」と、「ストレージノードA」上で稼動する「ストレージ制御部C(スタンバイ)」とが冗長化グループ38を構成している例を示している。さらに、ここでは、ストレージ制御部30の冗長化により作成する各冗長化グループ38の構成がアクティブ-スタンバイ構成であるものとする。
このとき、各ストレージノード10のクラスタ制御部31は、自身が実装されたストレージノード(以下、これを自ストレージノードと呼ぶ)10及びそのストレージノード10に割り当てられた記憶装置12の状態や、他の制御ソフトウェアの稼動状況を監視し、これらの情報を共有している(S1)。
また上述のようにアクティブモードのストレージ制御部30のストレージ構成情報33が更新された場合(S2)、更新前後のそのストレージ構成情報33の差分が差分データとしてそのストレージ制御部30と同じ冗長化グループ38を構成する他方のストレージ制御部30に転送され、この差分データに基づいて当該他方のストレージ制御部30によりそのストレージ制御部30が保持するストレージ構成情報33が更新される(S3)。
さらに容量構成情報37が容量制御部32によって更新された場合、更新前後のその容量構成情報37の差分が差分データとして直接的又は間接的に他のすべてのストレージノード10の容量制御部32に転送され(S4)、この差分データに基づいてこれら容量制御部32によりその容量制御部32が保持する容量構成情報37が更新される(S5)。なお、図8は、「ストレージノードA」の容量構成情報37が更新された場合の例を示している。
(2-2-2)ストレージノードの障害発生時における縮退処理の流れ
次に、クラスタ15を構成するいずれかのストレージノード10に障害が発生した場合の一連の処理の流れについて説明する。ここでは、図9に示すように、「ストレージノードA」に障害が発生し、「ストレージノードA」がアクセス不可となった場合の処理(以下、これを縮退処理と呼ぶ)の流れについて説明する。
この場合、「ストレージノードA」のクラスタ制御部31と接続された「ストレージノードB」のクラスタ制御部31が「ストレージノードA」の障害を検知する。そして、「ストレージノードB」のクラスタ制御部31は、「ストレージノードA」の障害を検知した旨の通知を「ストレージノードC」)のクラスタ制御部31に送信する(S10)。
また、この通知を受信した「ストレージノードC」のクラスタ制御部31は、かかる通知を送信してきた「ストレージノードB」以外の隣接する(通信可能な)の他のストレージノードに対して「ストレージノードA」に障害が発生した旨を通知する。ただし、図9の例では、「ストレージノードB」以外で隣接する他のストレージノード10が存在しないため、「ストレージノードB」は、かかる通知を行わない。
そして上述のようにして「ストレージノードA」の障害を認識した「ストレージノードB」及び「ストレージノードC」のクラスタ制御部31は、障害が発生した「ストレージノードA」に配置されたストレージ制御部30と同じ冗長化グループ38を構成する自ストレージノード10内のスタンバイモードのストレージ制御部30の動作モードをアクティブモードに切り替える処理を行う。図9の例の場合、「ストレージノードB」のクラスタ制御部31が、「ストレージ制御部A(スタンバイ)」の状態をアクティブモードに変更する(S11)。これにより、それまで「ストレージ制御部A(アクティブ)」が実行していたI/O処理が「ストレージ制御部A(スタンバイ)」に引き継がれることになる。
また、「ストレージノードA」の障害を認識した「ストレージノードB」及び「ストレージノードC」のクラスタ制御部31は、それぞれ障害が発生した「ストレージノードA」に配置された「ストレージ制御部A(アクティブ)」や「ストレージ制御部C(スタンバイ)」と冗長化グループ38を構成していた自ストレージノード10内の「ストレージ制御部A(スタンバイ)」又は「ストレージ制御部C(アクティブ)」に対して、この後、そのストレージ制御部30が保持するストレージ構成情報33が更新された場合においても、その差分データを、同じ冗長化グループ38を構成していた「ストレージ制御部A(アクティブ)」や「ストレージ制御部C(スタンバイ)」)に転送しないよう指示を与える(S11)。
(2-2-3)縮退構成時のアクセス不可チャンク内に存在するデータリードの流れ
図10は、図9のように「ストレージノードA」に障害が発生し、図9について上述したような縮退処理が行われた状態(縮退構成の状態)でホスト装置3から「ストレージ制御部A」に対応付けられた仮想ボリュームLUへのリード要求が与えられた場合の処理の流れを示す。
この場合、「ストレージノードB」内でアクティブとなった「ストレージ制御部A」が、このリード要求を処理する。具体的に、かかる「ストレージ制御部A」は、「ストレージ構成情報A」を参照し、容量制御部32に対してリード要求を発行する(S20)。本実施の形態においては、「チャンクA」に対するリード要求が「ストレージ制御部A」から容量制御部32に発行されたものとする。
このリード要求を受信した「ストレージノードB」の容量制御部32は、容量構成情報37のチャンク管理テーブル34(図4)を参照してリード要求において指定されたリード対象のデータが格納されているチャンク(「チャンクA」)の所在を確認する。このとき、「チャンクA」は、障害が発生した「ストレージノードA」に割り当てられていた記憶装置12が提供するチャンクCKであるためアクセスできない。
そこで、かかる容量制御部32は、容量構成情報37のチャンクグループ管理テーブル35(図5)を参照して、「チャンクA」が属するチャンクグループ39を構成する「チャンクA」以外のチャンクCKを特定する。ここでは、図10に示すように、「チャンクA」が「チャンクC」及び「チャンクα」と共にチャンクグループ39を構成しているものとする。よって、この例では、「チャンクA」が属するチャンクグループ39を構成する「チャンクA」以外のチャンクCKとして、「チャンクC」及び「チャンクα」が特定される。
そして容量制御部32は、このようにして特定した「チャンクC」及び「チャンクα」の所在をチャンク管理テーブル34を参照して特定した上で、これら「チャンクC」及び「チャンクα」からリード対象のデータを復元するために必要なデータをそれぞれ読み出す(S21,S22)。
また容量制御部32は、読み出したこれらのデータに基づいてリード対象のデータを復元し、復元したデータを「ストレージ制御部A」に転送する(S23)。かくして、「ストレージ制御部A」は、容量制御部32から与えられた復元されたリード対象のデータを、かかるリード要求の送信元のホスト装置3に送信する(S24)。
(2-2-4)縮退構成時のアクセス不可チャンクへのデータライトの流れ
図11は、図9のように「ストレージノードA」に障害が発生し、図9について上述したような縮退処理が行われた状態でホスト装置3から「ストレージ制御部A」に対応付けられた仮想ボリュームLUへのライト要求が与えられた場合の処理の流れを示す。
この場合、「ストレージノードB」でアクティブとなった「ストレージ制御部A」が、ホスト装置3からのライト要求を処理する。具体的に、かかる「ストレージ制御部A」は、「ストレージ構成情報A」を参照し、容量制御部32に対してライト要求を発行する(S30)。本実施の形態においては、「チャンクA」に対するライト要求が「ストレージ制御部A」から容量制御部32に発行されたものとする。また「ストレージ制御部A」は、ライトデータを容量制御部32に転送する(S31)。
このリード要求を受信した「ストレージノードB」の容量制御部32は、容量構成情報27のチャンク管理テーブル34を参照してライト要求において指定されたライトデータの格納先となるチャンクCK(「チャンクA」)の所在を確認する。このとき、「チャンクA」は、障害が発生した「ストレージノードA」に割り当てられた記憶装置12が提供するチャンクであるためアクセスできない。
そこで、かかる容量制御部32は、容量構成情報37のチャンクグループ管理テーブル35を参照して、「チャンクA」が属するチャンクグループ39を構成する「チャンクA」以外のチャンクを特定する。ここでは、図11に示すように、「チャンクA」が「チャンクC」及び「チャンクα」と共にチャンクグループ39を構成しているものとする。よって、この例では、「チャンクA」が属するチャンクグループ39を構成する「チャンクA」以外のチャンクとして、「チャンクC」及び「チャンクα」が特定される。
そして容量制御部32は、特定した「チャンクC」及び「チャンクα」の所在をチャンク管理テーブル34を参照して特定する。また容量制御部32は、ライトデータを用いて新たな消失訂正符号を生成するために必要なデータを「チャンクC」から読み出し(S32)、読み出したデータと、ライトデータとを用いて新たな消失訂正符号を生成する。また、容量制御部32は、生成性した消失訂正符号を「チャンクα」に上書きする(S33)。
さらに容量制御部32は、容量構成情報37のチャンク更新管理ビットマップテーブル36(図6)に格納された「チャンクA」の更新管理ビットマップBM(図7)におけるライトデータを書き込むべきであった部分領域AR(図7)に対応するすべての更新管理ビットBT(図7)を「1」を設定する。以上により、この一連の処理が終了する。
(2-2-5)障害発生ストレージノードの代替ストレージノード作成の流れ
次に、障害が発生したストレージノード10の代替となる新たなストレージノード10を作成し、作成したストレージノード10をクラスタ15の一部として利用可能とするまでの流れを図12~図14を参照して説明する。ここでは、図9について上述したように「ストレージノードA」に障害が発生し、縮退処理が行われたものとする。
まず、図12に示すように、「ストレージノードA」に障害が発生したことを検知した「ストレージノードB」のクラスタ制御部31が、「ストレージノードA」に代わる新たなストレージノード(以下、これを代替ストレージノードと呼ぶ)10の用意をクラウド制御装置5に依頼する(S40)。そしてクラウド制御装置5は、かかる依頼を受信すると、クラスタ15内に新たなストレージノード10(図12では「ストレージノードD」)を作成する(S41)。
具体的に、クラウド制御装置5は、ストレージノード10が物理的なストレージ装置である場合には、既に存在する物理的なストレージ装置をクラスタ15に組み込み、ストレージノード10が仮想的なストレージ装置である場合には、新たな仮想的なストレージ装置を生成してクラスタ15に取り込む。
また「ストレージノードB」のクラスタ制御部31は、障害が発生した「ストレージノードA」に割り当てられている記憶装置12をすべてデタッチするようクラウド制御装置5に依頼する(S42)。かくして、この依頼を受信したクラウド制御装置5は、それまで「ストレージノードA」に割り当てられていた記憶装置12をすべてデタッチさせる(S43)。
さらに「ストレージノードB」のクラスタ制御部31は、ステップS43で「ストレージノードA」からデタッチさせたすべての記憶装置12をステップS41で新たに作成した「ストレージノードD」にアタッチするようクラウド制御装置5に依頼する(S44)。かくして、この依頼を受信したクラウド制御装置5は、それまで「ストレージノードA」に割り当てられていたすべての記憶装置12を「ストレージノードD」にアタッチさせる(S45)。
一方、上述のようにしてクラスタ15内に「ストレージノードD」が増設されると、その「ストレージノードD」内のクラスタ制御部31がクラウド制御装置5により起動される(S46)。そして起動した「ストレージノードD」のクラスタ制御部31は、そのクラスタ15内の自ストレージノード10を含めた各ストレージノード10の構成情報(ストレージ構成情報33及び容量構成情報37)や制御ソフトウェア(ストレージ制御部30及び容量制御部32)の稼動状況を他のストレージノード10のクラスタ制御部31と共有し始める。
そして、上述のようにしてクラスタ15内の各ストレージノード10の構成情報や制御ソフトウェアの稼動状況を共有した各ストレージノード10のクラスタ制御部31は、縮退した冗長化グループを正常な状態に戻す処理を開始する。ここでは、「ストレージノードB」のクラスタ制御部31が、「ストレージノードB」、「ストレージノードC」及び「ストレージノードD」のCPU負荷や空きメモリ容量などに基づき、「ストレージ制御部A(アクティブ)」及び「ストレージ制御部C(スタンバイ)」を「ストレージノードD」に配置し、現在アクティブなっている「ストレージノードB」の「ストレージ制御部A」をスタンバイモードに変更することを決定したものとする。
この決定結果に基づいて、「ストレージノードB」のクラスタ制御部31は、図13に示すように、「ストレージ制御部A」に対して「ストレージ構成情報A」を「ストレージノードD」にコピーするよう指示を与える(S50)。かくして、「ストレージ制御部A」は、この指示に従って「ストレージ構成情報A」を「ストレージノードD」に転送する(S51)。そして、この「ストレージ構成情報A」を受領した「ストレージノードD」のクラスタ制御部31は、その「ストレージ構成情報A」を自ストレージノード10のメモリ24(図2)に格納する。
また「ストレージノードB」の「ストレージ制御部A」は、かかる「ストレージ構成情報A」を「ストレージノードD」にコピーし終えると、この後、この「ストレージ構成情報A」が更新されるごとに更新前後の差分を差分データとして「ストレージノードD」に転送し始める。この結果、この差分データに基づいて、「ストレージノードD」の「ストレージ構成情報A」このコピー結果が更新され、これにより「ストレージノードB」の「ストレージA」のコピー結果との同期が開始される。
一方、「ストレージノードC」のクラスタ制御部31は、上述の決定結果に基づいて、「ストレージ制御部C」に対して「ストレージ構成情報C」を「ストレージノードD」にコピーするよう指示を与える(S52)。かくして、「ストレージ制御部C」は、この指示に従って、「ストレージ構成情報C」を「ストレージノードD」に転送する(S53)。そして、この「ストレージ構成情報C」を受信した「ストレージノードD」のクラスタ制御部31は、その「ストレージ構成情報C」を自ストレージノード10のメモリ24に格納する。
また「ストレージノードC」の「ストレージ制御部C」は、「ストレージ構成情報C」を「ストレージノードD」にコピーし終えると、この後、その「ストレージ構成情報C」が更新されるごとに更新前後の差分を差分データとして「ストレージノードD」に転送し始める。かくして、この差分データに基づいて「ストレージノードD」内の「ストレージ構成情報C」のコピー結果が更新され、これにより「ストレージノードC」内の「ストレージ構成情報C」と、「ストレージノードD」内の「ストレージ構成情報C」のコピー結果との同期が開始される。
さらに「ストレージノードB」のクラスタ制御部31は、自ストレージノード10の容量制御部32に容量構成情報37を「ストレージノードD」にコピーするよう指示を与える(S54)。かくして、この指示を受領した容量制御部32は、この指示に従って、自身が保持する容量構成情報37を「ストレージノードD」に転送する(S55)。そして、この容量構成情報37を受信した「ストレージノードD」のクラスタ制御部31は、その容量構成情報37を自ストレージノード10のメモリ24に格納する。
以上のようにして、障害が発生した「ストレージノードA」が保持していた「ストレージ構成情報A」、「ストレージ構成情報C」及び容量構成情報37の「ストレージノードD」へのコピーが完了すると、図14に示すように、「ストレージノードD」のクラスタ制御部31は、自ストレージノード10内でストレージ制御部30及び容量制御部32を起動する。具体的に、かかるクラスタ制御部31は、自ストレージノード10内の「ストレージ制御部A」をアクティブモードで起動すると共に(S60)、「ストレージ制御部C」をスタンバイモードで起動し(S61)、さらに容量制御部32を起動する(S62)。
また、「ストレージノードD」のクラスタ制御部31は、「ストレージノードB」のクラスタ制御部31に対して、ステップS60で起動した「ストレージ制御部A」と冗長化グループ38を構成する「ストレージノードB」内の「ストレージ制御部A」の動作モードをスタンバイモードに切り替えるよう指示を与える(S63)。かくして、この指示を受領した「ストレージノードB」のクラスタ制御部31は、自ストレージノード10内の「ストレージノードA」をスタンバイモードに切り替える(S64)。
加えて、「ストレージノードD」のクラスタ制御部31は、クラスタ15内に存在する各ストレージ制御部30がそれぞれどのストレージノード10に配置され、どの冗長化グループ38に所属し、動作モードがアクティブモード及びスタンバイモードのいずれに設定されているかといった自己が保持する情報を現在の状態に合わせて更新する。
また、かかるクラスタ制御部31は、この情報の更新前後の差分を差分データとして「ストレージノードB」のクラスタ制御部31と、当該クラスタ制御部31を介して「ストレージノードC」のクラスタ制御部31とにそれぞれ送信する。これにより「ストレージノードB」のクラスタ制御部31が保持するかかる情報と、「ストレージノードC」のクラスタ制御部31が保持するかかる情報とが現在の状態に合わせた内容に更新される。
以上までの処理により、新たに作成した「ストレージノードD」をクラスタ15の一部として利用可能となる。
(2-2-6)リビルド処理の流れ
図15は、図12~図14について上述した一連の処理により作成された新たなストレージノード10(図15では「ストレージノードD」)の容量制御部32により実行されるリビルド処理の流れを示す。
「ストレージノードD」の容量制御部32は、図14の終了後に「ストレージノードD」のクラスタ制御部31により起動され、まず、自ストレージノード10内の容量構成情報37を参照して、自ストレージノード10に割り当てられた記憶装置12内のリビルドが必要なチャンクCKをすべて特定し、特定したチャンクCKごとに、そのチャンクCKと同じ冗長化グループ38を構成するそのチャンクCK以外のチャンクCKを特定する(S70)。
具体的に、かかる容量制御部32は、自ストレージノード10内の容量構成情報37のチャンク管理テーブル34(図4)を参照して、自ストレージノード10に割り当てられた記憶装置12内に存在するチャンクCK(以下、これらを自ストレージノード10に所属するチャンクCKと呼ぶ)の一覧を取得する。
また、かかる容量制御部32は、容量構成情報37のチャンク更新管理ビットマップテーブル36(図6)を参照して、自ストレージノード10に所属するチャンクCKの中でリビルドが必要な部分領域AR(図7)を含むチャンクCKが存在するか否かを確認する。
ここで、「リビルドが必要なチャンクCK」とは、「ストレージノードA」に障害が発生してから現在までの間にホスト装置3によりデータライトが行われた部分領域ARを含むチャンクCKを指す。チャンク更新管理ビットマップテーブル36の更新管理ビットマップ欄36Bに格納された更新管理ビットマップBM(図7)内に「1」を含むチャンクがこのようなチャンクCKに該当する。以下においては、このようなチャンクCKをリビルド対象チャンクCKと呼ぶものとする。
そして容量制御部32は、このようなチャンクCKが存在することを確認した場合には、容量構成情報37のチャンクグループ管理テーブル35(図5)を参照して、リビルド対象チャンクCKごとに、そのリビルド対象チャンクCKが属するチャンクグループ39を構成するそのリビルド対象チャンクCK以外のチャンクCKをすべて特定する。例えば、図5及び図6の例では、チャンク番号が「0」のチャンクCKがリビルド対象チャンクCKであり、同じチャンクグループ39を構成するそのリビルド対象チャンクCK以外のチャンクCKとして「チャンク4」及び「チャンク6」が特定されることになる。
また容量制御部32は、特定した各チャンクCKから、リビルド対象チャンクCKにおけるリビルドが必要な部分領域AR(更新管理ビットマップBMにおいて、対応する更新管理ビットBTが「1」の部分領域ARであり、以下、これをリビルド対象部分領域ARと呼ぶ)をリビルドするために必要なデータを、他の「ストレージノードB」の容量制御部32や、「ストレージノードC」の容量制御部32を介して対応する記憶装置12からすべて読み出す(S71)。そして容量制御部32は、読み出したデータに基づいてそのリビルド対象部分領域ARのデータを復元し、復元したデータをそのリビルド対象部分領域ARに格納する(S72)。
以上までの処理により、クラスタ15は縮退動作から復帰し、「ストレージノードA」に障害が発生する前の正常状態に戻る。
(2-3)縮退構成復帰に関する各ソフトウェアの具体的な処理内容
次に、上述したストレージノード10の縮退構成からの復帰動作に関するクラスタ制御部31や容量制御部32の具体的な処理内容について説明する。なお、以下においては、クラスタ制御部31や容量制御部32といった「ソフトウェア」を各種処理の処理主体として説明するが、実際上は、その「ソフトウェア」に基づいてストレージノード10のCPU21(図2)がその処理を実行することは言うまでもない。
(2-3-1)代替ストレージノード作成処理
図16は、図12~図15について上述したように、障害が発生したストレージノード10の代替のストレージノード(以下、これを代替ストレージノードと呼ぶ)10を作成することによりクラスタ15が縮退構成から正常構成に復帰する際に実行される一連の処理(以下、これを代替ストレージノード作成処理と呼ぶ)の流れを示す。
この代替ストレージノード作成処理は、いずれかのストレージノード10のクラスタ制御部31が他のストレージノード10の障害を検知することによりクラスタ15が図11について上述した縮退構成となった後に開始される。
そして、通信装置に接続された他のストレージノード10の障害を検知したクラスタ制御部(以下、これを障害検知クラスタ制御部と呼ぶ)31は、まず、障害が発生したストレージノード(以下、これを障害発生ストレージノードと呼ぶ)10の代替ストレージノード10の作成をクラウド制御装置5に依頼する(S80)。
続いて、障害検知クラスタ制御部31は、ブロックストレージ提供サービス部13(図1)が提供する記憶装置12のうち、障害発生ストレージノード10に割り当てられていた記憶装置12を1つ選択し(S81)、選択した記憶装置(以下、これを選択記憶装置と呼ぶ)12の現在の状態を確認するようクラウド制御装置5に依頼する(S82)。
そして、障害検知クラスタ制御部31は、ステップS82の依頼の結果として、選択記憶装置12が正常であるとの回答がクラウド制御装置5から得られたか否かを判断する(S83)。
障害検知クラスタ制御部31は、この判断で肯定結果を得ると、選択記憶装置12を障害発生ストレージノード10からデタッチさせることをクラウド制御装置5に依頼すると共に(S84)、この選択記憶装置12を代替ストレージノード10にアタッチするようクラウド制御装置5に依頼する(S85)。
これに対して、障害検知クラスタ制御部31は、ステップS83において否定結果を得ると、新たな記憶装置12の作成をクラウド制御装置5に依頼すると共に(S86)、この記憶装置12の代替ストレージノード10へのアタッチをクラウド制御装置5に依頼する(S87)。
次いで、障害検知クラスタ制御部31は、自ストレージノード10内の容量構成情報37を、ステップS84及びステップS85の処理、又は、ステップS86及びステップS87の処理の処理内容に応じて更新する(S88)。
また障害検知クラスタ制御部31は、この後、障害発生ストレージノード10に割り当てられていたすべての記憶装置12についてステップS82~ステップS88の処理を実行し終えたか否かを判断する(S89)。そして障害検知クラスタ制御部31は、この判断で否定結果を得ると、ステップS81に戻り、この後、ステップS81で選択する記憶装置12をステップS82以降が未処理の他の記憶装置12に順次切り替えながら、ステップS89で肯定結果を得るまでステップS81~ステップS89の処理を繰り返す。
そして障害検知クラスタ制御部31は、やがて障害発生ストレージノード10に割り当てられていたすべての記憶装置12についてステップS82~ステップS88の処理を実行し終えることによりステップS89で肯定結果を得ると、障害発生ストレージノード10が保持していたストレージ構成情報33及び容量構成情報37を代替ストレージノード10にコピーするための処理を実行する(S90)。
具体的に、障害検知クラスタ制御部31は、代替ストレージノード10に配置するストレージ制御部30が保持すべきストレージ構成情報33が自ストレージノード10内に存在する場合には、そのストレージ構成情報33を代替ストレージノード10のクラスタ制御部31に転送する。また障害検知クラスタ制御部31は、この際、容量構成情報37も併せて代替ストレージノード10のクラスタ制御部31に転送する。かくして、代替ストレージノード10のクラスタ制御部31は、障害検知クラスタ制御部31から転送されてきたストレージ構成情報33及び容量構成情報37をメモリ24(図2)に格納して管理する。
また障害検知クラスタ制御部31は、代替ストレージノード10に配置するストレージ制御部30が保持すべきストレージ構成情報33が自ストレージノード10内に存在しない場合には、そのストレージ構成情報33を保持するストレージノード10を特定し、そのストレージノード10のクラスタ制御部31にそのストレージ構成情報33を代替ストレージノード10に転送するよう指示を与える。また障害検知クラスタ制御部31は、この際、容量構成情報37を代替ストレージノード10のクラスタ制御部31に転送する。
かくして、かかる指示を受信したクラスタ制御部21は、自ストレージノード10内の対応するストレージ構成情報33を代替ストレージノード10に転送する。また代替ストレージノード10のクラスタ制御部31は、障害検知クラスタ制御部31から転送されてきた容量構成情報37と、他のストレージノード10から転送されてきたストレージ構成情報33とをメモリ24に格納して管理する。
続いて、障害検知クラスタ制御部31は、代替ストレージノード10のクラスタ制御部に対して、すべてのストレージ制御部30と、容量制御部32とを起動するよう指示を与える(S91)。この際、障害検知クラスタ制御部31は、代替ストレージノード10で起動する各ストレージ制御部30について、その動作モード(アクティブモード又はスタンバイモード)も指定する。
次いで、障害検知クラスタ制御部31は、代替ストレージノード10のクラスタ制御部31にリビルド処理の実行を指示する(S92)。この結果、この指示を受けた代替ストレージノード10のクラスタ制御部31は、自ストレージノード10内の容量制御部32に対して図18について後述するリビルド処理の実行を指示する。
そして障害検知クラスタ制御部31は、この後、この一連の代替ストレージノード作成処理を終了する。
(2-3-2)容量構成情報更新処理
図17は、図16について上述した代替ストレージノード作成処理のステップS88で障害検知クラスタ制御部31により実行される一連の処理(以下、これを容量構成情報更新処理と呼ぶ)の流れを示す。
障害検知クラスタ制御部31は、代替ストレージノード作成処理のステップS88に進むと、この図17に示す容量構成情報更新処理を開始し、まず、そのときの選択記憶装置12内の各チャンクCK(図7)の中から1つのチャンクCKを選択し(S100)、チャンク管理テーブル34(図4)の各レコード(行)の中からステップS100で選択したチャンク(以下、これを選択チャンクと呼ぶ)CKに対応するレコードを選択チャンクのチャンク番号を手掛かりに特定する(S101)。
続いて、障害検知クラスタ制御部31は、ステップS101で特定したレコードにおける所属ノード番号欄34B(図4)に格納されたストレージノード番号を、代替ストレージノード10のストレージノード番号に書き換える(S102)。
次いで、障害検知クラスタ制御部31は、選択記憶装置12について、図16のステップS83で否定結果が得られ、この結果としてステップS86で選択記憶装置12に代わる新たな記憶装置12が作成されたか否かを判断する(S103)。そして障害検知クラスタ制御部31は、この判断で否定結果を得るとステップS106に進む。
これに対して、障害検知クラスタ制御部31は、ステップS103の判断で肯定結果を得ると、チャンク管理テーブル34におけるステップS101で特定したレコードの記憶装置番号欄34C(図4)に格納されている記憶装置番号を、代替ストレージノード作成処理のステップS86で選択記憶装置12に代わるものとして作成された記憶装置(以下、これを代替選択記憶装置と呼ぶ)の記憶装置番号に書き換える(S104)。
また障害検知クラスタ制御部31は、チャンク更新管理ビットマップテーブル36(図6)の各レコード(行)のうち、選択チャンクに対応するレコードを選択チャンクのチャンク番号を手掛かりに特定し、特定したレコードの更新管理ビットマップ欄36B(図6)に格納されている更新管理ビットマップBM(図7)のすべての更新管理ビットBT(図7)の値を「1」に設定する(S105)。
さらに障害検知クラスタ制御部31は、障害発生ストレージノード10に割り当てられていたすべての記憶装置12についてステップS101~ステップS105の処理を実行し終えたか否かを判断する(S106)。そして障害検知クラスタ制御部31は、ステップS106の判断で否定結果を得るとステップS100に戻り、この後、ステップS106で肯定結果を得るまでステップS100~ステップS106の処理を繰り返す。
そして障害検知クラスタ制御部31は、やがて障害発生ストレージノード10に割り当てられていたすべての記憶装置12についてステップS101~ステップS105の処理を実行し終えることによりステップS106で肯定結果を得ると、この容量構成情報更新処理を終了する。
(2-3-3)リビルド処理
図18は、図15について上述したリビルド処理に関して代替ストレージノード10の容量制御部32により実行される一連の処理の流れを示す。代替ストレージノード10の容量制御部32は、図16のステップS92で代替ストレージノード10のクラスタ制御部31からリビルド処理の実行指示が与えられると、この図18に示すリビルド処理を開始する。
そして、かかる容量制御部32は、まず、容量構成情報37のチャンク管理テーブル34を参照して、「ストレージノードA」に代えて新たに作成された代替ストレージノード10(「ストレージノードD」)に割り当てられたリビルド対象の各記憶装置12内のすべてのチャンクCK(図7)を特定し、特定したチャンクCKの中からステップS111以降が未処理のチャンクCKを1つ選択する(S110)。
続いて、容量制御部32は、ステップS110で選択したチャンク(以下、これを選択チャンクと呼ぶ)CKの更新管理ビットマップBM(図7)をチャンク更新管理ビットマップテーブル36(図6)から取得し(S111)、取得した更新管理ビットマップBMからステップS113以降が未処理の更新管理ビットBT(図7)を1つ選択する(S112)。
次いで、容量制御部32は、ステップS112で選択した更新管理ビット(以下、これを更新管理ビットと呼ぶ)BTの値が「1」であるか否かを判断する(S113)。そして容量制御部32は、この判断で否定結果を得るとステップS112に戻り、この後、ステップS112以降を上述のように処理する。
これに対して容量制御部32は、ステップS113の判断で肯定結果を得ると、選択更新管理ビットBTに対応する選択チャンクCK内の部分領域AR(図7)のデータを復元する(S114)。具体的に、容量制御部32は、チャンクグループ管理テーブル35(図5)を参照して選択チャンクCKと同じチャンクグループ39(図8)を構成する他のチャンクCKを特定し、特定したこれらチャンクCK内の選択更新管理ビットBTに対応する部分領域ARからデータを読み出して転送するよう対応する他のストレージノード10の容量制御部32に要求する。そして容量制御部32は、このようにして取得したデータに基づいて選択チャンクCK内の選択更新管理ビットBTに対応する部分領域ARに格納すべきデータを復元する。
続いて、容量制御部32は、復元したデータを対応する記憶装置12における選択チャンクCK内のその部分領域ARに書き込み(S115)、この後、選択更新管理ビットBTの値を「0」に更新する(S116)。
さらに容量制御部32は、選択チャンクCKに対応する更新管理ビットマップBM内のすべての更新管理ビットBTについてステップS113~ステップS116の処理を実行し終えたか否かを判断する(S117)。そして容量制御部32は、この判断で否定結果を得るとステップS112に戻り、この後、ステップS112において選択する更新管理ビットBTをステップS113以降が未処理の他の更新管理ビットBTに順次切り替えながら、ステップS117で肯定結果を得るまでステップS112~ステップS117の処理を繰り返す。
そして容量制御部32は、やがて選択チャンクCKに対応する更新管理ビットマップBM内のすべての更新管理ビットBTについてステップS113~ステップS116の処理を実行し終えることによりステップS117で肯定結果を得ると、代替ストレージノード10に割り当てられたリビルド対象の各記憶装置12内のすべてのチャンクCKについてステップS111~ステップS117の処理を実行し終えたか否かを判断する(S118)。
容量制御部32は、この判断で否定結果を得るとステップS110に戻り、この後、ステップS110で選択するチャンクCKをステップS111以降が未処理の他のチャンクCKに順次切り替えながら、ステップS118で肯定結果を得るまでステップS110~ステップS118の処理を繰り返す。
そして容量制御部32は、やがて代替ストレージノード10に割り当てられたリビルド対象の各記憶装置12内のすべてのチャンクCKについてステップS111~ステップS117の処理を実行し終えることによりステップS118で肯定結果を得ると、このリビルド処理を終了する。
(3)本実施の形態の効果
以上のように本実施の形態の記憶システム1によれば、ストレージノードが他のストレージノードの障害を検知した場合に、新たなストレージノード(代替ストレージノード)の作成をクラウド制御装置に指示し、障害が発生したストレージノードに割り当てられていた記憶装置が故障しているか否かを判断し、故障していないと判断した場合には、障害が発生したストレージノードに割り当てられていた記憶装置を新たなストレージノードに割り当てるようクラウド制御装置に依頼する。
従って、本記憶システム1によれば、ユーザが分散ストレージシステムを構築するに際して予備の計算機資源やストレージ資源を事前に用意する必要がないため、ユーザ視点から見て安価に記憶システム1を構築することができる。また障害が発生したストレージノード10に割り当てられていた記憶装置12に格納されているデータを、例えば新たなストレージノード10に割り当てた記憶装置12にコピーするといった作業も必要がなく、障害発生時の縮退構成からの復帰を迅速に行うことができる。よって本記憶システム1によれば、システム構築に要する費用を抑制しながら、障害発生時には縮退構成からの復帰を迅速に行うことができる。
(4)他の実施の形態
なお上述の実施の形態においては、図16について上述した代替ストレージノード作成処理や、図17について上述した構成情報更新処理を、同じクラスタ15を構成するストレージノード10のうちの障害が発生したストレージノード10の当該障害を最初に検知したストレージノード10が行う場合について述べたが、本発明はこれに限らず、例えば、クラスタ15を構成するストレージノード10の中から1つの代表となるストレージノード(以下、これを代表ストレージノードと呼ぶ)10を選定し、選定された代表ストレージノード10がかかる代替ストレージノード作成処理や構成情報更新処理を実行するようにしてもよい。
また上述の実施の形態においては、ストレージノード10がデータを複数の部分データに分割し、これら部分データから消失訂正記号を生成して、これら複数の部分データ及び消失訂正記号をそれぞれ異なる記憶装置12内のチャンクCKに格納するようにした場合について述べたが、本発明はこれに限らず、同じデータを異なる複数の記憶装置に格納(レプリケーション)するようにしてもよい。この場合、障害の発生中に障害が発生したストレージノード10に割り当てられていた記憶装置12に格納された新たなデータ又は更新されたデータをその代替ストレージノード10に割り当てられた記憶装置12に復元する場合には、同じデータが格納されている他の記憶装置12に格納されているデータをそのままコピーするようにして復元すればよい。
さらに上述の実施の形態においては、記憶装置12がブロックストレージ装置である場合について述べたが、本発明はこれに限らず、記憶装置12がファイルストレージ装置である場合にも本発明を適用することができる。この場合には、障害の発生中に障害が発生したストレージノード10に割り当てられていた記憶装置12に格納されたデータの更新の有無や新たに書き込まれたデータの有無については、ファイル単位で行うようにすればよい。
本発明は、上位装置に対して記憶領域を提供する種々の構成の記憶システムに広く適用することができる。
1……記憶システム、3……ホスト装置、4……クラウドシステム、5……クラウド制御装置、10……ストレージノード、12……記憶装置、21……CPU、30……ストレージ制御部、31……クラスタ制御部、32……容量制御部、33……ストレージ構成情報、34……チャンク管理テーブル、35……チャンクグループ管理テーブル、36……チャンク更新管理ビットマップテーブル、37……容量構成情報、38……冗長化グループ、39……チャンクグループ、AR……部分領域、BM……更新管理ビットマップ、BT……更新管理ビット、CK……チャンク。

Claims (10)

  1. 上位装置に対して記憶領域を提供する記憶システムにおいて、
    クラウドシステムに設けられ、それぞれ前記記憶領域を提供する1又は複数の記憶装置と、
    前記クラウドシステムに設けられ、前記上位装置からの要求に応じて自己に割り当てられた前記記憶装置にデータを読み書きする1又は複数のストレージノードと、
    前記クラウドシステムを制御するクラウド制御装置と
    を備え、
    前記ストレージノードは、
    他のストレージノードの障害を検知した場合に、新たなストレージノードの用意を前記クラウド制御装置に指示し、
    障害が発生したストレージノードに割り当てられていた前記記憶装置が故障しているか否かを判断し、
    当該記憶装置が故障していないと判断した場合には、前記障害が発生したストレージノードに割り当てられていた前記記憶装置を、前記新たなストレージノードに割り当てるよう前記クラウド制御装置に依頼し、
    前記新たなストレージノードは、
    障害の発生中に前記障害が発生したストレージノードに割り当てられていた前記記憶装置への書き込みが要求されていたデータを、前記新たなストレージノードに割り当てられた前記記録装置に書き込む
    ことを特徴とする記憶システム。
  2. 前記ストレージノードは、
    前記障害が発生したストレージノードに割り当てられていた前記記憶装置が故障していると判断した場合、新たな前記記憶装置の用意を前記クラウド制御装置に指示し、
    用意された前記新たな記憶装置の前記新たなストレージノードに割り当てを前記クラウド制御装置に依頼し、
    前記新たなストレージノードは、
    故障していると判断された前記記憶装置に格納されていたデータを、当該新たな記憶装置に書き込む
    ことを特徴とする請求項に記載の記憶システム。
  3. 前記ストレージノードは、
    前記記憶装置に格納するデータから消失訂正符号を生成し、生成した前記消失訂正符号を当該データが格納される前記記憶装置とは異なる前記記憶装置に格納し、
    前記新たなストレージノードは、
    故障していると判断された前記記憶装置に格納されていたデータを、前記消失訂正符号を用いて復元し、復元した前記データを前記新たな記憶装置に書き込む
    ことを特徴とする請求項に記載の記憶システム。
  4. 障害の発生中に前記障害が発生したストレージノードに割り当てられていた前記記憶装置への書き込みが要求されていたデータの当該記憶装置における書込み先を、当該障害が発生したストレージノード以外の前記ストレージノードが記憶し、
    前記新たなストレージノードは、
    前記障害が発生したストレージノード以外の前記ストレージノードが記憶した前記書込み先に、復元した前記データを書き込む
    ことを特徴とする請求項に記載の記憶システム。
  5. 各前記ストレージノードは、
    各前記ストレージノードにそれぞれ割り当てられた前記記憶装置が提供する記憶領域を所定大きさのチャンクに分割して管理すると共に、異なる複数のストレージノードにそれぞれ割り当てられた所定数の前記記憶装置内の1つの前記チャンクをチャンクグループとして管理し、
    前記データ及び当該データから生成した前記消失訂正符号を、同じ前記チャンクグループを構成する複数の前記チャンクに分けて格納する
    ことを特徴とする請求項に記載の記憶システム。
  6. 上位装置に対して記憶領域を提供する記憶システムにおける障害対処方法において、
    前記記憶システムは、
    クラウドシステムに設けられ、それぞれ前記記憶領域を提供する1又は複数の記憶装置と、
    前記クラウドシステムに設けられ、前記上位装置からの要求に応じて自己に割り当てられた前記記憶装置にデータを読み書きする1又は複数のストレージノードと、
    前記クラウドシステムを制御するクラウド制御装置と
    を有し、
    前記ストレージノードが、他のストレージノードの障害を検知した場合に、新たなストレージノードの用意を前記クラウド制御装置に依頼する第1のステップと、
    当該ストレージノードが、障害が発生したストレージノードに割り当てられていた前記記憶装置が故障しているか否かを判断する第2のステップと、
    当該ストレージノードが、当該記憶装置が故障していないと判断した場合には、前記障害が発生したストレージノードに割り当てられていた前記記憶装置を、前記新たなストレージノードに割り当てるよう前記クラウド制御装置に依頼する第3のステップと
    前記新たなストレージノードが、障害の発生中に前記障害が発生したストレージノードに割り当てられていた前記記憶装置への書き込みが要求されていたデータを、前記新たなストレージノードに割り当てられた前記記録装置に書き込む第4のステップと
    を備えることを特徴とする障害対処方法。
  7. 前記第3のステップにおいて、前記ストレージノードは、
    前記障害が発生したストレージノードに割り当てられていた前記記憶装置が故障していると判断した場合、新たな前記記憶装置の用意を前記クラウド制御装置に依頼し、
    用意された前記新たな記憶装置の前記新たなストレージノードに割り当てを前記クラウド制御装置に依頼し、
    前記第4のステップにおいて、前記新たなストレージノードは、
    故障していると判断された前記記憶装置に格納されていたデータを、当該新たな記憶装置に書き込む
    ことを特徴とする請求項に記載の障害対処方法。
  8. 前記ストレージノードは、
    前記記憶装置に格納するデータから消失訂正符号を生成し、生成した前記消失訂正符号を当該データが格納される前記記憶装置とは異なる前記記憶装置に格納し、
    前記第4のステップにおいて、前記新たなストレージノードは、
    故障していると判断された前記記憶装置に格納されていたデータを、前記消失訂正符号を用いて復元し、復元した前記データを前記新たな記憶装置に書き込む
    ことを特徴とする請求項に記載の障害対処方法。
  9. 障害の発生中に前記障害が発生したストレージノードに割り当てられていた前記記憶装置への書き込みが要求されていたデータの当該記憶装置における書込み先を、当該障害が発生したストレージノード以外の前記ストレージノードが記憶し、
    前記第4のステップにおいて、前記新たなストレージノードは、
    前記障害が発生したストレージノード以外の前記ストレージノードが記憶した前記書込み先に、復元した前記データを書き込む
    ことを特徴とする請求項に記載の障害対処方法。
  10. 各前記ストレージノードは、
    各前記ストレージノードにそれぞれ割り当てられた前記記憶装置が提供する記憶領域を所定大きさのチャンクに分割して管理すると共に、異なる複数のストレージノードにそれぞれ割り当てられた所定数の前記記憶装置内の1つの前記チャンクをチャンクグループとして管理し、
    前記データ及び当該データから生成した前記消失訂正符号を、同じ前記チャンクグループを構成する複数の前記チャンクに分けて格納する
    ことを特徴とする請求項に記載の障害対処方法。
JP2022074093A 2022-04-28 2022-04-28 記憶システム及び障害対処方法 Active JP7506707B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2022074093A JP7506707B2 (ja) 2022-04-28 2022-04-28 記憶システム及び障害対処方法
US17/946,632 US12111730B2 (en) 2022-04-28 2022-09-16 Storage system and failure handling method
CN202310134416.1A CN116974462A (zh) 2022-04-28 2023-02-17 存储系统以及障碍应对方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022074093A JP7506707B2 (ja) 2022-04-28 2022-04-28 記憶システム及び障害対処方法

Publications (2)

Publication Number Publication Date
JP2023163298A JP2023163298A (ja) 2023-11-10
JP7506707B2 true JP7506707B2 (ja) 2024-06-26

Family

ID=88482056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022074093A Active JP7506707B2 (ja) 2022-04-28 2022-04-28 記憶システム及び障害対処方法

Country Status (3)

Country Link
US (1) US12111730B2 (ja)
JP (1) JP7506707B2 (ja)
CN (1) CN116974462A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7506707B2 (ja) * 2022-04-28 2024-06-26 株式会社日立製作所 記憶システム及び障害対処方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009140153A (ja) 2007-12-05 2009-06-25 Fujitsu Ltd ストレージ管理装置、ストレージシステム制御装置、ストレージ管理プログラムおよびストレージシステム
JP2020021277A (ja) 2018-07-31 2020-02-06 株式会社日立製作所 情報処理システム、情報処理システムの管理方法及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012114338A1 (en) * 2011-02-22 2012-08-30 Infinidat Ltd. Cloud storage arrangement and method of operating thereof
US9086929B2 (en) * 2012-04-06 2015-07-21 International Business Machines Corporation Dynamic allocation of a workload across a plurality of clouds
JP6791834B2 (ja) 2017-11-30 2020-11-25 株式会社日立製作所 記憶システム及び制御ソフトウェア配置方法
US11729857B2 (en) * 2018-09-17 2023-08-15 Apple Inc. Systems, methods, and devices for signaling for power saving
US11349917B2 (en) * 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks
US11442652B1 (en) * 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation
US20230308853A1 (en) * 2020-07-24 2023-09-28 Intel Corporation Computing workload management in next generation cellular networks
JP7506707B2 (ja) * 2022-04-28 2024-06-26 株式会社日立製作所 記憶システム及び障害対処方法
US20230345543A1 (en) * 2022-04-28 2023-10-26 Intel Corporation Release-18 (rel-18) support of two timing advances (tas) for single cell
US20230354152A1 (en) * 2022-07-05 2023-11-02 Intel Corporation Sidelink relay enhancements to support multipath

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009140153A (ja) 2007-12-05 2009-06-25 Fujitsu Ltd ストレージ管理装置、ストレージシステム制御装置、ストレージ管理プログラムおよびストレージシステム
JP2020021277A (ja) 2018-07-31 2020-02-06 株式会社日立製作所 情報処理システム、情報処理システムの管理方法及びプログラム

Also Published As

Publication number Publication date
US12111730B2 (en) 2024-10-08
CN116974462A (zh) 2023-10-31
JP2023163298A (ja) 2023-11-10
US20230350753A1 (en) 2023-11-02

Similar Documents

Publication Publication Date Title
CN109857445B (zh) 存储系统和控制软件配置方法
US10467246B2 (en) Content-based replication of data in scale out system
US20220091771A1 (en) Moving Data Between Tiers In A Multi-Tiered, Cloud-Based Storage System
CN109857334B (zh) 存储系统及其控制方法
EP1814033B1 (en) Storage system and data restoration method thereof
JP6850771B2 (ja) 情報処理システム、情報処理システムの管理方法及びプログラム
US20140122816A1 (en) Switching between mirrored volumes
US20210303178A1 (en) Distributed storage system and storage control method
US11204709B2 (en) Storage system and storage control method
JP6974281B2 (ja) ストレージシステム及びストレージ制御方法
US7849264B2 (en) Storage area management method for a storage system
JP7506707B2 (ja) 記憶システム及び障害対処方法
JP7179947B2 (ja) ストレージシステム及びストレージ制御方法
JP2004334739A (ja) データのバックアップ方法及びバックアップデータ復旧方法、並びに、ネットワーク蓄積装置及びネットワーク蓄積プログラム
US20240220378A1 (en) Information processing system and information processing method
JP7057408B2 (ja) 記憶システム及びその制御方法
US20240070035A1 (en) Information processing system and backup method
JP2023151189A (ja) ストレージシステム及びその制御方法
JP2022101208A (ja) 分散型ストレージシステム、データ復旧方法、及びデータ処理プログラム
JP2020201702A (ja) ストレージシステム及びスナップショット管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230623

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240614

R150 Certificate of patent or registration of utility model

Ref document number: 7506707

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350