JP7261756B2 - ストレージシステム、処理方法 - Google Patents

ストレージシステム、処理方法 Download PDF

Info

Publication number
JP7261756B2
JP7261756B2 JP2020021036A JP2020021036A JP7261756B2 JP 7261756 B2 JP7261756 B2 JP 7261756B2 JP 2020021036 A JP2020021036 A JP 2020021036A JP 2020021036 A JP2020021036 A JP 2020021036A JP 7261756 B2 JP7261756 B2 JP 7261756B2
Authority
JP
Japan
Prior art keywords
data
group
node
parity
predetermined range
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
JP2020021036A
Other languages
English (en)
Other versions
JP2021128390A (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 JP2020021036A priority Critical patent/JP7261756B2/ja
Priority to US17/017,944 priority patent/US11544005B2/en
Publication of JP2021128390A publication Critical patent/JP2021128390A/ja
Application granted granted Critical
Publication of JP7261756B2 publication Critical patent/JP7261756B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/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/0683Plurality of storage devices
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

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

Description

本発明は、ストレージシステム、および処理方法に関する。
従来、ストレージシステムにおける複数のストレージ装置により、RAID(Redundant Array of Independent Disks)グループを構成し、RAIDグループに基づいて作成された論理ボリュームを、上位装置(例えば、ホストコンピュータ)に提供することが行われている。たとえば、RAIDに関する技術として、分散RAIDが知られている。分散RAIDとは、データと、データを復元するための冗長データとを含むストライプ列をデータ保護ポリシ(mDnP)で定義されるm+nよりも多くの複数のストレージ装置に分散させて管理する技術である。
近年、SDS(Software Defined Storage)の市場が拡大している。この点、SDSにおいて、一定数のノードでドメインと呼ばれるグループを組み、複数のドメインでストレージシステムを構築し、ドメイン内においてノード間のデータ保護を適用する方式が開示されている(特許文献1参照)。かかる方式によれば、1ノードの障害時において信頼性が低下するノードをドメイン内に限定することができるため、ストレージシステムの信頼性を高めることができる。特許文献1にはパリティグループを形成する手法が開示されている。
米国特許出願公開第2014-0195847号
特許文献1に記載の技術では、信頼性が目標値を下回らないようにストレージシステムを拡張するためには、信頼性の目標値限界に達した後のシステム拡張では、ドメインを構築するための最小構成(例えば、3ノード)の単位でストレージシステムを拡張する必要性があり自由度が低い。
本発明の第1の態様によるストレージシステムは、記憶領域を提供する複数のノードと、データを物理的に記憶するドライブと、を備えたストレージシステムにおいて、記憶領域に格納されるユーザデータと、前記ユーザデータを保護するための冗長データと、を含む複数のデータによりパリティグループを構成し、前記パリティグループ内の複数のデータを、前記複数のノードにわたる一つの所定範囲内の記憶領域に記憶し、各ノードの記憶領域から前記パリティグループに割り当てられた容量を管理しており、前記各ノードの記憶領域が複数に分割されて複数の前記パリティグループに割り当てられ、前記所定範囲の前記パリティグループにかかる記憶領域における記憶容量に基づいて、前記所定範囲におけるノード数にかかわらず、前記所定範囲を分割するための処理を行う、または、複数の所定範囲を併合するための処理を行う。
本発明の第2の態様による処理方法は、記憶領域を提供する複数のノードを備えたストレージシステムが実行する処理方法であって、記憶領域に格納されるユーザデータと、前記ユーザデータを保護するための冗長データと、を含む複数のデータによりパリティグループを構成することと、前記パリティグループ内の複数のデータを、前記複数のノードにわたる一つの所定範囲内の記憶領域に配置することと、各ノードの記憶領域から前記パリティグループに割り当てられた容量を管理することと、前記各ノードの記憶領域を複数に分割して複数の前記パリティグループに割り当てることと、前記所定範囲の前記パリティグループにかかる記憶領域における記憶容量に基づいて、前記所定範囲におけるノード数にかかわらず、前記所定範囲を分割するための処理を行う、または、複数の所定範囲を併合するための処理を行うこととを含む。
本発明によれば、信頼性と適用性の高いストレージシステムを実現することができる。
第1の実施の形態によるストレージシステムの概要図 第1の実施の形態によるストレージシステムに係る物理構成の一例を示す図 第1の実施の形態によるストレージシステムに係る論理構成の一例を示す図 第1の実施の形態によるメモリ内の情報の一例を示す図 第1の実施の形態によるクラスタ構成管理テーブルの一例を示す図 第1の実施の形態によるストレージプール構成管理テーブルの一例を示す図 第1の実施の形態によるパリティグループ管理テーブルの一例を示す図 第1の実施の形態によるグループマッピング管理テーブルの一例を示す図 第1の実施の形態によるグループマッピング管理の概要図 第1の実施の形態によるストライプマッピング管理テーブルの一例を示す図 第1の実施の形態によるマッピング変更の概要図 第1の実施の形態によるパリティ再計算の概要図 第1の実施の形態による構成変更処理に係るフローチャートの一例を示す図 第1の実施の形態によるグループマッピング決定処理に係るフローチャートの一例を示す図 第1の実施の形態によるリード処理に係るフローチャートの一例を示す図 第1の実施の形態によるリードサブ処理に係るフローチャートの一例を示す図 第1の実施の形態によるライト処理に係るフローチャートの一例を示す図 第1の実施の形態によるライトサブ処理に係るフローチャートの一例を示す図 第1の実施の形態によるマッピング変更処理に係るフローチャートの一例を示す図 第2の実施の形態による計算機システムに係る構成の一例を示す図 第2の実施の形態による構成変更処理に係るフローチャートの一例を示す図 第2の実施の形態によるマッピング変更の概要図 第2の実施の形態によるマッピング変更処理に係るフローチャートの一例を示す図 変形例1によるマッピング変更の概要図 変形例2によるグループマッピング決定処理に係るフローチャートの一例を示す図 変形例2によるユーザインタフェースの概要図
以下では、本発明の複数の実施の形態を詳述する。なお以下の説明では、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分、すなわち枝番を除く部分を使用することがある。また、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。たとえば、物理領域を特に区別しないで説明する場合には、「物理領域990」と記載し、個々の領域を区別して説明する場合には、「物理領域990-1」、「物理領域990-2」のように記載することがある。
―第1の実施の形態―
以下、図1~図19を参照して、本発明に係るストレージシステムの第1の実施の形態を説明する。
図1は、本発明に係るストレージシステムにおけるマッピング変更の概要図である。ここでは、図示上部に示すストレージシステム110から図示下部に示すストレージシステム120に構成を変更するケースを例に挙げて説明する。図1では、構成の変更前のマッピング管理情報111および構成の変更後のマッピング管理情報121に示すように、「N6」のノード100がストレージシステム110に追加、すなわちノード増設されている。
マッピング管理情報111は、A1、A2、APの組み合わせでデータとパリティを管理するパリティグループを構成していることを示している。Bx~Dxについても同様である。またマッピング管理情報111は、2D1Pのように3つのデータ領域を使用してパリティグループを構成しており、2D1PのパリティグループをN1~N5に分散配置していることを示している。
このようにデータとパリティを配置し、データ保護する技術を分散RAIDと呼び、分散RAIDを構成することでノード数(あるいはドライブに適用した場合は、ドライブ数)に応じてリビルド時間を短縮することができる。一方で、パリティグループを分散配置するノード数が増えすぎると、ノード(あるいはドライブに適用した場合は、ドライブ)1台に障害が起きた時に冗長度低下の影響を受けるノード(あるいはドライブに適用した場合は、ドライブ)数が多くなり、可用性が低下してしまう。例えば、N1に障害が発生した際に、N2、N4、およびN5のデータの冗長度が低下する。
ストレージシステム120は、N6を追加した際に、データとパリティの配置を特定ノードに限定している。より具体的には、マッピング管理情報121は、データとパリティの配置を管理するマップを2つに分割して、それぞれのマップ内の領域のみでパリティグループを構成することで、ノード障害時の影響範囲を限定する。例えば、ストレージシステム120では、N1に障害が生じた時、冗長度低下の影響を受けるノードはN2とN3だけとなり、N4~N6は影響を受けない。
以下では、構成の変更対象、すなわち増設または減設する記憶資源として、主にノード100を例に挙げて説明するが、データセンタなどのサイト、ドライブなどの記憶デバイスなど他の記憶資源であってもよく、同様に処理できる。以下では本実施の形態を具体的に説明する。
図2は、本実施の形態におけるストレージシステム101に係る物理構成の一例を示す図である。ストレージシステム101には、1以上のサイト201が設けられる。各サイト201は、ネットワーク202を介して通信可能に接続される。ネットワーク202は、例えばWAN(Wide Area Network)であるが、WANに限定するものではない。
サイト201は、データセンタ等であり、1以上のノード100を含んで構成される。ノード100は、一般的なサーバ計算機の構成を備えてよい。ノード100は、例えば、プロセッサ211、メモリ212等を含む1以上のプロセッサパッケージ213、1以上のドライブ214、1以上のポート215を含んで構成される。各構成要素は、内部バス216を介して接続されている。
プロセッサ211は、例えば、CPU(Central Processing Unit)であり、各種の処理を行う。メモリ212は、ノード100の機能を実現する上で必要な制御用の情報やデータの格納に用いられる。また、メモリ212は、例えば、プロセッサ211により実行されるプログラムを格納する。メモリ212は、揮発性のDRAM(Dynamic Random Access Memory)であってもよいし、不揮発のSCM(Storage Class Memory)であってもよいし、その他の記憶デバイスであってもよい。
ドライブ214は、各種のデータ、プログラム等を記憶する。ドライブ214は、SAS(Serial Attached SCSI)またはSATA(Serial Advanced Technology Attachment)接続のHDD(Hard Disk Drive)やSSD(Solid State Drive)、NVMe(Non-Volatile Memory Express)接続のSSDの他、SCM等であってもよく、記憶デバイスの一例である。ポート215は、ネットワーク220に接続され、サイト201内の他のノード100と通信可能に接続されている。ネットワーク220は、例えば、LAN(Local Area Network)であるが、LANに限定するものではない。
ストレージシステム101に係る物理構成は、上述の内容に限定されるものではない。例えば、ネットワーク220,202については、冗長化されていてもよい。また、例えば、ネットワーク220は、管理用のネットワークとストレージ用のネットワークとで分離してもよく、接続規格は、Ethernet(登録商標)、Infiniband、無線でもよく、接続トポロジも図2に示す構成に限定しない。
図3は、ストレージシステム101に係る論理構成の一例を示す図である。ストレージシステム1では、ストレージ仮想化が行われ、複数の物理領域が仮想的に統合され、1つのストレージプールとして利用される。さらに、ストレージシステム1では、シンプロビジョニングにより、各ホストノード300が現在利用している容量だけが割り当てられている。
より具体的には、図3に示すように、ドライブ214は、データ、パリティ等を格納する物理的な領域であるデータ格納領域を有する。データ格納領域のうちの全部または一部の領域であり、連続した領域である物理チャンク301は、パリティグループ302に割り当てられる。
パリティグループ302は、複数のノード100のドライブ214の物理チャンク301から構成される。例えば、データ保護ポリシが4D1Pである場合、異なるノード100のドライブ214から確保した5つの物理チャンク301でパリティグループ302が構成される。
ここで、データ保護ポリシとしては、例えば、EC(Erasure Coding)がある。なお、ECとしては、データローカリティを保持しない第1の方式と、データローカリティを保持する第2の方式(例えば、国際公開第2016/52665号に記載の方式)とがあるが、ストレージシステム101には、何れの方式も適用可能である。なお、本実施の形態では、第2の方式を適用したケースを例に挙げて主に説明する。
付言するならば、例えば、第1の方式の2D1PのECでは、ライト要求のデータを第1のデータと第2のデータとに分け、第1のデータを第1のノード100-0に格納し、第2のデータを第2のノード100-1に格納し、第1のデータおよび第2のデータのパリティを第3のノード100-3に格納することで冗長化が行われる。また、例えば、第2の方式の2D1PのECでは、ライト要求のデータを第1のデータと第2のデータとに分け、第1のデータおよび第2のデータを第1のノード100-0(自ノード100)に格納し、第1のデータのパリティを第2のノード100-1に格納し、第2のデータのパリティを第3のノード100-2に格納することで冗長化が行われる。
パリティグループ302からは、論理チャンク304が切り出される。論理チャンク304は、各ノード100のストレージプール305に容量を割り当てる単位である。1つのパリティグループ302から1つの論理チャンク304が切り出されてもよいし、複数の論理チャンク304が切り出されてよい。
付言するならば、例えば、データ保護ポリシが4D1Pである場合、データの格納領域として利用できるのは、パリティグループ302に割り当てられた物理チャンク301の総量の4/5となり、パリティの格納領域として利用できるのは、パリティグループ302に割り当てられた物理チャンク301の総量の1/5となる。つまり、論理チャンク304として切り出せる最大の容量は、データ保護ポリシに応じて異なる。
切り出された論理チャンク304は、ストレージプール305にアタッチされる。ストレージプール305は、1以上の論理チャンク304を含んで構成される。ストレージプール305からは、アプリケーション311により利用される仮想ボリューム306が切り出される。つまり、ストレージプログラム303は、利用者の要求に応じた容量を、ドライブ214に割り当てず、仮想ボリューム306として割り当てる。
例えば、ストレージプログラム303は、アプリケーション311からライト要求を受信した場合、新規のライトであるときは、仮想ボリューム306のページ307、より詳細にはページ307に紐づく物理チャンク301の物理領域を割り当てる。なお、ページ307には、論理チャンク304のページ308が対応付けられている。更新のライトであるときは、ストレージプログラム303は、割り当てたページ307に紐づく物理チャンク301の物理領域を特定してデータを更新する。なお、ライト要求のデータ(または後述の中間データ)は、データの冗長化に係る他のノード100に転送されてパリティが更新される。
このように、ストレージプログラム303は、ドライブ214を共有のストレージプール305として管理し、仮想ボリューム306に書き込まれたデータ量に応じてドライブ214に容量を割り当てる。これにより、使用されないドライブ214の無駄をなくし、効率的な運用が行わる。以下では、データを更新するにあたり、当該データは、ライト要求を受領したノード100のドライブ214(ローカルドライブ)に格納される構成を例に挙げて主に説明する。すなわち以下では、データローカリティを維持し、リード時のネットワークオーバヘッドを排除する構成を主に説明する。
なお、データにアクセスするアプリケーション311は、ホストノード300に設けられて動作してもよいし、ストレージプログラム303と同一ノード100に設けられて動作してのであってもよいし、別のノード100に設けられて動作してもよい。
図4は、メモリ212内の情報、換言するとドライブ214からメモリ212に読み出される情報の一例を示す図である。なお、制御情報テーブル410、各種のプログラム(ストレージプログラム303等)は、実行中はメモリ212上に展開されるが、停電等に備えてドライブ214等の不揮発な領域に格納されている。
制御情報テーブル410には、クラスタ構成管理テーブル411、ストレージプール構成管理テーブル412、パリティグループ管理テーブル413、グループマッピング管理テーブル414、ストライプマッピング管理テーブル415が含まれる。各テーブルについては、図5~図8、図10を用いて後述する。
ストレージプログラム303は、構成変更処理プログラム421、グループマッピング決定処理プログラム422、リード処理プログラム423、ライト処理プログラム424、グループマッピング変更処理プログラム425を含む。ストレージプログラム303は、例えば、プロセッサ211がドライブ214に格納されたプログラムをメモリ212に読み出して実行すること、すなわちソフトウェア処理により実現されてもよい。またストレージプログラム303の少なくとも一部は、専用の回路等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。さらにストレージプログラム303の少なくとも一部は、ノード100と通信可能な他のコンピュータにより実現されてもよい。
図5は、クラスタ構成管理テーブル411の一例を示す図である。クラスタ構成管理テーブル411は、サイト201、ノード100、およびドライブ214の構成を管理するための情報を格納する。
クラスタ構成管理テーブル411は、サイト構成管理テーブル510、ノード構成管理テーブル520、およびドライブ構成管理テーブル530を含んで構成される。なお、ストレージシステム101はサイト構成管理テーブル510を管理し、サイト201はサイト201内の複数のノード構成管理テーブル520を管理し、ノード100はノード100内の複数のドライブ構成管理テーブル530を管理する。
サイト構成管理テーブル510は、サイト201に係る構成、たとえばサイト201とノード100との関係等を示す情報を格納する。より具体的には、サイト構成管理テーブル510は、サイト番号511と、状態512と、ノードIDリスト513とが対応付けられた情報を格納する。サイト番号511は、サイト201を識別可能な識別情報である。状態512は、サイト201の状態を示す状態情報、たとえばNORMAL、WARNING、FAILURE等である。ノードIDリスト513は、サイト201に設けられるノード100を識別可能な識別情報である。
ノード構成管理テーブル520は、サイト201ごとに設けられ、サイト201に設けられるノード100に係る構成、たとえばノード100とドライブ214との関係等を示す情報を格納する。より具体的には、ノード構成管理テーブル520は、ノードID521と、状態522と、ドライブIDリスト523とが対応付けられた情報を格納する。ノードID521は、ノード100を識別可能な識別情報である。状態522は、ノード100の状態を示す状態情報、たとえばNORMAL、WARNING、FAILURE等である。ドライブIDリスト523は、ノード100に設けられるドライブ214を識別可能な識別情報である。
ドライブ構成管理テーブル530は、ノード100ごとに設けられ、ノード100に設けられるドライブ214に係る構成を示す情報を格納する。より具体的には、ドライブ構成管理テーブル530は、ドライブID531と、状態532と、サイズ533とが対応付けられた情報を格納する。ドライブID531は、ドライブ214を識別可能な識別情報である。状態532は、ドライブ214の状態を示す状態情報、たとえばNORMAL、WARNING、FAILURE等である。サイズ533は、ドライブ214の容量を示す、例えばTB(テラバイト)やGB(ギガバイト)単位の値である。
図6は、ストレージプール構成管理テーブル412の一例を示す図である。ストレージプール構成管理テーブル412は、ストレージプール305が提供するシンプロビジョニング機能のための制御情報を格納する。ストレージプール構成管理テーブル412は、ストレージプール情報テーブル610、仮想ボリューム管理テーブル620、およびページマッピングテーブル630を含んで構成される。
ストレージプール情報テーブル610は、ストレージプール305に係る情報を格納する。より具体的には、ストレージプール情報テーブル610は、ストレージプール番号611と、総容量612と、消費容量613とが対応付けられた情報を格納する。ストレージプール番号611は、ストレージプール305を識別可能な識別情報である。総容量612は、ストレージプール305の総容量を示す、例えばTBやGB単位の値である。消費容量613は、ストレージプール305で消費されている容量を示す、例えばTBやGB単位の値である。
仮想ボリューム管理テーブル620は、仮想ボリューム306に係る情報(仮想ボリューム306と仮想ボリューム306を割り当てたストレージプール305との対応関係を示す情報等)を格納する。より具体的には、仮想ボリューム管理テーブル620は、仮想ボリューム番号621、サイズ622、およびストレージプール番号623が対応付けられた情報を格納する。
仮想ボリューム番号621は、仮想ボリューム306を識別可能な識別情報である。サイズ622は、仮想ボリューム306の容量を示す、例えばTBやGB単位の値である。ストレージプール番号623は、仮想ボリューム306が属するストレージプール305を識別可能な識別情報である。
ページマッピングテーブル630は、仮想ボリューム306に割り当てたページ307に係る情報、すなわちページ307と論理チャンク304との対応関係を示す情報等を格納する。より具体的には、ページマッピングテーブル630は、ページ番号631、仮想ボリューム番号632、LBA(Logical Block Address)633、サイズ634、論理チャンク番号635、およびLBA636が対応付けられた情報を格納する。
ページ番号631は、ページ307を識別可能な識別情報である。仮想ボリューム番号632は、ページ307が割り当てられている仮想ボリューム306を識別可能な識別情報である。LBA633は、仮想ボリューム306におけるページ307の位置を特定可能な情報であり、例えば、仮想ボリューム306の最初のページ307から何番目であるかを示す情報である。なお、ページ307は、ストレージプログラム303が仮想ボリューム306にアクセスする単位である。サイズ634は、ページ307の容量を示す、例えばGBやMB(メガバイト)単位の値である。論理チャンク番号635は、ページ307に対応する論理チャンク304を識別可能な識別情報である。LBA636は、ストレージプール305における論理チャンク304の位置を特定可能な情報であり、例えば、ストレージプール305の最初の論理チャンク304から何番目であるかを示す情報である。
なお、サイズ634は、全てのページ307で同じであってもよいし、ページ307ごとに異なっていてもよい。付言するならば、ストレージプログラム303は、仮想ボリューム306のアドレスからストレージプール305のアドレスへの変換を行う際にページマッピングテーブル630を参照する。また、ストレージプログラム360は、新規ライトを受領する度に、ページ307の割当て、すなわちページマッピングテーブル630へのレコードの追加を行う。
図7は、パリティグループ管理テーブル413の一例を示す図である。パリティグループ管理テーブル413は、物理チャンク301と複数の物理チャンク301を組み合わせて構成したパリティグループ302、すなわち冗長化グループの構成を管理するための制御情報を格納する。パリティグループ管理テーブル413は、論理チャンク管理テーブル710、パリティグループ管理テーブル720、物理チャンク管理テーブル730、およびフリー物理チャンクリスト740を含んで構成される。
論理チャンク管理テーブル710は、パリティグループ302から切り出された論理チャンク304に係る情報(論理チャンク情報)を格納する。より具体的には、論理チャンク管理テーブル710は、論理チャンクID711と、サイズ712と、パリティグループID713およびマッピング変更進捗情報714とが対応付けられた情報を格納する。論理チャンクID711は、パリティグループ310から切り出された論理チャンク304を識別可能な識別情報である。サイズ712は、論理チャンク304の容量を示す、例えばTBやGB単位の値である。
パリティグループID713は、論理チャンク304が属するパリティグループ302を識別可能な識別情報である。構成変更中は、構成変更前後のパリティグループIDを格納する。マッピング変更進捗情報714は、論理チャンク304のデータを現行とは別のパリティグループに移動している場合に、移動の進捗情報を格納する。例えば、0%からはじまり、完了時は100%の値を格納する。進捗情報は、例えば論理チャンク304の先頭LBAから順に実行する場合、(現在を移動中のデータを格納する先頭LBA÷論理チャンク304の最大LBA)×100として計算する。
パリティグループ管理テーブル720は、パリティグループ302に係る情報(パリティグループ情報)を格納する。より具体的には、パリティグループ管理テーブル720は、パリティグループID721と、データ保護設定722と、物理チャンクID723とが対応付けられた情報を格納する。
パリティグループID721は、パリティグループ302を識別可能な識別情報である。データ保護設定722は、パリティグループ302のデータ保護設定である。物理チャンクID723は、パリティグループ302に割り当てられた物理チャンク301を識別可能な識別情報である。
物理チャンク管理テーブル730は、物理チャンク301に係る情報、たとえば開始オフセットからサイズ分だけドライブ214の物理領域を切り出して物理チャンク301として管理するための情報を格納する。より具体的には、物理チャンク管理テーブル730は、物理チャンクID731と、開始オフセット732と、サイズ733と、サイトID/ノードID/ドライブID734とが対応付けられた情報を格納する。
物理チャンクID731は、物理チャンク301を識別可能な識別情報である。開始オフセット732は、ドライブ214から物理チャンク301を切り出すときの開始位置を示す情報である。サイズ733は、物理チャンク301の容量を示す情報、たとえばブロックの数である。ここでブロックとは、ストレージデバイスへのアクセス単位を意味しており、典型的には1ブロックのサイズは512Byteである。ただし、ブロックのサイズは512Byteに限定せず、4KBや8KBでもよい。サイトID/ノードID/ドライブID734は、物理チャンク301が切り出されている記憶資源を識別可能な識別情報、すなわち物理チャンク301がどのサイト201のどのノード100のどのドライブ214から切り出されているかを示す情報である。
フリー物理チャンクリスト740は、ノード100内のドライブ214の物理チャンク301のうち、パリティグループ302に割り当てられていない物理チャンク301を識別可能な識別情報、例えば物理チャンクIDのリストである。フリー物理チャンクリスト740では、物理チャンク301の消費容量が少ないドライブ214の先頭の物理チャンク301から並べられている。換言するならば、ノード100内の物理チャンク301の選定は、ドライブ214あたりの消費容量が少ないものから行われる。
図8は、グループマッピング管理テーブル414の一例を示す図である。グループマッピング管理テーブル414は、パリティグループ302を組むためのノードの組み合わせを管理するための制御情報を格納する。グループマッピング管理テーブル414は、マッピング管理テーブル810、マッピング分割管理テーブル820、および対応管理テーブル830を含んで構成される。
マッピング管理テーブル810は、パリティグループ302のマッピングに係る情報、たとえばあるカラム数で構成された分散RAIDについてパリティグループを組むためのカラムIDの組み合わせを決めるための情報を格納する。マッピング管理テーブル810は、2D1P、すなわち3つのカラムでパリティグループを組む場合の一例を示している。より具体的には、マッピング管理テーブル810は、グループマップID811と、カラム数812と、ロケーションID813およびグルーピング情報814とが対応付けられた情報を格納する。
グループマップID811は、パリティグループ302の組み合わせを決めたマップを識別可能な識別情報である。カラムの数ごとに最低1つずつ情報を格納する。カラム数は、グループマップを構成する列、すなわちカラムの数を示す情報である。ロケーションID813は、対応付いたグループマップ内におけるカラムIDの組み合わせを決めた情報であるロケーションを識別可能な識別情報である。グルーピング情報814は、カラムIDの組み合わせを示す情報である。
マッピング分割管理テーブル820は、グループマップの分割に係る情報、すなわちクラスタを構成するノード数とグループマップの分割数を決めるための情報を格納する。より具体的には、マッピング分割管理テーブル820は、ノード数821と、マップ分割数822と、マップ分割情報823とが対応付けられた情報を格納する。
ノード数821は、クラスタを構成するノードの数を示す情報である。マップ分割数822は、クラスタを構成するノードに適用するグループマップの数を示す情報である。マップ分割情報823は、クラスタを構成するノードに適用するグループマップのカラム数の組み合わせを示す情報である。例えば、16ノードで構成されたクラスタに対して、マップ分割情報823が(5,5,6)という情報を格納する時、カラム数が5で構成されたグループマップが2つと、カラム数が6で構成されたグループマップが1つとを使用してクラスタを構成するノードに対して、パリティグループを組む組み合わせを決定する。
対応管理テーブル830は、ノードとグループマップ情報の対応情報に係る情報を格納する。より具体的には、対応管理テーブル830は、ノードID831と、グループマップID832と、インデクスID833と、カラムID834とが対応付けられた情報を格納する。ノードID831は、ノード100を識別可能な識別情報である。グループマップID832は、マッピング管理テーブル810におけるグループマップID811と同一である。インデクスID833は、同じグループマップIDをクラスタに適用した時に、適用したグループマップIDを識別可能な識別番号である。カラムID834は、マッピング管理テーブル810が格納するグルーピング情報814が示すカラムIDとノードID831とを対応付ける情報である。
図9は、グループマッピング管理においてマッピング変更方法を説明する概念図である。より具体的には、7ノードから8ノードにクラスタを拡張した時、グループマッピングを分割し、マッピングを管理する方法について説明する。図9では理解を容易にするために視認性を重視して記載しているが、図9に示す情報はこれまでに説明したテーブルに格納される情報である。
ノード‐グループ対応情報901は、7ノードで構成されたクラスタにおける情報を示す。ノード‐グループ対応情報901は、グループマップIDが4、インデクスIDが0の情報を対応付けている。またノード‐グループ対応情報901は、ノードIDがN1、N2、・・・、N7のノードとロケーションカラム対応表902が示すカラムIDがC0、C1、・・・、C6のカラムを対応付けている。すなわちノード‐グループ対応情報901は、対応管理テーブル830に格納される情報を図10とは異なる表現で示したものである。
ロケーションカラム対応表902は、カラム数が7の構成において3つのカラムでパリティグループを構成する時のカラムIDの組み合わせ情報を示している。ロケーションIDは、各組み合わせの情報を示しており、例えばロケーションIDが0の組み合わせでは、カラムIDがC0、C1、C2の組み合わせでパリティグループを構成する。ロケーションIDが0の組み合わせをノードIDに置き換えると、ノードIDがN1、N2、N3の組み合わせでパリティグループを組むことになる。ロケーションIDが1~6についても同じようにパリティグループの組み合わせを示している。
図9のロケーションカラム対応表902は、マッピング管理テーブル810におけるカラム数812が「7」の場合における、ロケーションID813とカラムIDとの関係を視覚的に示したものである。
ノード‐グループ対応情報903は、8ノードで構成されたクラスタにおける情報を示す。ノード‐グループ対応情報903は、ノードIDがN1~N4のノードに対して、グループマップIDが1、インデクスIDが0の情報を対応付けている。さらにノード‐グループ対応情報903は、ノードIDがN1、N2、N3、N4のノードとロケーションカラム対応表902が示すカラムIDがC0、C1、C2、C3のカラムを対応付けている。
またノード‐グループ対応情報903は、ノードIDがN5~N8のノードに対して、グループマップIDが1、インデクスIDが1の情報を対応付けている。さらにノード‐グループ対応情報903は、ノードIDがN5、N6、N7、N8のノードとロケーションカラム対応表902が示すカラムIDがC0、C1、C2、C3のカラムを対応付けている。
ロケーションカラム対応表904は、カラム数が4の構成において3つのカラムでパリティグループを構成する時のカラムIDの組み合わせ情報を示している。ロケーションIDは、各組み合わせの情報を示しており、例えばロケーションIDが0の組み合わせでは、カラムIDがC0、C1、C2の組み合わせでパリティグループを構成する。ロケーションIDが0の組み合わせをノードIDに置き換えると、インデクス0に対応する組みでは、ノードIDがN1、N2、N3の組み合わせでパリティグループを組むことになり、インデクス1に対応する組みでは、ノードIDがN5、N6、N7の組み合わせでパリティグループを組むことになる。ロケーションIDが1~3についても同じようにパリティグループの組み合わせを示している。
図9のロケーションカラム対応表904は、マッピング管理テーブル810におけるカラム数812が「4」の場合における、ロケーションID813とカラムIDとの関係を視覚的に示したものである。
図10は、ストライプマッピング管理テーブル415の一例を示す図である。ストライプマッピング管理テーブル415は、パリティグループ302内のデータとパリティとの配置を管理するための情報を格納する。より具体的には、ストライプマッピング管理テーブル415には、列(Column)と、行(Row)とにより識別される各セグメント(要素)に、パリティグループ302のデータとパリティとの何れが格納されるかを示す情報が格納される。
例えば、「Column0」と「Row0」とにより識別されるセグメント1001「A1」には、パリティグループ302が「GroupA」のデータが格納されることが示されている。「Column1」と「Row0」とにより識別されるセグメント1002「A2」には、パリティグループ302が「GroupA」のデータが格納されることが示されている。「Column3」と「Row0」とにより識別されるセグメント1003「AP」には、パリティグループ302が「GroupA」のパリティが格納されることが示されている。なお、パリティグループ302「GroupA」を示すセグメント1001「A1」と、セグメント1002「A2」と、セグメント1003「AP」との組合せを「ストライプ」と適宜称する。
ここで、構成単位1010に示すように、マッピング変更の処理の単位を「フレーム」と称する。構成単位1020に示すように、一のオフセットが一のパリティグループ302で構成される場合、当該一のオフセットを示す単位を「チャンク」と称する。構成単位1030に示すように、一のオフセットが一のパリティグループ302で構成される場合、ストライプマッピング管理テーブル415で管理される単位を「サイクル」と称する。
また、ストライプマッピング管理テーブル415は、データ保護ポリシが「2D1P」である場合の例を示し、データ保護ポリシが変わると、ストライプマッピング管理テーブル415の内容が変更される。
また、あるパリティグループ302における物理チャンク301あたりのデータとパリティとの格納比率は、データ保護ポリシがmDnPのとき、データ:パリティ=m:nとなるように、ストライプマッピング管理テーブル415が設定されるのが好適である。パリティは、頻繁に更新されるので、あるノード100にパリティが偏って格納されると、当該ノード100に負荷が偏ってしまう。しかしながら、上述したように格納比率を決定することで、各ノード100における負荷を均一化することができるようになる。
ここで、ストライプマッピング管理テーブル415では、あるデータ領域の物理LBAに対して、パリティ領域の物理LBA(冗長化先)を特定するために使用される。冗長化先を特定する方法としては、例えば、次のような方法が挙げられる。第1ステップとして、マッピング管理テーブル810のリストの先頭からカラムID=0を採番する。第2ステップとして、アクセス先のグループIDとノードIDとから対応するカラムIDを取得する。第3ステップとして、アクセス先のLBAからRowを算出する。この算出にはたとえば次の数式1を用いることができる。
Row ID = LBA mod Rowmax ・・・数式1
なおRowmaxは、図12に示したストライプマッピング管理テーブル415の例では「3」である。第4ステップとして、データ側のRowおよびColumnが特定できたら、対応するxP(パリティ側)のRowおよびColumnを取得する。第5ステップとして、パリティ側のノードIDと物理LBAを算出する。この算出にはたとえば次の数式2を用いることができる。
LBAp = LBAd + Ssize × Row ID ・・・数式2
なお数式2におけるSsizeは、セグメントのサイズである。また、データの修復処理におけるパリティ位置からデータ位置を特定する方法は、上記の逆手順となる。
図11は、マッピング変更の概要図である。図11において、符号1110および1120で示すロケーションノード対応表は、ロケーションIDとノードの組合せと、パリティグループとの対応付けを示す情報であり、「マッピング情報」とも呼べる。ロケーションノード対応表は、マッピング管理テーブル810および対応管理テーブル830を組み合わせることにより作成可能な、ロケーションIDとノードIDの組合せと、パリティグループの関係を視覚的にわかりやすく表現した表である。ロケーションノード対応表は説明の便宜のために記載しているにすぎず、ロケーションノード対応表そのものがメモリ212に格納されている必要はない。図11では、ロケーションノード対応表1110およびロケーションノード対応表1120に示すように、「N3」のノード100(ノード100-3)が増設されるケースを例に挙げて説明する。
ロケーションノード対応表1120に示すように、ノードの追加により新たなパリティグループ302として「G3」が追加されている。本ストレージシステム101では、ノード100内のオフセットは、上位オフセットから使用されていくので、未使用の最下位オフセットを使用してマッピング変更を行う。未使用のオフセットのマッピングを切り換えた後、上位オフセットのフレーム内の同位置の物理チャンク301の領域からデータをコピーする。コピーした契機でパリティを計算して構築する。このデータの移動は、ノード100内のデータの移動となるので、データローカリティは消失しない。
例えば、「G0」のパリティグループ302を構成する移動元チャンクのデータ1131を移動先チャンクにコピーする際、データ1131は、「G0」のパリティグループ302を構成する他のノード100(ノード100-1、ノード100-2)に転送される。データ1131を受け取ったノード100-1は、転送されたデータ1131と旧パリティ1132とを用いて新パリティ1133を計算して格納する。また、データ1131を受け取ったノード100-2は、転送されたデータ1131と旧パリティ1134とを用いて新パリティ1135を計算して格納する。なお、上述したデータの移動では、ストレージプール305は、データの移動の前後でデータが移動したことを意識しない。
図12は、グループマッピング変更処理におけるパリティ再計算の概念図である。ノード数が3のクラスタに「N3」を追加(ノード増設)し、ノード数が4のクラスタに拡張したケースについて説明する。より具体的には、構成変更前のロケーションノード対応表1210から構成変更後のロケーションノード対応表1220にパリティグループの配置を変換する。
パリティグループの配置変換方法について説明する。構成変更前のロケーションノード対応表1210に基づいてパリティグループが配置されたフレームを移行元のフレーム1010-1とする。また、構成変更後のロケーションノード対応表1220に基づいてパリティグループが配置されたフレームを移行元のフレーム1010-2とする。移行先のフレームにおけるパリティグループから移行元のフレームにおけるパリティグループへデータをコピーすることでパリティグループの配置を変換する。
このとき、同じノード内にてデータをコピーして、パリティグループの配置を変換することでデータのローカリティを維持する。この際、パリティの再計算だけを行えればよいため、移行先のパリティグループと移行元のパリティグループで物理チャンクのデータ部分は共有させることで、移行先のパリティグループへのライト動作をスキップする。これにより、データ移行時のドライブ負荷を低減することができる。より具体的には、ドライブ214-1から切り出された物理チャンク301を使い移行元のパリティグループの論理チャンク304-1を定義する。また同じく、ドライブ214-1から切り出された物理チャンク301を使い移行先のパリティグループの論理チャンク304-1を定義する。
移行元のパリティグループの物理チャンクと移行先のパリティグループの物理チャンクは同じデータを持つため、このようにしてデータのコピーをスキップすることができる。
データのコピー時は、パリティ再計算のために他ノードに301-1から読み出したデータを転送して、移行先のパリティグループの組み合わせでパリティを再計算して格納する。データのコピー時の具体例を説明すると、例えば、ノード100-2にパリティを格納する場合、ノード100-2に301-1から読み出したデータを転送して、304-4のG0と、304-5のG0と、304-6のG0との組み合わせでパリティを再計算して格納する。
図13は、構成変更処理に係るフローチャートの一例を示す図である。構成変更処理では、構成変更指示に基づいて、各ノード100にマッピング変更要求がフレーム単位に発行される。構成変更処理は、ストレージプログラム303内で実行される。実行の契機としては、周期的に実行されてもよいし、ユーザからの操作受領契機で実行されてもよい。また、冗長度(p)以下のノード障害やドライブ障害が発生した場合は、変更処理を継続(ロールフォワード)し、その後に障害部位をリプレースすることで正常状態に復帰する。なお、冗長度異常の障害発生時は変更処理が中止される。障害部位については、コレクションアクセスによりアクセス継続し、マッピング変更処理が継続される。
ステップS1301では、構成変更処理プログラム421は、ドライブ214を増設または減設する旨の指示(ドライブ増減設指示)を受信したか否かを判定する。構成変更処理プログラム421は、受信したと判定した場合はステップS1302に処理を移し、受信していないと判定した場合はステップS1303に処理を移す。
ステップS1302では、構成変更処理プログラム421は、パリティグループ管理テーブル720の物理チャンクIDの割当を変更する。構成変更処理プログラム421は、ドライブ214の増減設の場合は、ノード100内のパリティグループ302に割り当てる物理チャンク301を変更し、ノード100内のデータおよびパリティをドライブ214間で移動(データ移動)することで構成を変更する。この際、例えば、構成変更処理プログラム421は、各ドライブ214の容量が均一化されるように割当てを変更してデータ移動してもよいし、各ドライブ214のIO負荷が均一化されるように割当てを変更してデータ移動してもよい。なお、構成変更処理プログラム421は、ドライブ214の増設の場合、ノード内の物理チャンク管理テーブル730の割当てを変更することなく、フリー物理チャンクリスト740に追加するようにしてもよい。
ステップS1303では、構成変更処理プログラム421は、ノード100を増設または減設する旨の指示(ノード増減設指示)を受信したか否かを判定する。構成変更処理プログラム421は、受信したと判定した場合はステップS1304に処理を移し、受信していないと判定した場合はステップS1305に処理を移す。
ステップS1304では、構成変更処理プログラム421は、グループマッピング決定処理を実行し、データとパリティの配置情報を再計算し、ステップS1306に処理を移す。なお、グループマッピング決定処理については、図14を用いて後述する。
ステップS1305では、構成変更処理プログラム421は、サイト201を増設または減設する旨の指示(サイト増減設指示)を受信したか否かを判定する。構成変更処理プログラム421は、受信したと判定した場合はステップS1304に処理を移し、受信していないと判定した場合は構成変更処理を終了する。
ステップS1306では、構成変更処理プログラム421は、マッピング変更の対象のフレームとして先頭のフレームを設定する。ステップS1307では、構成変更処理プログラム421は、フレーム内の論理チャンク304は、ストレージプール305に割当て済みであるか否かを判定する。構成変更処理プログラム421は、割当て済みであると判定した場合はステップS1308に処理を移し、割当て済みでないと判定した場合はステップS1310に処理を移す。このように、ストレージプール305に割り当てた領域のみを対象とすることで、構成変更時のノード100間の転送コストを削減することができる。
ステップS1308では、構成変更処理プログラム421は、グループマッピング変更処理を行う。グループマッピング変更処理では、マッピング変更要求が各ノード100に送信される。なお、グループマッピング変更処理については、図19を用いて後述する。続くステップS1309では、構成変更処理プログラム421は、新規のマッピング管理テーブル810をパリティグループ管理テーブル413に反映する。
ステップS1310では、構成変更処理プログラム421は、全フレームに対して処理を完了したか否かを判定する。構成変更処理プログラム421は、完了したと判定した場合は構成変更処理を終了し、完了していないと判定した場合はステップS1311に処理を移す。ステップS1311では、構成変更処理プログラム421は、マッピング変更の対象とするフレームを次のフレームに進め、ステップS1307に処理を移す。
図14は、図13におけるステップS1304の詳細、すなわちグループマッピング決定処理に係るフローチャートの一例を示す図である。グループマッピング決定処理では、構成の変更後のノード数とマッピング分割管理テーブル820の情報から、マッピング管理テーブル810を参照し、適用するグループマッピング(グループマップID)が決定される。以下、詳細について説明する。
ステップS1401では、グループマッピング決定処理プログラム422は、マッピング分割管理テーブル820を参照してマッピング分割情報を取得する。ステップS1402では、グループマッピング決定処理プログラム422は、マッピングの分割が必要か否かを判定する。グループマッピング決定処理プログラム422はたとえば次の方法を判定に用いることができる。第1に、マップ分割数822が前後で異なるノード数、例えばマッピング分割管理テーブル820におけるノード数が15または16を閾値としてカラム増設、または減設後のカラム数が閾値を超えるか、または下回るか否かを判定してもよい。
第2に、構成変更の前後のノード数で分割数が異なるか否かを判定してもよい。第3に、信頼性を維持するためのノードあたりの容量を閾値としてシステムに登録しておき、クラスタ構成管理テーブル411を参照してグループあたりの容量が閾値を超えるか、または下回るか否かを判定してもよい。さらに上述した第1~第3の方法を組み合わせてもよい。たとえば第2と第3を組み合わせ、ノード数とグループあたりの容量の組合せで判断してもよい。グループマッピング決定処理プログラム422は、マッピングの分割数の変更が必要と判定した場合はステップS1406に処理を移し、分割数の変更が不要と判定した場合はステップS1403に処理を移す。
ステップS1403では、グループマッピング決定処理プログラム422は、受信した構成変更操作の要求内容が増設要求であるか否かを判定する。グループマッピング決定処理プログラム422は、増設要求である場合はステップS1404に処理を移し、増設要求でない場合、減設要求であったと判定し、ステップS1405に処理を移す。
ステップS1404では、グループマッピング決定処理プログラム422は、増設対象となるグループに対して、現在のカラム数と増設ノード数の和であるカラム数と一致するカラム数のグループマップIDを構成変更後のマップとして設定し、グループマッピング決定処理を終了する。
ステップS1405では、グループマッピング決定処理プログラム422は、減設対象となるグループに対して、現在のカラム数-減設ノード数分のカラム数と一致するカラム数のグループマップIDを構成変更後のマップとして設定し、グループマッピング決定処理を終了する。
ステップS1406では、グループマッピング決定処理プログラム422は、マッピング分割管理テーブルのマップ分割情報を参照して分割後のカラム数のリストを取得する。以降、このカラムのリスト内の要素をグループと呼称して説明する。ステップS1407では、グループマッピング決定処理プログラム422は、制御用に使用する一時インデクスIDを0で初期化する。
ステップS1408では、グループマッピング決定処理プログラム422は、次に更新対象とするグループをリストから取得する。ステップS1409では、グループマッピング決定処理プログラム422は、グループに割り当てられたカラム数に対応するグループマップIDを対応管理テーブル830に設定する。
ステップS1410では、グループマッピング決定処理プログラム422は、ノードIDとカラムIDの対応を対応管理テーブル830に設定する。ステップS1411では、グループマッピング決定処理プログラム422は、対応管理テーブル830のインデクスIDを現在の一時インデクスIDの値で設定する。ステップS1412では、グループマッピング決定処理プログラム422は、一時インデクスIDをインクリメント、すなわち現在値に1を加算する。
ステップS1413では、グループマッピング決定処理プログラム422は、ステップS1406で取得した全てのグループに対して、情報の設定を完了したか否かを判定する。グループマッピング決定処理プログラム422は、全てのグループに対して情報の設定を完了していないと判断する場合はステップS1408に移り、次のグループに対して情報を設定する。グループマッピング決定処理プログラム422は、全てのグループに対して情報の設定を完了したと判断する場合は、グループマッピング決定処理を終了する。
図15は、リード処理に係るフローチャートの一例を示す図である。リード処理では、アプリケーション311からデータの読み取り要求、すなわちリード要求を受けて、自ノード100のドライブ214からデータが読み出される。アクセス先の領域(ドライブ214)が障害状態である場合、冗長データからリード対象のデータが修復されて応答される。なおアプリケーション311は、リード要求とともに読み取り対象のデータが存在する仮想ボリュームのアドレスを指定する。以下、詳細について説明する。
ステップS1501では、リード処理プログラム423は、リード要求のデータについて、ストレージプール305にはページ307が未割当てであるか否かを判定する。リード処理プログラム423は、未割当てであると判定した場合はステップS1502に処理を移し、未割当てでないと判定した場合はステップS1503に処理を移す。ステップS1502では、リード処理プログラム423は、データが存在しないことを示す0データをアプリケーション311に返却し、リード処理を終了する。
ステップS1503では、リード処理プログラム423は、割当先のアドレスを取得する。ステップS1504では、リード処理プログラム423は、排他取得を行う。排他取得では、アクセス先のLBA(Logical Block Address)に対して、ミューテクス等の排他アルゴリズムを用いて、複数の処理が同時に同じ領域へアクセスしないように制御する。以降の排他処理についても同様の処理を行う。
ステップS1505では、リード処理プログラム423は、パリティグループ管理テーブル413の論理チャンク管理テーブル710を参照し、現在のパリティグループIDをリード対象に設定する。構成変更処理が動作しており、データ移行中である場合、リード処理プログラム423は、データ移行元のパリティグループIDをリード対象に設定する。
ステップS1506では、リード処理プログラム423は、ドライブからデータリードするためにリードサブ処理を実行する。リードサブ処理の詳細は、次の図16を参照して説明する。またリード処理プログラム423は、リードサブ処理で返却されたデータをアプリケーション311に応答する。ステップS1507では、リード処理プログラム423は、排他解放を行い、リード処理を終了する。
図16は、リードサブ処理、すなわち図15のステップS1506に係るフローチャートの一例を示す図である。本実施例では、リード処理プログラム423が内部処理としてリードサブ処理を提供するため、処理主体をリード処理プログラム423として説明する。なおステップS1514~ステップS1517は厳密には処理の主体が異なるが、説明の便宜のために本図に含めている。以下、詳細について説明する。
ステップS1511では、リード処理プログラム423は、アクセス先のドライブ214が障害状態であるか否かを判定する。リード処理プログラム423は、障害状態であると判定した場合、ステップS1512に処理を移し、障害状態でないと判定した場合、ステップS1520に処理を移す。
ステップS1512では、リード処理プログラム423は、マッピング管理テーブル810から、リード要求のデータとパリティグループを組むノード100(グループノード)を決定する。図16の説明においてステップS1512において決定したグループノードを「対象グループノード」と呼ぶ。ステップS1513では、リード処理プログラム423は、ステップS15012において決定したグループノード100、すなわち対象グループノードにデータの修復に必要なデータのリードの要求を送信する。
ステップS1514では、対象グループノードのリード処理プログラム423は、排他取得を行う。ステップS1515では、対象グループノードのリード処理プログラム423は、修復に必要なデータまたはパリティをドライブからリードする。ステップS1516では、対象グループノードのリード処理プログラム423は、ステップS1515でリードしたデータまたはパリティを要求送信元のノードに送信する。
ステップS1517では、対象グループノードのリード処理プログラム423は、排他解放を行い、処理を終了する。すなわちリード処理プログラム423は、アプリケーション311からリード要求を受けると図15に示す処理を開始し、他のリード処理プログラム423からリード要求を受けるとステップS1514~S1517の処理を行う。
ステップS1518では、リード処理プログラム423は、ステップ1513で対象グループノードのリード処理プログラム423が送信したリード要求の応答を受信する。ステップS1519では、リード処理プログラム423は、ステップ1518で受信したデータおよびパリティからアプリケーション311がリード対象とするデータを修復し、リード処理に処理結果を返却する。ステップS1520では、リード処理プログラム423は、自ノード100のドライブ214(ローカルドライブ)からデータを読み出し、リード処理に処理結果を返却する。
図17は、ライト処理に係るフローチャートの一例を示す図である。ライト処理では、アプリケーション311からの書き込み要求、すなわちライト要求を受けて、自ノード100のドライブ214にデータが書き込まれ、さらに他ノード100のドライブ214に冗長データ、すなわちパリティが書き込まれる。なおアプリケーション311は、ライト要求とともに書き込み対象領域である仮想ボリュームのアドレスを指定する。以下、詳細について説明する。
ステップS1601では、ライト処理プログラム424は、ライト要求のデータについて、ストレージプール305にはページ307が未割当てであるか否かを判定する。ライト処理プログラム424は、未割当てであると判定した場合はステップS1602に処理を移し、未割当てでないと判定した場合はステップS1603に処理を移す。ステップS1602では、ライト処理プログラム424は、自ノード100のドライブ214の物理チャンク301が関連付けられている仮想ボリューム306、すなわち自系ボリュームにページ307を割り当てる。
ステップS1603では、ライト処理プログラム424は、割当先のアドレスを取得する。ステップS1604では、ライト処理プログラム424は、排他取得を行う。ステップS1605では、ライト処理プログラム424は、書込み前のデータ(以下では「旧データ」と呼ぶ)を読込む。より具体的には、旧データについて図16に示すリードサブ処理を実行する。
ステップS1606では、ライト処理プログラム424は、中間データを生成する。中間データは、データを部分的に更新するときに作成する一時的なデータであり、新旧の差分を示すデータである。例えば、旧データのストライプが「A1-A2-AP」である場合、中間データは、次の数式3~数式5のように求められる。ただし数式3~数式5において、AP_Oは旧パリティ、AP_Nは新パリティ、A1_OはA1の旧データ、A1_NはA1の新データ、A2_OはA2の旧データ、Mは中間データを示す。
AP_O=A1_O XOR A2_O ・・・数式3
M = A1_N XOR A1_O ・・・数式4
AP_N = AP_O XOR M ・・・数式5
ステップS1607では、ライト処理プログラム424は、パリティグループ管理テーブル413の論理チャンク管理テーブル710を参照し、現在のパリティグループIDをライト対象に設定する。構成変更処理が動作しており、データ移行中である場合、ライト処理プログラム424は、データ移行元のパリティグループIDをライト対象に設定する。ステップS1608では、ライト処理プログラム424は、ドライブへデータを書き込むためにライトサブ処理を実行する。
ステップS1609では、ライト処理プログラム424は、グループマッピングが変更中か否かを判定する。より具体的には、ライト処理プログラム424は、パリティグループ管理テーブル413の論理チャンク管理テーブル710を参照し、パリティグループIDに移行元と移行先のIDが記録されている場合は、グループマッピングが変更中であると判定する。ライト処理プログラム424は、グループマッピングが変更中であると判定した場合は、S1610へ処理を移す。ライト処理プログラム424は、グループマッピングが変更中でないと判定した場合は、ステップS1612へ処理を移す。
ステップS1610では、ライト処理プログラム424は、パリティグループ管理テーブル413の論理チャンク管理テーブル710を参照し、移行先のパリティグループIDをライト対象に設定する。ステップS1611では、ライト処理プログラム424は、ドライブへデータを書き込むためにライトサブ処理を実行する。ライトサブ処理は、次の図18を参照して詳しく説明する。ステップS1612では、ライト処理プログラム424は、排他解放を行い、アプリケーション311へ応答を返し、ライト処理を終了する。
図18は、ライトサブ処理に係るフローチャートの一例を示す図である。本実施例では、ライト処理プログラム424が内部処理としてライトサブ処理を提供するため、処理主体をライト処理プログラム424として説明する。なおステップS1617~ステップS1622は厳密には処理の主体が異なるが、説明の便宜のために本図に含めている。以下、詳細について説明する。
ステップS1613では、ライト処理プログラム424は、マッピング管理テーブル810を参照して冗長化先のノード100を決定する。ステップS1614では、ライト処理プログラム424は、ステップS1613において決定した冗長化先のノード100(以下では「対象ノード」と呼ぶ)に中間データを送信する。なお、ライト処理プログラム424は、冗長度に応じて、たとえば冗長度が2以上である場合は2以上のノード100に中間データを転送する。
ステップS1615では、ライト処理プログラム424は、現在の処理は、データ移行先のパリティグループを対象としたライト処理であるか否かを判定する。データ移行先へのライトか否かは、パリティグループ管理テーブル413の論理チャンク管理テーブル710を参照し、移行先に設定されたパリティグループIDと現在ライト先に設定しているパリティグループIDが一致するか否かで判定する。ライト処理プログラム424は、データ移行先のパリティグループへのライトであると判定した場合は、ステップS1623へ処理を移す。ライト処理プログラム424は、データ移行先のパリティグループへのライトでないと判定した場合は、ステップS1616へ処理を移す。
このステップS1615の処理により、グループマッピング変更中においてデータ移行先のパリティグループに対しては、ローカルドライブへのライト回数を減らすことができる。ステップS1616では、ライト処理プログラム424は、ローカルドライブにライト要求のデータ(新データ)を書き込む。
ステップS1617では、対象ノードのライト処理プログラム424は、中間データを受信する。ステップS1618では、対象ノードのライト処理プログラム424は、排他取得を行う。ステップS1619では、対象ノードのライト処理プログラム424は、自ノード100のドライブ、すなわちローカルドライブから旧パリティを読み出す。ステップS1620では、対象ノードのライト処理プログラム424は、中間データと旧パリティとから新パリティを計算する。ステップS1621では、対象ノードのライト処理プログラム424は、ローカルドライブに新パリティを書き込む。ステップS1622では、対象ノードのライト処理プログラム424は、排他解放を行い中間データを受信した際の処理を終了する。
ステップS1623では、対象ノードのライト処理プログラム424は、冗長化先ノードからのライト応答を受信待機し、応答を受信したらライト処理を終了する。
図19は、グループマッピング変更処理に係るフローチャートの一例を示す図である。グループマッピング変更処理は2つのプログラムで構成されており、ステップS1701からはじまるフローチャートは、フレーム内のパリティグループ全体に対してのデータ移行を制御し、ステップS1705からはじまるフローチャートは、一つのパリティグループに対してのデータ移行を制御する。以下、詳細について説明する。
ステップS1701では、グループマッピング変更処理プログラム425は、現行のフレームを移動元のフレームに設定し、次オフセットのフレームを移動先のフレームに設定する。ステップS1702では、グループマッピング変更処理プログラム425は、移動元のフレームから移動元のパリティグループの物理チャンク301(以下、「移行元チャンク」と呼ぶ)を移行元に設定する。
ステップS1703では、グループマッピング変更処理プログラム425は、移動先のフレームにおいて移動先のパリティグループの物理チャンク301(以下、「移動先チャンク」と呼ぶ)を移行先に設定する。ステップS1704では、グループマッピング変更処理プログラム425は、移動元チャンクから移動先チャンクへデータを移動する要求(移動要求)を移動元チャンクを有するノード100に送信する。
ステップS1705では、移動要求を受信したノード100(以下、「受信ノード」と呼ぶ)のグループマッピング変更処理プログラム425は、マッピング変更進捗情報714を初期化する。ステップS1706では、受信ノードのグループマッピング変更処理プログラム425は、移動元チャンクの先頭アドレスを取得する。ステップS1707では、受信ノードのグループマッピング変更処理プログラム425は、排他取得を行う。
ステップS1708では、受信ノードのグループマッピング変更処理プログラム425は、データ移行元のパリティグループ(PG)をリード先に設定する。ステップS1709では、受信ノードのグループマッピング変更処理プログラム425は、設定したパリティグループとアドレスが示す領域からデータをリードする。より具体的には、リードサブ処理を実行する。ステップS1710では、受信ノードのグループマッピング変更処理プログラム425は、データ移行先のパリティグループ(PG)をライト先に設定する。
ステップS1711では、受信ノードのグループマッピング変更処理プログラム425は、ステップS1709でリードしたデータをライトする。より具体的には、ライトサブ処理を実行する。ステップS1712では、受信ノードのグループマッピング変更処理プログラム425は、排他解放を行う。ステップS1713では、受信ノードのグループマッピング変更処理プログラム425は、マッピング変更進捗情報714を更新する。例えばマッピング変更進捗情報は、以下の数式6で計算された値Vに更新する。
V=(現在の移行対象LBA÷移動元チャンクの最大LBA)×100・・数式6
ステップS1714では、受信ノードのグループマッピング変更処理プログラム425は、次にデータ移行を行うアドレスを取得する。ステップS1715では、受信ノードのグループマッピング変更処理プログラム425は、パリティグループ内の全て領域に対して、データ移行処理が完了したか否かを判定する。より具体的には、受信ノードのグループマッピング変更処理プログラム425は、マッピング変更進捗情報714が100%を示すと、データ移行処理が完了したと判定する。受信ノードのグループマッピング変更処理プログラム425は、データ移行処理が完了したと判定した場合は、ステップS1716に処理を移す。受信ノードのグループマッピング変更処理プログラム425は、データ移行処理が完了していないと判定した場合、ステップS1707に処理を移す。
ステップS1716では、グループマッピング変更処理プログラム425は、移動要求を送信したノード100からの応答完了を受信する。ステップS1717では、グループマッピング変更処理プログラム425は、フレーム内の全パリティグループ(PG)に対して、データ移行処理が完了したか否かを判定する。グループマッピング変更処理プログラム425は、フレーム内の全パリティグループ(PG)に対して、データ移行処理が完了したと判定する場合は、グループマッピング変更処理を終了する。グループマッピング変更処理プログラム425は、フレーム内の全パリティグループ(PG)に対して、データ移行処理が完了していないと判定する場合は、ステップS1718に処理を移す。ステップS1718では、グループマッピング変更処理プログラム425は、次に移行対象とするパリティグループ(PG)を設定して、ステップS1702へ処理を移す。
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)サイト201は、記憶領域を提供する複数のノード100と、データを物理的に記憶するドライブ214と、を備える。サイト201は、記憶領域に格納されるユーザデータと、ユーザデータを保護するための冗長データと、を含む複数のデータによりパリティグループを構成し、パリティグループ内の複数のデータを、複数のノードにわたる一つの所定範囲内の記憶領域に記憶し、所定範囲の状態に基づいて、所定範囲を分割するための処理を行う、または、複数の所定範囲を併合するための処理を行う。そのため、信頼性と適用性の高いストレージシステムを実現することができる。
(2)上述した所定範囲は、ノードグループである。ステップS1401における第2の方法を採用し、ノードグループに含まれるノード100の数に基づいて、分割または併合にかかる処理を行うことができる。
(3)ステップS1401における第2の方法と第3の方法を組み合わせて、ノード100の数およびグループあたりの容量に基づいて、分割または併合にかかる処理を行うことができる。この場合は、ノード数だけでなく容量も考慮することで、信頼性をさらに高めることができる。
(4)分割または併合にかかる処理は、第1の所定範囲を第2の所定範囲と第3の所定範囲に分割することである。第1の所定範囲に記憶されていた複数のデータで構成されるパリティグループを移動させて、第2の所定範囲に記憶されるパリティグループと、第3の所定範囲に記憶されるパリティグループと、を生成する。
(5)前述の分割または併合にかかる処理は、第4の所定範囲と第5の所定範囲とを第6の所定範囲に併合することである。
(6)パリティグループに含まれるデータを移動させることで、分割または併合後の所定範囲内にパリティグループを格納する。
(7)パリティグループに含まれるユーザデータを他のユーザデータと入れ替えるとともに、入れ替え後のユーザデータに基づいてパリティデータを生成して記憶することで、分割または併合後の所定範囲内にパリティグループを格納する。
(8)分割または併合後の所定範囲内に記憶されていた複数のユーザデータで新たなパリティグループを構成するとともに、複数のユーザデータからパリティデータを新たに生成して分割または併合後の所定範囲内に記憶する。
(9)ドライブ、ノードまたはサイトの増設または減設による記憶領域の増減を伴う場合、または、ホストライトがある場合には、記憶領域の増減によるデータ移動またはホストライトによるデータ更新とともに、分割または併合後の所定範囲内へのパリティグループの移動を行う。
―第2の実施の形態―
図20~図23を参照して、ストレージシステムの第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、共有型ストレージシステムを対象とする点で、第1の実施の形態と異なる。換言すると、第1の実施の形態は複数のノードを含む1つのサイトについて説明したが、本実施の形態では複数のディスクを含む1つのノードについて説明する。以下では、第1の実施の形態と異なる構成について主に説明する。
図20は、本実施の形態の計算機システム1800に係る構成の一例を示す図である。第1の実施の形態と同じ構成については、同じ符号を用いて説明を省略する。計算機システム1800は、ストレージシステム1810と、管理ノード1820と、ホストノード350とを含んで構成される。ストレージシステム1810と、管理ノード1820と、ホストノード350とは、ネットワーク1830を介して通信可能に接続される。なおネットワーク1830の種類は特に限定されないが、たとえばSAN(Storage Area Network)、やIEEE802.3等を用いることができる。
ストレージシステム1810は、プロセッサ211、メモリ212等を含む1以上のプロセッサパッケージ213、1以上のドライブ214、1以上のポート215、キャッシュメモリ1811、共有メモリ1812、および管理I/F1813を含んで構成される。プロセッサパッケージ213、ポート215、キャッシュメモリ1811、および共有メモリ1812は内部バス216を介して接続される。ドライブ214とその他の構成要素は、内部バス216で接続されてもよいし、筐体を分離してIEEE802.3などの有線ネットワークを用いて接続し、NVMe over Fabricなどのファブリックを形成してもよい。
キャッシュメモリ1811は、ストレージシステム1810のI/O処理のスループット、レスポンス等を向上させるために、データを一時的なキャッシュデータとして格納するための高速アクセスが可能なメモリである。共有メモリ1812は、プロセッサ211がリード命令、ライト命令等を処理し、ストレージの機能(仮想ボリューム306のコピー機能等)を実行する上で、必要な制御用の情報を格納するメモリである。また、共有メモリ1812は、複数のプロセッサパッケージ213間のプロセッサ211で共有している情報を格納するメモリである。
管理I/F1813は、ネットワーク1830に接続され、管理ノード1820と通信可能に接続されている。ストレージシステム1810では、障害からデータを保護するために、複数のドライブ214が使用されてパリティグループ1814が組まれている。管理ノード1820は、ネットワーク1830を介して、ストレージシステム1810の管理I/F1813またはポート215に接続される。ストレージ管理者が管理ノード1820を用いて、ストレージシステム1810に対して、ストレージシステム1810を運用する上で必要な各種設定、管理のための命令等を送信する。
図21は、構成変更処理に係るフローチャートの一例を示す図である。第1の実施の形態の構成変更処理と同じ内容については、同じ符号を付して説明を省略する。第2の実施の形態における構成変更処理は、ステップS1901から開始される。ステップS1901では、構成変更処理プログラム421は、ドライブ214を増設または減設する旨の指示(ドライブ増減設指示)を受信したか否かを判定する。構成変更処理プログラム421は、受信したと判定した場合はステップS1304に処理を移し、受信していないと判定した場合は構成変更処理を終了する。ステップS1304以降の処理は第1の実施の形態と同様なので説明を省略する。
図22は、マッピング変更の概要図である。第1の実施の形態の構成変更処理と同じ内容については、説明を省略し、異なる内容だけを説明する。ここでは、ロケーションノード対応表2010およびロケーションノード対応表2020に示すように、「N3」のドライブ214-3が増設されるケースを例に挙げて説明する。第2の実施の形態では、ノード(ストレージコントローラ)が一つしかなく、常にデータのローカリティは維持できるため、パリティの再計算ではなく、ドライブ間でデータを移動することで、マッピングを変更する。例えば、「G0」のパリティグループ302を構成する移動元チャンク301-0のデータを移動先チャンク301-1にコピーすることで、マッピングを変更する。
図23は、第2の実施の形態におけるグループマッピング変更処理に係るフローチャートの一例を示す図である。第1の実施の形態のグループマッピング変更処理と同じ処理については、同じ符号を付して説明を省略する。第2の実施の形態では、ステップS1703の次にステップS2101の処理が行われる。ステップS2101では、グループマッピング変更処理プログラム425は、移行先フレームから同じグループマップIDを有するノードの物理チャンクを移行先チャンクに設定し、データ移行要求を送信する。
また第1の実施の形態とは異なり、ステップS1710の次にステップS2102の処理が行われる。ステップS2102では、移行要求を受信したノード100のグループマッピング変更処理プログラム425は、ステップS1709で読み出したデータを、移行先となる物理チャンクに対応するドライブに直接ライトする。これにより、パリティの再計算は伴わずドライブ間でのデータの移動だけを行いマッピングを変更する。その他の処理は第1の実施の形態と同様なので説明を省略する。
上述した第2の実施の形態によれば、次の作用効果が得られる。
(10)上述した所定範囲は、ドライブグループである。グループマッピング決定処理プログラム422は、ドライブグループに含まれるドライブの数に基づいて、分割または併合にかかる処理を行う。そのため、1つのノードにおいて第1の実施の形態と同様の作用効果を得ることができる。
(変形例1)
図24を参照して、変形例1を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、データのローカリティを維持しない点で、第1の実施の形態と異なる。
図24は、変形例1におけるマッピング変更の概要図である。第1の実施の形態の構成変更処理と同じ内容については、説明を省略し、異なる内容だけを説明する。ここでは、ロケーションノード対応表2210およびロケーションノード対応表2220に示すように、「N3」のノード100-3が増設されるケースを例に挙げて説明する。
変形例1では、データのローカリティを維持しないため、ノード間でデータを移動することで、マッピングを変更する。例えば、「G0」のパリティグループ302を構成する移動元チャンク301-0のデータを移動先チャンク301-1にコピーすることで、マッピングを変更する。そのため変形例1では、グループマッピング変更処理プログラム425の処理は、第2の実施の形態において図23に示した処理と同様である。
この変形例1によれば、読み出し速度が遅いドライブ214を用いる場合など、データのローカリティを維持しない場合にも第1の実施の形態と同様の作用効果を得ることができる。
(変形例2)
図25~図26を参照して、変形例2を説明する。上述した実施の形態では、グループマッピング決定処理により、必要に応じて、いわば自動処理によりマッピングの分割数が変更された。しかし、マッピングの分割数の変更が必要である旨をユーザに報知し、ユーザの指示があった場合のみマッピングの分割数を変更してもよい。
図25は、変形例2によるグループマッピング決定処理に係るフローチャートの一例を示す図である。ここでは第1の実施の形態との相違のみを説明する。また作図の都合により、図25では第1の実施の形態と同様の処理は記載を省略している。本変形例では、グループマッピング決定処理プログラム422は、ステップS1402において肯定判定をすると、ステップS2501に進む。なお、ステップS1402において否定判定をする場合は、第1の実施の形態と同様にステップS1403に進み、その後の処理も第1の実施の形態と同様である。
ステップS2501では、グループマッピング決定処理プログラム422は、ユーザにマッピングの分割数の変更が必要である旨を報知する。この報知は、音声、文字、および映像など様々な手段を用いることができる。なお、この報知はユーザにマッピングの分割数の変更の必要性を示しユーザの指示を促すものなので、この報知はパリティグループを分割する、またパリティグループを併合するための処理と呼ぶこともできる。
続くステップS2502ではグループマッピング決定処理プログラム422は、ユーザから変更指示、すなわちマッピングの分割数を変更する指示が入力されたか否かを判定する。ユーザによる入力は、不図示の押しボタンの押下、タッチパネルのタッチ操作、および音声による指示など、様々な手段を用いることができる。グループマッピング決定処理プログラム422は、ステップS2502を否定判断する場合はステップS2502に留まり、肯定判断する場合はステップS1406に進む。ステップS1406以降の処理は第1の実施の形態と同様なので説明を省略する。
図26は、ステップS2501におけるユーザへの報知を映像により行う場合の画面表示の一例を示す図である。ここでは、ロケーションノード対応表において、一つのグループマップを適用したノード群をノードグループと呼称する。ノードグループ情報2300は、ノードグループの推奨構成の情報2310と、メッセージの情報2320とを含む。
ノードグループの推奨構成の情報2310は、ノードグループ推奨数3211と、クラスタに含まれるノード数2312を軸とした2軸グラフと、クラスタに含まれるノード数ごとのノードグループ数の推奨数2313と、現在のクラスタに含まれるノード数2314の情報とを含む。
ノードグループ推奨数3211は、ノードグループの数を示す情報である。より具体的には、例えばマッピング分割管理テーブル820のマップ分割数822に基づく情報を表示する。クラスタに含まれるノード数2312は、クラスタに含まれ、グループマッピングを適用するノード数を示す情報である。より具体的には、例えばマッピング分割管理テーブル820のノード数821に基づく情報を表示する。
クラスタに含まれるノード数ごとのノードグループ数の推奨数2313は、ある数のノードを含むクラスタにおけるノードグループ構成の推奨値を示した情報である。より具体的には、例えばマッピング分割管理テーブル820のノード数821とマップ分割数822に基づき情報をプロットしたグラフを表示する。現在のクラスタに含まれるノード数2314は、現在のクラスタに含まれるノードの数を前記の2軸グラフにプロットした情報を示す。
メッセージの情報2320は、グループマッピングに関する情報のテキストをユーザに表示する。テキストには、例えば現在のクラスタ構成におけるノードグループの数が適切か否かを説明する内容や、ノードグループの分割や結合が必要なノード数をユーザに説明する内容が含まれる。さらにメッセージの情報2320には、必要に応じて変更指示を促す表示がされる。
この変形例2によれば、次の作用効果が得られる。
(11)分割または併合にかかる処理は、分割または併合を推奨するメッセージをユーザに提示することである。そのため、ユーザにノードグループの数が適切でないことを報知し、ユーザの指示を受けたらノードグループの数を変更することができる。
(変形例3)
第1の実施の形態では、1つのサイト201を構成するノード100の増減について本発明を適用することを説明した。第2の実施の形態では、1つのノード100を構成するドライブ214の増減について本発明を適用することを説明した。本発明をさらに、1つのクラスタを構成するサイト201の増減について適用してもよい。第1の実施の形態、第2の実施の形態、および変形例3の相関を整理すると次のとおりである。
ここで、すなわち、「ストレージシステム」と「記憶装置」という上位概念を導入する。「ストレージシステム」には複数の「記憶装置」が含まれ、「記憶装置」は「ストレージシステム」に記憶領域を提供する。「ストレージシステム」には、第1の実施の形態における「サイト201」、第2の実施の形態における「ノード100」、変形例3における「クラスタ」が該当する。また「記憶装置」には、第1の実施の形態における「ノード100」、第2の実施の形態における「ドライブ214」、変形例3における「サイト201」が該当する。
そのため、変形例3を含む本発明を次のように表現することもできる。ストレージシステムは、記憶領域を提供する複数の記憶装置を有し、前記記憶領域に格納されるユーザデータと、前記ユーザデータを保護するための冗長データと、を含む複数のデータによりパリティグループを構成する。ストレージシステムは、前記パリティグループ内の複数のデータを、2以上の前記記憶装置に跨る一つの所定範囲に配置し、前記ストレージシステムに含まれる前記記憶装置の数が変更されると、変更後の前記記憶装置の数に基づき、前記所定範囲を分割する、または、複数の前記所定範囲を併合するための処理を行う。
なお、上述の実施の形態においては、本発明をストレージシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラム、プログラムを記録する記録媒体に広く適用することができる。また、上述の実施の形態において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、上述の実施の形態において、説明の便宜上、XXテーブルを用いて各種のデータを説明したが、データ構造は限定されるものではなく、XX情報などと表現してもよい。
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
本発明は、例えば、ストレージシステムにおけるノード、デバイスの増減設に有用である。例えば、安価なネットワーク機器を用いて高信頼なストレージシステムを柔軟に構築、運用できるようになるため、本発明の有用性は高い。また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
101 ストレージシステム
201 サイト
214 ドライブ
302 パリティグループ
410 制御情報テーブル
411 クラスタ構成管理テーブル
412 ストレージプール構成管理テーブル
413 パリティグループ管理テーブル
414 グループマッピング管理テーブル
415 ストライプマッピング管理テーブル
421 構成変更処理プログラム
422 グループマッピング決定処理プログラム
423 リード処理プログラム
424 ライト処理プログラム
425 グループマッピング変更処理プログラム

