JP2023136323A - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP2023136323A
JP2023136323A JP2022041870A JP2022041870A JP2023136323A JP 2023136323 A JP2023136323 A JP 2023136323A JP 2022041870 A JP2022041870 A JP 2022041870A JP 2022041870 A JP2022041870 A JP 2022041870A JP 2023136323 A JP2023136323 A JP 2023136323A
Authority
JP
Japan
Prior art keywords
data
node
policy
performance
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022041870A
Other languages
English (en)
Inventor
泰輔 小野
Taisuke Ono
秀雄 斎藤
Hideo Saito
隆喜 中村
Takayoshi Nakamura
貴大 山本
Takahiro Yamamoto
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2022041870A priority Critical patent/JP2023136323A/ja
Priority to US17/940,371 priority patent/US20230297241A1/en
Publication of JP2023136323A publication Critical patent/JP2023136323A/ja
Pending legal-status Critical Current

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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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]

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 Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ホストからのライトアクセスに基づくデータの冗長化と、ライトアクセスに対する応答性と、をホストの要求に合わせて、システム運用できるストレージシステムを提供する。【解決手段】ストレージシステムは、ホスト120がアクセスするボリューム213を提供し、データの信頼性に係る信頼性ポリシと、前記ボリュームへのアクセスに対する応答性能に係る性能ポリシとを、当該ボリュームに設定し、信頼性ポリシに基づいて、ボリュームにかかるデータを処理するノードに対する、当該データの冗長データを処理するノードを決定し、決定したノードが性能ポリシに従って、ホストからのボリュームへのアクセスに対する結果を応答する。【選択図】図2

Description

