JP6949801B2 - ストレージシステム及びストレージシステムにおけるデータ配置方法 - Google Patents

ストレージシステム及びストレージシステムにおけるデータ配置方法 Download PDF

Info

Publication number
JP6949801B2
JP6949801B2 JP2018196235A JP2018196235A JP6949801B2 JP 6949801 B2 JP6949801 B2 JP 6949801B2 JP 2018196235 A JP2018196235 A JP 2018196235A JP 2018196235 A JP2018196235 A JP 2018196235A JP 6949801 B2 JP6949801 B2 JP 6949801B2
Authority
JP
Japan
Prior art keywords
data
node
component
chunk
neck
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
JP2018196235A
Other languages
English (en)
Other versions
JP2020064473A (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 JP2018196235A priority Critical patent/JP6949801B2/ja
Priority to US16/563,522 priority patent/US10705737B2/en
Publication of JP2020064473A publication Critical patent/JP2020064473A/ja
Priority to US16/918,632 priority patent/US11301137B2/en
Priority to JP2021154123A priority patent/JP7140898B2/ja
Application granted granted Critical
Publication of JP6949801B2 publication Critical patent/JP6949801B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • 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/2056Error 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 by mirroring
    • G06F11/2058Error 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 by mirroring using more than 2 mirrored copies
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • 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/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0653Monitoring storage devices or 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
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、ストレージシステム及びストレージシステムにおけるデータ配置方法に関する。
ストレージシステムの記憶容量の利用効率を高めるため、Software-Defined Storage(SDS)の需要が高まってきている。また容量効率や信頼性の観点から、ストレージシステムのデータ保護をErasure Coding方式にて行うようになってきている。
例えば特許文献1には、Erasure Coding方式を採用したストレージシステムにおいて、m個のデータ及びn個のパリティからなるmDnPのデータセットを構成する各データ単位を、異なるストレージノードに配置する技術が開示されている。
またSDSでは、1以上の冗長性を有するデータセットを指定した場合に、ストレージシステムを構成するコンポーネント(例えば電源、ノード、ドライブ等)の単一障害によりデータセットの冗長性が一度に2以上低下してデータロストが生じる可能性がある。そこで、一般的に、SDSでは、同一データセットのデータ単位を、電源系統が異なるグループに属するストレージノードに配置することが行われている。
国際公開第2016/051512号
上述の従来技術では、ストレージシステムにおいて、全てのコンポーネントで同一の保護レベル(障害耐性)が確保できる構成を前提としている。
図47を参照して具体例で説明する。図47は、従来技術のストレージシステムにおいて、全てのコンポーネントで同一の保護レベル(障害耐性)が確保できる構成例を示す図である。図47に示すように、ストレージシステムのコンポーネントの1つが、1つの電源と2つのノードとから構成されているフォルトセット(電源境界)である場合を考える。この場合、1つのフォルトセットに含まれるコンポーネント(1つの電源及び2つのノード)が、単一の電源障害の影響を受ける範囲となる。
例えば6個のデータ及び2個のパリティからなる4D2Pのデータセットの各データ単位を、2つのコンポーネント(2つの電源、1つの電源及び1つのノード、或いは、2つのノード)の同時障害に耐えうるようにノードに配置する場合を考える。この場合、図47に示すように、6つのフォルトセット(フォルトセット#0〜#5)それぞれの1つのノードに1つずつデータ単位を配置する必要がある。
このように、6つのフォルトセットに4D2Pのデータセットの各データ単位を配置することで、全てのコンポーネント(図47の例では電源及びノード)のうち合計2つのコンポーネントの障害まで耐えうる構成となる。即ち全コンポーネントで同一保護レベル(障害耐性)が確保できる構成となる。
しかし、上述のように、ストレージシステムにおいて、全てのコンポーネントで同一の保護レベル(障害耐性)が確保できる構成とすると、構成の自由度が低くなり、小規模構成に対応できない等、柔軟にストレージシステム構築できないという問題がある。
本発明は以上の点を考慮してなされたもので、一定の保護レベル(障害耐性)を確保しつつ、自由度が高い構成でストレージシステムを構築可能とすることを目的とする。
かかる課題を解決するため本発明の一例においては、データのI/O処理要求を処理する複数のノードを有するストレージシステムであって、前記ノードは、記憶ドライブと、前記記憶ドライブに対して前記I/O処理を行うプロセッサと、を有し、前記プロセッサは、異なる前記記憶ドライブに格納されるデータを組みにしてデータセットとしたデータ冗長構成を構成し、前記ストレージシステムを管理する管理部は、前記ノード及び前記記憶ドライブを少なくとも含むコンポーネントの情報であるコンポーネント情報と、前記データ冗長構成にかかるデータ冗長構成情報と、を用いて、各コンポーネントの障害に対する障害耐性情報を算出する障害耐性算出を行い、前記算出した障害耐性情報にかかるデータ冗長構成を適用してデータ配置を決定する。
本発明の一態様によれば、一定の保護レベル(障害耐性)を確保しつつ、自由度が高い構成でストレージシステムを構築できる。
実施例1の計算機システムの構成例を示す図。 実施例1のFSのハードウェア構成例を示す図。 実施例1のメモリ内の制御情報格納領域に格納されるテーブル例を示す図。 実施例1のメモリ内の制御プログラム格納領域に格納されるプログラム例を示す図。 実施例1の記憶ドライブのデータ構成例を示す図。 実施例1のチャンクグループの構成例を示す図。 実施例1のチャンクグループ内のストライプの構成例を示す図。 実施例1の計算機システムの論理構成例を示す図。 実施例1の物理チャンク管理テーブルの構成例を示す図。 実施例1の論理チャンク管理テーブルの構成例を示す図。 実施例1のチャンクグループ管理テーブルの構成例を示す図。 実施例1のドライブ管理テーブルの構成例を示す図。 実施例1のノード管理テーブルの構成例を示す図。 実施例1のFault Set管理テーブルの構成例を示す図。 実施例1のStorage-Pool管理テーブルの構成例を示す図。 実施例1のVVOL管理テーブルの構成例を示す図。 実施例1のPool-Page管理テーブルの構成例を示す図。 実施例1の割当数管理テーブルの構成例を示す図。 実施例1のMAN管理テーブルの構成例を示す図。 実施例1の障害耐性管理テーブルの構成例を示す図。 実施例1のStorage-Pool容量増加処理の例を示すフローチャート。 実施例1のチャンクグループ新規作成処理の例を示すフローチャート。 実施例1の割当数変更時ネック部位更新処理の例を示すフローチャート。 実施例1の割当数変更時他コンポーネントネック部位更新処理の例を示すフローチャート。 実施例1のMAN更新処理の例を示すフローチャート。 実施例1のMAN更新時ネック部位更新処理の例を示すフローチャート。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その1)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その2)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その3)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その4)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その5)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その6)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その7)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その8)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その9)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その10)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その11)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その12)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その13)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その14)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その15)。 実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図(その16)。 実施例2のシステム内構成台数変更時のリバランス処理概念図。 実施例2のメモリ内の制御プログラム格納領域に格納されるプログラム例を示す図。 実施例2の増設後チャンクリバランス処理の例を示すフローチャート。 実施例2の減設時チャンクリバランス処理の例を示すフローチャート。 従来技術のストレージシステムにおいて、全てのコンポーネントで同一の保護レベル(障害耐性)が確保する構成例を示す図。
以下では、幾つかの実施例を、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例で説明されている諸要素及びその組合せの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶこともできる。
また、プロセッサが実行する処理の一部又は全部は、ハードウェア回路により処理されてもよい。プロセッサが実行する処理を規定するプログラムは、例えば外部装置からネットワークを介して取得して、あるいは記憶メディアを介して取得して、プロセッサにより実行されるものとしてもよい。
(計算機システムの構成)
図1は、実施例1の計算機システムの構成例を示す図である。図1は、実施例1の計算機システム1におけるプロテクションドメイン(Protection Domain:以下「PD」と略記する場合がある)と、サイト(Site)と、フォルトセット(Fault Set:以下「FS」と略記する場合がある)と、ノード(Node)との関連を示す。プロテクションドメイン、サイト、フォルトセット、ノード、及び後述するノード内の記憶ドライブ(Drive)のそれぞれは、コンポーネントと呼ばれる。
計算機システム1は、1つ以上のホスト10と、1つ以上の管理サーバ20と、ネットワーク30と、複数のFS40(図1の例ではFS#00〜FS#13の8つのFS40)とを有する。
ホスト10は、ホスト10に接続されたクライアント端末(不図示)からファイルのI/O要求を受信し、I/O要求に基づいてノード100へのアクセスを実現する。管理サーバ20は、計算機システム1全体の運用を管理するためのものである。
ネットワーク30は、公衆網、閉域網又は専用線網であり、ホスト10とFS40の間、管理サーバ20とFS40の間をそれぞれ通信可能に接続する。
図1のFS#00で例示するように、FS40は、複数のノード100(図1の例では2つのノード100)を有する。FS40は、例えば1つのラックに収容された電源及びネットワークスイッチを共有する複数のノード100を束ねたノード100の保守及び管理の単位である。同一のFS40内のコンポーネントは、単一の電源やネットワークスイッチの障害等により同時に影響を受ける。図1のFS#01〜FS#13についても、FS#00と同様である。
なお本実施例では1つのラックに1つのFS40が収容されるとするが、1つのラック内に複数のFS40が収容されていてもよい。
ノード100は、例えば汎用サーバである。同一のノード100内のコンポーネントは、単一のノード障害(CPU故障、ポート障害等)により同時に影響を受ける。
PDは、1つのPD内のI/O、障害、保守動作等が、別のPDに影響を与えないように構築される、計算機システム1内でのFS40の管理単位である。図1に示す例では、計算機システム1は、PD#0及びPD#1を有する。PD#0は、4つのFS#00、FS#01、FS#02、及びFS#03で構築される。またPD#1は、4つのFS#10、FS#11、FS#12、及びFS#13で構築される。
Siteは、例えばデータセンタの単位であり、同一Site内のコンポーネントは、火災、地震などの局地的災害により同時に影響を受ける。図1に示す例では、計算機システム1は、Site#0及びSite#1を有する。Site#0は、4つのFS#00、FS#01、FS#10、及びFS#11で構築される。またSite#1は、4つのFS#02、FS#03、FS#12、及びFS#13で構築される。
なお図1は計算機システム1の構成の一例を示すに過ぎず、図1に示す構成及び各構成要素の数は本実施形態を実現するうえで必須ではない。例えばSiteのレイヤは存在しなくてもよい。また、FS40とノード100との間に、複数のノード100を束ねた「Operation Set」(保守単位)のようなレイヤがあってもよい。
またPD間でのコンポーネントの重複配置が許容される。例えばPD#0がSite#1とSite#2から構成され、PD#2もSite#1とSite#2から構成されていてもよい。また例えば1つのFSがPDを跨って配置されてもよい。
ただし、一般的にPDは、単一コンポーネントの障害時に、他のコンポーネントに影響がないように構築されることが望ましい。例えばNode#1内にDrive#1及びDrive#2があり、Drive#1がPD#1に属し、Drive#2がPD#2に属するような構成は、Node#1の障害がPD#1及びPD#2の双方に影響を及ぼしてしまうので、望ましくない。
従って図1は、PD間でSiteのみがコンポーネントの重複を許容され、1つのFSが1つのPD内に閉じて配置される例を示している。
(FSのハードウェア構成)
図2は、実施例1のFSのハードウェア構成例を示す図である。FS40は、図2に示すように、複数のノード100と、ネットワークスイッチ170と、電源180とを有する。FS40内のノード100は、ネットワークスイッチ170や電源180等を共有するため、これらの障害が発生した場合にはFS40単位で障害が発生する。
ネットワークスイッチ170は、ネットワーク30を介してノード100をホスト10及び管理サーバ20と接続する。電源180は、複数のノード100に電力を供給する。
各ノード100は、ネットワーク30を介してホスト10に接続するためのポート110と、ネットワーク30を介して管理サーバ20に接続するための管理I/F120と、各種管理情報を格納するためのメモリ140と、データを格納するための記憶ドライブ160と、データやメモリ140内の管理情報を制御するためのプロセッサであるCPU(Central Processing Unit)130とを有し、これらが内部バス150を介して相互に接続される構成となっている。
メモリ140は、図3及び図4を参照して後述するように、ノード100の各種制御情報を格納する制御情報格納領域141、及び、各種制御プログラムが格納される制御プログラム格納領域142を有する。またメモリ140は、キャッシュ領域を含む。キャッシュ領域は、ホスト10から記憶ドライブ160等に書き込むデータ(ライトデータ)や、記憶ドライブ160から読み出したデータ(リードデータ)を一時的に格納する。
記憶ドライブ160は、1又は複数のドライブ装置(Drive)から構成されている。ドライブ装置は、磁気ディスクの記憶媒体を用いたHDD(Hard Disk Drive)やフラッシュメモリ等の記憶媒体を用いたSSD(Solid State Drive)等である。
CPU130は、ノード100内の制御を行うと共に、メモリ140に格納されているノード100の各種制御情報を元に、メモリ140に格納された各種制御プログラムを実行して各種処理を実行する。またCPU130は、各種コマンドを記憶ドライブ160に送信すると共に、各種コマンドを他のノード100に送信して他のノード100のCPU130に所定の処理を行わせることができる。
(メモリ内の制御情報格納領域に格納されるテーブル)
図3は、実施例1のメモリ内の制御情報格納領域に格納されるテーブル例を示す図である。メモリ140内の制御情報格納領域141には、物理チャンク管理テーブル1001と、論理チャンク管理テーブル1002と、チャンクグループ管理テーブル1003と、ドライブ管理テーブル1004と、ノード管理テーブル1005と、Fault Set管理テーブル1006とが格納される。また制御情報格納領域141には、Storage-Pool管理テーブル1007と、VVOL(Virtual Volume:仮想ボリューム)管理テーブル1008と、Pool-Page管理テーブル1009と、割当数管理テーブル1010と、MAN(Max Allocated Number)管理テーブル1011と、障害耐性管理テーブル1012とが格納されている。これらのテーブルの詳細は後述する。
なお制御情報格納領域141に格納されているこれらのテーブルは、ノード100の運用中はメモリ140上に展開されるが、ノード100の起動時に読み込む必要があるため、停電などに備えて、SSD等の不揮発な領域に常時格納しておく必要がある。ただし、割当数管理テーブル1010と、MAN管理テーブル1011に関しては、ノード100の電源OFF時に揮発しても問題ない情報であるため、不揮発領域への格納は必須ではない。
(メモリ内の制御プログラム格納領域に格納されるプログラム)
図4は、実施例1のメモリ内の制御プログラム格納領域に格納されるプログラム例を示す図である。メモリ140内の制御プログラム格納領域141には、使用容量監視プログラム1101と、Storage-Pool容量増加プログラム1102と、障害耐性算出プログラム1103と、I/O処理プログラム1104とが格納されている。
計算機システム1が有する複数のノード100のうち、所定のノード100のCPU130がメインのCPUとしてプログラムを実行し、その他のCPU130がメインのCPUの指示により動作することにより、使用容量監視プログラム1101、Storage-Pool容量増加プログラム1102、障害耐性算出プログラム1103、及びI/O処理プログラム1104の各処理が行われる。
使用容量監視プログラム1101は、後述のStorage-Pool501(図8参照)の使用率(使用中容量)を監視するプログラムである。Storage-Pool容量増加プログラム1102は、Storage-Pool501の使用率が規定値を下回った場合に、Storage-Pool501の容量を増加させるプログラムである。
障害耐性算出プログラム1103は、計算機システム1のシステム構成や各コンポーネント(Site、FS、Node、及びDrive)の保護レベル等から、計算機システム1の障害耐性を算出するプログラムである。I/O処理プログラム1104は、ユーザによるホスト10からのI/O要求に応じて、Read/Write処理を実行するプログラムである。
(記憶ドライブのデータ構成)
図5は、実施例1の記憶ドライブのデータ構成例を示す図である。記憶ドライブ160は、その物理領域が、複数の物理チャンク202に分割されている。物理チャンク202は、物理領域の管理単位であり、それぞれの容量が例えば数十GiBである。物理チャンク202は、データ用とパリティ用に分かれていてもよいし、1つの物理チャンク202にデータ及びパリティが混在していてもよい。
物理チャンク202は、本実施例における容量及びマッピングの管理単位である。例えば容量Vdの記憶ドライブ160には、物理チャンクサイズVpの物理チャンク202が、floor(Vd/Vp)個だけ含まれる。“floor(*)”は、小数点以下を切り捨てる床関数である。
さらに複数の物理チャンク202それぞれは、ストライプを構成するストライプブロック201と呼ばれる、例えば4KiBの単位に分割されている。さらにストライプブロック201は、I/O処理の最小単位に相当するサブブロック200に分割されている。サブブロック200のサイズは、I/Oコマンドが例えばSCSI(Small Computer System Interface)である場合には512byteである。
(チャンクグループの構成)
図6は、実施例1のチャンクグループの構成例を示す図である。図6に示すように、チャンクグループ300(300a、300b1、300b2を総称して300とする)は、複数の物理チャンク202から構成される。チャンクグループ300は冗長性を有するデータセットの一例であり、物理チャンク202はデータセットを構成する各データ単位の一例である。
チャンクグループ300は、保護方式(保護レベルがmDnP)が、ミラーリング(1D1D)の場合は2つの物理チャンク202から構成され(チャンクグループ300a参照)、2D1Pの場合は3つの物理チャンク202から構成され(チャンクグループ300b1参照)、3D1P又は2D2Pの場合は4つの物理チャンク202から構成される(チャンクグループ300b2参照)。単一のプロテクションドメイン内では、管理を単純化するために保護方式を統一してもよいし、異なる保護方式が混在していてもよい。
チャンクグループ300を構成する各物理チャンク202は、コンポーネントの障害時に冗長度が一度に2以上低下することを防ぐため、それぞれ異なるドライブ、ノード、フォルトセット、サイト、プロテクションドメインに割り当てて配置されることが望ましい。ただし、mDnPの保護方式に対して各コンポーネント数が(m+n)個未満の場合は、同一コンポーネントから複数の物理チャンクが選択されてもよい。各物理チャンク202は、対応するドライブの種別に応じた性能特性を持つため、チャンクグループ300を構成する物理チャンク202は、同一の速度特性を持つ物理チャンク202から選択されることが望ましい。
(チャンクグループ内のストライプ)
図7は、実施例1のチャンクグループ内のストライプの構成例を示す図である。上述のように、チャンクグループ300は、複数の物理チャンク202で構成される。図7は、同一チャンクグループ300に属する物理チャンク202を抽出したものであり、1つのチャンクグループ300を構成する各物理チャンク202は、1以上のノード100、1以上の記憶ドライブ160にバラバラに配置されている。
図7に示すように、物理チャンク202は、複数のストライプブロック201で構成される。ストライプ400は、例えば保護方式が3D1Pである場合、4個のストライプブロック201で構成される。
データの更新を行う場合は、ストライプ400単位で処理が行われる。例えば、図7に示すデータブロックD2−1が更新される場合は、物理チャンク202全体が更新されるのではなく、データブロックD2−1と、データブロックD2−1が含まれるストライプ400内のパリティブロックP2とが更新される。
(計算機システム1の論理構成)
図8は、実施例1の計算機システム1の論理構成例を示す図である。論理チャンク500は、データ領域及びパリティ領域から構成される物理チャンク202からデータ領域のみを抽出したものである。論理チャンク500は、Storage-Pool501に提供される。そのため、Storage-Pool501の容量は、物理チャンク202のパリティ部分を除く容量と同一容量、即ちユーザが割り当て可能な容量となる。ただし、障害時の冗長度の回復用に使用するスペア領域等をStorage-Pool501の容量とは個別に管理するために、一部の物理チャンク202をStorage-Pool501に割り当てずに保持しておく構成であってもよいし、Storage-Pool501の容量枯渇時に柔軟に容量を増加させるために、一部の論理チャンク500をStorage-Pool501に割り当てずに保持しておく構成であってもよい。なおStorage-Pool501は、プロテクションドメイン毎に1つ以上設けられる。
物理チャンク202がデータ領域のみ又はパリティ領域のみで構成されている場合は、データ領域の物理チャンク202を論理チャンク500として扱う。
なお各Node内にNode内Poolを定義し、Node内の論理チャンク500をNode内Poolに割り当て、Node内Poolから任意のサイズのボリュームを生成し、それをStorage-Pool501に割り当ててもよい。
論理チャンク500は、論理チャンク500を構成する物理チャンク202が属するデバイス種別(SSDやHDD等)に応じた性能特性を持つが、1つのStorage-Pool501は、単一の性能特性を持つ論理チャンク500から構成されることが望ましい。
同様に論理チャンク500は、論理チャンク500を構成する物理チャンク202が属するチャンクグループ300の保護方式に応じた性能特性を持つが、1つのStorage-Pool501は、単一の性能特性を持つ論理チャンク500から構成されることが望ましい。
或いは、Storage-Pool501内を複数のパーティション(Tier)に分割し、物理チャンク202が属するデバイス種別が同一、又は、保護方式が同一のチャンクグループ300を、単一のTier内に存在するデータブロックで構成するようにしてもよい。
Storage-Pool501内の1以上のサブブロックからPool-Page503が構成される。VVOL502は、管理サーバ20からの指示により生成される。VVOL502のサイズは記憶ドライブ160の実際の総使用可能容量に依存しない。ホスト10からのI/O要求に従って、VVOL502内の記憶領域(VVOL-Page504)に対して、Pool-Page503を動的に割り当てる。
(物理チャンク管理テーブルの構成)
図9は、実施例1の物理チャンク管理テーブルの構成例を示す図である。物理チャンク管理テーブル1001は、記憶ドライブ160(Drive#カラム2000)と物理チャンク202(Pchunk#カラム2001)とチャンクグループ300(ChunkGroup#カラム2002)との関連を示すテーブルである。
ChunkGroup#カラム2002には、Drive#カラム2000及びPchunk#カラム2001に格納されている各IDに該当する記憶ドライブ160及び物理チャンク202がチャンクグループ300に割り当てられている場合にはチャンクグループ300のIDが格納される。一方、ChunkGroup#カラム2002には、Drive#カラム2000及びPchunk#カラム2001に格納されている各IDに該当する記憶ドライブ160及び物理チャンク202がチャンクグループ300に割り当てられていない場合は“Not Allocated”が格納される。
物理チャンク202のチャンクサイズは同一プロテクションドメイン内では固定値のため、各物理チャンク202が各記憶ドライブ160で先頭から何番目の物理チャンク202であるかを示すオフセット値が分かれば、記憶ドライブ160内で各物理チャンク202の開始LBA(Logical Block Address)を一意に定めることができる。
(論理チャンク管理テーブルの構成)
図10は、実施例1の論理チャンク管理テーブルの構成例を示す図である。論理チャンク管理テーブル1002は、論理チャンク500(Lchunk#カラム500)と物理チャンク202(Pchunk#カラム202)との関連を示すテーブルである。
図10は、論理チャンク500(Lchunk#カラム2010)が単一の物理チャンク202(Pchunk#カラム2011)から構成されていることを、これらのIDの対応関係で示している。Allocated Storage Poolカラム2012には、論理チャンク500が割り当てられているStorage-Pool501のIDが格納され、論理チャンク500が何れのStorage-Pool501にも割り当てられていない場合は“Not Allocated”が格納される。
Statusカラム2013には、論理チャンク500のアクセス性能を示す次の各状態が格納される。“Normal”は、当該Lchunkを構成するPchunkが属するChunkGroupに障害が生じていないことを示す。“Correction”は、当該Lchunkを構成するPchunk、又は、当該Lchunkが属するChunkGroup内のPchunkに障害が発生しており、Correction R/Wによる性能低下が発生している状態を示す。“Blocked”は、当該Lchunkを構成するPchunkが属するChunkGroupに冗長度以上の障害が発生し、データアクセスができない状態を示す。
(チャンクグループ管理テーブルの構成)
図11は、実施例1のチャンクグループ管理テーブルの構成例を示す図である。チャンクグループ管理テーブル1003は、ChunkGroup#カラム2020にIDが格納されるチャンクグループ300の構成及び状態を示すテーブルである。ProtectionTypeカラム2021は、当該ChunkGroupの保護方式を示す。Pchunk#カラム2022a(Pchunk#1)、Pchunk#カラム2022b(Pchunk#2)、Pchunk#カラム2022c(Pchunk#3)、Pchunk#カラム2022d(Pchunk#4)、Pchunk#カラム2022e(Pchunk#5)にはそれぞれ、チャンクグループ300を構成する各物理チャンク202のIDが格納される。本実施例では、チャンクグループ300を構成する物理チャンク202の数は、最大5つである。
Statusカラム2013には、当該チャンクグループ300の物理チャンク302の障害有無を示す次の各状態が格納される。“Normal”は、当該チャンクグループ300に障害が発生している物理チャンク302がない状態を示す。“Caution”は、当該チャンクグループ300に障害が発生している物理チャンク302があるが、冗長度が1以上確保されている状態を示す。“Critical”は、当該チャンクグループ300に障害が発生している物理チャンク302があり、冗長度が0である状態を示す。“Blocked”は、当該チャンクグループ300に障害が発生している物理チャンク302があり、かつ、データロストした状態を示す。チャンクグループ300に障害が発生している物理チャンク302がある状態を“Caution”及び“Critical”の2段階に分けて示すことによって管理者に詳細な状態を通知することが可能となるが、“Caution”に統一してもよい。
なお各物理チャンク302がデータ又はパリティ等のデータ属性を持つ場合は、チャンクグループ管理テーブル1003において当該物理チャンク302に当該属性情報を付与してもよい。
(ドライブ管理テーブルの構成)
図12は、実施例1のドライブ管理テーブルの構成例を示す図である。ドライブ管理テーブル1004は、記憶ドライブ160を構成するDriveとNodeの関連、構成、及び状態を示すテーブルである。Typeカラム2032には、Node#カラム2030及びDrive#カラム2031に格納されているIDのノード100の記憶ドライブ160のドライブ種別(SSD、SAS−HDD、SATA−HDD等)が格納されている。
Size(Block)カラム2033には、当該Node#カラム2030及びDrive#カラム2031に格納されているIDのノード100の記憶ドライブ160の記憶容量が格納されている。Size(Block)カラム2033に格納される情報は、例えばBlock(512Byte)単位の場合、“0x020000000”(=256GiB)である。
Usageカラム2034には、当該Node#カラム2030及びDrive#カラム2031に格納されているIDのノード100の記憶ドライブ160の記憶容量の使用率(使用中容量)が格納されている。
Statusカラム2053には、当該Node#カラム2030及びDrive#カラム2031に格納されているIDのノード100の記憶ドライブ160の障害の有無を示す次の各状態が格納される。“Normal”は、当該記憶ドライブ160が正常な状態であることを示す。“Blocked”は、当該記憶ドライブ160に障害が発生しておりアクセスができない状態であることを示す。
(ノード管理テーブルの構成)
図13は、実施例1のノード管理テーブルの構成例を示す図である。ノード管理テーブル1005は、Fault SetとNodeの関連を示すテーブルである。Size(Block)カラム2042には、当該Fault Set#カラム2040及びNode#カラム2041に格納されているIDのFS40のノード100内の全ての記憶ドライブ160の合計記憶容量が格納されている。Size(Block)カラム2042に格納される情報は、当該Fault Set#カラム2040及びNode#カラム2041に格納されているIDのFS40のノード100内の全ての記憶ドライブ160の合計記憶容量の使用率(使用中容量)である。
Statusカラム2044には、当該Fault Set#カラム2040及びNode#カラム2041に格納されているIDのFS40のノード100内の全ての記憶ドライブ160の障害の有無を示す次の各状態が格納される。“Normal”は、当該ノード100内の記憶ドライブ160全てが正常な状態であることを示す。“Failure”は、当該ノード100内の一部の記憶ドライブ160に障害が発生しているがノードとしてはアクセス可能な状態であることを示す。“Blocked”は、当該ノード100内のCPU100等、または当該ノード100が属するFS40のネットワークスイッチ170や電源180に障害が発生しておりアクセス不可の状態であることを示す。
(Fault Set管理テーブルの構成)
図14は、実施例1のFault Set管理テーブルの構成例を示す図である。Fault Set管理テーブル1006は、Protection DomainとSiteとFault Setとの関連を、各IDを対応付けて示すテーブルである。一般的にFS(Fault Set)40(例えばラック等)は計算機システム1の管理外であるため、状態管理は行わない(ラック障害時はラック内全ノードの障害として扱う)が、計算機システム1の管理下にある場合は状態管理を行ってもよい。
(Storage-Pool管理テーブルの構成)
図15は、実施例1のStorage-Pool管理テーブルの構成例を示す図である。Storage-Pool管理テーブル1007は、Storage-Pool501のサイズ(Size(Block))と使用率(Usage)と割り当てられた論理チャンク500(Allocated Lchunk)との関係を示すテーブルである。
Storage-Poolカラム2060には、当該Storage-Pool501のIDが格納される。Size(Block)カラム2061に格納される情報は、Block(例えば512Byte)単位で示す当該Storage-Pool501のサイズである。Usageカラム2062に格納される情報は、当該Storage-Pool501の記憶容量の使用率(使用中容量)である。Allocated Lchunk#カラム2063に格納される情報は、当該Storage-Pool501に割り当てられている論理チャンク500のIDである。
Storage-Pool501の使用率が一定値を上回った場合は、既定の物理チャンク202から作成された論理チャンク500を当該Storage-Pool501に新規に割り当てることでStorage-Pool501の空き容量を増加させる。Storage-pool501は、単一の保護レベル及び同一性能の記憶ドライブ160から構成されることが望ましいが、Storage-Pool501をTierに分割して管理できる場合はこれらを混在させてもよい。
(VVOL管理テーブルの構成)
図16は、VVOL管理テーブルの構成例を示す図である。VVOL管理テーブル1008は、VVOL502の構成情報と、VVOL502に割り当てられたVVOL-Page504、及びVVOL-Page504とPool-Page503の関係を示すテーブルである。VVOL-Page504とPool-Page503の各サイズは計算機システム1で固定値であるが、オーバープロビジョニングされてもよい。
VVOL#カラム2070には、VVOL502のIDが格納される。Size(Block)カラム2071に格納される情報は、Block(例えば512Byte)単位で示す当該VVOL502のサイズである。VVOL-Page#カラム2072に格納される情報は、当該VVOL502上のVVOL-Page504のIDである。Pool-Page#カラム2073に格納される情報は、当該VVOL502上の当該VVOL-Page504に対応するPool-Page503のIDである。VVOL-Page504に対応するPool-Page503が割り当てられていない場合には、Pool-Page#カラム2073には“Not Allocated”が格納される。
VVOL502がWrite要求を受領すると、要求されたLBAに対応するVVOL-Page504に割り当てられたPool-Page503にデータが書き込まれる。初期状態ではVVOL-Page504にPool-Page503は割り当てられておらず(Not Allocated)、Pool-Page504の空き容量が不足した場合にVVOL-Page504に適当なPool-Page503が新たに割り当てられる。
(Pool-Page管理テーブルの構成)
図17は、実施例1のPool-Page管理テーブルの構成例を示す図である。Pool-Page管理テーブル1009は、Pool-Page503の構成を管理するテーブルである。Pool-Page#カラム2080には、Pool-Page503のIDが格納される。Storage-Pool内開始LBAカラム2081には、Storage-Pool501内での当該Pool-Page503の開始LBAが格納される。Lchunk#カラム2082には、当該Pool-Page503に割り当てられている論理チャンク500のIDが格納される。Lchunk内開始LBAカラム2083には、Storage-Pool内開始LBAで示されるStorage-Pool501内の領域が対応する論理チャンク500内の領域を、論理チャンク500内での開始LBAで示す情報が格納される。
Pool-Page503は、そのサイズが固定値であるため、Storage-Pool501内のどの領域に対応しているかを、Pool-Page503のID及びStorage-Pool501内での開始LBAの組で表すことができる。またPool-Page503が対応するStorage-Pool501の領域はどの論理チャンク500(Lchunk)のどの領域に対応しているかを、論理チャンク500のID及び論理チャンク500内での開始LBAの組で表すことができる。
(データのI/O処理)
データのWrite処理フローは、次のようになる。先ずホスト10は、VVOL#、VVOL内LBAを指定してWriteコマンドを発行する。次にCPU130は、当該VVOL502内領域に対応するVVOL-Page504を算出する。次にCPU130は、当該VVOL-Page504に対応するPool-Page503を算出する。次にCPU130は、当該Pool-Page503に対応する論理チャンク500の領域を算出する。次にCPU130は、当該論理チャンク500の領域に対応する物理チャンク202の領域を算出する。次にCPU130は、当該物理チャンク202の領域に対応する記憶ドライブ160内の領域を算出する。次にCPU130は、当該記憶ドライブ160内の領域に対して要求データを書き込む(Write)。データのReadも、Writeと同様である。
(割当数管理テーブルの構成)
図18は、実施例1の割当数管理テーブルの構成例を示す図である。割当数管理テーブル1010は、Site、Fault Set、Node、及びDriveそれぞれに割り当てられた物理チャンク202の割当数を管理する各テーブルがツリー状に展開されたテーブルである。図18の例では、割当数管理テーブル1010は、ツリー上に展開されるテーブル2090−a0、テーブル2090−b0、テーブル2090−c0、テーブル2090−c1、テーブル2090−d0、及びテーブル2090−d1を含む。図18の例では、一部の図示を省略している。
なお割当数管理テーブル1010は、チャンクグループ300の新規作成時(物理チャンク202の割当先選択時)にのみ使用し、チャンクグループ作成後は破棄してもよいため、不揮発化領域への格納は必須ではない。
テーブル2090−a0は、Site毎の物理チャンク202の割当数を管理する。テーブル2090−a0は、Site#0に5つの物理チャンク202が割り当てられていることを示している。またテーブル2090−a0は、Site#0への物理チャンク202の割当数のネックがSite#0の1つ下の階層のFault Setの最大割当数MAN(Fault Set)であることを示している。MANはMax Allocated Numberの略である。
テーブル2090−b0は、Site#0のFault Set毎の物理チャンク202の割当数を管理する。テーブル2090−b0は、Fault Set#0に2つの物理チャンク202が割り当てられており、Fault Set#1に2つの物理チャンク202が割り当てられており、Fault Set#2に1つの物理チャンク202が割り当てられていることを示している。
またテーブル2090−b0は、Fault Set#0への物理チャンク202の割当数がFault Set#0の最大割当数MAN(Fault Set)=2に達しており、ネック部位がFault Set#0であることを示している。またテーブル2090−b0は、Fault Set#1の1つ下の階層の全てのNodeが最大割当数MAN(Node)に達しており、この1つ下の階層のNodeがネック部位であることを示している。またテーブル2090−b0は、Fault Set#2の1つ下の階層の全てのNodeが最大割当数MAN(Node)=1に達しており、この1つ下の階層のNodeがネック部位であることを示している。
テーブル2090−c0は、Fault Set#0のNode毎の物理チャンク202の割当数を管理する。テーブル2090−c0は、Node#0に1つの物理チャンク202が割り当てられており、Node#1に1つの物理チャンク202が割り当てられており、Node#2には物理チャンク202が割り当てられていないことを示している。
またテーブル2090−c0は、Node#0への物理チャンク202の割当数のネックがNode#0の最大割当数MAN(Node)=1であることを示している。またテーブル2090−c0は、Node#1への物理チャンク202の割当数のネックがNode#1の最大割当数MAN(Node)=1であることを示している。このためNode#0及びNode#1には、これ以上物理チャンク202を割り当てることができない。
例えばテーブル2090−d0に示す例では、Node#0のDrive#0への物理チャンク202の割当数が1でネックがMAN(Drive)であり、Drive#1へは物理チャンク202が割り当てられておらずネックが設定されていないことから、MAN(Node)=1となっている。詳細は後述するが、このNode#0及びNode#1に新たに物理チャンク202を割り当てるためには、MAN(Node)を増やす必要がある。
またテーブル2090−c0は、Node#2へは物理チャンク202が割り当てられていないため、ネックが設定されていない。
テーブル2090−d0は、Node#0のDrive毎の物理チャンク202の割当数を管理する。テーブル2090−d0は、Drive#0に1つの物理チャンク202が割り当てられており、Node#1には物理チャンク202が割り当てられていないことを示している。
またテーブル2090−d0は、Drive#0への物理チャンク202の割当数のネックがDrive#0の最大割当数MAN(Drive)であることを示している。またテーブル2090−d0は、Drive#1へは物理チャンク202が割り当てられていないため、ネックが設定されていない。
Fault Set#1の1つ下の階層のNode毎の物理チャンク202の割当数及びネックを示すテーブル2090−c1は、テーブル2090‐c0と同様である。またFault Set#1のNode#0の1つ下の階層のDrive毎の物理チャンク202の割当数及びネックを示すテーブル2090−d1は、テーブル2090‐d0と同様である。
(MAN管理テーブルの構成)
図19は、実施例1のMAN管理テーブルの構成例を示す図である。MAN管理テーブル1011は、各コンポーネント(Site、Fault Set、Node、Drive)のMANを管理している。MAN管理テーブル1011は、チャンクグループ300の新規作成時(物理チャンク202の割当先選択時)にのみ使用し、対象チャンクグループ作成後は破棄してもよいため、不揮発化領域への格納は必須ではない。
各コンポーネントは、あるチャンクグループ300の新規作成時に、MAN以上の物理チャンク202を同時に割り当てることができない。例えば、図19の例では、あるFault Set(即ちFault Set内のNode及び当該Node内のDrive)には、チャンクグループ300あたり最大2個までしか物理チャンク202を割り当てることができない。
MAN管理テーブル1011内のComponentカラム2100に示されるコンポーネントに対応するMAN2010の各値は、後述のMAN更新処理によって適宜インクリメントされる。
(障害耐性管理テーブルの構成)
図20は、実施例1の障害耐性管理テーブルの構成例を示す図である。障害耐性管理テーブル1012は、各コンポーネント(Site、Fault Set、Node、Drive)の現在の障害耐性をユーザに提示するために管理しているテーブルである。
例えば、図20の例では、Nodeは任意の2つのNodeの同時障害までの耐性を有し、3つのNodeの同時障害時はデータロストが発生する可能性がある。一方でFault Setは、任意の1つのFault Setの障害までの耐性しか持たず、2つのFault Setの同時障害時はデータロストが発生する可能性がある。
ここでチャンクグループ300の保護レベルをxDyPとした場合、コンポーネントXの障害耐性は以下の式で算出される。
コンポーネントXの障害耐性=floor(y/MAN(X))・・・(1)
または、計算機システム1内の構成が完全に均等(例えば各Fault Setは全て3つのNodeで構成され、各Nodeは全て8つのDriveで構成されている等)な理想構成であれば、コンポーネントXの障害耐性は以下の式で算出される。
コンポーネントXの障害耐性=floor(y/ceiling((x+y)/N))・・・(2)
ただし、floor(*)は床関数(小数点以下切り捨て)、ceiling(*)は天井関数(小数点以下切り上げ)、Nは計算機システム1内のコンポーネントXの全個数である。
障害耐性管理テーブル1012は、チャンクグループ300の作成完了時(MAN管理テーブル1011を削除する直前)に現在のMANを用いて更新してもよいし、計算機システム1内のComponentの構成台数から定めてもよい(この場合はComponentの増設及び減設の契機で更新される)。
コンポーネントXがユーザ指定の障害耐性を満たさない場合(例えば本実施例ではFault Set耐性を2以上持たせたい場合等)は、障害耐性管理テーブル1012の計算時に、ユーザにアラートを上げ、Fault Set数やNode数を増やすなどの対策を促してもよい。
また障害耐性管理テーブル1012は、計算機システム1で一意でなくてもよい。例えば、Protection-Domain毎に別ポリシーの障害耐性管理テーブル1012が設定されていてもよい。
(Storage-Pool容量増加処理)
図21は、実施例1のStorage-Pool容量増加処理の例を示すフローチャートである。以下では、チャンクグループ300を作成する契機で、当該チャンクグループに対応する論理チャンク500を全て作成し、Storage-Pool501への論理チャンク500の追加は任意の契機で実行可能であることを前提とする。各ノード100において、I/O処理プログラム1104のI/O処理の実行と共に、Storage-Pool501の使用率が上がっていく。Storage-Pool容量増加プログラム1102は、I/O処理の都度、あるいは一定周期に使用容量監視プログラム1101によりStorage-Pool501の使用率の閾値超過が検出されたことを契機として各ノード100のCPU130により実行される。
先ずCPU130は、Storage-Pool501の使用率が閾値を超過したかを判定する(ステップS3001)。当該閾値は、システムによって一意に定められた値であってもよいし、管理者によって指定された値であってもよい。CPU130は、Storage-Pool501の使用率が閾値を超過した場合(ステップS3001:YES)、未割当の論理チャンク500が有るかを判定する(ステップS3002)一方、Storage-Pool501の使用率が閾値を超過していない場合(ステップS3001:NO)、ステップS3007に処理を移す。
CPU130は、作成済かつ未割当の論理チャンク500が有る場合(ステップS3002:YES)、未割当の論理チャンク500をStorage-Pool501に割り当てる(ステップS3003)一方、未割当の論理チャンク500がない場合(ステップS3002:NO)、未割当の論理チャンク500を作成するためチャンクグループ新規作成処理を実行する(ステップS3004)。
ここで新規作成するチャンクグループ300は、Storage-Pool毎に設定された保護レベルに沿ったものであってもよいし、ユーザによって指示されたものであってもよい。例えば空き領域が十分に存在する場合は応答性能が高い3D1P、空き領域が一定値未満の場合は容量効率が良い7D1P、障害発生頻度が高い場合は冗長度があり信頼性が高い4D2Pのチャンクグループ300を作成する。チャンクグループ新規作成処理の詳細は、図22を参照して後述する。
CPU130は、ステップS3003が終了すると、ステップS3001に処理を戻す。またCPU130は、ステップS3004が終了すると、新規作成処理は成功したかを判定する(ステップS3005)。
CPU130は、新規作成処理は成功した場合(ステップS3005:YES)、ステップS3002に処理を戻す一方、新規作成処理は成功しなかった場合(ステップS3005:NO)、容量拡張失敗(NG)を応答する(ステップS3006)。例えば管理サーバ20は、CPU130から容量拡張失敗(NG)を応答されると、Node又はDriveの増設等により空き容量を増加させる必要があることを管理者に通知する。
他方ステップS3007では、CPU130は、容量拡張成功(OK)(正常終了)を応答する。当該応答には、Storage-Pool501の使用率が閾値を超過しておらず、容量拡張が不要である場合も含む。ステップS3006又はステップS3007が終了すると、CPU130は、Storage-Pool容量増加処理を終了する。
(チャンクグループ新規作成処理)
図22は、実施例1のチャンクグループ新規作成処理の例を示すフローチャートである。図22は、図21のステップS3004の詳細を示すサブルーチンである。チャンクグループ新規作成処理は、チャンクグループ300を新規作成する際に、当該チャンクグループ300を構成する規定数の物理チャンク202を選択する処理である。チャンクグループ新規作成処理で示すMAN(Maximum Allocatable Number:最大割当可能数)は、例えばMAN(Node)=2なら、1つのチャンクグループ300あたり、同一Nodeに2個までの物理チャンク202を割り当て可能である。
先ずCPU130は、作成するチャンクグループ300の保護レベルを取得する(ステップS3101)。例えばステップS3101では、CPU130は、作成するチャンクグループ300の保護レベルが3D1Pであれば4個の物理チャンク202を割り当てることを認識する。
次にCPU130は、物理チャンクサイズ、割り当てる物理チャンク数、当該ノード内の未使用容量から、この時点で新規チャンクグループ作成可能な空き容量、即ちステップS3101で取得した必要物理チャンク数分の未割当(Not Allocated)の物理チャンク202が存在するかを確認する(ステップS3102)。CPU130は、新規チャンクグループ作成可能な空き容量が存在する場合(ステップS3102:YES)、ステップS3103に処理を移し、存在しない場合(ステップS3102:NO)、ステップS3112に処理を移す。
ステップS3103では、CPU130は、ネック部位未設定のSite、Fault Set、Node、及びDriveが各1つずつ以上存在するかを判定する。ネック部位未設定のSite、Fault Set、Node、及びDriveが各1つずつ以上存在する場合(ステップS3103:YES)、現時点で物理チャンク202の割り当てが可能であるので、CPU130は、ネック部位未設定のSite、Fault Set、Node、及びDriveに物理チャンク202を新規に割り当てる(ステップS3104)。
ステップS3104の物理チャンク202の新規割り当てでは、例えば以下のような方法で割り当て先を選択する。
(1)ネック部位が設定されておらず、かつ障害状態でないSiteの中で、空き容量が最も多いSiteを選択する。
(2)選択されたSite内に存在し、かつネック部位が設定されておらず、かつ障害状態でないFault Setの中で、空き容量が最も多いFault Setを選択する。
(3)選択されたFault Set内に存在し、かつネック部位が設定されておらず、かつ障害状態でないNodeの中で、空き容量が最も多いNodeを選択する。
(4)選択されたNode内に存在し、かつネック部位が設定されておらず、かつ障害状態でないDriveの中で、空き容量が最も多いDriveを選択する。
ステップS3104に続き、ステップS3105では、CPU130は、ステップS3104の処理結果で割当数管理テーブル101を更新する。次にCPU130は、物理チャンク202の割り当てを増やしたときにはネック部位を更新する必要があるため、割当数変更時ネック部位更新処理を実行する(ステップS3106)。割当数変更時ネック部位更新処理の詳細は、図23を参照して後述する。割当数変更時ネック部位更新処理が終了すると、CPU130は、ステップS3109に処理を移す。
一方ネック部位未設定のSite、Fault Set、Node、及びDriveが各1つずつ以上存在しない場合(ステップS3103:NO)、MAN更新処理を実行する(ステップS3107)。MAN更新処理の詳細は、図25を参照して後述する。
次にCPU130は、MANを増やしたときにはネック部位を更新する必要があるため、MAN更新時ネック部位更新処理を実行する(ステップS3108)。MAN更新時ネック部位更新処理の詳細は、図26を参照して後述する。MAN更新時ネック部位更新処理が終了すると、CPU130は、ステップS3103に処理を移す。
ステップS3106に続き、ステップS3109では、CPU130は、ステップS3101で取得した必要物理チャンク数分の物理チャンク202の割当先が決定したかを判定する。規定数の物理チャンク202の割当先が選択済みの場合(ステップS3109:YES)、CPU130は、障害耐性がユーザの設定した基準を満たしているかを、障害耐性管理テーブル1012を用いて判定する(ステップS3110)。一方規定数の物理チャンク202の割当先を選択していない場合(ステップS3109:NO)、CPU130は、ステップS3103に処理を戻す。
障害耐性が基準を満たす場合(ステップS3110:YES)、CPU130は、物理チャンク管理テーブル1001、論理チャンク管理テーブル1002、チャンクグループ管理テーブル1003を更新する(ステップS3111)。これにより、障害耐性が基準を満たすことを確認した上でチャンクグループ300の各物理チャンク202を割り当てることができる。またCPU130による障害耐性が基準を満たす応答に応じて、管理サーバ20は、システムのコンポーネント構成及び障害耐性と共にチャンクグループ300の新規作成可をユーザに提示することで、ユーザは障害耐性及びチャンクグループ300の新規作成可を認識することができる。
一方障害耐性が基準を満たしていない場合(ステップS3110:NO)、CPU130は、新規作成不可を応答する(ステップS3112)。CPU130による障害耐性が基準を満たさない応答に応じて、管理サーバ20は、システムのコンポーネント構成及び障害耐性と共にチャンクグループ300の新規作成不可をユーザに提示する。この際、増設する必要があるコンポーネントを示して増設を促してもよい。
ステップS3112では、例えば障害耐性が基準を満たしていない場合でも、作成可能とするオプションがあってもよい。この場合は例えば障害耐性を満たしていないことをユーザに通知した上で、チャンクグループを作成すればよい。ステップS3111又はステップS3112が終了すると、CPU130は、チャンクグループ新規作成処理を終了する。
(割当数変更時ネック部位更新処理)
図23は、実施例1の割当数変更時ネック部位更新処理の例を示すフローチャートである。図23は、図22のステップS3106の詳細を示すサブルーチンである。割当数変更時ネック部位更新処理では、物理チャンク202を、新規作成するチャンクグループ300の一構成要素としてある領域に割り当てた場合に発生する、当該割り当てにより自コンポーネントに対してネック化するコンポーネント要素を更新する。
割当数変更時ネック部位更新処理の説明において、「コンポーネント」とは、DriveやNode等の種別そのものを示す(コンポーネントは大文字のラテン文字で記す)。一方「コンポーネント要素」とは、コンポーネントのうちの任意の1要素、例えばある単体のDriveを示す。あるコンポーネントX内の要素は「コンポーネントX要素」とも呼ぶ(コンポーネント要素は小文字のラテン文字で記す)。
またコンポーネントの上位/下位の概念について、コンポーネントAが1以上のコンポーネントBを包含する場合、「コンポーネントAはコンポーネントBの上位コンポーネント」と定義する。本実施例では、各コンポーネントは、Site⊇Fault set⊇Node⊇Driveの包含関係にあるため、例えばSiteはFault Setの上位コンポーネントであり、DriveはNodeの下位コンポーネントである。
先ずCPU130は、割当先情報(Site/Fault Set/Node/Drive)を取得する(ステップS3201)。次にCPU130は、ステップS3201で取得したSite/Fault Set/Node/Driveの割当先情報のうち、割当数未更新のコンポーネントXを選択する(ステップS3202)。
次にCPU130は、コンポーネントXの割当対象コンポーネント要素aの割当数がMAN(X)に一致したかを判定する(ステップS3203)。即ち物理チャンク202の割当時には、Site/Fault Set/Node/Driveの各コンポーネントのうち、それぞれ1つのコンポーネント要素aの割当数が変更(+1)されるので、この割り当てにより、各対象コンポーネント要素aが新規割り当てを阻害するネック部位になったか(MAN(X)に達したか)をチェックする。
コンポーネントXの割当対象コンポーネント要素aの割当数がMAN(X)に一致した場合(ステップS3203:YES)、CPU130は、コンポーネントXの割当対象コンポーネント要素aをMAN(X)ネックに設定する(ステップS3204)。コンポーネントXの割当対象コンポーネント要素aの割当数がMAN(X)に一致しない場合(ステップS3203:NO)、CPU130は、ステップS3205に処理を移す。
ステップS3203又はステップS3204に続き、ステップS3205では、CPU130は、全コンポーネント更新済みかを判定する。CPU130は、全コンポーネント更新済みの場合(ステップS3205:YES)、ステップS3206に処理を移し、全コンポーネント更新済みでない場合(ステップS3205:NO)、ステップS3202に処理を移す。
ステップS3206では、CPU130は、割当数変更時他コンポーネントネック部位更新処理を実行する。割当数変更時他コンポーネントネック部位更新処理は、ネック部位が変更された場合に新たにネック化した可能性があるその上位のコンポーネントをチェックする処理である。例えばあるNode配下のDriveが全てMAN(Drive)ネックになった場合、当該Nodeの割当数がMAN(Node)に達していなくとも、当該Nodeに割り当てることはできなくなるので、当該NodeにMAN(Drive)ネックを設定する必要がある。割当数変更時他コンポーネントネック部位更図2新処理の詳細は、図24を参照して後述する。ステップS3206が終了すると、CPU130は、割当数変更時ネック部位更新処理を終了する。
(割当数変更時他コンポーネントネック部位更新処理)
図24は、実施例1の割当数変更時他コンポーネントネック部位更新処理の例を示すフローチャートである。図24は、図23のステップS3206の詳細を示すサブルーチンである。
先ずCPU130は、割当先情報(Site/Fault Set/Node/Drive)を取得する(ステップS3301)。割当数変更時他コンポーネントネック部位更新処理は、下位のコンポーネントから順に実施する必要がある。
次にCPU130は、Site/Fault Set/Node/Driveのうち上位ネック部更新未判定かつ最下位のコンポーネントXを選択する(ステップS3302)。次にCPU130は、ステップS3302で選択したコンポーネントXに下位コンポーネントが存在するかを判定する(ステップS3303)。但し最下位コンポーネント(例えばDrive)の場合は、自身より下位のコンポーネントのネック部位が変更されたことによる影響を受けないため、ステップS3303では選択されない。
ステップS3302で選択したコンポーネントXに下位コンポーネントが存在する場合(ステップS3303:YES)、CPU130は、コンポーネントXの対象コンポーネント要素aの配下の全下位コンポーネントY要素に1つ以上のMAN(Y)又はMAN(Z)(ZはYより下位のコンポーネント)が設定されているかを判定する(ステップS3304)。一方ステップS3302で選択したコンポーネントXに下位コンポーネントが存在しない場合(ステップS3303:NO)、CPU130は、ステップS3306に処理を移す。
コンポーネントXの対象コンポーネント要素aの配下の全下位コンポーネントY要素に1つ以上のMAN(Y)と、MAN(Z)(ZはYより下位のコンポーネント)が設定されている(ステップS3304:YES)場合、対象コンポーネント要素aをMAN(Y)ネックに更新する(ステップS3305)。
例えばあるFault Set(対象コンポーネント要素a)に物理チャンク202を割り当てたとき、Fault Set(対象コンポーネント要素a)の配下(下位コンポーネント)の全Nodeに、1つ以上のMAN(Node)又はMAN(Drive)が設定されている場合に、Fault Set(対象コンポーネント要素a)にMAN(Node)ネックを設定する。ここで仮に各Nodeが全てMAN(Drive)であった場合は、Fault Set(対象コンポーネント要素a)にMAN(Drive)ネックを設定する。
次にCPU130は、全コンポーネント判定済みかを判定し(ステップS3306)、全コンポーネント判定済みの場合(ステップS3306:YES)、割当数変更時他コンポーネントネック部位更新処理を終了し、全コンポーネント判定済みでない場合(ステップS3306:NO)、ステップS3302に処理を移す。
(MAN更新処理)
図25は、実施例1のMAN更新処理の例を示すフローチャートである。図25は、図21のステップS3107の詳細を示すサブルーチンである。MAN更新処理は、現在の割当状態及びMANでは割り当てができない場合、MANを増やすことで対応する処理である。
ここではある1つのコンポーネントのMANのみ更新するが、チャンクグループ新規作成処理(図22参照)に示すように、1つのMANを更新しただけで割り当て可能になるとは限らない。以下、ネック対象コンポーネントをAとし、ネック原因コンポーネントをBとする。
先ずCPU130は、ネック対象コンポーネント(A)として、最上位コンポーネントを選択する(ステップS3401)。ステップS3401は、上位コンポーネントから優先的にMANを増加させていくため、最上位コンポーネント(Site)からチェック開始する。
次にCPU130は、ネック対象コンポーネントA内にネック部位が設定されていないコンポーネント要素が存在するかを判定する(ステップS3402)。ネック対象コンポーネントA内にネック部位が設定されていないコンポーネント要素が存在する場合(ステップS3402:YES)、ネック対象コンポーネントAを、現在のネック対象コンポーネントAの次の上位コンポーネントに更新する(ステップS3403)。
一方ネック対象コンポーネントA内にネック部位が設定されていないコンポーネント要素が存在しない場合(ステップS3402:NO)、ステップS3406に処理を移す。ステップS3406では、CPU130は、ネック原因コンポーネント(B)として、選択されたネック対象コンポーネント(A)を選択する。即ち全コンポーネント要素に何かのネック部位が設定されているコンポーネント(A)が存在する場合に、コンポーネント(A)に設定されているネック部位はどのコンポーネント(B)のものかをチェックする。
ステップS3403に続きステップS3404では、CPU130は、ネック対象コンポーネントAは最下位コンポーネントかを判定する。ネック対象コンポーネントAは最下位コンポーネントである場合(ステップS3404:YES)、CPU130は、MAN(A)をインクリメントする(ステップS3405)。最下位コンポーネント(Drive)に到達した時点で、更新すべきMANはMAN(Drive)であることが確定するため、MAN(A)=MAN(Drive)を更新する。ステップS3405が終了すると、CPU130は、ステップS3411に処理を移す。
ステップS3406に続き、CPU130は、A内にネック部位にMAN(B)が設定されているコンポーネント要素が存在しないかを判定する(ステップS3407)。A内にネック部位にMAN(B)が設定されているコンポーネント要素が存在しない場合(ステップS3407:YES)、CPU130は、Bを現在のBの次の上位コンポーネントに更新する(ステップS3408)。一方A内にネック部位にMAN(B)が設定されているコンポーネント要素が存在する場合(ステップS3407:NO)、CPU130は、ステップS3410に処理を移す。
ステップS3408に続きステップS3409では、CPU130は、Bは最下位コンポーネントかを判定する。CPU130は、Bは最下位コンポーネントである場合(ステップS3409:YES)、ステップS3410に処理を移し、Bは最下位コンポーネントでない場合(ステップS3409:NO)、ステップS3407に処理を移す。
ステップS3410では、CPU130は、MAN(B)をインクリメントする。ステップS3410が終了すると、CPU130は、ステップS3411に処理を移す。ステップS3411では、CPU130は、更新されたMANを出力する。ステップS3411が終了すると、CPU130は、MAN更新処理を終了する。
例えばネック対象コンポーネントAがFault Set(全Fault Setに何らかのネック部位が設定されている)だったとして、MAN(Fault Set)が設定されているFault Setが存在する場合、MAN(Fault Set)を更新する。さらにMAN(Fault Set)が設定されているFault Setが存在しない場合であって、MAN(Node)が設定されているFault Setが存在するときMAN(Node)を更新(増加)し、MAN(Node)が設定されているFault Setが存在しないときMAN(Drive)を更新(増加)する。
(MAN更新時ネック部位更新処理)
図26は、実施例1のMAN更新時ネック部位更新処理の例を示すフローチャートである。図26は、図22のステップS3108の詳細を示すサブルーチンである。MAN更新時ネック部位更新処理は、MANを更新することにより、ネック部位が更新される(ネックが外れる又は別コンポーネントのネック変更される)コンポーネント要素があるはずなので、これをチェックし更新する処理である。
先ずCPU130は、更新したMAN(X)を取得する(ステップS3501)。次にCPU130は、ステップS3501で取得したMAN(X)についてMAN(X)ネックが設定されているコンポーネント要素が存在するかを判定する(ステップS3502)。CPU130は、ステップS3501で取得したMAN(X)についてMAN(X)ネックが設定されているコンポーネント要素が存在する場合(ステップS3502:YES)、ネック部位にMAN(X)が設定されているコンポーネントW要素aを選択する(ステップS3503)一方、MAN(X)ネックが設定されているコンポーネント要素が存在しない場合(ステップS3502:NO)、MAN更新時ネック部位更新処理を終了する。ステップS3502は、後述のステップS3505又はステップS3507により更新したMAN(X)がネック部位に設定されているものがなくなれば判定結果がNOとなり、MAN更新時ネック部位更新処理は終了する。
以下、更新されたコンポーネント(X)がFault Setである場合(MAN(Fault Set)が更新された場合)を例とする。
次にCPU130は、ステップS3503で選択したコンポーネントWはコンポーネントXかを判定する(ステップS3504)。ステップS3503で選択したコンポーネントWはコンポーネントXである場合(ステップS3504:YES)、コンポーネントW要素aのネック部位を削除する(ステップS3505)。即ちFault Set(W)内にMAN(Fault Set)ネックが設定されているコンポーネントW要素aがある場合、つまりFault Set(a)にMAN(Fault Set)ネックが設定されている場合、設定されたFault Setのネック部位を外す。
ここで、あるFault SetにMAN(Fault Set)ネックが設定されているとはつまり当該Fault Set配下にネックが設定されていないNodeが1つ以上存在することであるため、この場合は単純にネック部位を削除するだけでよい。ステップS3505が終了すると、CPU130は、ステップS3502に処理を戻す。
一方ステップS3503で選択したコンポーネントWはコンポーネントXでない場合(ステップS3504:NO)、CPU130は、コンポーネントW要素aの割当数がMAN(W)に一致するかを判定する(ステップS3506)。コンポーネントW要素aの割当数がMAN(W)に一致する場合(ステップS3506:YES)、CPU130は、コンポーネントW要素aをMAN(W)ネックに更新する(ステップS3507)。
即ちSite(W)内にMAN(Fault Set)ネックが設定されているコンポーネントW要素aがある場合、つまりいずれかのSite(a)にMAN(Fault Set)ネックが設定されている場合、先ずSite(a)の割当数がMAN(Site)に一致するかをチェックする(MAN(Fault Set)に隠れてMAN(Site)ネックでもある可能性もあるため)。そしてSite(a)がMAN(Site)ネックだった場合は、Site(a)をMAN(Fault Set)ネックからMAN(Site)ネックに更新する。これによりネック部位となっている原因が自コンポーネントであるか、その下位のコンポーネントであるかを認識できる。
コンポーネントW要素aの割当数がMAN(W)に一致しない場合(ステップS3506:NO)、ステップS3505に処理を移す。ステップS3505又はステップS3507が終了すると、CPU130は、ステップS3502に処理を戻す。
(物理チャンクの割り当て処理に伴う割当数管理テーブルの変化)
図27〜図42は、実施例1の物理チャンクの割り当て処理に伴う割当数管理テーブル及びMAN管理テーブルの状態遷移例を説明するための図である。以下、図27〜図42を参照して、図22に示すチャンクグループ新規作成処理により、Site#0において物理チャンクがドライブに割り当てられる度に、割当数管理テーブル1010(図18参照)及びMAN管理テーブル1011(図19参照)がどのように変化するかを説明する。
以下では、Protection Domain#0は1つのSite#0を有し、Site#0はFS#0、FS#1、及びFS#2の3つのFault Setを有し、FS#0はNode#0-0、Node#0-1、及びNode#0-2の3つのNodeを有し、FS#1はNode#1-0及びNode#1-1の2つのNodeを有し、FS#2は1つのNode#2-0を有し、各Nodeはそれぞれ2つのDriveを有する場合において、7個の物理チャンク(6D1P或いは5D2P等)を各Driveに割り当てるケースを説明する。
なお図27〜図42の説明では、割当数管理テーブル1010におけるComponentがSiteのMAN(Maximum Allocated Number)を“Ms”とし、ComponentがFault SetのMANを“Mf”とし、ComponentがNodeのMANを“Mn”とし、ComponentがDriveのMANを“Md”とする。
図27〜図42では、次を基本方針とする。
(1)同一コンポーネント内の最大割当数を最小化する。即ちコンポーネント間でできるだけ均等に物理チャンクを割り当てる。
(2)割当数が一定数を超える場合は、なるべく下位コンポーネントの割当数が少なくなるように配置する。
これは、下位コンポーネントほど障害が発生しやすいと考えられるためである。よって上位コンポーネントの最大割当数を増やすことで、下位コンポーネントの最大割当数を増やさずに配置可能になるのであれば、できるだけ上位のコンポーネントの最大割当数を増やすことで対応する。即ち、同一ドライブの最大割当数(MAN(Drive))を増やすのは最後に行う。
先ず図27は、Protection Domain#0に物理チャンクが全く割り当てられていない初期状態での割当数管理テーブル1010及びMAN管理テーブル1011を示す。
次に図28は、Node#0-0のDrive#0に1つ目の物理チャンクが割り当てられた状態を示す。Node#0-0のDrive#0に1つ目の物理チャンクが割り当てられると、テーブル2090−a0のSite#0の割当数、テーブル2090−b0のFS#0の割当数、テーブル2090−c0のNode#0-0の割当数、及びテーブル2090−d0のDrive#0の割当数がそれぞれインクリメントされる。
テーブル2090‐a0において、Site#0は、割当数がMs=1に達しており、かつ配下のFault SetにMfネック及びMnネック及びMdネックの何れでもないFS#1及びFS#2が存在するので、Msネックが設定される。
テーブル2090−b0において、FS#0は、割当数がMf=1に達しており、かつ配下にMnネック及びMdネックの何れでもないFS#0のNode#0-1及びNode#0-2が存在するので、Mfネックが設定される。
テーブル2090‐c0において、Node#0-0は、割当数がMn=1に達しており、かつ配下にMdネックでないNode#0-0のDrive#1が存在するので、Mnネックが設定される。
テーブル2090‐d0において、Drive#0は、割当数がMd=1に達しているのでMdネックが設定される。
次に図29は、Node#1-0のDrive#0に2つ目の物理チャンクが割り当てられた状態を示す。全てのSite(本例ではSite#0のみ)がMsネックであるので、MAN管理テーブル1011のMsをインクリメントして“2”とすることでSite#0の割当数がMs未満になるため、Site#0に2つ目の物理チャンクを割当可能になる。
Node#1-0のDrive#0に2つ目の物理チャンクが割り当てられると、テーブル2090−a0のSite#0の割当数、テーブル2090−b0のFS#1の割当数、テーブル2090−c1のNode#1-0の割当数、及びテーブル2090−d0−1のDrive#0の割当数がそれぞれインクリメントされる。
テーブル2090‐a0において、Site#0は、割当数がMs=2に達しており、かつ配下にMfネック及びMnネック及びMdネックの何れでもないFS#2が存在するので、Msネックが設定される。
テーブル2090‐b0において、FS#1は、割当数がMf=1に達しており、かつ配下にMnネック及びMdネックの何れでもないFS#1のNode#1-1が存在するので、Mfネックが設定される。
テーブル2090−c1において、Node#1-0は、割当数がMn=1に達しており、かつ配下にMdネックでないNode#1-0のDrive#1が存在するので、Mnネックが設定される。
テーブル2090−d0−1において、Drive#0は、割当数がMd=1に達しているのでMdネックが設定される。
次に図30は、Node#2-0のDrive#0に3つ目の物理チャンクが割り当てられた状態を示す。全てのSite(本例ではSite#0のみ)がMsネックであるので、MAN管理テーブル1011のMsをインクリメントして“3”とすることでSite#0の割当数がMs未満になるため、Site#0に3つ目の物理チャンクを割当可能になる。
Node#2-0のDrive#0に3つ目の物理チャンクが割り当てられると、テーブル2090−a0のSite#0の割当数、テーブル2090−b0のFS#2の割当数、テーブル2090−c2のNode#2-0の割当数、及びテーブル2090−d0−2のDrive#0の割当数がそれぞれインクリメントされる。
テーブル2090−a0において、Site#0は、割当数がMs=3に達しており、かつ配下の全てのFSが1以上のMfネック、及びMnネック又はMdネックの何れかであるので、Mfネックが設定される。
テーブル2090−b0において、FS#2は、割当数がMf=1に達しており、かつ配下の全てのNode(Node#2-0)がMnネックになったので、Mnネックが設定される。ここで、FS#2はMfネックでもあるが、MfをインクリメントしてもFS#2内の全NodeがMnネックであるため、物理チャンクが割り当て可能にはならない。FS#2を割り当て可能にするためには、まずMnを増やす必要があるため、FS#2にはMnネックが設定される。
テーブル2090−c2において、Node#2-0は、割当数がMn=1に達しており、かつ配下にMdネックでないNode#2-0のDrive#1が存在するので、Mnネックが設定される。
テーブル2090−d0−2において、Drive#0は、割当数がMd=1に達しているのでMdネックが設定される。
次に図31は、Node#0-1のDrive#0に4つ目の物理チャンクが割り当てられた状態を示す。全てのSite(本例ではSite#0のみ)がMsネックであるのでMAN管理テーブル1011のMsをインクリメントして“4”とし、Mfをインクリメントして“2”とすることでSite#0に4つ目の物理チャンクを割当可能になる。なおこれに伴いFS#0及びFS#1の割当数がMf未満になりFS#0及びFS#1のMfネックは削除される。
Node#0-1のDrive#0に4つ目の物理チャンクが割り当てられると、テーブル2090−a0のSite#0の割当数、テーブル2090−b0のFS#0の割当数、テーブル2090−c0のNode#0-1の割当数、及びテーブル2090−d1のDrive#0の割当数がそれぞれインクリメントされる。
テーブル2090−a0において、Site#0は、割当数がMs=4に達しており、かつ配下にMfネック及びMnネック及びMdネックの何れでもないFS#1が存在するので、Msネックが設定される。
テーブル2090−b0において、FS#0は、割当数がMf=2に達しており、かつ配下にMnネック及びMdネックの何れでもないDrive#0-2が存在するので、Mfネックが再び設定される。またテーブル2090−b0において、FS#1は、割当数がMf=2未満となるので、ネックは再設定されない。またテーブル2090−b0において、FS#2は、割当数がMf=2未満となりMfネックとはならないが、より下位のMnネックが維持される。
テーブル2090−c0において、Node#1は、割当数がMn=1に達しており、かつ配下にMdネックでないNode#0-1のDrive#1が存在するので、Mnネックが設定される。
テーブル2090−d1において、Node#0-1のDrive#0は、割当数がMd=1に達しているのでMdネックが設定される。
次に図32は、Node#1-1のDrive#0に5つ目の物理チャンクが割り当てられた状態を示す。全てのSite(本例ではSite#0のみ)がMsネックであるので、MAN管理テーブル1011のMsをインクリメントして“5”とすることでSite#0の割当数がMs未満になるので、Site#0に5つ目の物理チャンクを割当可能になる。
Node#1-1のDrive#0に5つ目の物理チャンクが割り当てられると、テーブル2090−a0のSite#0の割当数、テーブル2090−b0のFS#1の割当数、テーブル2090−c1のNode#1-1の割当数、及びテーブル2090−d1−1のDrive#0の割当数がそれぞれインクリメントされる。
テーブル2090−a0において、Site#0は、割当数がMs=5に達しており、かつ配下の全てのFSが1以上のMfネック、及びMnネック又はMdネックの何れかであるので、Mfネックが設定される。
テーブル2090−b0において、FS#1は、割当数がMf=2に達しており、かつ配下の全てのNodeが1以上のMnネック、及びMdネックの何れかであるので、Mnネックが設定される。
テーブル2090−c1において、Node#1-1は、割当数がMn=1に達しており、かつ配下にMdネックでないNode#1-1のDrive#1が存在するので、Mnネックが設定される。
テーブル2090−d1-1において、Node#1-1のDrive#0は、割当数がMd=1に達しているのでMdネックが設定される。
次に図33〜図38を参照して、Node#0-2のDrive#0に6つ目の物理チャンクを割り当てる状態を示す。
先ず図33に示すように、Protection Domain#0のSite#0がMfネックであるので、このMfネックをMsネックに変更するために、MAN管理テーブル1011のMfをインクリメントして“3”とする。すると自身がネックであるSite#0のFS#0のMfネックが削除される。つまりMAN管理テーブル1011のMfを増やし、Site#0のネック(Mfネック)を外す。これに伴い、Site#0のMfネックが、割当数がMs=5に達しており、かつ配下にMfネック及びMnネック及びMdネックの何れもないFS#0が存在することになるので、Msネックが設定される。
次に図34に示すように、MAN管理テーブル1011のMsをインクリメントして“6”とする。すると自身がネックであるSite#0のMsネックが削除される。つまりMAN管理テーブル1011のMsを増やし、Site#0のネック(Msネック)を外す。
次に図35に示すように、Protection Domain#0のSite#0の割当数を6で更新し、Site#0のFS#0の割当数を3で更新し、FS#1のNode#0-2の割当数を1で更新し、Node#0-2のDrive#0の割当数を1で更新することで、6つ目の物理チャンクの割り当てを行う。
次に図36に示すように、Protection Domain#0のSite#0にMsネックを設定し、Site#0のFS#0にMnネックを設定し、FS#0のNode#0-2にMnネックを設定し、Node#0-2のDrive#0にMdネックを設定する。ここで図36に示すように、Site#0の配下の全てのFSがMn以下のコンポーネントのネック(Mnネック)になっている。
そこで図37に示すように、Protection Domain#0のSite#0のネックをMsネックからMnネックに変更する(上位更新)。以上で図38に示すように、6つ目の物理チャンクの割り当てが完了する。
次に図39〜図42を参照して、Node#1-0のDrive#0に7つ目の物理チャンクを割り当てる状態を示す。
先ず図39に示すように、Protection Domain#0のSite#0がMnネックであるので、このMnネックをMsネックに変更するために、MAN管理テーブル1011のMnをインクリメントして“2”とする。するとProtection Domain#0のSite#0がMnネックからMsネックになり、Site#0のFS#0がMnネックからMfネックになり、Site#0のFS#1〜FS#2のMnネックが削除され、FS#0のNode#0-0〜Node#0-2、FS#1のNode#1-0〜Node#1-1、及びFS#2のNode#2-0のMnネックが削除される。つまりMAN管理テーブル1011のMnを増やし、Site#0のネック(Mnネック)を外す。
次に図40に示すように、MAN管理テーブル1011のMsをインクリメントして“7”とする。すると自身がネックであるSite#0のMsネックが削除される。つまりMAN管理テーブル1011のMsを増やし、Site#0のネック(Msネック)を外し、Protection Domain#0内の全Site(Site#0)がMsネックとなって物理チャンク割り当て不可の状態を解消する。
次に図41に示すように、Protection Domain#0のSite#0の割当数を7で更新し、Site#0のFS#1の割当数を3で更新し、FS#1のNode#1-0の割当数を3で更新し、Node#1-0のDrive#1の割当数を1で更新することで、7つ目の物理チャンクの割り当てを行う。
次に図42に示すように、Protection Domain#0のSite#0にMsネックを設定し、Site#0のFS#1にMfネックを設定し、FS#1のNode#1-0にMnネックを設定し、Node#1-0のDrive#1にMdネックを設定する。以上で図42に示すように、7つ目の物理チャンクの割り当てが完了する。
以上の実施例1では、ストレージシステムを構成する階層化された記憶ドライブ、記憶ドライブを束ねるノード、ノードを束ねるフォルトセット、及びフォルトセットを束ねるサイトの各コンポーネント毎にデータ単位(物理チャンク)の最大割当数を管理する。そしてErasure CodingのmDnPのデータセットを構成する各データ単位を、コンポーネント毎の最大割当数を超過しないように、複数の記憶ドライブに均等に割り当てて配置する。これにより、要求されるデータセットの冗長度及びストレージシステムの構成の制約下で、一定の障害耐性を確保するように各データ単位を配置できる。よって、例えばスタート時の小規模構成であってもできるだけ高い信頼性を確保できる等、自由度の高い構成で、コストと信頼性のバランスを図りつつ、ストレージシステムを構築できる。
また実施例1によれば、データセットの各データ単位(物理チャンク)がシステム内にできるだけ均等配置されることから、Fault SetやDrive等のコンポーネント単位の保守を障害耐性の範囲内で行うことができる、言い換えると保守のためにデータロストが発生しない範囲で或るコンポーネントを停止させることができる場合があり、保守の容易性を高めることができる。
以下実施例2について、実施例1との差分のみ説明し、重複する説明を省略する。
(システム内構成台数変更時のリバランス処理)
図43は、実施例2のシステム内構成台数変更時のリバランス処理概念図である。図44の上図は、増設前の3D1Pのチャンクグループ300の割り当て済みの物理チャンク202の配置を、黒く塗りつぶして表している。
図44の上図の場合、FS40の障害耐性は0であり、2つの物理チャンク202(202c、202d)が割り当てられているFS40に障害が発生した場合、当該チャンクグループ300のデータはロストしてしまう。
一方、図44の下図に示すように、FS40を増設した場合、物理チャンク202のリバランスを行って物理チャンク202cを、増設したFS40の物理チャンク202eへ移動させることにより、FS40の障害耐性1を得ることができる。
逆に、FS40の減設を行う場合は、できるだけ障害耐性が落ちないようにする必要がある。例えばNodeの減設を行う場合は、減設対象Node内に格納されていたデータを、Node抜去前に別Nodeに退避する必要があるが、この時同一チャンクグループ300に属する物理チャンク202ができるだけ割り当てられていないFS40に退避することで、障害耐性を維持したままシステムを減設することができる。
減設により障害耐性が落ちてしまう場合は、ユーザにその旨を通知する、または減設要求を拒否するなどの処理を行ってもよい。
(実施例2のメモリ内の制御プログラム格納領域に格納されるプログラム)
図44は、実施例2のメモリ内の制御プログラム格納領域に格納されるプログラム例を示す図である。メモリ140内の制御プログラム格納領域141には、実施例2では、実施例1と比較して、更に増設後リバランス処理プログラム1105と、減設前リバランス処理プログラム1106とが格納されている。
計算機システム1が有する複数のノード100のうち、所定のノード100のCPU130がメインのCPUとしてプログラムを実行し、その他のCPU130がメインのCPUの指示により動作することにより、増設後リバランス処理プログラム1105及び減設前リバランス処理プログラム1106の各処理が行われる。
増設後リバランス処理プログラム1105は、1以上のストレージデバイスやストレージノードを増設した際に、データのコンポーネント間移動を行い、各コンポーネント間で使用容量を平準化するプログラムである。本実施例では、増設後リバランス処理プログラム1105を実行することにより、物理チャンク202(Pchunk)の割当数を平準化し、障害耐性を改善できる場合がある。
減設前リバランス処理プログラム1106は、1以上のストレージデバイスやストレージノードを減設する前に、データのコンポーネント間移動を行い、減設対象のコンポーネントを減設可能とするプログラムである。本実施例では、減設前リバランス処理プログラム1106を実行することにより、物理チャンク202(Pchunk)の移動先を適切に選択し、減設後に障害耐性が低下を回避できる場合がある。
(増設後チャンクリバランス処理)
図45は、増設後チャンクリバランス処理の例を示すフローチャートである。増設後チャンクリバランス処理は、管理サーバ20からのユーザ指示に基づくシステム(NodeやDevice等)の増設後に起動され、物理チャンク202の再配置を行う。
先ずCPU130は、増設後の構成から、理想最大配置数を算出する(ステップS3601)。理想最大配置数は、次式により算出される。floor(*)は床関数(小数点以下切り捨て)、ceiling(*)は天井関数(小数点以下切り上げ)、Nは計算機システム1内のコンポーネントXの全個数、x及びyはデータセットxDyPのデータ及びパリティの各個である。
理想最大配置数=floor(y/ceiling((x+y)/N))・・・(3)
次にCPU130は、各コンポーネントの割当数が理想最大配置数を超過しているチャンクグループ300が有るかを判定する(ステップS3602)。即ちCPU130は、チャンクグループ管理テーブル1003を元に、同一Site/Fault Set/Node/Driveに一定数以上割り当てられているチャンクグループ300を検出する。
CPU130は、各コンポーネントの割当数が理想最大配置数を超過しているチャンクグループが有る場合(ステップS3602:YES)、ステップS3603に処理を移し、各コンポーネントの割当数が理想最大配置数を超過しているチャンクグループが無い場合(ステップS3602:NO)、ステップS3605に処理を移す。
ステップS3603では、CPU130は、リバランス後の障害耐性を算出し、リバランスにより障害耐性改善可能かを判定する。CPU130は、リバランスにより障害耐性改善可能な場合(ステップS3603:YES)、対象チャンクグループ300内の物理チャンク202の配置変更を実行する(ステップS3604)。一方CPU130は、リバランスにより障害耐性改善不可能な場合(ステップS3603:NO)、ステップS3605に処理を移す。
ステップS3605では、CPU130は、ステップS3602で判定された全チャンクグループ300が処理済みかを判定する。CPU130は、ステップS3602で判定された全てのチャンクグループ300が処理済みの場合(ステップS3605:YES)、ステップS3606に処理を移す一方、ステップS3602で判定された全チャンクグループ300が処理済みでない場合(ステップS3605:NO)、ステップS3602に処理を戻す。
ステップS3606では、CPU130は、増設後の物理チャンク配置に従い、データを移行する。なおデータ移行中に移行元の物理チャンク202にWrite要求が発行された場合は、以降元の物理チャンク202と移行先の物理チャンク202の双方にデータをWriteする。次にCPU130は、ステップS3603で算出した障害耐性で障害耐性管理テーブル1012を更新する(ステップS3607)。ステップS3607が終了すると、CPU130は、増設後チャンクリバランス処理を終了する。
(減設時チャンクリバランス処理)
図46は、実施例2の減設時チャンクリバランス処理の例を示すフローチャートである。減設時チャンクリバランス処理は、管理サーバ20からのユーザ指示に基づくシステム(NodeやDevice等)の減設前に起動され、減設対象コンポーネントからデータを退避し、減設(物理的な抜去)が可能な状態にする。
先ずCPU130は、減設対象のコンポーネントに属する物理チャンク202を1つ選択する(ステップS3701)。ステップS3701では、減設対象となるコンポーネント(Node/Drive等)内の物理チャンク202を1つ選択する際、例えば先頭から順次選択していってよい。
次にCPU130は、選択された物理チャンク202が属するチャンクグループ300から、選択された物理チャンク202を除いた配置でMAN管理テーブル1011を再生成する(ステップS3702)。ステップS3702では、例えば4D1P(計5個の物理チャンク202)の場合、選択された1つの物理チャンク202を除く4個の物理チャンク202の割当状態から、MAN管理テーブル1011を再生成する。
次にCPU130は、減設前の保護レベルmDnPに対し(m+n―1)個の物理チャンク202を割り当てた状態、かつ減設対象コンポーネントを除いた構成でチャンクグループ新規作成処理(図22参照)を実行する(ステップS3703)。例えば4D1Pの保護レベルの場合、4個の物理チャンク202の割り当てが終わった状態で、チャンクグループ新規割り当て処理(図22)を実行する。この時、減設対象のコンポーネントには物理チャンク202が割り当てられないように、選択先から除外する必要がある。
次にCPU130は、ステップS3703で実行したチャンクグループ新規作成処理結果は「新規作成不可」でないかを判定する(ステップS3704)。チャンクグループ新規作成処理結果は「新規作成不可」でない場合(ステップS3704:YES)、CPU130は、減設時チャンクリバランス処理を終了する。
一方チャンクグループ新規作成処理結果は「新規作成不可」である場合(ステップS3704:NO)、減設失敗を応答する(ステップS3705)。ステップS3705が終了すると、CPU130は、減設時チャンクリバランス処理を終了する。減設するための空き容量不足や、ユーザの設定した障害耐性基準値を満たさない配置しか取れない場合は、チャンクグループ新規作成処理(図22参照)が「新規作成不可」を返すため、減設不可を、管理サーバ20を介して要求元に応答する。
以上の実施例2によれば、要求されるデータセットの冗長度及びストレージシステムの構成の制約下で、一定の障害耐性を確保するように各データ単位を再配置することで、できるだけ高い信頼性を確保しながらコンポーネントの増設及び減設を行うことができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例を含む。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例もしくは変形例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換・統合・分散をすることが可能である。また実施例で示した各処理は、処理効率又は実装効率に基づいて適宜分散又は統合してもよい。
1…計算機システム、20…管理サーバ、30…ネットワーク、40…FS(Fault Set)、100…ノード、130…CPU、140…メモリ、160…記憶ドライブ、170…ネットワークスイッチ、180…電源、201…ストライプブロック、物理チャンク202、300…チャンクグループ、400…ストライプ、500…論理チャンク、501…Storage-Pool、502…VVOL、503…Pool-Page、504…VVOL-Page、1001…物理チャンク管理テーブル、1002…論理チャンク管理テーブル、1003…チャンクグループ管理テーブル、1004…ドライブ管理テーブル、1005…ノード管理テーブル、1006…Fault Set管理テーブル、Storage-Pool管理テーブル、1008…VVOL管理テーブル、1009…Pool-Page管理テーブル、1010…割当数管理テーブル、1011…MAN管理テーブル、1012…障害耐性管理テーブル、1101…使用容量監視プログラム、1102…Storage-Pool容量増加プログラム、1103…障害耐性算出プログラム、1104…I/O処理プログラム、1105…増設後リバランス処理プログラム、1106…減設前リバランス処理プログラム。

Claims (8)

  1. データのI/O処理要求を処理する複数のノードを有するストレージシステムであって、
    前記ノードは、
    記憶ドライブと、
    前記記憶ドライブに対して前記I/O処理を行うプロセッサと、を有し、
    前記プロセッサは、
    異なる前記記憶ドライブに格納されるデータを組みにしてデータセットとしたデータ冗長構成を構成し、
    前記ストレージシステムを管理する管理部は、
    前記ノード及び前記記憶ドライブを少なくとも含むコンポーネントの情報であるコンポーネント情報と、前記データ冗長構成にかかるデータ冗長構成情報と、を用いて、各コンポーネントの障害に対する障害耐性情報を算出する障害耐性算出を行い、
    前記算出した障害耐性情報にかかる前記データ冗長構成を適用してデータ配置を決定し、
    各前記データ冗長構成についての前記障害耐性情報は、複数のコンポーネント種別ごとに、障害が起きても稼働継続できるコンポーネント数を含んでおり、
    前記複数のコンポーネント種別ごとの障害が起きても稼働継続できるコンポーネント数が所定の基準を満たすデータ冗長構成を適用したコンポーネント構成及びデータ配置を決定する
    ことを特徴とするストレージシステム。
  2. 前記管理部は、前記障害耐性算出では、前記データ冗長構成情報に基づいて、各データの配置を設定し、各コンポーネントに障害が起きた場合の稼働継続性に基づいて、前記障害耐性情報を算出する
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記コンポーネントには、電源又はネットワークを含み、前記障害耐性情報には、前記電源又はネットワークに障害が発生した場合の稼働継続性を含む
    ことを特徴とする請求項1に記載のストレージシステム。
  4. 前記コンポーネントには、サイトを含み、前記障害耐性情報には、前記サイトに障害が発生した場合の稼働継続性を含む
    ことを特徴とする請求項1に記載のストレージシステム。
  5. 前記障害耐性情報には、前記データ配置のネックとなっているネック部位の情報が含まれる
    ことを特徴とする請求項1に記載のストレージシステム。
  6. 前記管理部は、前記障害耐性情報に基づいて、前記データ冗長構成及び前記データ配置を決定する
    ことを特徴とする請求項1に記載のストレージシステム。
  7. 前記障害耐性情報を出力し、前記データ冗長構成及び前記データ配置の選択をユーザから受け付ける
    ことを特徴とする請求項1に記載のストレージシステム。
  8. データのI/O処理要求を処理する複数のノードを有するストレージシステムにおけるデータ配置方法であって、
    前記ノードは、
    記憶ドライブと、
    前記記憶ドライブに対して前記I/O処理を行うプロセッサと、を有し、
    前記プロセッサは、
    異なる前記記憶ドライブに格納されるデータを組みにしてデータセットとしたデータ冗長構成を構成し、
    前記ストレージシステムを管理する管理部が、
    前記ノード及び前記記憶ドライブを少なくとも含むコンポーネントの情報であるコンポーネント情報と、前記データ冗長構成にかかるデータ冗長構成情報と、を用いて、各コンポーネントの障害に対する障害耐性情報を算出する障害耐性算出を行い、
    前記算出した障害耐性情報にかかる前記データ冗長構成を適用してデータ配置を決定し、
    各前記データ冗長構成についての前記障害耐性情報は、複数のコンポーネント種別ごとに、障害が起きても稼働継続できるコンポーネント数を含んでおり、
    前記複数のコンポーネント種別ごとの障害が起きても稼働継続できるコンポーネント数が所定の基準を満たすデータ冗長構成を適用したコンポーネント構成及びデータ配置を決定する
    ことを特徴とするストレージシステムにおけるデータ配置方法。
JP2018196235A 2018-10-17 2018-10-17 ストレージシステム及びストレージシステムにおけるデータ配置方法 Active JP6949801B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018196235A JP6949801B2 (ja) 2018-10-17 2018-10-17 ストレージシステム及びストレージシステムにおけるデータ配置方法
US16/563,522 US10705737B2 (en) 2018-10-17 2019-09-06 Storage system and data arrangement method of storage system
US16/918,632 US11301137B2 (en) 2018-10-17 2020-07-01 Storage system and data arrangement method of storage system
JP2021154123A JP7140898B2 (ja) 2018-10-17 2021-09-22 ストレージシステム及びストレージシステムにおけるデータ配置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018196235A JP6949801B2 (ja) 2018-10-17 2018-10-17 ストレージシステム及びストレージシステムにおけるデータ配置方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021154123A Division JP7140898B2 (ja) 2018-10-17 2021-09-22 ストレージシステム及びストレージシステムにおけるデータ配置方法

Publications (2)

Publication Number Publication Date
JP2020064473A JP2020064473A (ja) 2020-04-23
JP6949801B2 true JP6949801B2 (ja) 2021-10-13

Family

ID=70280538

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018196235A Active JP6949801B2 (ja) 2018-10-17 2018-10-17 ストレージシステム及びストレージシステムにおけるデータ配置方法
JP2021154123A Active JP7140898B2 (ja) 2018-10-17 2021-09-22 ストレージシステム及びストレージシステムにおけるデータ配置方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021154123A Active JP7140898B2 (ja) 2018-10-17 2021-09-22 ストレージシステム及びストレージシステムにおけるデータ配置方法

Country Status (2)

Country Link
US (2) US10705737B2 (ja)
JP (2) JP6949801B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491616B (zh) * 2018-11-14 2022-05-24 三星(中国)半导体有限公司 数据的存储方法和设备
CN115210287B (zh) 2020-03-31 2024-07-02 纳美仕有限公司 环氧胺加成物、固化催化剂、树脂组合物、密封材料、粘结剂、及固化物
JP2022033515A (ja) * 2020-08-17 2022-03-02 株式会社日立製作所 記憶システム及び記憶制御方法
US20220129601A1 (en) * 2020-10-26 2022-04-28 Oracle International Corporation Techniques for generating a configuration for electrically isolating fault domains in a data center
WO2022201221A1 (ja) 2021-03-22 2022-09-29 日本電信電話株式会社 通信システム、通信方法、サーバ、クライアント端末、および、プログラム
JP2024000105A (ja) 2022-06-20 2024-01-05 株式会社日立製作所 計算機システム、及び冗長化要素構成方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826711B2 (en) * 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US7529834B1 (en) * 2000-06-02 2009-05-05 Hewlett-Packard Development Company, L.P. Method and system for cooperatively backing up data on computers in a network
US20030041097A1 (en) * 2001-07-11 2003-02-27 Alexander Tormasov Distributed transactional network storage system
JP4259800B2 (ja) * 2002-01-31 2009-04-30 三菱電機株式会社 データ格納装置、データ管理方法及びプログラム
JP2005326935A (ja) * 2004-05-12 2005-11-24 Hitachi Ltd 仮想化ストレージを備える計算機システムの管理サーバおよび障害回避復旧方法
US7774642B1 (en) * 2005-02-17 2010-08-10 Oracle America, Inc. Fault zones for interconnect fabrics
US7593323B2 (en) * 2005-08-17 2009-09-22 Honeywell International Inc. Apparatus and methods for managing nodes on a fault tolerant network
US7788544B2 (en) * 2006-05-03 2010-08-31 Computer Associates Think, Inc. Autonomous system state tolerance adjustment for autonomous management systems
US7958433B1 (en) * 2006-11-30 2011-06-07 Marvell International Ltd. Methods and systems for storing data in memory using zoning
WO2008136074A1 (ja) * 2007-04-20 2008-11-13 Fujitsu Limited 2重化組み合わせ管理プログラム、2重化組み合わせ管理装置、および2重化組み合わせ管理方法
EP2672387B1 (en) * 2012-06-04 2018-08-01 Amplidata NV A distributed object storage system
US8874494B1 (en) * 2012-09-28 2014-10-28 Emc Corporation Dynamic selection of spare storage element types in array
WO2016051512A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
JP2016130962A (ja) * 2015-01-14 2016-07-21 富士通株式会社 データ退避制御方法、データ退避制御プログラム、及びデータ退避制御装置
JP6499038B2 (ja) * 2015-08-04 2019-04-10 株式会社東芝 ストレージ管理装置、方法、及びストレージシステム
US10474551B2 (en) * 2017-06-30 2019-11-12 Wipro Limited Method and system for recovering data from storage systems
US10339016B2 (en) * 2017-08-10 2019-07-02 Rubrik, Inc. Chunk allocation

Also Published As

Publication number Publication date
JP7140898B2 (ja) 2022-09-21
JP2020064473A (ja) 2020-04-23
JP2022003556A (ja) 2022-01-11
US20200333954A1 (en) 2020-10-22
US11301137B2 (en) 2022-04-12
US10705737B2 (en) 2020-07-07
US20200125258A1 (en) 2020-04-23

Similar Documents

Publication Publication Date Title
JP6949801B2 (ja) ストレージシステム及びストレージシステムにおけるデータ配置方法
JP6560759B2 (ja) ストレージシステム
US8650360B2 (en) Storage system
JP5048760B2 (ja) Raid管理、再割振り、およびリストライピングのためのシステムおよび方法
US7620843B2 (en) Rebuilding a storage system
JP6221564B2 (ja) ストレージ制御装置、制御方法および制御プログラム
JPH09231016A (ja) Raid記憶サブシステムにおけるデ−タのスナップショットコピ−作成方法とその装置
CN113176858B (zh) 数据处理方法、存储系统及存储设备
CN105657066A (zh) 用于存储系统的负载再均衡方法及装置
JP2020101949A (ja) ストレージシステム及びストレージシステム制御方法
JP2006285808A (ja) ストレージシステム
JP2007328468A (ja) ストレージシステム及びストレージシステムのボリューム管理方法
JP2018508073A (ja) データ除去、割り当て、及び再構築
JPWO2018138813A1 (ja) 計算機システム
JP6653370B2 (ja) ストレージシステム
KR20210022121A (ko) 구성 가능한 인프라스트럭처에서 스토리지 디바이스 고장 허용을 유지하기 위한 방법 및 시스템
US8943359B2 (en) Common hot spare for multiple RAID groups
CN113448502B (zh) 分布式存储系统和存储控制方法
JP2020047215A (ja) ストレージシステム及びストレージ制御方法
JP2017174250A (ja) 制御装置、ストレージ装置、制御方法及びプログラム
US11544005B2 (en) Storage system and processing method
JP2013214184A (ja) ミラーリングシステム、ノード、ミラーリング方法、及びプログラム
JP7131324B2 (ja) ストレージアクセス制御装置、ストレージアクセス制御方法、及び、ストレージアクセス制御プログラム
JP6605762B2 (ja) 記憶ドライブの故障により消失したデータを復元する装置
JP6555290B2 (ja) ストレージ装置、ストレージ管理方法及びストレージ管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210329

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210922

R150 Certificate of patent or registration of utility model

Ref document number: 6949801

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150