Claims (9)

  1. 記憶領域を提供する複数のノードと、
    データを物理的に記憶するドライブと、
    を備えたストレージシステムにおいて、
    記憶領域に格納されるユーザデータと、前記ユーザデータを保護するための冗長データと、を含む複数のデータによりパリティグループを構成し、
    前記パリティグループ内の複数のデータを、前記複数のノードにわたる一つの所定範囲内の記憶領域に記憶し、
    各ノードの記憶領域から前記パリティグループに割り当てられた容量を管理しており、
    前記各ノードの記憶領域が複数に分割されて複数の前記パリティグループに割り当てられ、
    前記所定範囲の前記パリティグループにかかる記憶領域における記憶容量に基づいて、前記所定範囲におけるノード数にかかわらず、前記所定範囲を分割するための処理を行う、または、複数の所定範囲を併合するための処理を行う、ストレージシステム。
  2. 請求項1に記載のストレージシステムにおいて、
    前記分割または前記併合にかかる処理は、第1の所定範囲を第2の所定範囲と第3の所定範囲に分割することであり、
    前記第1の所定範囲に記憶されていた複数のデータで構成されるパリティグループを移動させて、前記第2の所定範囲に記憶されるパリティグループと、前記第3の所定範囲に記憶されるパリティグループと、を生成するストレージシステム。
  3. 請求項1に記載のストレージシステムにおいて、
    前記分割または前記併合にかかる処理は、第4の所定範囲と第5の所定範囲とを第6の所定範囲に併合することであるストレージシステム。
  4. 請求項1に記載のストレージシステムにおいて、
    前記分割または前記併合にかかる処理は、前記分割または前記併合を推奨するメッセージをユーザに提示することであるストレージシステム。
  5. 請求項1に記載のストレージシステムにおいて、
    前記パリティグループに含まれるデータを移動させることで、前記分割または前記併合後の所定範囲内に前記パリティグループを格納するストレージシステム。
  6. 請求項1に記載のストレージシステムにおいて、
    前記パリティグループに含まれるユーザデータを他のユーザデータと入れ替えるとともに、入れ替え後のユーザデータに基づいてパリティデータを生成して記憶することで、前記分割または前記併合後の所定範囲内に前記パリティグループを格納するストレージシステム。
  7. 請求項6に記載のストレージシステムにおいて、
    前記分割または前記併合後の所定範囲内に記憶されていた複数のユーザデータで新たな前記パリティグループを構成するとともに、前記複数のユーザデータから前記パリティデータを新たに生成して前記分割または前記併合後の所定範囲内に記憶するストレージシステム。
  8. 請求項1に記載のストレージシステムにおいて、
    ドライブ、ノードまたはサイトの増設または減設による記憶領域の増減を伴う場合には、前記記憶領域の増減によるデータ移動とともに、前記分割または前記併合後の所定範囲内へのパリティグループの移動を行い、
    ホストライトがある場合には、ホストライトによるデータ更新とともに、前記分割または前記併合後の所定範囲内へのパリティグループの移動を行う、ストレージシステム。
  9. 記憶領域を提供する複数のノードを備えたストレージシステムが実行する処理方法であって、
    記憶領域に格納されるユーザデータと、前記ユーザデータを保護するための冗長データと、を含む複数のデータによりパリティグループを構成することと、
    前記パリティグループ内の複数のデータを、前記複数のノードにわたる一つの所定範囲内の記憶領域に配置することと、
    各ノードの記憶領域から前記パリティグループに割り当てられた容量を管理することと、
    前記各ノードの記憶領域を複数に分割して複数の前記パリティグループに割り当てることと、
    前記所定範囲の前記パリティグループにかかる記憶領域における記憶容量に基づいて、前記所定範囲におけるノード数にかかわらず、前記所定範囲を分割するための処理を行う、または、複数の所定範囲を併合するための処理を行うこととを含む処理方法。