本発明は、分散ストレージシステムに関する。
分散ストレージシステムとして、従来から特許文献1,2に記載されたものが存在する。特許文献1は、ネットワークを介して接続された複数の汎用サーバ(計算機)のローカルストレージを、ストレージ制御ソフトウェアにより統合し、1つのストレージプールとし、当該ストレージプールから仮想ボリュームを提供し、さらに仮想ボリュームにデータが書き込まれると、異なるサーバに格納されるデータを組み合わせ、パリティを算出し、データとパリティを異なるサーバのドライブに格納することで、サーバ障害からデータを保護する技術を開示している。本ストレージシステムは、サーバを追加することでストレージ容量と性能をスケールアウトできることを特徴としている。
特許文献2は、複数のストレージを、ネットワークを介して接続して、例えば異なるデータセンタに属するストレージ上の複数の仮想ボリュームでペアを作成し、片方の仮想ボリュームにデータを書き込む際、ペアを組んだ他の仮想ボリュームにもデータを書き込むことで、仮想ボリュームのペア間でその内容を同期し、冗長度を高める技術を開示している。
米国特許出願公開第2016/0371145号 米国特許出願公開第2010/0205479号
特許文献1の技術に基づき、分散ストレージシステムがホストに仮想ボリュームを提供する場合、仮想ボリュームへのデータの書き込みがあると、ボリュームにデータを、複数サーバのドライブにデータを書き込んで応答を返すため、ホストからIO要求があってから応答を返すまでの時間(レスポンスタイム)は、サーバのドライブへの書き込みに要する時間と、サーバ間の通信時間の和より短縮できない。
ホストのアプリケーションによっては、仮想ボリュームをキャッシュとして使用するためにより短いレスポンスタイムを要求する一方、冗長化を必要としないケースがあるが、特許文献1の技術ではこのようなユースケースに対応できない課題がある。
また特許文献1が開示する汎用サーバで構成されるストレージシステムに、特許文献2の技術を適用すると、サーバ間で冗長化したデータを、さらに他のストレージシステムと冗長化することとなり、2段階での冗長化を実施することとなる。
ホストのアプリケーションによっては、仮想ボリュームの同一データセンタ内での冗長化を要求せず、他のデータセンタとの冗長化を要求するケースがあるが、特許文献1、特許文献2の技術ではこのようなユースケースに対応できない課題がある。
そこで、本発明は、ホストからのライトアクセスに基づくデータの冗長化と、ライトアクセスに対する応答性と、をホストの要求に合わせるように、分散ストレージシステムを運用できることを目的とする。
前記目的を達成するために、本手段は、ネットワークを介して互いに接続する複数のノードと、記憶デバイスと、を備え、当該複数のノードの夫々は、前記記憶デバイスに対して入出力されるデータを処理するプロセッサと、メモリと、を有する、ストレージシステムであって、前記プロセッサは、ホストがアクセスするボリュームを提供し、データの信頼性に係る信頼性ポリシと、前記ボリュームへのアクセスに対する応答性能に係る性能ポリシとを、当該ボリュームに設定し、前記信頼性ポリシに基づいて、前記ボリュームにかかるデータを処理するノードに対する、当該データの冗長データを処理するノードを決定し、前記性能ポリシに基づいて、前記ボリュームへのアクセスに対する結果を応答するために前記データまたは前記冗長データを格納するメモリまたは記憶デバイスを、それぞれのノードに対して決定し、前記ホストからライト要求を受信した場合に、前記ライト要求にかかるデータを前記データを処理するノードの前記性能ポリシに基づいて決定されたメモリまたは記憶デバイスに格納され、その冗長データが前記冗長データを処理するノードの前記性能ポリシに基づいて決定されたメモリまたは記憶デバイスに格納されたら、前記ホストに応答する、というものである。
ホストからのライトアクセスに基づくデータの冗長化と、ライトアクセスに対する応答性と、をホストの要求に合わせるように、分散ストレージシステムを運用できる。
第1の実施の形態によるストレージシステムの物理構成の一例を示す図である。 第1の実施の形態によるストレージシステムの論理構成の一例を示す図である。 第1の実施の形態によるメモリ上に配置する情報の一例を示す図である。 第1の実施の形態によるクラスタ構成管理テーブルの一例を示す図である。 第1の実施の形態によるデータ保護セット管理テーブルの一例を示す図である。 第1の実施の形態によるストレージプール管理テーブルの一例を示す図である。 第1の実施の形態による仮想ボリューム管理テーブルの一例を示す図である。 第1の実施の形態によるキャッシュデータ管理テーブルの一例を示す図である。 第1の実施の形態によるパフォーマンスモニタ情報管理テーブルの一例を示す図である。 第1の実施の形態によるリード処理に係るフローチャートの一例を示す図である。 第1の実施の形態によるライト処理に係るフローチャートの一例を示す図である。 第1の実施の形態による自系ノードでの記憶デバイスへのライト処理に係るフローチャートの一例を示す図である。 第1の実施の形態による他系ノードでの記憶デバイスへのライト処理に係るフローチャートの一例を示す図である。 第1の実施の形態による非同期デステージ処理に係るフローチャートの一例を示す図である。 第1の実施の形態による冗長化先ノード・記憶デバイス決定処理に係るフローチャートの一例を示す図である。 第1の実施の形態による冗長化先ノード・記憶デバイス変更処理に係るフローチャートの一例を示す図である。 第1の実施の形態による仮想ボリューム移動処理に係るフローチャートの一例を示す図である。 第1の実施の形態によるパリティグループ構成変更処理に係るフローチャートの一例を示す図である。 第1の実施の形態によるパフォーマンスモニタ処理に係るフローチャートの一例を示す図である。 第1の実施の形態による性能モニタベース冗長化先切替処理に係るフローチャートの一例を示す図である。 第1の実施の形態による性能指標ベースポリシ決定処理に係るフローチャートの性能見積処理部の一例を示す図である。 第1の実施の形態による性能指標ベースポリシ決定処理に係るフローチャートのポリシ決定部の一例を示す図である。 第1の実施の形態によるポリシ性能情報管理テーブルの一例を示す図である。
以下、図面を参照し、本発明の実施形態を説明する。以下の記載および図面は、説明の明確化のため、適宜簡素化、省略がなされている。また実施形態の中で説明されている特徴の組み合わせのすべてが発明の解決手段に必要とは限らない。以下説明では、「テーブル」を用いて情報を説明することがあるが、情報は他のデータ構造にて表現されてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
図1において、100は全体として第1の実施の形態によるストレージシステムを示す。図1は、ストレージシステム100に係る物理構成の一例を示す図である。ストレージシステム100には、1以上のリージョン101が設けられてよい。各リージョン101は、ネットワーク110を介して接続され、互いに通信可能である。ネットワーク110は、例えばWAN(Wide Area Network)であるが、WANに限定するものではない。
リージョン101は、複数のデータセンタで構成される拠点等であり、1以上の可用性ゾーン102が設けられてよい。各可用性ゾーン102は、ネットワーク110を介して接続され、互いに通信可能である。ネットワーク110は、例えばWAN(Wide Area Network)であるが、WANに限定するものではない。
可用性ゾーン102は、データセンダ等であり、1以上のノード120を含んで構成される。ノード120は一般的な計算機の構成を備えてよい。ノード120は例えばプロセッサ121、メモリ122等を含む1以上のプロセッサパッケージ123、1以上のドライブ124、1以上のポート125を含んで構成される。各構成要素は内部バス126を介して接続される。
プロセッサ121は、例えばCPUであり、各種処理を行う。メモリ122は各種データを格納する。格納するデータは、例えばストレージシステム100とノード120の機能を実現する上で必要な情報や、プロセッサ121が実行するプログラムである。メモリ122は、揮発性のDRAMであってもよいし、不揮発性のSCM(Storage Class Memory)であってもよいし、その他の記憶デバイスであってもよい。
ドライブ124は、各種データ、プログラムを記憶する。ドライブ124は、SAS(Serial Attached SCSI)またはSATA(Serial Advanced Technology Attachment)接続のHDDやSSD、NVMe(Non-Volatile Memory Express)接続のSSDの他、SCM等であってもよく、記憶デバイスの一例である。
ポート125は、ネットワーク130に接続され、可用性ゾーン102内の他のノード120と互いに通信可能である。ネットワーク130は、例えば、LAN(Local Area Network)であるが、LANに限定するものではない。
ストレージシステム100に係る物理構成は、上述の内容に限定されるものではない。例えば、ネットワーク110、130については、冗長化されていてもよい。また、例えば、ネットワーク110は、管理用のネットワークとストレージ用のネットワークとで分離してもよく、接続規格は、Ethernet(登録商標)、Infiniband、無線でもよく、接続トポロジも図1に示す構成に限定しない。
図2は、ストレージシステムの論理構成の一例を示す図である。ストレージシステム100では、複数ノードの物理ドライブを仮想的に統合し、ストレージプール214が構成される。ストレージシステム100では、シンプロビジョニングの機能を用いて、ホストノード120が利用する領域にのみ、物理容量が割り当てられる。
各ノードのドライブ124はライトデータ、パリティ等のデータを格納するデータ格納領域を有する。論理ドライブ211は、ドライブ124のデータ格納領域の連続した、全部もしくは一部の領域である。
パリティグループ212は、複数ノード120のドライブ124の論理ドライブ211を組み合わせて構築する。パリティグループ212はデータ保護ポリシを持ち、例えばデータ保護ポリシが2D1Pの場合は、異なるノード120のドライブ124から確保した3個の論理ドライブ211からパリティグループ212を構築する。
ここで、データ保護ポリシとしては、例えば、EC(Erasure Coding)がある。なお、ECとしては、データローカリティを保持しない第1の方式と、データローカリティを保持する第2の方式(例えば、国際公開第2016/52665号に記載の方式)とがあるが、ストレージシステム100には、何れの方式も適用可能である。なお、本実施の形態では、第2の方式を適用したケースを例に挙げて主に説明する。
付言するならば、例えば、第1の方式の2D1PのECでは、ライト要求のデータを第1のデータと第2のデータとに分け、第1のデータを第1のノード120に格納し、第2のデータを第2のノード120に格納し、第1のデータおよび第2のデータで計算されたパリティを第3のノード120に格納することで冗長化が行われる。また、例えば、第2の方式の2D1PのECでは、ライト要求のデータを第1のデータと第2のデータとに分け、第1のデータおよび第2のデータを第1のノード120(自ノード120)に格納し、第1のデータのパリティを第2のノード120に格納し、第2のデータのパリティを第3のノード120に格納することで冗長化が行われる。
パリティグループ212からは、プールボリューム213が切り出される。プールボリューム213は、各ノード120のストレージプール214に容量を割り当てる単位である。1つのパリティグループ212から1つのプールボリューム213が切り出されてもよいし、複数のプールボリューム213が切り出されてよい。
付言するならば、例えば、データ保護ポリシが2D1Pである場合、データの格納領域として利用できるのは、パリティグループ212に割り当てられた論理ドライブ211の総量の2/3となり、パリティの格納領域として利用できるのは、パリティグループ212に割り当てられた論理ドライブ211の総量の1/3となる。つまり、プールボリューム213として切り出せる最大の容量は、データ保護ポリシに応じて異なる。
切り出されたプールボリューム213は、ストレージプール214にアタッチされる。ストレージプール214は、1以上のプールボリューム213を含んで構成される。ストレージプール214からは、アプリケーション141により利用される仮想ボリューム215が切り出される。つまり、ストレージプログラム200は、使用者の要求に応じた容量をドライブ124に割り当てず、仮想ボリューム215として割り当てる。なお仮想ボリューム215を作成した時点では、物理的な領域を割り当てない。
例えば、ストレージプログラム200は、アプリケーション141からライト要求を受信した場合、新規のライトであるときは、仮想ボリューム215のページ216(より詳細には、ページ216に紐づく論理ドライブ211の物理領域)を割り当てる。なお、ページ216には、プールボリューム213のページ216が対応付けられている。更新のライトであるときは、ストレージプログラム200は、割り当てたページ216に紐づく論理ドライブ211の物理領域を特定してデータを更新する。なお、ライト要求のデータ(または後述の中間データ)は、データの冗長化に係る他のノード120に転送されてパリティが更新される。仮想ボリューム215とアプリケーション141は、フロントエンドパス221で接続される。
このように、ストレージプログラム200は、ドライブ124を共有のストレージプール214として管理し、仮想ボリューム215に書き込まれたデータ量に応じてドライブ124の容量を割り当てる。これにより、ドライブ124の容量の無駄をなくし、効率的な運用を行う。
以下では、データを更新するにあたり、当該データは、ライト要求を受領したノード120のドライブ124(ローカルドライブ)に格納される構成(データローカリティを維持し、リード時のネットワークオーバヘッドを排除する構成)を例に挙げて主に説明する。
なお、データにアクセスするアプリケーション141は、ホストノード120に設けられて動作するものであってもよいし、ストレージプログラム200と同一ノード120に設けられて動作するものであってもよいし、別のノード120に設けられて動作するものであってもよい。
図3は、メモリ122に配置する情報の一例を示す図である。メモリ122には、ドライブ124から読み出した制御情報テーブル310、ストレージプログラム320を配置する。制御情報テーブル310、ストレージプログラム320は、停電時等に電源を喪失してもデータを失わないように、不揮発のドライブ124にも格納する。
制御情報テーブル310には、クラスタ構成管理テーブル311、データ保護セット管理テーブル312、ストレージプール管理テーブル313、ボリューム管理テーブル314、キャッシュデータ管理テーブル315、性能モニタ情報管理テーブル316、ポリシ性能情報管理テーブル317が含まれる。各テーブルの詳細は図4~図9、図22にてそれぞれ説明する。
ストレージプログラム320は、リード処理プログラム321と、ライト処理プログラム322と、自系ノードデータライトプログラム323と、他系ノードデータライトプログラム324と、非同期デステージ処理プログラム325と、冗長化先ノード・応答記憶デバイス決定プログラム326と、冗長化先ノード・応答記憶デバイス変更プログラム327と、ボリューム移動プログラム328と、パリティグループ構成変更プログラム329と、パフォーマンスモニタプログラム330と、性能モニタベース冗長化先切替プログラム331と、性能指標ベースポリシ決定プログラム332を備える。各プログラムの詳細は図10~図21にてそれぞれ説明する。
ストレージプログラム320等は例えば、プロセッサ121がドライブ124に格納されたプログラムをメモリ122に読み出して実行すること(ソフトウェア)により実現されてもよいし、専用回路等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとを組み合わせて実現されてもよい。また、ノード120の機能の一部は、ノード120と通信可能な他のコンピュータにより実現されてもよい。
図4は、クラスタ構成管理テーブル311の一例を示した図である。クラスタ構成管理テーブル311はリージョン101、可用性ゾーン102、ノード120、ドライブ124の情報を管理するために用いる。
クラスタ構成管理テーブル311は、リージョン構成管理テーブル400、可用性ゾーン管理テーブル410、ノード構成管理テーブル420、ドライブ構成管理テーブル430、キャッシュデバイス構成管理テーブル440を含む。
リージョン構成管理テーブル400は、リージョン101に係る情報(リージョン101と可用性ゾーン102の関係等)を管理する。より具体的には、リージョン構成管理テーブル400は、リージョン番号401と、状態402と、可用性ゾーン番号リスト403とを対応づけて管理する。
リージョン番号401は、リージョン101を識別可能な識別情報である。状態402は、リージョン101の状態(NORMAL、WARNING、FAILURE等)を示す。可用性ゾーン番号リスト403は、リージョン101に設けられた可用性ゾーン102を識別可能な識別情報のリストである。
可用性ゾーン構成管理テーブル410は、リージョン101ごとに設けられ、可用性ゾーン102に係る情報(可用性ゾーン102とノード120の関係等)を管理する。より具体的には、可用性ゾーン構成管理テーブル410は、可用性ゾーン番号411と、状態412と、ノード番号リスト413とを対応づけて管理する。
可用性ゾーン番号411は、可用性ゾーン102を識別可能な識別情報である。状態412は、可用性ゾーン102の状態(NORMAL、WARNING、FAILURE等)を示す。ノード番号リスト413は、可用性ゾーン102に設けられたノード120を識別可能な識別情報のリストである。
ノード構成管理テーブル420は、可用性ゾーン102ごとに設けられ、ノード120に係る情報(ノード120とドライブ124の関係等)を管理する。より具体的には、ノード構成管理テーブ420は、ノード番号421と、状態422と、ドライブ番号リスト423と、キャッシュデバイス番号リスト424とを対応づけて管理する。
ノード番号421は、ノード120を識別可能な識別情報である。状態422は、ノード120の状態(NORMAL、WARNING、FAILURE等)を示す。ドライブ番号リスト423は、ノード120に設けられたドライブ124を識別可能な識別情報のリストである。キャッシュデバイスIDリスト424は、ノード120に設けられ、キャッシュとして一時的にデータを格納するために使用できるメモリ122を識別可能な識別情報である、
ドライブ構成管理テーブル430は、ノード120ごとに設けられ、ドライブ124に係る情報(ドライブ124の容量等)を管理する。より具体的には、ドライブ構成管理テーブ430は、ドライブ番号431と、状態432と、サイズ433とを対応づけて管理する。
ドライブ番号430は、ドライブ124を識別可能な識別情報である。状態432は、ドライブ124の状態(NORMAL、WARNING、FAILURE等)を示す。サイズ433は、ドライブ124の容量を示す情報であり、単位は例えばTB(テラバイト)、GB(ギガバイト)である。
キャッシュデバイス構成管理テーブル440は、ノード120ごとに設けられ、キャッシュデバイスに係る情報を管理する。より具体的には、キャッシュデバイス構成管理テーブル440は、キャッシュデバイス番号441と、種別442と、揮発性443と、性能444とを対応づけて管理する。
キャッシュデバイス番号441は、メモリ122としてノード120に設けられたデバイスのうち、キャッシュとして使用可能なデバイスを識別可能な識別情報である。種別442は、当該キャッシュデバイスの種別(DRAM、SCM等)を示す。揮発性443は当該キャッシュデバイスの揮発性の有無を示す。性能444は、当該キャッシュデバイスの性能を示す情報であり、HIGH、MIDDLE、LOW等である。性能情報444のラベリング例として、種別442がDRAMのキャッシュデバイスにはHIGHをラベリングし、種別442がSCMのキャッシュデバイスにはMIDDLEをラベリングする。
図5は、データ保護セット管理テーブルの一例を示す図である。データ保護セット管理テーブル312は、プールボリューム213、パリティグループ212、論理ドライブ211を管理するために用いる。データ保護セット管理テーブル312は、プールボリューム管理テーブル510、パリティグループ管理テーブル520、論理ドライブ管理テーブル530、ストライプマッピングテーブル540を含む。
プールボリューム管理テーブル510は、プールボリューム213に係る情報(プールボリューム213とパリティグループ212との関係等)を管理する。より具体的には、プールボリューム管理テーブル510は、プールボリューム番号511と、サイズ512と、パリティグループ番号513と、論理ドライブ番号514とを対応づけて管理する。
プールボリューム番号511は、プールボリューム213を識別可能な識別情報である。サイズ512はプールボリューム213の容量を示す情報であり、単位は例えばTB(テラバイト)、GB(ギガバイト)である。パリティグループ番号513はプールボリューム213が属するパリティグループ212を識別可能な識別情報である。論理ドライブ番号514は、プールボリューム213にデータ格納領域を割り当てている論理ドライブ211の識別可能な識別情報である。
パリティグループ管理テーブル520は、パリティグループ212に係る情報(パリティグループ212と論理ドライブ211との関係等)を管理する。より具体的には、パリティグループ管理テーブル520は、パリティグループ番号521と、冗長化ポリシ522と、論理ドライブ番号リスト523と、状態524とを対応づけて管理する。
パリティグループ番号521は、パリティグループ212を識別可能な識別情報である。冗長化ポリシ522は、パリティグループ212の冗長化方式を示す情報である。論理ドライブ番号リスト523はパリティグループ212を構成する論理ドライブ211を識別可能な識別情報のリストである。状態524は、パリティグループの構成変更の状態を示す情報(正常、変更、作成等)を示す。状態の示す内容は、例えば状態が「正常」であるときは、パリティグループ212の構成変更は行われていないことを示す。
状態が「変更」であるときは、パリティグループ212を構成する論理ドライブ211のうちいずれかを同パリティグループから外し、新たに他の論理ドライブ211を追加する論理ドライブ211の入れ替え処理、もしくは同パリティグループからいずれかの論理ドライブ211を削除する除外処理、もしくは同パリティグループに他の論理ドライブ211を追加する追加処理が行われていることを示す。
論理ドライブ入れ替え処理では、あるパリティグループから除外する論理ドライブ211(図5のパリティグループ管理テーブル520を例にとると、パリティグループ#1における論理ドライブ#5)と、パリティグループに残す論理ドライブ211(前記の図5の例における論理ドライブ#3、#4)との間でデータを冗長化したまま、同パリティグループに追加する論理ドライブ211(前記の図5の例における論理ドライブ#16)と、前記パリティグループに残す論理ドライブ211(前記図5の例における論理ドライブ#3、#4)との間でパリティデータを生成し、論理ドライブ211のパリティグループ構成変更時のための予備領域に生成したパリティデータを書き込んで冗長化を行う。前記追加する論理ドライブ211と、前記パリティグループに残す論理ドライブ211との間で冗長化が完了した時点で、論理ドライブ番号リスト523から前記除外する論理ドライブ211を削除し、状態514は「正常」に戻す。
状態が「作成」であるときは、論理ドライブ212を使用して、パリティグループ212を新規作成している状態であることを示す。この処理では、新規に作成するパリティグループ212に追加する論理ドライブの間でパリティデータを生成し、論理ドライブ211のパリティグループ構成変更時のための予備領域にパリティデータを書き込む。前記追加する論理ドライブ211の間で冗長化が完了した時点で、状態514は「正常」に戻す。
論理ドライブ管理テーブル530は、論理ドライブ211に係る情報(論理ドライブ211とドライブ124との関係等)を管理する。より具体的には、論理ドライブ管理テーブル530は、論理ドライブ番号531と、開始オフセット532と、サイズ533と、ドライブ番号534とを対応づけて管理する。
論理ドライブ番号531は、論理ドライブ211を識別可能な識別情報である。開始オフセット532は、論理ドライブ211をドライブ124から切り出す時の、ドライブ124における開始アドレスを示す。サイズ533は、論理ドライブ211の容量を示す情報であり、単位は例えばTB(テラバイト)、GB(ギガバイト)である。ドライブ番号534は、論理ドライブ211に領域を割り当てるドライブ124を識別可能な識別情報である。
ストライプマッピングテーブル(Stripe Mapping Table、SMT)540は、パリティグループ212に係る情報(データとパリティの格納先アドレスを計算するための情報)を格納する。一例として、EC(Erasure Coding)(2D1P)のマッピングテーブル541、およびMirror(3-Replication)のマッピングテーブル642の情報を格納する。2D1Pとは、2つのデータの組み合わせで1つのパリティを算出し、データを保護することを意味する。
ストライプマッピングテーブル541、542は、あるデータ領域の論理ドライブにおけるLBA(Logical Block Address)に対して、パリティ領域の論理ドライブにおけるLBAを特定するために使用する。
ストライプマッピングテーブル541、542は、表や配列形式で格納されており、横軸の要素として論理ドライブIDに対応する情報を、縦軸の要素としてアドレスに対応する情報を保持している。横軸の情報は、直接的にノードIDの情報を格納していてもよいし、マッピングテーブル541、542の横軸のIDと論理ドライブIDとを対応づける別のテーブルを介して管理されていてもよい。縦軸の情報は、直接的にLBAの情報を格納している必要はなく、例えばLBAから縦軸のIDとLBAとを対応づける別のテーブルを介して管理されてもよい。
図6は、ストレージプール管理テーブルの一例を示す図である。ストレージプール管理テーブル313は、ストレージプール214を管理するために用いる。ストレージプール管理テーブル313は、ストレージプール構成管理テーブル610を含む。
ストレージプール構成管理テーブル610は、ストレージプール214に係る情報(ストレージプール214とプールボリューム213の関係等)を管理する。より具体的には、ストレージプール構成管理テーブル610は、ストレージプール番号611と、合計容量612と、使用容量613と、プールボリューム614と、ノード番号615とを対応づけて管理する。
ストレージプール番号611は、ストレージプール214を識別可能な識別情報である。合計容量612は、ストレージプール214が仮想ボリューム215に割り当て可能な合計容量を示す情報であり、単位は例えばTB(テラバイト)、GB(ギガバイト)である。使用容量613は、ストレージプール214のうち使用されている容量を示す情報であり、単位は例えばTB(テラバイト)、GB(ギガバイト)である。プールボリューム614は、ストレージプール214に割り当てたプールボリューム213を識別可能な識別情報のリストある。ノード番号615は、ストレージプールを提供するノード120を識別可能な識別情報である。
図7は、仮想ボリューム管理テーブルの一例を示す図である。仮想ボリューム管理テーブル314は、仮想ボリューム215、仮想ボリュームのページ216を管理するために用いる。
仮想ボリューム管理テーブル314は、仮想ボリューム管理テーブル710、配置ノード管理テーブル720、応答記憶デバイス管理テーブル730、ページマッピングテーブル740を含む。
仮想ボリューム管理テーブル710は、仮想ボリューム215に係る情報(仮想ボリュームの容量等)を管理する。より具体的には、仮想ボリューム管理テーブル710は、仮想ボリューム番号711と、サイズ712と、信頼性ポリシ713と、性能ポリシ714とを対応づけて管理する。
仮想ボリューム番号711は、仮想ボリューム215を識別可能な識別情報である。サイズ712は、仮想ボリューム215の容量を示す情報であり、単位は例えばTB(テラバイト)、GB(ギガバイト)である。
信頼性ポリシ713は、当該仮想ボリューム215に適用されるデータ信頼性を示す。信頼性ポリシ713として、例えば、異なる3リージョンに属するノードでデータを保護し、最大2ノードで障害が発生してもデータにアクセスできることが求められる仮想ボリューム215には「耐リージョン障害、3重」を設定する。他にも、例えば、異なる2個の可用性ゾーンに属するノードでデータを保護し、最大1ノードで障害が発生してもデータにアクセスできることが求められる仮想ボリューム215には「耐可用性ゾーン障害、2重」を設定する。他にも、例えば、複数ノードでのデータ保護が全く不要な仮想ボリューム215には「耐障害性不要」を設定する。
信頼性ポリシ713は、仮想ボリューム215を新規作成する際に、ストレージシステム100の使用者に任意のポリシを決定させてもよいし、同じく仮想ボリューム215を新規作成する際に、ストレージプログラム200が設定可能なポリシ一覧を提示し、使用者に任意のポリシを選択させて決定してもよい。また、同じく仮想ボリューム215を新規作成する際に、ストレージシステム100の使用者に仮想ボリューム215に求める性能指標値を入力させ、この性能を達成できる信頼性ポリシ713を後述の性能ポリシ714と共に選択して決定してもよい。
性能ポリシ714は、当該仮想ボリューム215に要求される性能(HIGH、MIDDLE、LOW等)を示す。性能ポリシ714は、仮想ボリューム215を新規作成する際に、ストレージシステム100の使用者に任意のポリシを決定させてもよいし、同じく仮想ボリューム215を新規作成する際に、プログラムが設定可能なポリシ一覧を提示し、使用者に任意のポリシを選択させて決定してもよい。
配置ノード管理テーブル720は、仮想ボリューム215の配置ノード120に係る情報を管理する。より具体的には、配置ノード管理テーブル720は、仮想ボリューム番号721と、プライマリノード番号722と、冗長化先ノード番号リスト723とを対応づけて管理する。
仮想ボリューム番号721は、仮想ボリューム215を識別可能な識別情報である。プライマリノード番号722は、仮想ボリューム215のデータ本体を格納するドライブ124が属するノード120の識別可能な識別情報である。冗長化先ノード番号リスト723は、仮想ボリューム215のパリティデータを格納するドライブ124が属するノード120の識別可能な識別情報のリストである。
応答記憶デバイス管理テーブル730は、仮想ボリューム215ごとに設けられ、仮想ボリューム215のデータとパリティをノード120に格納する際の、各ノードにおける応答記憶デバイスに係る情報を管理する。より具体的には、応答記憶デバイス管理テーブル730は、ノード番号731と、応答記憶デバイス732とを対応づけて管理する。
ノード番号731は、ノード120を識別可能な識別情報である。応答記憶デバイス732は、データおよびパリティ格納先ノード120が、仮想ボリューム215のデータもしくはパリティを、どの記憶デバイスに書き込んだ時点で応答を返すかを示す情報である。ページマッピングテーブル740は、仮想ボリュームのシンプロビジョニングに係る情報を管理するもので、ページ216とプールボリューム213のマッピング情報等を格納する。より具体的には、ページマッピングテーブル740は、ページ番号741と、仮想ボリューム番号742と、仮想ボリュームLBA(Logical Block Address)743と、サイズ744と、プールボリューム番号745と、プールボリュームLBA 746とを対応づけて管理する。
ページ番号741は、ページ216を識別可能な識別情報である。仮想ボリューム番号742は、ページ216の属する仮想ボリューム215を識別可能な識別情報である。仮想ボリュームLBA 743は、ページ216の、仮想ボリューム215における開始位置を示す情報である。サイズ744は、ページ216の容量を示す情報であり、単位は例えばMB(メガバイト)、KB(キロバイト)である。プールボリューム番号745は、ページ216に対応するプールボリューム213を識別可能な識別情報である。プールボリュームLBA 746は、ページ216の、プールボリューム213における開始位置を示す情報である。
ストレージプログラム200は、仮想ボリューム215上のページ216にアクセスがあった際に、ページマッピングテーブル740を参照し、ページ216に対応するプールボリューム213のアドレスを取得する。ストレージプログラム200は、仮想ボリューム215に対する新規ライトを受信する度に、ページ216の割当(ページ216とプールボリューム213の対応を示した新規レコードの、ページマッピングテーブル740への追加)を行う。
図8は、キャッシュデータ管理テーブルの一例を示す図である。キャッシュデータ管理テーブル315は、ノード120ごとに設けられ、メモリ上にキャッシュしたデータを管理するために用いる。キャッシュデータ管理テーブル315は、キャッシュマッピング情報テーブル810を含む。
キャッシュマッピング情報テーブル810は、メモリ上にキャッシュしたデータについて、ドライブ124のどの位置のデータであるかを示すアドレスと、メモリ上の書き込み位置のマッピング情報を管理する。より具体的には、キャッシュマッピング情報テーブル810は、ドライブ番号811と、ドライブLBA 812と、サイズ813と、メモリアドレス814とを対応づけて管理する。
ドライブ番号811は、キャッシュしたデータを格納するドライブ124を識別可能な識別情報である。ドライブLBA 812は、キャッシュデータのドライブ124における位置を示す情報である。サイズ813は、キャッシュしたデータの容量を示す情報であり、単位は例えばMB(メガバイト)、KB(キロバイト)である。メモリアドレス814は、キャッシュデータのメモリ122における位置を示す情報である。
図9は、パフォーマンスモニタ情報管理テーブルの一例を示す図である。パフォーマンスモニタ情報管理テーブル316は、ノード120ごとに設けられ、各ノード120の性能情報を管理するために用いる。
パフォーマンスモニタ情報管理テーブル316は、プロセッサパフォーマンス情報テーブル910、メモリパフォーマンス情報テーブル920、ドライブパフォーマンス情報テーブル930、ネットワークパフォーマンス情報テーブル940、ノード間ネットワーク品質情報テーブル950を含む。
プロセッサパフォーマンス情報テーブル910は、ノード120上のプロセッサ121の使用率を管理する。より具体的には、プロセッサパフォーマンス情報テーブル910は、CPU番号911、CPU使用率912を対応づけて管理する。
CPU番号911は、ノード120上のプロセッサ121を識別可能な識別情報である。CPU使用率912は、プロセッサ121の使用率を示す情報である。
メモリパフォーマンス情報テーブル920は、ノード120上のメモリ122における残容量を管理する。より具体的には、メモリパフォーマンス情報テーブル920は、メモリ残容量921を管理する。メモリ残容量921を管理するは、ノード120上のメモリ122における残容量であり、単位は例えばGB(ギガバイト)である。
ドライブパフォーマンス情報テーブル930は、ノード120上のドライブの性能を管理する。より具体的には、ドライブパフォーマンス情報テーブル930は、ドライブ番号931、リードIOPS(Input Output Per Second)932、ライトIOPS 933、リード帯域934、ライト帯域935を対応づけて管理する。
ドライブ番号931は、ノード120上のドライブ124を識別可能な識別情報である。リードIOPS 932は、ドライブ124における1秒あたりのリードIO数である。ライトIOPS 933は、ドライブ124における1秒あたりのライトIO数である。
リード帯域934は、ドライブ124におけるリード帯域であり、単位は例えばMB/s(Mega Byte Per Second)である。ライト帯域935は、ドライブ124におけるライト帯域であり、単位は例えばMB/sである。
ネットワークパフォーマンス情報テーブル940は、ノード上のポート125の性能を管理する。より具体的には、ネットワークパフォーマンス情報テーブル940は、ポート番号941、帯域942、帯域使用率943、受信帯域944、送信帯域945を対応づけて管理する。
ポート番号941は、ノード120上のポート125を識別可能な識別情報である。帯域942は、ポート125の帯域であり、単位は例えばGbps(Giga Bit Per Second)やMbps(Mega Bit Per Second)である。
帯域使用率943は、ポート125における帯域の使用率である。受信帯域944は、ポート125における受信データの帯域であり、単位は例えばGbpsやMbpsである。送信帯域945は、ポート125における送信データの帯域であり、単位は例えばGbpsやMbpsである。
ノード間ネットワーク品質情報テーブル950は、ノード間ネットワークの品質を管理する。より具体的には、ノード番号951、遅延時間952、再送率953を対応づけて管理する。
ノード番号951は、ノード120を識別可能な識別情報である。遅延時間952は、パフォーマンスモニタ情報管理テーブル316の管理対象ノード120と、ノード番号951で示されたノード120間における、ネットワークの遅延時間を示す情報である。再送率953は、パフォーマンスモニタ情報管理テーブル316の管理対象ノード120と、ノード番号951で示されたノード120間における、ネットワークのパケット再送率を示す情報である。
なお、ノード間ネットワーク品質情報テーブル950に記載するネットワーク品質情報は、例えばネットワークの遅延時間、再送率であるが、ネットワークの遅延時間、再送率に限定するものではない。
図10は、リード処理に係るフローチャートの一例を示す図である。リード処理プログラム321は、アプリケーション141よりデータのリード処理要求があると、ノード120のドライブ124からデータを読み出す。リード処理要求は、リード先を指定する識別情報(LUN(Logical Unit Number)のような仮想ボリュームID、LBAのようなアドレス等)を含む。データを格納するドライブ124が障害状態、もしくはノード120が閉塞状態である場合、冗長データを使ってデータを修復し、応答する。以下、詳細を説明する。ステップS1001では、リード処理プログラム321は、リード処理要求を受けると、配置ノード管理テーブル720を参照して仮想ボリューム215のプライマリノードIDを取得する。
ステップS1002ではステップS1001で取得したプライマリノードIDが自系ノードであるかを判定する。より具体的には、S1001で取得したプライマリノードIDと自系ノードのノードIDを比較して、同じIDである場合、自系ノードが仮想ボリューム215のデータを保存しているプライマリノードであると判定する。プライマリノードが自系ノードであると判定した場合、ステップS1005に処理を進める。プライマリノードが自系ノードでないと判定した場合、ステップS1003に処理を進める。
ステップS1003では、リード処理プログラム321は、仮想ボリューム215のプライマリノードである他系ノード120にリード処理を転送する。ステップS1004では、リード処理プログラム321は、ステップS1003で転送したリード処理について、実行結果を待ち受け、受信し、ステップS1013に処理を進める。ステップS1005では、リード処理プログラム321は、リード先の領域について排他を取得する。
ステップS1006では、リード処理プログラム321は、ページマッピングテーブル740を参照して、アクセス先の仮想ボリューム215のページ216に、プールボリューム213を割り当てているかを判定する。より具体的には、ページマッピングテーブル740を参照して、仮想ボリューム215のリード先アドレスを含むページ216と、プールボリューム213のアドレスの対応を記載しているレコードが存在するかを判定する。
リード処理プログラム321は、ページ216にプールボリューム213の領域を割当済であると判定した場合、ステップS1008に処理を進める。ページ216にプールボリューム213の領域を未割当であると判定した場合、ステップS1007に処理を進める。
ステップS1007では、リード処理プログラム321は、リード先にデータがないことを示す0データを生成する。ステップS1008では、リード処理プログラム321は、リード先の仮想ボリューム215の領域に割り当てた、ドライブ124のアドレスを取得する。
ステップS1009では、リード処理プログラム321は、キャッシュマッピングテーブル810を参照し、ドライブ124のアクセス先領域のデータがメモリ上にキャッシュされているかどうかを判定する。データがメモリ上に存在する場合、ステップS1010に処理を進める。データがメモリ上に存在しない場合、ステップS1011に処理を進める。
ステップS1010では、リード処理プログラム321は、メモリからデータを読み出す。ステップS1011では、リード処理プログラム321は、ドライブ124からデータを読み出す。ステップS1012では、リード処理プログラム321は、S1005で取得した排他を解放する。ステップS1013では、リード処理プログラム321は、ホストにリード処理の結果を応答する。
図11は、ライト処理に係るフローチャートの一例を示す図である。ライト処理プログラム322は、アプリケーション141よりデータのライト処理要求があると、ノード120のメモリ122もしくはドライブ124にデータを書き込む。ライト処理要求は、ライト先を指定する識別情報(LUN(Logical Unit Number)のような仮想ボリュームID、LBAのようなアドレス等)を含む。以下、詳細を説明する。
ステップS1101では、ライト処理プログラム322は、ライト処理要求を受けると、配置ノード管理テーブル720を参照して仮想ボリューム215のプライマリノードIDを取得する。
ステップS1102では、ステップS1001で取得したプライマリノードIDが自系ノードであるかを判定する。より具体的には、S1101で取得したプライマリノードIDと自系ノードのノードIDを比較して、同じIDである場合、自系ノードが仮想ボリューム215のデータを保存しているプライマリノードであると判定する。プライマリノードが自系ノードであると判定した場合、ステップS1105に処理を進める。プライマリノードが自系ノードでないと判定した場合、ステップS1103に処理を進める。
ステップS1103では、ライト処理プログラム322は、仮想ボリューム215のプライマリノードである他系ノード120にライト処理を転送する。ステップS1104では、ライト処理プログラム322は、ステップS1103で転送したライト処理について、実行結果を待ち受け、受信し、ステップS1119に処理を進める。
ステップS1105では、ライト処理プログラム322は、ライト先の領域について排他を取得する。ステップS1106では、ライト処理プログラム322は、ページマッピングテーブル740を参照して、アクセス先の仮想ボリューム215のページ216に、プールボリューム213を割り当てているかを判定する。ページ216にプールボリューム213の領域を割当済であると判定した場合、ステップS1108に処理を進める。ページ216にプールボリューム213の領域を未割当済であると判定した場合、ステップS1107に処理を進める。
ステップS1107では、ライト処理プログラム322は、アクセス先のページ216に、プールボリューム213の領域を割り当て、ページマッピングテーブル740にページ216とプールボリューム213の割り当て情報(ページ216の番号、ページ216の存在する仮想ボリューム215の番号、仮想ボリューム215におけるページ216の開始アドレス、ページ216のサイズ、ページ216に領域を割り当てたプールボリューム213の番号、プールボリューム213におけるページ216の開始アドレス)を記載する。
ステップS1108では、ライト処理プログラム322は、ライト先の仮想ボリューム215の領域に割り当てた、ドライブ124のアドレスを取得する。
なお本図11では、ライト処理要求が来た時に、ステップS1108までの処理を行った後、ステップS1109以降の処理を行ってホストに応答を行う方式を説明するが、ライト処理要求が来た時点ではステップS1108までの処理を行った後、自系の応答記憶デバイスがメモリ122であれば、データを同デバイス上に書き込んでキャッシュしたのち、ステップS1109以降(ステップS1109を含む)の処理は行わずにホストに応答を返す方式でもよい。後者の方式では後述のデステージ処理にて本図11で説明するステップS1109以降の処理を行う。
ステップS1109では、ライト処理プログラム322は、ドライブ124から書き込み前のデータ(旧データ)を読み出す。読み出し先のドライブ124が障害状態もしくはノード120が閉塞状態である場合、パリティを使って読み出しデータを復元し、旧データを読み出す。
ステップS1110では、ライト処理プログラム322は、配置ノード管理テーブル720を参照し、ライト先の仮想ボリューム215の冗長化先ノード番号リストを取得する。
ステップS1111では、ライト処理プログラム322は、ライト先の仮想ボリューム215に冗長化先ノードがあるかを判定する。より具体的には、ステップS1110で取得した冗長化先ノード番号リストに1個以上冗長化先ノード番号が含まれる場合は、冗長化先ノードありと判定する。冗長化先ノードありと判定した場合、ステップS1112に処理を進める。冗長化先ノードなしと判定した場合、ステップS1114に処理を進める。
ステップS1112では、ライト処理プログラム322は、ホストから受け取った新データと、ステップS1109で読み出した旧データより中間データを算出する。中間データは、データを部分的に構成する場合に用いるデータである。より具体的には、例えば旧データでデータAをA1、A2に分割し、A1とA2よりパリティAPを生成している場合、中間データは、次のように求められる。
A1(旧データ) XOR A2(旧データ)=AP(旧パリティ)
A1(新データ) XOR A1(旧データ)=M(中間データ)
なお、新パリティについては、次のように求められる。
AP(旧パリティ) XOR M(中間データ)=AP(新パリティ)
ステップS1113では、ライト処理プログラム322は、冗長度に応じて(冗長度が2以上の場合、2以上のノード120に)中間データを転送する。中間データを受け取ったノード120は、ステップS1115の処理を実行する。なお、冗長化先ノードに転送するデータは、ここで挙げた中間データでもよいし、ホストからライト要求があったデータ本体の複製でもよい。データ本体を転送する場合、中間データ生成は不要となるため、ステップS1109、ステップS1112の処理は不要である。
ステップS1114では、ライト処理プログラム322は、後述の自系データライト処理プログラム323を実行し、自系のメモリ122もしくはドライブ124にデータを書き込む。ステップS1115では、中間データを受け取ったノード120は、後述の他系データライト処理プログラム324を実行し、パリティデータを更新する。
ステップS1116では、ライト処理プログラム322は、ステップS1111と同様にライト先の仮想ボリューム215に冗長化先ノードがあるかを判定する。冗長化先ノードありと判定した場合、ステップS1117に処理を進める。冗長化先ノードなしと判定した場合、ステップS1118に処理を進める。
ステップS1117では、ライト処理プログラム322は、S1113で他系ノード120に転送した中間データについて、冗長化先ノードからの応答を待ち受け、受信し、ステップS1118に処理を進める。ステップS1118では、ライト処理プログラム322は、S1105で取得した排他を解放する。ステップS1119では、ライト処理プログラム322は、ホストにライト処理の結果を応答する。
図12は、自系ノードでの記憶デバイスへのライト処理に係るフローチャートの一例を示す図である。自系データライト処理プログラム323は、ライト処理プログラム322より書き込むデータ、データを書き込むドライブ124のアドレスを受け取ると、仮想ボリューム215に設定された応答記憶デバイスにデータを書き込む。以下、ノード120は揮発性メモリとしてDRAM、不揮発メモリとしてSCMを持つ場合を例として、詳細を説明する。
ステップS1201では、自系データライト処理プログラム323は、書き込み先のドライブ124のアドレスを取得する。ステップS1202では、自系データライト処理プログラム323は、応答記憶デバイス管理テーブル730から、自系ノードでデータの書き込みを行う記憶デバイスを取得する。
ステップS1203では、S1202で取得した書き込みを行う記憶デバイスを判定する。書き込みを行う記憶デバイスがドライブの場合、ステップS1204に処理を進める。同記憶デバイスがSCMの場合、ステップS1205に処理を進める。同記憶デバイスがDRAMの場合、ステップS1206に処理を進める。
ステップS1204では、自系データライト処理プログラム323は、ドライブ124にデータを書き込む。ステップS1205では、自系データライト処理プログラム323は、メモリ122のうちSCMにデータを書き込んでキャッシュする。ステップS1206では、自系データライト処理プログラム323は、メモリ122のうちDRAMにデータを書き込んでキャッシュする。
ステップS1207では、自系データライト処理プログラム323は、キャッシュマッピング情報テーブル810にレコードを追加し、ステップS1205、またはステップS1206でメモリ上にキャッシュしたデータの情報(ドライブの番号、ドライブでのLBA、サイズ、メモリ上での位置)を追記する。
図13は、他系ノードでの記憶デバイスへのライト処理に係るフローチャートの一例を示す図である。他系データライト処理プログラム324は、ライト処理プログラム322より中間データを受け取ると、仮想ボリューム215に設定された応答記憶デバイスにデータを書き込み、ライト処理プログラム322に応答を返す。以下、詳細を説明する。
ステップS1301では、他系データライト処理プログラム324は、書き込み先のドライブ124のアドレスを取得する。
ステップS1302では、他系データライト処理プログラム324は、ドライブ124から書き込み前のデータ(旧パリティ)を読み出す。ステップS1303では、他系データライト処理プログラム324は、受け取った中間データと、ステップS1302で読み出した旧パリティより、新パリティを算出する。新パリティの算出手順は図11のステップS1112で説明した通りである。
なお、図11のステップS1113で、中間データではなく、データの複製を転送した場合、他系ノードではパリティではなくデータ本体を書き込むため、新パリティ生成のためのステップS1302、ステップS1303の処理は不要である。
ステップS1304では、他系データライト処理プログラム324は、応答記憶デバイス管理テーブル730から、冗長化先ノード120でデータの書き込みを行う記憶デバイスを取得する。
ステップS1305では、S1304で取得した書き込みを行う記憶デバイスを判定する。書き込みを行う記憶デバイスがドライブの場合、ステップS1306に処理を進める。同記憶デバイスがSCMの場合、ステップS1307に処理を進める。同記憶デバイスがDRAMの場合、ステップS1308に処理を進める。
ステップS1306では、他系データライト処理プログラム324は、ドライブ124にデータを書き込む。ステップS1307では、他系データライト処理プログラム324は、メモリ122のうちSCMにデータを書き込んでキャッシュする。ステップS1308では、他系データライト処理プログラム324は、メモリ122のうちDRAMにデータを書き込んでキャッシュする。
ステップS1309では、他系データライト処理プログラム324は、キャッシュマッピング情報テーブル810にレコードを追加し、ステップS1307、またはステップS1308でメモリ上にキャッシュしたデータの情報(ドライブの番号、ドライブでのLBA、サイズ、メモリ上での位置)を追記する。ステップS1310では、ライト処理プログラム322に応答を返す。
図14は、非同期デステージ処理に係るフローチャートの一例を示す図である。非同期デステージ処理プログラム325は、メモリ122(揮発性メモリおよび不揮発メモリを含む)上に書き込まれ、ドライブ124には書き出されていないデータをドライブ124に書き出す。以下、詳細を説明する。
ステップS1401では、非同期デステージ処理プログラム325は、キャッシュマッピング情報テーブル810を参照して、キャッシュしたデータが存在するか判定する。データがあると判定した場合、ステップS1402に処理を進める。データがないと判定した場合、ステップS1407に処理を進める。
ステップS1402では、非同期デステージ処理プログラム325は、キャッシュマッピング情報テーブル810から、キャッシュしたデータの情報を1レコード分取り出す。
ステップS1403では、非同期デステージ処理プログラム325は、ステップS1402で取得したレコードに示されたメモリアドレスから、データを読み出す。
ステップS1404では、非同期デステージ処理プログラム325は、ステップS1403でメモリ122から読み出したデータを、ステップS1402で取得したレコードに示されているドライブ124のアドレスに書き出す。ステップS1405では、非同期デステージ処理プログラム325は、ステップS1402で取得したレコードに示されているメモリアドレスのデータをクリアする。ステップS1406では、非同期デステージ処理プログラム325は、ステップS1402で取り出したレコードを、キャッシュマッピング情報テーブル810から削除する。
ステップS1407では、非同期デステージ処理プログラム325は、一定期間休止する。休止期間が終了すると、再度ステップS1401に戻り処理を進める。
なお、図11に示したライト処理において、ライト処理要求が来た時点ではステップS1108までの処理を行った後、自系の応答記憶デバイスがメモリ122であれば、データを同デバイス上に書き込んでキャッシュしたのち、ステップS1109以降の処理は行わずにホストに応答を返す方式を取った場合、本デステージ処理にてステップS1109からステップS1118までの処理を行う。より具体的には、ステップS1401からステップS1403までの処理を行った後、ステップS1109からステップS1118までの処理を行い、その後ステップS1405からステップS1407までの処理を行う。
図15は、冗長化先ノード・応答記憶デバイス決定処理に係るフローチャートの一例を示す図である。冗長先ノード・応答記憶デバイス決定プログラム326は、ストレージシステム100の使用者が仮想ボリューム作成操作を行った時に呼び出され、仮想ボリューム215に設定された信頼性ポリシおよび性能ポリシから、仮想ボリューム215をどのノード120で冗長化するか、およびノード120に含まれるどの記憶デバイスに書き込まれた時点でホストに応答を返すか、を決定する。本プログラムは、仮想ボリュームのサイズと、信頼性ポリシと、性能ポリシとを引数として実行する。以下、詳細を説明する。
ステップS1501では、冗長先ノード・応答記憶デバイス決定プログラム326は、ノード構成管理テーブル420より、システムを構成するノードの一覧を取得する。
ステップS1502では、冗長先ノード・応答記憶デバイス決定プログラム326は、新規に作成する仮想ボリューム215の、データ本体を格納するプライマリノードを決定する。プライマリノードの決定方法は、プライマリノードの番号を冗長先ノード・応答記憶デバイス決定プログラム326の引数とし、実行時に指定する方法でもよいし、管理プログラムがシステムの全ノードをストレージシステム100の使用者に提示し、いずれかのノードを使用者に選択させ、プログラムは使用者が選択したノードをプライマリノードとする方法でもよいし、管理プログラムがシステムのサイト、可用性ゾーンを提示し、いずれかのサイト、可用性ゾーンを使用者に選択させ、プログラムは使用者が選択したサイト、可用性ゾーンに属するノードのうち、いずれか1ノードを選択してプライマリノードとする方法でもよいし、管理プログラムが全ノードの物理ドライブ使用率を取得して、最も物理ドライブ使用率が低いノードを選択してプライマリノードとする方法でもよいし、その他の方法でもよい。
ステップS1503では、冗長先ノード・応答記憶デバイス決定プログラム326は、当該仮想ボリュームに設定された信頼性ポリシを取得する。ステップS1504では、冗長先ノード・応答記憶デバイス決定プログラム326は、パリティグループ管理テーブル520を参照し、パリティグループ212の一覧を取得する。
ステップS1505では、冗長先ノード・応答記憶デバイス決定プログラム326は、論理ドライブ管理テーブル530を参照し、ステップS1504で取得した各パリティグループ212を構成する論理ドライブ211を算出する。さらにノード構成管理テーブル420を参照し、前記論理ドライブ211が属しているノード120を算出する。これらの情報から、プライマリノードに属する論理ドライブ211で構成されるパリティグループ212を検索する。
ステップS1506では、冗長先ノード・応答記憶デバイス決定プログラム326は、ステップS1505における検索に一致するパリティグループ212の存在の有無を判定する。ステップS1505での検索に一致するパリティグループ212が存在する場合、ステップS1507に処理を進める。ステップS1505での検索に一致するパリティグループ212が存在しない場合、ステップS1510に処理を進める。
ステップS1507では、冗長先ノード・応答記憶デバイス決定プログラム326は、ステップS1505で検出した、プライマリノードの論理ドライブ211で構成されるパリティグループ212のうち、信頼性ポリシに適合する構成のパリティグループ212を検索する。例えば当該仮想ボリュームの信頼性ポリシが「耐リージョン障害、3重」であれば、異なるリージョンに属するノード120間で、最大2ノードで障害が発生してもデータにアクセスできる冗長化がなされているパリティグループ212を検索し、信頼性ポリシが「耐可用性ゾーン障害、2重」であれば、異なる可用性ゾーンに属するノード120間で,最大1ノードで障害が発生してもデータにアクセスできる冗長化がなされているパリティグループ212を検索する。
ステップS1508では、冗長先ノード・応答記憶デバイス決定プログラム326は、ステップS1507における検索に一致するパリティグループ212の存在の有無を判定する。ステップS1507での検索に一致するパリティグループ212が存在する場合、ステップS1509に処理を進める。ステップS1507での検索に一致するパリティグループ212が存在しない場合、ステップS1510に処理を進める。
ステップS1509では、冗長先ノード・応答記憶デバイス決定プログラム326は、ステップS1507での検索に一致するパリティグループ212のうち、1個のパリティグループ212を選択する。ステップS1507において複数のパリティグループ212が検索に一致して、そのうちから1個パリティグループを選択する方式は、例えば管理プログラムがモニタ情報から、パリティグループ212を構成するドライブ124の平均使用率を算出し、同平均使用率が最も低いパリティグループ212を選択する方法でもよいし、ストレージシステム100の使用者にパリティグループ一覧を提示して、使用者にそのうち1個を選択させる方法でもよいし、他の方法でもよい。
ステップS1510では、冗長先ノード・応答記憶デバイス決定プログラム326は、信頼性ポリシに設定された冗長度に従って、冗長先ノード(冗長度が2以上の場合、2以上のノード120)を選択する。冗長化先ノード120の選択方式は、例えば当該仮想ボリュームの信頼性ポリシが「耐リージョン障害、3重」であれば、プライマリノードと異なるリージョンに属する2個以上のノード120を選択し、当該仮想ボリュームの信頼性ポリシが「耐可用性ゾーン障害、2重」であれば、プライマリノードと異なる可用性ゾーンに属する1個以上のノード120を選択する。
複数のノード120の候補から1ノードを選択して冗長化先ノードとする方法は、例えばプログラムがストレージシステム100の使用者に冗長化先ノードの候補一覧を提示して、使用者に1ノードを選択させ、その選択したノード120を冗長化先ノードに決定してもよいし、管理プログラムがモニタ情報から、候補のノード120の物理ドライブ使用率を取得して、最も物理ドライブ使用率が低いノード120を冗長化先ノードに決定してもよいし、他の方法でもよい。
ステップS1511では、冗長先ノード・応答記憶デバイス決定プログラム326は、ステップS1502で決定したプライマリノードおよびステップS1510で選択した冗長化先ノード上で論理ドライブ211を新規作成する。論理ドライブに割り当てる物理ドライブ124は、ノード120内で最も使用率の低い物理ドライブを選択してもよいし、他の方法で選択してもよい。さらにパリティグループ処理プログラム329は、パリティグループ管理テーブル520にレコードを追記し、新規作成するパリティグループ212に番号を採番して記載し、当該パリティグループ212の冗長化ポリシと、当該パリティグループ212を構成する論理ドライブ(新規作成した論理ドライブ211)と、状態とを記載する。状態はパリティグループ212が変更状態でないことを示す内容(例えば「正常」)を記載する。
ステップS1512では、冗長先ノード・応答記憶デバイス決定プログラム326は、ステップS1511で作成したパリティグループ212で構成されるプールボリューム213を作成し、さらに作成したプールボリューム213で構成されるストレージプール214を作成する。
ステップS1513では、冗長先ノード・応答記憶デバイス決定プログラム326は、ステップS1509で選択したパリティグループ212で構成されるストレージプール214、またはステップS1512で作成したストレージプール214を取得する。
ステップS1514では、冗長先ノード・応答記憶デバイス決定プログラム326は、ステップS1513で取得したストレージプール214上に、仮想ボリューム215を作成する。
ステップS1515では、冗長先ノード・応答記憶デバイス決定プログラム326は、仮想ボリューム管理テーブル710にレコードを追加し、ステップS1514で作成した仮想ボリュームに番号を採番して記載し、引数で指定されたサイズと、引数で指定された信頼性ポリシと、引数で指定された性能ポリシを記載する。また配置ノード管理テーブル720に、新しいレコードを追加して、ステップS1514で作成した仮想ボリュームに採番した番号、プライマリノードの番号、冗長化先ノードの番号を追記する。
ステップS1516では、冗長先ノード・応答記憶デバイス決定プログラム326は、当該仮想ボリュームの性能ポリシを取得する。ステップS1517では、冗長先ノード・応答記憶デバイス決定プログラム326は、配置ノード管理テーブル720およびキャッシュデバイス番号リスト420を参照し、当該仮想ボリュームのプライマリノードと冗長化先ノードで利用可能な記憶デバイスを取得する。
ステップS1518では、冗長先ノード・応答記憶デバイス決定プログラム326は、当該仮想ボリューム215の信頼性ポリシおよび性能ポリシに従って、プライマリノードおよび冗長化先ノードにおける、当該仮想ボリュームにライト要求があった時の応答記憶デバイスを決定する。決定方法は、例えば信頼性ポリシに要耐障害性と設定されている場合、不揮発記憶デバイスから応答先を決定する。不揮発メモリとしてSCMが使用可能なノードでは、性能ポリシがHIGHに設定されている場合はSCM、性能ポリシMIDDLEもしくはLOWに設定されている場合はドライブを選択する。また例えば信頼性ポリシに耐障害性不要と設定されている場合、揮発メモリとしてDRAMも使用でき、性能ポリシがHIGHの場合はDRAMを選択する。なお、応答記憶デバイスの決定方法は、これらの方法に限定しない。
ステップS1519では、冗長先ノード・応答記憶デバイス決定プログラム326は、応答記憶デバイス管理テーブル730に、プライマリノード、冗長化先ノードのレコードを追加し、ステップS1518で選択した応答記憶デバイスを記載する。
図16は、冗長先ノード・応答記憶デバイス変更処理に係るフローチャートの一例を示す図である。冗長先ノード・応答記憶デバイス変更プログラム327は、ストレージシステム100の使用者が仮想ボリュームのポリシを変更した時に実行され、仮想ボリューム215に設定された信頼性ポリシおよび性能ポリシから、仮想ボリューム215をどのノード120で冗長化するか、およびノード120に含まれるどの記憶デバイスに書き込まれた時点でホストに応答を返すか、を変更する。本プログラムは、ポリシ変更対象の仮想ボリューム215の番号と、変更前・変更後の信頼性ポリシと、変更前・変更後の性能ポリシとを引数として実行する。以下、詳細を説明する。
ステップS1601では、冗長先ノード・応答記憶デバイス変更プログラム327は、信頼性ポリシに変更があるかを判定する。信頼性ポリシに変更があると判定した場合は、ステップS1602に処理を進める。信頼性ポリシに変更がないと判定した場合は、ステップS1613に処理を進める。
ステップS1602では、冗長先ノード・応答記憶デバイス変更プログラム327は、仮想ボリューム管理テーブル710およびページマッピングテーブル740を参照して、ポリシ変更対象の仮想ボリューム215の属するストレージプール214上に存在する、他の仮想ボリューム215を探索する。
ステップS1603では、冗長先ノード・応答記憶デバイス変更プログラム327は、ステップS1602で探索した仮想ボリューム215の有無を判定する。当該ストレージプール214上にポリシ変更対象以外の仮想ボリューム215は存在すると判定した場合、ステップS1604に処理を進める。当該ストレージプール214上にポリシ変更対象以外の仮想ボリューム215は存在しないと判定した場合、ステップS1604に処理を進める。
ステップS1604では、冗長先ノード・応答記憶デバイス変更プログラム327は、ポリシ変更対象の仮想ボリューム215に設定された信頼性ポリシおよび、性能ポリシを冗長化先ノード・応答記憶デバイス決定プログラム326に渡し、同プログラムを実行し、仮想ボリューム215を作成する。
ステップS1605では、冗長先ノード・応答記憶デバイス変更プログラム327は、ポリシ変更対象の仮想ボリューム215の番号および、ステップS1605で作成した仮想ボリューム215の番号を仮想ボリューム移動プログラム328に渡し、同プログラムを実行し、ポリシ変更対象の仮想ボリューム215をステップS1605で作成した仮想ボリューム215と入れ替える。その後、プログラムを終了する。
ステップS1606では、冗長先ノード・応答記憶デバイス変更プログラム327は、変更前の信頼性ポリシと変更後の信頼性ポリシを比較し、ポリシ変更でポリシ変更対象の仮想ボリューム215の属するパリティグループ212において、論理ドライブ211の除外が必要であるかを判定する。論理ドライブ211の除外が必要であると判定した場合、ステップS1607に処理を進める。論理ドライブ211の除外が必要でないと判定した場合、ステップS1609に処理を進める。
ステップS1607では、冗長先ノード・応答記憶デバイス変更プログラム327は、ポリシ変更対象の仮想ボリューム215の属するパリティグループ212を構成する論理ドライブ211のうち、冗長化先ノードに存在する論理ドライブ211を除外する論理ドライブとして選択する。除外するドライブの例として、変更前の信頼性ポリシが「耐可用性ゾーン障害、2重化」、変更後の信頼性ポリシが「耐リージョン障害、2重化」である場合、冗長化先の別可用性ゾーンのノードに属する論理ドライブ211が除外対象となる。
ステップS1608では、冗長先ノード・応答記憶デバイス変更プログラム327は、ステップS1607で選択した論理ドライブ211を除外したのち、当該論理ドライブ211のデータを冗長化するために、当該論理ドライブ211と新しくパリティグループを組む論理ドライブを決定する。当該論理ドライブが新しくパリティグループを組む論理ドライブ211、および冗長化方式は、当該論理ドライブ211に格納されている仮想ボリューム215の信頼性ポリシをもとに決定する。
ステップS1609では、冗長先ノード・応答記憶デバイス変更プログラム327は、変更前の信頼性ポリシと変更後の信頼性ポリシを比較し、ポリシ変更でポリシ変更対象の仮想ボリューム215の属するパリティグループ212において、論理ドライブ211の追加が必要であるかを判定する。論理ドライブ211の追加が必要であると判定した場合、ステップS1610に処理を進める。論理ドライブ211の追加が必要でないと判定した場合、ステップS1611に処理を進める。
ステップS1610では、冗長先ノード・応答記憶デバイス変更プログラム327は、ポリシ変更対象の仮想ボリューム215の属するパリティグループ212に追加する論理ドライブ211を選択する。追加するドライブの例として、変更前の信頼性ポリシが「耐可用性ゾーン障害、2重化」、変更後の信頼性ポリシが「耐リージョン障害、2重化」である場合、プライマリノードの属するリージョンとは別リージョンに存在するノードに属する論理ドライブ211が追加対象となる。
ステップS1611では、冗長先ノード・応答記憶デバイス変更プログラム327は、パリティグループ構成変更プログラム329を実行し、ポリシ変更対象の仮想ボリューム215の属するパリティグループ212の構成を変更する。この時、ポリシ変更対象の仮想ボリューム215の属するパリティグループの番号と、ステップS1610で選択した追加する論理ドライブ211の番号のリストと、ステップS1607で選択した除外する論理ドライブ211の番号のリストと、ステップS1608で選択した、除外する論理ドライブ211のそれぞれと新たにパリティグループを組む論理ドライブ211の番号のリストと、除外する論理ドライブ211が新たに組むパリティグループの冗長化方式とを、パリティグループ構成変更プログラム329の引数にする。
ステップS1612では、冗長先ノード・応答記憶デバイス変更プログラム327は、配置ノード管理テーブル720の、ポリシ変更対象の仮想ボリューム215における冗長化先ノード番号リストから、ステップS1607で除外対象となった論理ドライブ211が属するノードを削除し、ステップS1610で追加対象となった論理ドライブ211が属するノードを追記する。
ステップS1613では、冗長先ノード・応答記憶デバイス変更プログラム327は、性能ポリシに変更があるかを判定する。性能性ポリシに変更があると判定した場合は、ステップS1614に処理を進める。信頼性ポリシに変更がないと判定した場合はステップS1617に処理を進める。
ステップS1614では、冗長先ノード・応答記憶デバイス変更プログラム327は、配置ノード管理テーブル720およびキャッシュデバイス番号リスト420を参照し、ポリシ変更対象の仮想ボリューム215のプライマリノードおよび、冗長化先ノードで利用可能な記憶デバイスを取得する。
ステップS1615では、冗長先ノード・応答記憶デバイス変更プログラム327は、ポリシ変更対象の仮想ボリューム215の信頼性ポリシおよび性能ポリシに従って、プライマリノードおよび冗長化先ノードにおける、当該仮想ボリュームにライト要求があった時の応答記憶デバイスを決定する。応答記憶デバイスの決定方法は、ステップS1518と同様である。
ステップS1616では、冗長先ノード・応答記憶デバイス変更プログラム327は、応答記憶デバイス管理テーブル730に、ステップS1615で選択した応答記憶デバイスを記載する。
ステップS1617では、冗長先ノード・応答記憶デバイス変更プログラム327は、冗長先ノード・応答記憶デバイス変更プログラム327は、仮想ボリューム710上の、ポリシ変更対象の仮想ボリューム215における信頼性ポリシおよび性能ポリシを変更後の内容に書き換える。
図17は、仮想ボリューム移動処理に係るフローチャートの一例を示す図である。仮想ボリューム移動プログラム328は、移動元の仮想ボリューム215のデータを、移動先仮想ボリューム215にコピーし、移動先の仮想ボリューム215の識別を移動元仮想ボリューム215の番号に書き換えることで、仮想ボリューム215を移動する。本プログラムは、移動元仮想ボリューム215の番号と、移動先仮想ボリューム215の番号とを引数して実行する。以下、詳細を説明する。
ステップS1701では、仮想ボリューム移動プログラム328は、移動元仮想ボリューム215の読み出し位置アドレス、移動先仮想ボリューム215の書き込み位置アドレスをそれぞれ0に設定する。
ステップS1702では、仮想ボリューム移動プログラム328は、移動元仮想ボリューム215の読み出し位置アドレスから連続した位置にあるデータを読み出す。データのサイズは例えば、1MBである。ステップS1703では、仮想ボリューム移動プログラム328は、移動先仮想ボリューム215の書き込み位置アドレスに、ステップS1702で読み出したデータを書き込む。
ステップS1704では、仮想ボリューム移動プログラム328は、読み出し位置アドレスおよび書き込み位置アドレスをステップS1702で読み出したデータのサイズ分、先に進める。
ステップS1705では、仮想ボリューム移動プログラム328は、読み出し位置アドレスが、移動元仮想ボリューム215の終端に達しているかを判定する。読み出し位置アドレスが移動元仮想ボリューム215の終端に達していると判定した場合は、ステップS1706に処理を進める。読み出し位置アドレスが移動元仮想ボリューム215の終端に達していないと判定した場合は、ステップS1702に再度処理を進める。
ステップS1706では、仮想ボリューム移動プログラム328は、仮想ボリューム管理テーブル314上の移動先仮想ボリューム215の番号を、移動元仮想ボリューム215の番号に書き換える。移動元仮想ボリューム215は削除する。
図18は、パリティグループ構成変更処理に係るフローチャートの一例を示す図である。パリティグループ構成変更プログラム329は、パリティグループの冗長化方式、パリティグループを構成するドライブを追加、削除する。本プログラムは、構成変更対象のパリティグループ212(以下、当該パリティグループ)の番号と、当該パリティグループに追加する論理ドライブ211の番号リスト(以下、追加論理ドライブ番号リスト)と、当該パリティグループから除外する論理ドライブ211の番号リスト(以下、除外論理ドライブ番号リスト)と、除外する論理ドライブ211のそれぞれと新たにパリティグループを組む論理ドライブ211の番号リストと、除外する論理ドライブ211が新たに組むパリティグループの冗長化方式とを引数として実行する。以下、詳細を説明する。
ステップS1801では、パリティグループ構成変更プログラム329は、パリティグループ212に対して行う変更の種別を判定する。引数の追加論理ドライブ番号リストおよび除外論理ドライブ番号リストの両方に論理ドライブ211が含まれていて、パリティグループ212に対して行う変更を論理ドライブ入れ替えと判定した場合、ステップS1802に処理を進める。除外論理ドライブ番号リストは論理ドライブ211を含むが、追加論理ドライブ番号リストは論理ドライブ211を含んでおらず、パリティグループ212に対して行う変更を論理ドライブ除外と判定した場合、ステップS1810に処理を進める。追加論理ドライブ番号リストは論理ドライブ211を含むが、除外論理ドライブ番号リストは論理ドライブ211を含んでおらず、パリティグループ212に対して行う変更を論理ドライブ追加と判定した場合、ステップS1818に処理を進める。
ステップS1802では、パリティグループ構成変更処理プログラム329は、引数の追加論理ドライブ番号リストから、新しく当該パリティグループに追加する論理ドライブ(以下、追加論理ドライブ)を1個選択し、同じく引数に含まれる除外論理ドライブ番号リストから当該パリティグループから除外する論理ドライブ(以下、除外論理ドライブ)を1個選択する。ステップS1803では、パリティグループ構成変更処理プログラム329は、パリティグループ管理テーブル520の当該パリティグループの情報のうち、状態を、構成変更を示す内容に書き換え(例えば「変更」)、論理ドライブ番号リストに除外論理ドライブの追加論理ドライブとの入れ替え処理を行っていることを示す内容を記載する。
ステップS1804では、パリティグループ構成変更処理プログラム329は、当該パリティグループを構成する論理ドライブのうち、除外論理ドライブを除く論理ドライブと、追加論理ドライブ間でデータを冗長化する。パリティデータはストライプマッピングテーブル(以下、SMT)を参照し、論理ドライブ211に設けられた予備領域に書き込む。
ステップS1805では、パリティグループ構成変更処理プログラム329は、除外論理ドライブのデータを引き続き保護するため新しくパリティグループを作成し、パリティグループ管理テーブル520にレコードを追加して、新たに採番した番号を記載し、冗長化ポリシに引数で指定された冗長化方式を記載し、論理ドライブ番号リストに除外論理ドライブの番号と、除外論理ドライブと新たにパリティグループを組む論理ドライブの番号とを記載し、状態にパリティグループが作成処理状態であることを示す内容(例えば「作成」)を記載する。
ステップS1806では、パリティグループ構成変更処理プログラム329は、除外論理ドライブと、除外論理ドライブと新たにパリティグループを組む論理ドライブ間で、引数で指定された冗長化方式にて、データを冗長化する。パリティデータはSMTを参照し、論理ドライブに設けられた予備領域に書き込む。
ステップS1807では、パリティグループ構成変更処理プログラム329は、当該パリティグループのSMTおよび、ステップS1805で新規に作成したパリティグループのSMTを更新し、予備領域に書き込んだ変更後のパリティグループでのパリティデータを、変更前のパリティグループのパリティデータの領域に上書きする。
ステップS1808では、パリティグループ構成変更処理プログラム329は、パリティグループ管理テーブル520における、当該パリティグループの情報のうち、状態を、構成変更を行っていないこと示す内容(例えば「正常」)に書き換え、論理ドライブ番号リストから除外論理ドライブの番号を削除して、追加論理ドライブの番号を追加する。またパリティグループ構成変更処理プログラム329は、パリティグループ管理テーブル520における、ステップS1805で作成したパリティグループの情報のうち、状態を、構成変更を行っていないこと示す内容(例えば「正常」)に書き換える。
ステップS1809では、パリティグループ構成変更処理プログラム329は、追加論理ドライブ番号リストおよび除外論理ドライブ番号リストを参照し、入れ替え処理対象の論理ドライブ211がまだ存在するかを判定する。入れ替え処理対象の論理ドライブ211がまだ存在すると判定した場合は、ステップS1802に処理を進める。入れ替え処理対象の論理ドライブ211が存在しない(論理ドライブ211の入れ替え処理がすべて終わった)と判定した場合は、プログラムを終了する。
ステップS1810では、パリティグループ構成変更処理プログラム329は、引数に含まれる除外論理ドライブ番号リストから当該パリティグループから除外する論理ドライブ(以下、除外論理ドライブ)を1個選択する。ステップS1811では、パリティグループ構成変更処理プログラム329は、パリティグループ管理テーブル520の当該パリティグループの情報のうち、状態を、構成変更を示す内容に書き換え(例えば「変更」)、論理ドライブ番号リストに除外論理ドライブの除外処理を行っていることを示す内容を記載する。
ステップS1812では、パリティグループ構成変更処理プログラム329は、当該パリティグループを構成する論理ドライブのうち、除外論理ドライブを除く論理ドライブの間でデータを冗長化する。パリティデータはSMTを参照し、論理ドライブ211に設けられた予備領域に書き込む。
ステップS1813では、パリティグループ構成変更処理プログラム329は、除外論理ドライブのデータを引き続き保護するため新しくパリティグループを作成し、パリティグループ管理テーブル520にレコードを追加して、新たに採番した番号を記載し、冗長化ポリシに引数で指定された冗長化方式を記載し、論理ドライブ番号リストに除外論理ドライブの番号と、除外論理ドライブと新たにパリティグループを組む論理ドライブの番号とを記載し、状態にパリティグループが作成処理状態であることを示す内容(例えば「作成」)を記載する。
ステップS1814では、パリティグループ構成変更処理プログラム329は、除外論理ドライブと、除外論理ドライブと新たにパリティグループを組む論理ドライブ間で、引数で指定された冗長化方式にて、データを冗長化する。パリティデータはSMTを参照し、論理ドライブに設けられた予備領域に書き込む。
ステップS1815では、パリティグループ構成変更処理プログラム329は、当該パリティグループのSMTおよび、ステップS1813で新規に作成したパリティグループのSMTを更新し、予備領域に書き込んだ変更後のパリティグループでのパリティデータを、変更前のパリティグループのパリティデータの領域に上書きする。
ステップS1816では、パリティグループ構成変更処理プログラム329は、パリティグループ管理テーブル520における、当該パリティグループの情報のうち、状態を、構成変更を行っていないこと示す内容(例えば「正常」)に書き換え、論理ドライブ番号リストから除外論理ドライブの番号を削除する。またパリティグループ構成変更処理プログラム329は、パリティグループ管理テーブル520における、ステップS1813で作成したパリティグループの情報のうち、状態を、構成変更を行っていないこと示す内容(例えば「正常」)に書き換える。
ステップS1817では、パリティグループ構成変更処理プログラム329は、除外論理ドライブ番号リストを参照し、除外処理対象の論理ドライブ211がまだ存在するかを判定する。除外処理対象の論理ドライブ211がまだ存在すると判定した場合は、ステップS1810に処理を進める。除外処理対象の論理ドライブ211が存在しない(論理ドライブ211の除外処理がすべて終わった)と判定した場合は、プログラムを終了する。
ステップS1818では、パリティグループ構成変更処理プログラム329は、引数に含まれる追加論理ドライブ番号リストから、新しく構成変更対象の当該パリティグループに追加する論理ドライブ(以下、追加論理ドライブ)を1個選択する。ステップS1819では、パリティグループ構成変更処理プログラム329は、パリティグループ管理テーブル520の当該パリティグループの情報のうち、状態を、構成変更を示す内容に書き換え(例えば「変更」)、論理ドライブ番号リストに追加論理ドライブの追加処理を行っていることを示す内容を記載する。
ステップS1820では、パリティグループ構成変更処理プログラム329は、当該パリティグループを構成する論理ドライブと、追加論理ドライブ間でデータを冗長化する。パリティデータはSMTを参照し、論理ドライブ211に設けられた予備領域に書き込む。
ステップS1821では、パリティグループ構成変更処理プログラム329は、当該パリティグループのSMTを更新し、予備領域に書き込んだ変更後のパリティグループでのパリティデータを、変更前のパリティグループのパリティデータの領域に上書きする。
ステップS1822では、パリティグループ構成変更処理プログラム329は、パリティグループ管理テーブル520における、当該パリティグループの情報のうち、状態を、構成変更を行っていないこと示す内容(例えば「正常」)に書き換え、論理ドライブ番号リストに追加論理ドライブの番号を追加する。
ステップS1823では、パリティグループ構成変更処理プログラム329は、追加論理ドライブ番号リストを参照し、追加処理対象の論理ドライブ211がまだ存在するかを判定する。追加処理対象の論理ドライブ211がまだ存在すると判定した場合は、ステップS1818に処理を進める。追加処理対象の論理ドライブ211が存在しない(論理ドライブ211の追加処理がすべて終わった)と判定した場合は、プログラムを終了する。
図19は、パフォーマンスモニタ処理に係るフローチャートの一例を示す図である。パフォーマンスモニタプログラム330は、ノード120から各種性能情報を取得し、パフォーマンスモニタ情報管理テーブル316を更新する。以下、詳細を説明する。ステップS1901では、パフォーマンスモニタ処理プログラム330は、ノード120に属するプロセッサ121の使用率を取得し、プロセッサパフォーマンス情報テーブル910にプロセッサ番号ごとに使用率を記載する。
ステップS1902では、パフォーマンスモニタ処理プログラム330は、ノード120のメモリ122の残容量を取得し、メモリパフォーマンス情報テーブル920に記載する。
ステップS1903では、パフォーマンスモニタ処理プログラム330は、ノード120に属するドライブのリードIOPSと、ライトIOPSと、リード帯域と、ライト帯域とを採取し、ドライブパフォーマンス情報テーブル930にドライブ番号ごとにリードIOPSと、ライトIOPSと、リード帯域と、ライト帯域とを記載する。
ステップS1904では、パフォーマンスモニタ処理プログラム330は、ノード120に属するNICの受信帯域と、送信帯域を取得し、ネットワークパフォーマンス情報テーブル940にポート番号ごとに、受信帯域と送信帯域と最大帯域から算出される帯域使用率と、受信帯域と、送信帯域を記載する。
ステップS1905では、パフォーマンスモニタ処理プログラム330は、ノード120と、他のノード120間のネットワークの遅延時間と、再送率とを取得し、ノード間ネットワーク品質情報テーブルに、ノード番号ごとに、遅延時間と、再送率とを記載する。
ステップS1906では、パフォーマンスモニタ処理プログラム330は、一定期間休止する。休止期間が終了すると、再度ステップS1901に戻り処理を進める。
図20は、性能モニタベース冗長化先切替処理に係るフローチャートの一例を示す図である。性能モニタベース冗長化先切替プログラム331は、パフォーマンスモニタ情報管理テーブル316上のノード間ネットワーク品質情報テーブル950の情報を参照し、遅延時間が大きいもしくは再送率が高い2ノード間の論理ドライブ211で構成されるパリティグループ212を、他のノードとの冗長化構成に組み替える。性能モニタベース冗長化先切替プログラム331は、各ノードに対してそれぞれ実行される。以下、詳細を説明する。
ステップS2001では、性能モニタベース冗長化先切替プログラム331は、実行対象ノード120(以下、当該ノード)のノード間ネットワーク品質情報テーブル950を参照し、各他ノード120と当該ノード間ネットワークの遅延時間と、再送率とを取得する。
ステップS2002では、性能モニタベース冗長化先切替プログラム331は、ステップS2001で取得した各ノードの遅延時間情報のうち、閾値以上の遅延時間のノード120が存在するかを判定する。閾値以上の遅延時間のノード120が存在すると判定した場合、ステップS2004に処理を進める。閾値以上の遅延時間のノード120が存在しないと判定した場合、ステップS2003に処理を進める。
ステップS2003では、性能モニタベース冗長化先切替プログラム331は、ステップS2001で取得した各ノードの再送率情報のうち、閾値以上の再送率を持つノード120が存在するかを判定する。閾値以上の再送率のノード120が存在すると判定した場合、ステップS2004に処理を進める。閾値以上の再送率のノード120が存在しないと判定した場合、ステップS2014に処理を進める。
ステップS2004では、性能モニタベース冗長化先切替プログラム331は、当該ノードにおいて、当該ノードの論理ドライブ211と、ステップS2002で検出したノード120またはステップS2003で検出したノード120(以下、除外対象ノード)の論理ドライブ211(以下、除外論理ドライブ)とで構成されるパリティグループ212を検索する。なお、ノード間ネットワークの遅延時間もしくはノード間ネットワークの再送率を除外対象ノード選択の基準の例としたが、除外対象ノードは他の性能情報等に基づき選択されてもよい。
ステップS2005では、性能モニタベース冗長化先切替プログラム331は、ステップS2004において検索に一致するパリティグループ212が存在するかを判定する。検索に一致するパリティグループ212が存在すると判定した場合、ステップS2006に処理を進める。検索に一致するパリティグループ212が存在しないと判定した場合、ステップS2014に処理を進める。
ステップS2006では、性能モニタベース冗長化先切替プログラム331は、ステップS2005での検索に一致したパリティグループ212から、パリティグループ212を1個選択する。
ステップS2007では、性能モニタベース冗長化先切替プログラム331は、ステップS2006で選択したパリティグループ212(以下、構成変更対象パリティグループ)から、除外論理ドライブを除外した後も、そのノード120の論理ドライブ211を追加すれば構成変更対象パリティグループの冗長度を保てるノード120を検索する。ノード120は、構成変更対象パリティグループを構成する当該ノードの論理ドライブ211上に格納されている仮想ボリューム215の信頼性ポリシをもとに決定する。
ステップS2008では、性能モニタベース冗長化先切替プログラム331は、ノード間ネットワーク品質情報テーブル950を参照し、ステップS2007で選択したノードのうち、当該ノードとの間の遅延時間、再送率がともに閾値未満となるノード120が存在するかを判定する。当該ノードとの間の遅延時間、再送率がともに閾値未満となるノード120が存在すると判定した場合、ステップS2010に処理を進める。当該ノードとの間の遅延時間、再送率がともに閾値未満となるノード120が存在しないと判定した場合、ステップS2009に処理を進める。
ステップS2009では、性能モニタベース冗長化先切替プログラム331は、ノード間ネットワーク品質情報テーブル950を参照し、ステップS2007で選択したノードのうち、当該ノードとの間の遅延時間、再送率が、除外対象ノードと当該ノード間の遅延時間未満、再送率未満となるノード120が存在するかを判定する。該当するノード120が存在すると判定した場合、ステップS2010に処理を進める。該当するノード120が存在しないと判定した場合、ステップS2014に処理を進める。
ステップS2010では、性能モニタベース冗長化先切替プログラム331は、ステップS2008で検出したノード120またはステップS2009で検出したノード120のうち1ノードを選択する。さらに選択したノード120に含まれる論理ドライブ211から、構成変更対象パリティグループに追加する論理ドライブ211(以下、追加論理ドライブ)を選択する。なお、ノード間ネットワークの遅延時間もしくはノード間ネットワークの再送率を追加論理ドライブ選択の基準の例としたが、追加論理ドライブは他の性能情報等に基づき選択されてもよい。
ステップS2011では、性能モニタベース冗長化先切替プログラム331は、構成変更対象パリティグループから除外論理ドライブを除外したのち、除外論理ドライブのデータを再度冗長化するために、除外論理ドライブと新しくパリティグループを組む論理ドライブ211を決定する。除外論理ドライブが新しくパリティグループを組む論理ドライブ211、および冗長化方式は、除外論理ドライブ211に格納されている仮想ボリューム215の信頼性ポリシをもとに決定する。
ステップS2012では、性能モニタベース冗長化先切替プログラム331は、パリティグループ構成変更プログラム329を実行し、構成変更対象パリティグループの構成を変更する。この時、構成変更対象パリティグループの番号と、ステップS2010で決定した追加論理ドライブの番号、除外論理ドライブ、ステップS2011で決定した除外論理ドライブと新たにパリティグループを組む論理ドライブ211の番号のリストと、除外論理ドライブが新たに組むパリティグループの冗長化方式とを、パリティグループ構成変更プログラム329の引数にする。
ステップS2013では、性能モニタベース冗長化先切替プログラム331は、ステップS2005で検出したすべてのパリティグループ212で構成変更を実施済であるかを判定する。ステップS2005で検出したすべてのパリティグループ212で構成変更を実施済と判定した場合は、ステップS2014に処理を進める。ステップS2005で検出したパリティグループ212のうち、構成変更をまだ実施していないものがあると判定した場合は、ステップS2006に処理を進め、次のパリティグループ212に対して構成変更を進める。
ステップS2014では、性能モニタベース冗長化先切替プログラム331は、一定期間休止する。休止期間が終了すると、再度ステップS2001に戻り処理を進める。
図21は、性能指標ベースポリシ決定処理に係るフローチャートの一例を示す図である。性能指標ベースポリシ決定処理プログラム332は、ストレージシステム100の使用者が仮想ボリューム作成操作時に入力した性能指標もしくは仮想ボリュームの性能指標変更操作時に入力した性能指標から、仮想ボリューム215の信頼性ポリシ、性能ポリシを決定する。性能指標ベースポリシ決定処理プログラム332は、図21Aに示す、あらかじめ信頼性ポリシ、性能ポリシの性能を見積もる性能見積処理部と、図21Bに示す入力した性能指標から信頼性ポリシ、性能ポリシを選択するポリシ決定部からなる。
以下、図21Aに示す性能見積処理部の詳細を説明する。性能見積処理部は、ストレージシステム100を構成する全ノード120に対して実行する。性能見積処理部は、対象の当該ノードにおいてある信頼性ポリシ、性能ポリシを適用した仮想ボリューム215を作成した時の性能を見積もる。
ステップS2101で、性能指標ベースポリシ決定処理プログラム332は、見積を行う信頼性ポリシを決定する。ポリシの組は当該ストレージシステム100で選択可能なすべての信頼性ポリシでもよいし、一部のみ(例えば、「耐障害性なし」、「耐ノード障害、2重」、「耐可用性ゾーン障害2重」等)でもよい。
ステップS2102で、性能指標ベースポリシ決定処理プログラム332は、ステップS2101で選択した信頼性ポリシ(以下、当該信頼性ポリシ)のうち、性能見積を行っていない信頼性ポリシを1個選択する。
ステップS2103で、性能指標ベースポリシ決定処理プログラム332は、当該信頼性ポリシがデータ保護を行う信頼性ポリシであるかを判定する。当該信頼性ポリシがデータ保護を行う信頼性ポリシであると判定した場合、ステップS2109に処理を進める。当該信頼性ポリシがデータ保護を行わない信頼性ポリシであると判定した場合、ステップS2104に処理を進める。
ステップS2104で、性能指標ベースポリシ決定処理プログラム332は、クラスタ構成管理テーブル311のノード構成テーブル420と、ドライブ構成管理テーブル430と、キャッシュデバイス構成管理テーブル440とを参照し、当該ノードで応答記憶デバイスとして使用できるデバイス(ドライブ124、メモリ122(DRAM、SCM等))と、それぞれの性能を示す性能情報(High、Middle、Low等)を取得する。
ステップS2105で、性能指標ベースポリシ決定処理プログラム332は、ステップS2104で取得したデバイスから、まだ見積対象となっていないデバイスを選択する。この時、デバイスは性能が高い順番に選択する。
ステップS2106で、性能指標ベースポリシ決定処理プログラム332は、ステップS2105で選択したデバイスを応答記憶デバイスとする、仮想ボリューム215の性能を見積もる。見積方法は、当該信頼性ポリシおよび前記応答記憶デバイスを実際に適用した仮想ボリューム215に対してストレージプログラム200が別途実行するパフォーマンスモニタ結果から性能を見積もる方法でもよいし、性能指標ベースポリシ決定処理プログラム332が当該信頼性ポリシおよび前記応答記憶デバイスを使用した時の性能をあらかじめ固定値として保持しておき、これを見積性能に設定する方法でもよいし、他の方法でもよい。ここで見積もる性能は、例えば1秒あたりのIO処理コマンド数、応答時間であるが、IO処理コマンド数、応答時間に限定するものではない。
ステップS2107で、性能指標ベースポリシ決定処理プログラム332は、ポリシ性能情報管理テーブル317のポリシ性能情報テーブル2230にレコードを追記し、ポリシIDを採番して記載し、当該ノード番号を記載し、ステップS2106で見積もった性能を、当該信頼性ポリシにおける、性能ポリシがステップS2105で選択した応答記憶デバイスの性能情報である時(例えば、応答記憶デバイスを性能情報が「High」のDRAMとしたときは、性能ポリシは「High」となる)の見積性能として記載する。
ステップS2108で、性能指標ベースポリシ決定処理プログラム332は、ステップS2104で取得したすべてのデバイスで性能を見積もったかを判定する。取得したすべてのデバイスで性能を見積もったと判定した場合、ステップS2118に処理を進める。取得したデバイスのうち性能を見積もっていないデバイスがあると判定した場合、ステップS2105に処理を進め、次のデバイスでの性能を見積もる。
ステップS2109で、性能指標ベースポリシ決定処理プログラム332は、クラスタ構成管理テーブル311のノード構成テーブル420と、ドライブ構成管理テーブル430と、キャッシュデバイス構成管理テーブル440とを参照し、当該ノードで応答記憶デバイスとして使用できる不揮発デバイス(ドライブ124、メモリ122(SCM等))と、それぞれの性能を示す性能情報(Middle、Low等)を取得する。
ステップS2110で、性能指標ベースポリシ決定処理プログラム332は、ステップS2109で取得したデバイスから、まだ見積対象となっていないデバイスを選択する。この時、デバイスは性能が高い順番に選択する。
ステップS2111で、性能指標ベースポリシ決定処理プログラム332は、データ冗長化先ノードとして当該信頼性ポリシを満たすノード120を取得する。
ステップS2112で、性能指標ベースポリシ決定処理プログラム332は、ステップS2111で取得したノード120のうち、冗長化先とする1個以上ノードを選択する。ノードを選択する方式は、パフォーマンスモニタ管理テーブル316のノード間ネットワーク品質情報テーブル950を参照し、当該ノードとのネットワーク品質が良いノード120を選択する方法でもよいし、他の方法でもよい。
ステップS2113で、性能指標ベースポリシ決定処理プログラム332は、クラスタ構成管理テーブル311のノード構成テーブル420と、ドライブ構成管理テーブル430と、キャッシュデバイス構成管理テーブル440とを参照し、ステップS2112で選択したノード120で応答記憶デバイスとして使用できる不揮発デバイス(ドライブ124、メモリ122(SCM等))と、それぞれの性能を示す性能情報(Middle、Low等)を取得する。
ステップS2114で、性能指標ベースポリシ決定処理プログラム332は、ステップS2113で取得したデバイスから、まだ見積対象となっていないデバイスを選択する。この時、デバイスは性能が高い順番に選択する。
ステップS2115で、性能指標ベースポリシ決定処理プログラム332は、当該ノードをプライマリノードとし、ステップS2110で選択したデバイスをプライマリノードの応答記憶デバイスとし、ステップS2112で選択したノード120を冗長化先ノードとし、ステップS2114で選択したデバイスを冗長化先ノードの応答記憶デバイスとする仮想ボリューム215の性能を見積もる。見積方法は、当該信頼性ポリシおよび前記応答記憶デバイスを実際に適用した仮想ボリューム215に対してストレージプログラム200が別途実行するパフォーマンスモニタ結果から性能を見積もる方法でもよいし、性能指標ベースポリシ決定処理プログラム332が当該信頼性ポリシおよび前記応答記憶デバイスを使用した時の性能をあらかじめ固定値として保持しておき、これを見積性能に設定する方法でもよいし、他の方法でもよい。ここで見積もる性能は、例えば1秒あたりのIO処理コマンド数、応答時間であるが、IO処理コマンド数、応答時間に限定するものではない。
ステップS2116で、性能指標ベースポリシ決定処理プログラム332は、ポリシ性能情報管理テーブル317のポリシ性能情報テーブル2330にレコードを追記し、ポリシIDを採番して記載し、当該ノード番号を記載し、ステップS2115で見積もった性能を、当該信頼性ポリシにおける、性能ポリシがステップS2110で選択した応答記憶デバイスの性能情報である時(例えば、応答記憶デバイスを性能情報が「Middle」のSCMとしたときは、性能ポリシは「Middle」となる)の見積性能として記載する。ステップS2117で、性能指標ベースポリシ決定処理プログラム332は、ステップS2109で取得したすべてのデバイスで性能を見積もったかを判定する。取得したすべてのデバイスで性能を見積もったと判定した場合、ステップS2118に処理を進める。取得したデバイスのうち性能を見積もっていないデバイスがあると判定した場合、ステップS2110に処理を進め、次のデバイスでの性能を見積もる。
ステップS2118で、性能指標ベースポリシ決定処理プログラム332は、ステップS2101で選択したすべての信頼性ポリシで性能を見積もったかを判定する。選択したすべての信頼性ポリシで性能を見積もったと判定した場合、プログラムを終了する。選択したすべての信頼性ポリシのうち性能を見積もっていない信頼性ポリシがあると判定した場合、ステップS2102に処理を進め、次の信頼性ポリシでの性能を見積もる。
以下、図21Bに示すポリシ決定部の詳細を説明する。ステップS2230で、性能指標ベースポリシ決定処理プログラム332は、ストレージシステム100の使用者が入力した、性能指標を取得する。
ステップS2231で、性能指標ベースポリシ決定処理プログラム332は、ポリシ性能情報管理テーブル317のポリシ性能情報テーブル2330を参照し、ステップS2230で取得した性能指標を満たす信頼性ポリシ、性能ポリシの組を検索する。
ステップS2232で、性能指標ベースポリシ決定処理プログラム332は、ステップS2231の結果から、性能指標を満たす信頼性ポリシ、性能ポリシの組が存在するかを判定する。性能指標を満たす信頼性ポリシ、性能ポリシの組が存在すると判定した場合、ステップS2233に処理を進める。性能指標を満たす信頼性ポリシ、性能ポリシの組が存在しないと判定した場合、使用者に性能指標を満たす信頼性ポリシ、性能ポリシの組が存在しないことを通知した上でプログラムを終了する。
ステップS2233で、性能指標ベースポリシ決定処理プログラム332は、性能指標を満たす信頼性ポリシ、性能ポリシの組から1組だけ選択する。選択する方法は、ストレージシステム100の使用者に性能指標を満たすポリシの組をすべて提示し、そこから1組を選択させる方法でもよいし、プログラムが最も性能の高いポリシの組を選択する方法でもよいし、他の方法でもよい。
ステップS2234で、性能指標ベースポリシ決定処理プログラム332は、ポリシ決定部の処理を呼び出したのが何の操作であるかを判定する。操作を仮想ボリューム作成操作と判定した場合、ステップS2235に処理を進める。操作を仮想ボリュームの性能指標変更処理と判定した場合、ステップS2236に処理を進める。
ステップS2235で、性能指標ベースポリシ決定処理プログラム332は、ステップS2233で選択した信頼性ポリシ、性能ポリシ、ポリシの組に紐づくノードを引数として、冗長化先ノード・応答記憶デバイス決定プログラム326を実行し、仮想ボリューム215を作成する。
ステップS2236で、性能指標ベースポリシ決定処理プログラム332は、ステップS2233で選択した信頼性ポリシ、性能ポリシを引数として、冗長先ノード・応答記憶デバイス変更プログラム327を実行し、仮想ボリュームの両ポリシを変更する。
図22は、ポリシ性能情報管理テーブルの一例を示す図である。ポリシ性能情報管理テーブル317は、信頼性ポリシと性能ポリシを仮想ボリュームに適用した時の性能見積情報を管理する。ポリシ性能情報管理テーブル317は、ポリシ性能情報テーブル2330を含む。
ポリシ性能情報テーブル2330は、各ノードにおいて信頼性ポリシと性能ポリシの組を仮想ボリュームに適用した時の性能見積情報を管理する。より具体的には、ポリシ性能情報テーブル2330は、ポリシ番号2231、ノード番号2332、信頼性ポリシ2333、性能ポリシ2334、IO処理コマンド数2335、応答時間2336を対応づけて管理する。
ポリシ番号2331は、ポリシの組を識別可能な識別情報である。ノード番号2332はポリシの性能見積を行ったノード120を識別可能な識別情報である。信頼性ポリシ2233は、見積で設定した信頼性ポリシを示す情報である。性能ポリシ2234は、見積で設定した性能ポリシを示す情報である。IO処理コマンド数2235は、当該ノードの当該ポリシを適用した仮想ボリュームにおける1秒あたりの見積IO処理コマンド数を示す情報であり、単位は例えばKIOPS(Kilo Input Output Per Second)である。応答時間2236は、当該ノードの当該ポリシを適用した仮想ボリュームにおける見積応答時間を示す情報であり、単位は例えばms(ミリ秒)である。
なお、ポリシ性能情報テーブル2330に記載する性能情報は、例えば1秒あたりのIO処理コマンド数、応答時間であるが、IO処理コマンド数、応答時間に限定するものではない。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
100:ストレージシステム、101:リージョン、102:可用性ゾーン、120:ノード、110,130:ネットワーク、141:アプリケーション(ホスト)、200:ストレージプログラム、214:ストレージプール、215:仮想ボリューム

Claims (14)

  1. ネットワークを介して互いに接続する複数のノードと、記憶デバイスと、を備え、
    当該複数のノードの夫々は、前記記憶デバイスに対して入出力されるデータを処理するプロセッサと、メモリと、を有する、
    ストレージシステムであって、
    前記プロセッサは、
    ホストがアクセスするボリュームを提供し、
    データの信頼性に係る信頼性ポリシと、前記ボリュームへのアクセスに対する応答性能に係る性能ポリシとを、当該ボリュームに設定し、
    前記信頼性ポリシに基づいて、前記ボリュームにかかるデータを処理するノードに対する、当該データの冗長データを処理するノードを決定し、
    前記性能ポリシに基づいて、前記ボリュームへのアクセスに対する結果を応答するために前記データまたは前記冗長データを格納するメモリまたは記憶デバイスを、それぞれのノードに対して決定し、
    前記ホストからライト要求を受信した場合に、前記ライト要求にかかるデータを前記データを処理するノードの前記性能ポリシに基づいて決定されたメモリまたは記憶デバイスに格納され、その冗長データが前記冗長データを処理するノードの前記性能ポリシに基づいて決定されたメモリまたは記憶デバイスに格納されたら、前記ホストに応答する
    ストレージシステム。
  2. 前記プロセッサは、
    前記性能ポリシに基づいて、前記データを処理するノードと前記冗長データを処理するノードに対して、異なるメモリまたは記憶デバイスを決定する、
    請求項1記載のストレージシステム。
  3. 前記プロセッサは、
    前記決定されたノードにおいて、メモリにデータが格納されて前記ホストに応答した後、前記メモリから前記記憶デバイスに前記データを移動させる、
    請求項2記載のストレージシステム。
  4. 前記プロセッサは、
    前記信頼性ポリシ、及び/又は、前記性能ポリシを、前記ホストから前記ボリュームへのアクセスが発生中に変更でき、前記信頼性ポリシ、及び、前記性能ポリシに基づき、前記データの冗長化の要否、当該データの冗長化の対象ノード、及び、データ格納先の記憶デバイスを変更し、変更後の記憶デバイスにデータを書き込み、前記ホストに応答する、
    請求項1記載のストレージシステム。
  5. 複数の可用性ゾーンを備え、当該複数の可用性ゾーンの夫々は、前記ノードを複数備え、
    前記信頼性ポリシに基づいて、前記データ及び冗長データを同一可用性ゾーンに属する複数のノードに格納するか、複数の可用性ゾーンに属する複数のノードに跨って格納するか、を決定する、
    請求項1記載のストレージシステム。
  6. 前記プロセッサは、
    前記冗長データを格納するノードとして、前記複数のノードのうち、低負荷のノードを選択する、
    請求項5記載のストレージシステム。
  7. 前記プロセッサは、
    前記データの冗長データを格納するノードを前記ネットワークの通信状態に基づいて決定する、
    請求項4記載のストレージシステム。
  8. 前記プロセッサは、
    前記信頼性ポリシが前記ボリュームに適用されるデータの冗長化を要しないというものである場合、
    前記メモリに前記データを格納して前記ホストに前記アクセスに対する応答を返す、
    請求項2記載のストレージシステム。
  9. 前記プロセッサは、
    前記信頼性ポリシが前記データの冗長化を要するというものである場合、
    前記アクセスに対する前記ホストへの応答を、前記複数のノードのうち2以上のノードの夫々について、前記複数の記憶デバイスのうち異なる種類の記憶デバイスへのデータの格納に基づいて、実行する、
    請求項2記載のストレージシステム。
  10. 前記プロセッサは、
    前記信頼性ポリシが前記データの冗長化を要するというものである場合、
    前記アクセスに対する前記ホストへの応答を、前記複数のノードのうち2以上のノードの夫々について、同じ種類の記憶デバイスへの前記データの格納に基づいて、実行する、
    請求項2記載のストレージシステム。
  11. 前記プロセッサは、
    前記ボリュームに適用されるデータの冗長データとして、当該データの複製データを用いる、
    請求項1記載のストレージシステム。
  12. 前記プロセッサは、
    ユーザが設定した性能指標値を満たせるように、前記信頼性ポリシと前記性能ポリシとを決定する、
    請求項1記載のストレージシステム。
  13. ネットワークを介して互いに接続する複数のノードと、記憶デバイスと、を備え、当該複数のノードの夫々は、前記記憶デバイスに対して入出力されるデータを処理するプロセッサと、メモリと、を有する、ストレージシステムのデータ処理方法であって、
    前記プロセッサは、
    ホストがアクセスするボリュームを提供し、
    データの信頼性に係る信頼性ポリシと、前記ボリュームへのアクセスに対する応答性能に係る性能ポリシとを、当該ボリュームに設定し、
    前記信頼性ポリシに基づいて、前記ボリュームにかかるデータを処理するノードに対する、当該データの冗長データを処理するノードを決定し、
    前記性能ポリシに基づいて、前記ボリュームへのアクセスに対する結果を応答するために前記データまたは前記冗長データを格納するメモリまたは記憶デバイスを、それぞれのノードに対して決定し、
    前記ホストからライト要求を受信した場合に、前記ライト要求にかかるデータを前記データを処理するノードの前記性能ポリシに基づいて決定されたメモリまたは記憶デバイスに格納され、その冗長データが前記冗長データを処理するノードの前記性能ポリシに基づいて決定されたメモリまたは記憶デバイスに格納されたら、前記ホストに応答する、
    ストレージシステムのデータ処理方法。
  14. プロセッサと記憶デバイスとを備え、互いにネットワークで接続された複数のノードを有するストレージシステムにおいて、
    前記記憶デバイスには、不揮発性記憶デバイスと、アクセス速度の速い揮発性記憶デバイスと、が含まれており、
    前記プロセッサは、
    データを冗長化して複数のノードに格納しており、
    ライト要求を受けた場合に、前記ライト要求を受けたノードが、前記データを格納すべき複数の他のノードに前記データを転送するようにし、
    前記複数の他のノードが、受信した前記データを揮発性記憶デバイスに格納して前記ライト要求を受けたノードに応答し、前記応答後に前記データを前記揮発性デバイスから前記不揮発性記憶デバイスに移動するようにし、
    前記ライト要求を受けたノードが、前記データを揮発性記憶デバイスに格納し、前記データを転送した全ての前記他のノードから応答を受信した場合に、前記ライト要求の要求元に応答するようにした、
    ストレージシステム。
JP2022041870A 2022-03-16 2022-03-16 ストレージシステム Pending JP2023136323A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022041870A JP2023136323A (ja) 2022-03-16 2022-03-16 ストレージシステム
US17/940,371 US20230297241A1 (en) 2022-03-16 2022-09-08 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022041870A JP2023136323A (ja) 2022-03-16 2022-03-16 ストレージシステム

Publications (1)

Publication Number Publication Date
JP2023136323A true JP2023136323A (ja) 2023-09-29

Family

ID=88066876

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022041870A Pending JP2023136323A (ja) 2022-03-16 2022-03-16 ストレージシステム

Country Status (2)

Country Link
US (1) US20230297241A1 (ja)
JP (1) JP2023136323A (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334574A (ja) * 2003-05-08 2004-11-25 Hitachi Ltd ストレージの運用管理プログラム、運用管理方法及び管理計算機
JP2006106993A (ja) * 2004-10-04 2006-04-20 Hitachi Ltd ストレージの予約管理方法及びストレージ管理システム
JP5879117B2 (ja) * 2011-12-19 2016-03-08 株式会社日立製作所 情報処理システムおよび運用管理方法
US9317205B2 (en) * 2012-03-16 2016-04-19 Hitachi, Ltd. Information processing system and control method thereof
US9164880B2 (en) * 2012-10-23 2015-10-20 Hitachi, Ltd. Method and apparatus for offloading storage workload
JP6067863B2 (ja) * 2013-09-06 2017-01-25 株式会社日立製作所 分散ストレージシステムの制御方法
JP7113832B2 (ja) * 2017-09-06 2022-08-05 株式会社日立製作所 分散ストレージシステム及び分散記憶制御方法
US11010266B1 (en) * 2018-12-05 2021-05-18 Amazon Technologies, Inc. Dual isolation recovery for primary-secondary server architectures

Also Published As

Publication number Publication date
US20230297241A1 (en) 2023-09-21

Similar Documents

Publication Publication Date Title
JP4874368B2 (ja) フラッシュメモリを用いたストレージシステムの管理方法及び計算機
US10649668B2 (en) Systems, methods, and computer program products providing read access in a storage system
JP5685676B2 (ja) 計算機システム及びデータ管理方法
US8271718B2 (en) Storage system and control method for the same, and program
US8762667B2 (en) Optimization of data migration between storage mediums
US20020087544A1 (en) Dynamically changeable virtual mapping scheme
US20080256311A1 (en) Snapshot preserved data cloning
JP2022512064A (ja) 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
US20100011368A1 (en) Methods, systems and programs for partitioned storage resources and services in dynamically reorganized storage platforms
JP2017130103A (ja) ブロックストレージ
JP2021022241A (ja) ストレージシステム及びノード管理方法
JP2011065625A (ja) 大容量ディスクドライブの使用方法及び装置
JP2013114624A (ja) ストレージシステム及びプール容量縮小の制御方法
US9594421B2 (en) Power management in a multi-device storage array
WO2015097751A1 (ja) 不揮発性キャッシュメモリにデータをバックアップするストレージシステム
JP7145902B2 (ja) ストレージシステム及びその制御方法
US10394484B2 (en) Storage system
WO2016139787A1 (ja) ストレージシステム及びデータ書込み制御方法
JP2019124983A (ja) ストレージシステム及び記憶制御方法
JP6942748B2 (ja) 分散ストレージシステム、データ管理方法、及びデータ管理プログラム
JP2023136323A (ja) ストレージシステム
JP7405608B2 (ja) ストレージシステム
JP7253007B2 (ja) ストレージシステム
US11201788B2 (en) Distributed computing system and resource allocation method
JP7261756B2 (ja) ストレージシステム、処理方法