JP2020021036A 2020-02-10 2020-02-10 ストレージシステム、処理方法 Active JP7261756B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020021036A JP7261756B2 (ja) 2020-02-10 2020-02-10 ストレージシステム、処理方法
US17/017,944 US11544005B2 (en) 2020-02-10 2020-09-11 Storage system and processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020021036A JP7261756B2 (ja) 2020-02-10 2020-02-10 ストレージシステム、処理方法

Publications (2)

Publication Number Publication Date
JP2021128390A JP2021128390A (ja) 2021-09-02
JP7261756B2 true JP7261756B2 (ja) 2023-04-20

Family

ID=77178378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020021036A Active JP7261756B2 (ja) 2020-02-10 2020-02-10 ストレージシステム、処理方法

Country Status (2)

Country Link
US (1) US11544005B2 (ja)
JP (1) JP7261756B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005099998A (ja) 2003-09-24 2005-04-14 Nec Corp ディスクアレイ装置および記憶容量拡張方法ならびにプログラム
WO2017145223A1 (ja) 2016-02-22 2017-08-31 株式会社日立製作所 計算機システム、計算機システムの制御方法、および記録媒体
WO2018179073A1 (ja) 2017-03-28 2018-10-04 株式会社日立製作所 ストレージシステム、コンピュータ読み取り可能な記録媒体、システムの制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9514014B2 (en) 2011-08-17 2016-12-06 EMC IP Holding Company, LLC Methods and systems of managing a distributed replica based storage
US9336412B2 (en) * 2013-12-12 2016-05-10 Hitachi, Ltd. Storage system and method for controlling storage system
CN106201338B (zh) * 2016-06-28 2019-10-22 华为技术有限公司 数据存储方法及装置
JP2022016753A (ja) * 2020-07-13 2022-01-25 株式会社日立製作所 ストレージシステム、制御方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005099998A (ja) 2003-09-24 2005-04-14 Nec Corp ディスクアレイ装置および記憶容量拡張方法ならびにプログラム
WO2017145223A1 (ja) 2016-02-22 2017-08-31 株式会社日立製作所 計算機システム、計算機システムの制御方法、および記録媒体
WO2018179073A1 (ja) 2017-03-28 2018-10-04 株式会社日立製作所 ストレージシステム、コンピュータ読み取り可能な記録媒体、システムの制御方法

Also Published As

Publication number Publication date
JP2021128390A (ja) 2021-09-02
US20210247934A1 (en) 2021-08-12
US11544005B2 (en) 2023-01-03

Similar Documents

Publication Publication Date Title
US8984221B2 (en) Method for assigning storage area and computer system using the same
JP5314772B2 (ja) 性能の異なる実領域群で構成されたプールを有するストレージシステムの管理システム及び方法
JP4874368B2 (ja) フラッシュメモリを用いたストレージシステムの管理方法及び計算機
US9916248B2 (en) Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache
US8468302B2 (en) Storage system
US8555029B2 (en) Virtualized storage system and method of operating thereof
JP5685676B2 (ja) 計算機システム及びデータ管理方法
US6912537B2 (en) Dynamically changeable virtual mapping scheme
JP4920898B2 (ja) 計算機システム、データ管理方法およびプログラム
WO2013157032A1 (en) Storage subsystem and data management method of storage subsystem
JP7247290B2 (ja) ストレージシステム
GB2524433A (en) Storage system and data management method
US8549243B2 (en) Regeneration of deleted data
WO2018138813A1 (ja) 計算機システム
JP2016118821A (ja) ストレージ管理装置、ストレージ管理方法およびストレージ管理プログラム
US9298388B2 (en) Computer system, data management apparatus, and data management method
JP6772202B2 (ja) ストレージシステム及び記憶制御方法
JP7261756B2 (ja) ストレージシステム、処理方法
WO2016185573A1 (ja) 重複排除ストレージにおけるボリュームバックアップ・リストア方法
JP7015776B2 (ja) ストレージシステム
WO2017085792A1 (ja) ストレージシステム、及びストレージシステムの制御方法
JP5222388B2 (ja) フラッシュメモリを用いたストレージシステムの管理システム及び管理方法
JP2010134788A (ja) クラスタ・ストレージ装置、及びそれを制御する方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220517

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221221

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20221221

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20230105

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20230110

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230410

R150 Certificate of patent or registration of utility model

Ref document number: 7261756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150