JP2024079042A - ストレージシステム及び記憶制御方法 - Google Patents
ストレージシステム及び記憶制御方法 Download PDFInfo
- Publication number
- JP2024079042A JP2024079042A JP2022191738A JP2022191738A JP2024079042A JP 2024079042 A JP2024079042 A JP 2024079042A JP 2022191738 A JP2022191738 A JP 2022191738A JP 2022191738 A JP2022191738 A JP 2022191738A JP 2024079042 A JP2024079042 A JP 2024079042A
- Authority
- JP
- Japan
- Prior art keywords
- data
- dsvol
- dsvols
- snapshot group
- storage
- 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
Links
- 238000000034 method Methods 0.000 title claims description 39
- 238000013507 mapping Methods 0.000 claims abstract description 22
- 238000013500 data storage Methods 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims description 28
- 238000012545 processing Methods 0.000 claims description 23
- 238000007726 management method Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 13
- 230000002085 persistent effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】同一のPVOLについてSVOL(スナップショット)の数が増えてもPVOL及びSVOLの性能低下を回避する。【解決手段】PVOLと当該PVOLについての一つ以上のSVOLとのグループであるスナップショットグループについてのDSVOLは、スナップショットグループのいずれかのVOLが格納先であるデータと、当該データのメタ情報とが格納されるデータ格納領域であり、当該メタ情報は、当該データのスナップショットグループにおける位置のアドレスである参照元アドレスと、データのDSVOLにおける位置のアドレスである参照先アドレスとのアドレスマッピングを含んだ情報である。ストレージシステムは、プロセッサは、前記スナップショットグループに対するI/O(Input/Output)負荷が閾値を超えた場合に、スナップショットグループについてのDSVOLの数を増やす。【選択図】図1
Description
本発明は、概して、ストレージシステムの記憶制御に関する。
ストレージシステムの機能の一つとして、スナップショット機能が知られている。例えば、高頻度にバックアップを取り障害発生から速やかに復旧することが可能なスナップショット機能のニーズがある。
スナップショット機能に関し、例えば特許文献1に開示の技術が知られている。特許文献1は、RoW(Redirect on Write)方式のスナップショット機能に関する技術を開示しており、具体的には、スナップショットの操作性能とI/O性能を両立するための技術を開示している。RoW方式は、データを追い書きする方式である。追い書きとは、ストレージシステムにデータをライトする際、ライト前に格納されていたデータを上書きせず、新規領域にライト対象データを格納し、新規領域に格納したデータを参照するようにメタ情報を書き換えるデータ格納方式のことである。
以下、PVOL(Primary Volume)についてRoW方式により作成された複製ボリュームを、便宜上、SVOL(Secondary Volume)と呼ぶ。SVOLは、PVOLのスナップショットである。
特許文献1に開示の技術によれば、データのメタ情報やデータそれ自体が格納されるデータ格納領域であるDSVOL(Data Store Volume)があり、PVOL及びSVOLが、同じDSVOLを共有する。このため、PVOLに対してI/O(Input/Output)が行われてもSVOLに対してI/Oが行われても同じDSVOLにI/Oが行われることになる。結果として、DSVOLにI/Oが集中して、PVOL及びSVOLの性能が低下するおそれがある。同一のPVOLについてSVOL(スナップショット)が増えると、PVOL及びSVOLの性能が低下する可能性が高まる。
ストレージシステムが、PVOLと当該PVOLについての一つ以上のSVOLとのグループであるスナップショットグループに対するI/O(Input/Output)負荷が閾値を超えたか否かを判定する。この判定結果が真の場合に、ストレージシステムが、当該スナップショットグループについてのDSVOLの数を増やす。
本発明によれば、同一のPVOLについてSVOL(スナップショット)の数が増えてもPVOL及びSVOLの性能低下を回避することが期待できる。前述した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
また、以下の説明では、「VOL」は、論理ボリュームの略であり、論理的な記憶領域でよい。VOLは、実体的なVOL(RVOL)であってもよいし、仮想的なVOL(VVOL)であってもよい。「RVOL」は、そのRVOLを提供するストレージシステムが有する物理的な記憶資源(例えば、一つ以上のRAIDグループ)に基づくVOLでよい。「VVOL」は、外部接続VOL(EVOL)と、容量拡張VOL(TPVOL)と、スナップショットVOL(SSVOL)とのうちのいずれでもよい。EVOLは、外部のストレージシステムの記憶空間(例えばVOL)に基づいておりストレージ仮想化技術に従うVOLでよい。TPVOLは、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOLでよい。SSVOLは、オリジナルのVOLのスナップショットとして提供されるVOLでよい。SSVOLは、RVOLであってもよい。典型的には、SSVOLは、オリジナルのVOLをプライマリVOL(PVOL)としてセカンダリのVOLに位置づけられる。「プール」は、論理的な記憶領域(例えば複数のプールVOLの集合)であり、用途ごとに用意されてよい。例えば、プールとして、TPプールと、スナップショットプールとのうちの少なくとも1種類があってよい。TPプールは、複数の実領域(実体的な記憶領域)で構成された記憶領域でよい。ストレージシステムが、ホストシステムから受信したライト要求が指定するアドレスが属する仮想領域(TPVOLの仮想領域)に実領域が割り当てられていない場合、その仮想領域(ライト先仮想領域)にTPプールから実領域を割り当てる(ライト先仮想領域に他の実領域が割り当て済であっても実領域が新たにライト先仮想領域に割り当てられてもよい)。ストレージシステムは、割り当てられた実領域に、そのライト要求に付随するライト対象データを書き込んでよい。スナップショットプールは、PVOLから退避されたデータが格納される記憶領域でよい。一つのプールが、TPプールとしてもスナップショットプールとしても使用されてもよい。「プールVOL」は、プールの構成要素となるVOLでよい。プールVOLは、RVOLであってもよいしEVOLであってもよい。
また、「ストレージシステム」は、複数の永続記憶デバイス(又は、複数の永続記憶デバイスを有する装置)に対するデータのI/Oを行うコントローラを備えたシステムでもよいし、一つ以上の物理的な計算機を含んだシステムでよい。後者のシステムは、例えば、一つ以上の物理的な計算機の各々が所定のソフトウェアを実行することにより、当該一つ以上の物理的な計算機がSDx(Software-Defined anything)として構築されてもよい。SDxとしては、例えば、SDS(Software-Defined Storage)又はSDDC(Software-Defined Data Center)を採用することができる。
また、以下の説明では、要素の識別情報の一例としてIDが採用されるが、識別情報は、名前等、要素を識別可能な情報であればよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。例えば、複数のストレージコントローラを区別しない場合には、「ストレージコントローラ22」と記載し、各ストレージコントローラを区別する場合には、「ストレージコントローラ22-1」、「ストレージコントローラ22-2」のように記載する。
以下、本発明の実施形態を図面に基づいて説明する。
[実施形態1]
[実施形態1]
図1は、実施形態1に係るストレージシステムの概要を示す。
ストレージシステム11は、PVOL1000PのスナップショットであるSVOL1000Sを作成するプロセッサ24を有する。プロセッサ24は、RoW方式により、PVOL1000PのSVOL1000Sを作成する。
PVOL1000PとPVOL1000Pについての一つ以上のSVOL1000SとのグループであるスナップショットグループについてのDSVOL1000Dは、スナップショットグループのいずれかのVOLが格納先であるデータと、当該データのメタ情報とが格納されるデータ格納領域である。当該メタ情報は、当該データのスナップショットグループにおける位置のアドレスである参照元アドレスと、データのDSVOLにおける位置のアドレスである参照先アドレスとのアドレスマッピングを含んだ情報である。
プロセッサ24は、スナップショットグループのうちのいずれかのVOLに対しデータを更新するためのライト要求の処理であるライト処理において、当該データのメタ情報を更新するI/Oを、当該メタ情報を格納しているDSVOL1000Dに対し行うようになっている。
プロセッサ24は、スナップショットグループに対するI/O(Input/Output)負荷が閾値を超えたか否かを判定する。この判定結果が真の場合に(負荷が閾値を超えたと判定された場合に)、プロセッサ24は、スナップショットグループについてのDSVOL1000Dの数を増やす。これにより、スナップショットグループに対するI/O負荷が、増えたDSVOL1000Dを含む複数のDSVOL1000Dに分散することが期待され、故に、PVOL1000DについてSVOL1000Sの数が増えてもスナップショットグループにおける各VOL1000の性能低下を回避することが期待できる。なお、本実施形態において、スナップショットグループについてDSVOL1000Dの数を増やすことを、本実施形態において、「DSVOL拡張」と言う。DSVOL拡張の一例は、次の通りである。
データAがPVOL1000Pに格納されているとする。PVOL1000Pを含むスナップショットグループについてのDSVOL1000DはDSVOL1000D1のみであるとする。このため、データAが、DSVOL1000D1に格納されていて、また、プール1003に格納されている。データAのメタ情報では、参照元アドレスは、PVOL1000Pにおける位置(データAの位置)のアドレスであり、参照先アドレスは、DSVOL1000D1における位置(データAの位置)のアドレスである。また、ストレージシステム11は、参照先アドレス(DSVOL1000D1における位置(データAの位置)のアドレス)と、プール1003における位置(データAの位置)のアドレスとのマッピングを管理する。
この状態のPVOL1000PのスナップショットとしてSVOL1000Sが作成されたとする。そして、PVOL1000P及びSVOL1000Sに対するI/O負荷が増加し、結果として、I/O負荷が閾値を超えたとする。このため、プロセッサ24は、スナップショットグループについてのDSVOL1000Dを2つ増やし、結果として、スナップショットグループについてのDSVOL1000DがDSVOL1000D1~1000D3になったとする。
プロセッサ24は、スナップショットグループについての複数のDSVOL1000Dに格納されているデータの量を平準化する。これにより、スナップショットグループが格納先とされている複数のデータ及びメタ情報が複数のDSVOL1000Dに分散するため、スナップショットグループに対するI/O負荷が、複数のDSVOL1000Dに分散し、以って、スナップショットグループにおける各VOL1000の性能低下を回避することが期待できる。
平準化は、例えば、次のように実現されてもよい。すなわち、スナップショットグループのうちのいずれかのVOL1000に対するライト要求の処理において、プロセッサ24は、複数のDSVOL1000Dに格納されているデータの量が平準化されるよう、当該ライト要求に付随のデータであるライト対象データの格納先のDSVOL1000Dを選択し、当該選択されたDSVOL1000Dに、当該ライト対象データを格納する。これにより、VOL1000P又は1000Sに対するライト要求の処理の都度に、データが複数のDSVOL1000Dに分散されることが期待される。例えば、PVOL1000Pを指定したライト要求であって新規データBのライト要求をプロセッサ24が処理する場合、プロセッサ24は、新たなライト対象データBの格納先としてDSVOL1000D2を選択し、新たなライト対象データBをDSVOL1000D2に格納する。その後、例えば、SVOL1000Sを指定したライト要求であって新規データCのライト要求をプロセッサ24が処理する場合、プロセッサ24は、新たなライト対象データCの格納先としてDSVOL1000D3を選択し、新たなライト対象データCをDSVOL1000D3に格納する。結果として、データA、B及びCが複数のDSVOL1000D1~1000D3に分散することになる。なお、PVOL1000P及びSVOL1000Sの各々について、「新規データ」とは、当該VOL1000について未だライト対象とされていないデータでよく、「更新後データ」とは、当該VOL1000について既にライト対象とされ書込み済のデータの更新後データでよい。
平準化は、例えば、上述の方法に代えて又は加えて、次のように実現されてもよい。すなわち、平準化は、DSVOL1000D間のデータの移動を含み、プロセッサ24は、DSVOL1000D間のデータの移動を含む平準化を、スナップショットグループのうちのいずれかのVOLに対するI/O要求(ライト要求又はリード要求)の処理と非同期に行う。これにより、I/O要求の処理性能を平準化のために低下させること無しに、平準化を実現することが期待できる。
以下、本実施形態を詳細に説明する。
図2は、ストレージシステム11の構成を示す。
ストレージシステム11は、一つ以上のストレージコントローラ22と、一つ以上のストレージコントローラ22に接続された種々のドライブ29とを有する。
ストレージコントローラ22は、ホスト計算機30とネットワーク31(例えばインターネット又はWAN(Wide Area Network))を介して通信するFE_I/F(フロントエンドインターフェースデバイス)23、ストレージシステム間での通信を行うためのストレージI/F(ストレージインターフェースデバイス)28、ストレージシステム11全体を制御するプロセッサ24、プロセッサ24で使用されるプログラム及び情報を格納するメモリ25、ドライブ29との通信を行うBE_I/F(バックエンドインターフェースデバイス)27、及びそれらをつなぐ内部ネットワーク26を備える。FE_I/F23、BE_I/F27及びストレージI/F28が、インターフェース装置の一例である。ドライブ29は、不揮発性のデータ記憶媒体を有する装置であり、永続記憶デバイスの一例である。
メモリ25は、プログラムを管理するプログラム領域201、データの転送及びコピーの時の一時的な保存領域であるバッファ領域202、種々のテーブルを格納するテーブル管理領域203、及び、ホスト計算機30からのライト対象データ(ライト要求に応答して書き込まれるデータ)及びドライブ29からのリード対象データ(リード要求に応答して読み出されたデータ)を一時的に格納するキャッシュ領域204を有する。
ストレージコントローラ22は、VOL1000を指定したI/O要求をホスト計算機30から受信し、当該I/O要求に従いデータのI/Oを行う。ホスト計算機30は、I/O要求の送信元の一例である。I/O要求の送信元は、ホスト計算機30以外の要素でもよく、例えば、ストレージシステム11の中又は外で実行されるアプリケーションプログラムでもよい。
本実施形態では、DSVOL1000Dは、メモリ25(例えばキャッシュ領域204)に基づくVOLであるが、それに代えて、外部接続VOL(EVOL)のような他種のVOLでもよい。
図3は、メモリ領域の構成を示す。
メモリ25上のキャッシュ領域204は、ライト対象データやリード対象データを一時的に格納するデータ格納領域213を有する。
テーブル管理領域203は、VOL1000に関する情報を保持するVOL管理テーブル205、スナップショットグループのI/O性能に関する情報を保持する性能管理テーブル206、スナップショットグループにおける論理アドレスとDSVOL1000Dにおける論理アドレスとの対応関係を表す情報を保持するマッピング管理テーブル207、論理アドレスに対する物理アドレスを管理する論物変換テーブル208、DSVOL100Dの空きに関する情報を保持する空き検索テーブル209、DSVOL100Dの論理アドレスの割当てに関する情報を保持する割当て管理テーブル210、プールに関する情報を保持するプール割当て管理テーブル211、及び、ドライブ割当てに関する情報を保持するドライブ割当て管理テーブル212を格納する。
図4は、VOL管理テーブル205の構成を示す。なお、以下の説明では、説明の冗長を避けるため、VOL IDが“n”であるVOL1000を、「VOLn」と言うことがある。また、スナップショットグループIDが“m”であるスナップショットグループを「スナップショットグループm」と言うことがある。
VOL管理テーブル205は、VOL1000毎にエントリを有する。エントリは、VOL ID41、VOL属性42、VOL容量43、物理アドレス範囲44、スナップショットグループID45、ルートVOL ID46、世代#47、プールID48及びDSVOL ID49といった情報を有する。
VOL ID41は、VOL1000のIDを表す。VOL属性42は、VOL1000の属性を表す。VOL容量43は、VOL1000の容量を表す。物理アドレス範囲44は、DSVOL1000Dについて有効な情報であり、当該DSVOL1000Dに対応の物理アドレスの範囲(プール1003のうち当該DSVOL1000Dに割り当てられた領域のアドレス範囲)を表す。スナップショットグループID45は、PVOL1000P又はSVOL1000Sについて有効な情報であり、当該PVOL1000P又は当該SVOL1000Sが属するスナップショットグループのIDを表す。
ルートVOL ID46は、VOL1000のルートVOLのIDを表す。「ルートVOL」は、VOLのセットにおけるルートのVOLを意味する。具体的には、PVOL1000P及びSVOL1000Sの各々について、ルートVOLは、当該VOL1000を含むスナップショットグループにおけるPVOL1000Pである。DSVOL1000Dについて、ルートVOLは、当該DSVOL1000Dの割当先(接続先)のスナップショットグループにおけるPVOL1000Pである。
世代#47は、VOL1000(DSVOL1000Dを除く)の世代の番号を表す。古い世代番号であるほどVOL1000の世代は古い。例えば、スナップショットグループ0において、SVOL1の世代が最も古く、SVOL2の世代が2番目に古い。PVOL1について更にSVOL1000Sが作成されると、更に作成されたSVOL1000Sの世代#47は“0x0003”となり、PVOL1の世代#47は“0x0004”にインクリメントされる。
プールID48は、VOL1000に割り当てられているプール1003のIDを表す。図4が示す例によれば、ストレージシステム11に二つ以上のプール1003が存在する。プール1003は一つでもよい。
DSVOL ID49は、VOL1000に割り当てられている一つ又は複数のDSVOL1000Dの各々のIDを表す。図4が示す通り、PVOL1000P及びSVOL1000Sについては、DSVOL1000Dは、スナップショットグループに対して割り当てられる。また、図4が示す例によれば、スナップショットグループ1に割り当てられているDSVOL1000DはDSVOL8のみであるが、スナップショットグループ2には複数のDSVOL1000D(DSVOL9,10,・・・,k)が割り当てられている。
図5は、性能管理テーブル206の構成を示す。
性能管理テーブル206は、スナップショットグループ毎にエントリを有する。エントリは、スナップショットグループID51、VOL別流入量52、合計流入量53、期待流入量54及びDSVOL数55といった情報を有する。
スナップショットグループID51は、スナップショットグループのIDを表す。VOL別流入量52は、スナップショットグループにおけるVOL1000別の流入量を表す。なお、「流入量」とは、I/O負荷の一例であり、単位時間当たりに書き込まれるデータの量である。I/O負荷として、流入量に代えて又は加えて、他種のI/O負荷、例えば、流出量(単位時間当たりに読み出されるデータの量)、ライト頻度(単位時間当たりのライト要求の数)、及び、リード頻度(単位時間当たりのリード要求の数)のうち、少なくともライト頻度が採用されてもよい。
合計流入量53は、スナップショットグループにおける全VOL1000の流入量の合計を表す。
期待流入量54は、I/O負荷閾値の一例であり、合計流入量53の閾値である。DSVOL数55は、スナップショットグループに割り当てられているDSVOL1000Dの数を表す。DSVOL数55に基づいて期待流入量54が定まり、例えば、期待流入量54は、DSVOL1000Dの性能(流入量)とDSVOL数55との積と同じかそれよりも低い値である。
図6は、マッピング管理テーブル207の構成を示す。
マッピング管理テーブル207は、アドレスマッピング毎にエントリを有する。アドレスマッピングは、スナップショットグループにおける位置の論理アドレスと、DSVOL1000Dにおける位置の論理アドレスとのマッピングである。エントリは、参照元VOL ID61、参照元アドレス62、参照先VOL ID63、参照先アドレス64及び世代#65といった情報を有する。DSVOL1000Dに格納されるデータのメタ情報が、当該データのアドレスマッピングを表す情報(マッピング管理テーブル207におけるエントリが有する情報)を含む。
参照元VOL ID61は、スナップショットグループにおける位置を有するPVOL1000P又はSVOL1000SのIDを表す。参照元アドレス62は、参照元VOL ID61から同定されるPVOL1000P又はSVOL1000Sにおける位置の論理アドレスを表す。参照元VOL ID61と参照元アドレス62とのセットが、スナップショットグループにおける位置の論理アドレスを表す。
参照先VOL ID63は、DSVOL1000DのIDを表す。参照先アドレス64は、参照先VOL ID63から同定されるDSVOL1000Dにおける位置の論理アドレスを表す。参照先VOL ID63と参照先アドレス64とのセットが、DSVOL1000Dにおける位置の論理アドレスを表す。
世代#65は、参照元VOL ID61から同定されるPVOL1000P又はSVOL1000Sの世代の番号を表す。世代#65は、当該PVOL1000P又はSVOL1000Sに対応の世代#47と同じ情報である。
図7は、論物変換テーブル208の構成を示す。
論物変換テーブル208は、DSVOL1000Dに格納されたデータ毎にエントリを有する。エントリは、VOL ID71、論理アドレス72、プールID73及び物理アドレス74といった情報を有する。
VOL ID71は、データが格納されているDSVOL1000DのIDを表す。論理アドレス72は、DSVOL1000Dにおけるデータの位置の論理アドレスを表す。プールID73は、データが格納されているプール1003のIDを表す。物理アドレス74は、プール1003におけるデータの位置の物理アドレスを表す。
図8は、空き検索テーブル209の構成を示す。
空き検索テーブル209は、DSVOL1000D毎にエントリを有する。エントリは、VOL ID81、空き容量82及び空き検索ポインタ83といった情報を有する。
VOL ID81は、DSVOL1000DのIDを表す。空き容量82は、DSVOL1000Dにおける空き容量を表す。空き検索ポインタ83は、空き容量に該当する領域の先頭の論理アドレスを表す。
本実施形態では、空き検索ポインタ83は、最初、DSVOL1000Dのデータ領域(例えば、メタ情報が格納される領域であるメタ領域以外の領域)の先頭を指しており、領域が確保され当該領域にデータが格納される都度に、更新される。また、DSVOL1000Dに、データの更新後データが格納された場合、更新前のデータは不要なデータとなる。DSVOL1000Dのガベージコレクションにより、不要なデータが削除されて空き領域が生まれ、空き領域に最新のデータ(新規データや更新後データ)が移り、当該データのメタ情報(マッピング管理テーブル207におけるエントリ)が更新されてよい。つまり、結果として、DSVOL1000Dにおいて空き容量が増え、且つ、当該空き容量を持つ領域は連続した空き領域となってよい。
図9は、割当て管理テーブル210の構成を示す。
割当て管理テーブル210は、DSVOL1000Dにおける領域毎にエントリを有する。エントリは、VOL ID91、論理アドレス92及び割当て有無93といった情報を有する。
VOL ID91は、DSVOL1000DのIDを表す。論理アドレス92は、DSVOL1000Dにおける領域の論理アドレスを表す。割当て有無93は、領域が割当て済か否かを表す。“割当て無し”に対応の領域が、空き領域である。
図10は、プール割当て管理テーブル211の構成を示す。
プール割当て管理テーブル211は、プール1003毎にエントリを有する。エントリは、プールID101、プール容量102、プール空き容量103及びRAIDグループID104といった情報を有する。
プールID101は、プール1003のIDを表す。プール容量102は、プール1003の容量を表す。プール空き容量103は、プール1003の容量のうちの空き容量を表す。空き容量の少なくとも一部の容量が、DSVOL1000Dの容量として割当て可能である。RAIDグループID104は、プール1003の基になっている一つ以上のRAIDグループの各々のIDを表す。
図11は、ドライブ割当て管理テーブル212の構成を示す。
ドライブ割当て管理テーブル212は、RAIDグループ毎にエントリを有する。エントリは、RAIDグループID111、RAIDレベル112、ドライブID113、ドライブ種別114、容量115及び使用容量116といった情報を有する。
RAIDグループID111は、RAIDグループのIDを表す。RAIDレベル112は、RAIDグループのRAIDレベルを表す。ドライブID113は、RAIDグループを構成する一つ以上のドライブの各々のIDを表す。ドライブ種別114は、RAIDグループを構成するドライブの種別(例えばHDDかSSDか)を表す。容量115は、RAIDグループの容量を表す。使用容量116は、RAIDグループの容量のうちの使用されている容量を表す。
図12は、記憶階層の一例を示す。
PVOL1000P及びSVOL1000Sがホスト計算機30に提供される。ホスト計算機30からのライト要求では、PVOL1000P又はSVOL1000Sが指定され得る。ライト要求に付随するライト対象データが、DSVOL1000Dに格納され、プール1003に格納される。
図8の例では、プール1003は、RAIDグループ1004のアドレス空間1005が割り当てられた論理的な記憶空間である。プール1003からアドレス空間1005への割当ては、ドライブ割当管理テーブル212を基に管理される。RAIDグループ1004のRAIDレベルは、RAID5(3D+1P)である。PVOL1000Pが書込み先とされたデータA及びBと、SVOL1000Sが書込み先とされたデータCが、異なる三つのドライブに書き込まれ、データA~Cに基づくパリティPが、データA~Cの書込み先の三つのドライブとは別のドライブに書き込まれる。
DSVOL1000Dには、データ(例えばデータA)に代えて又は加えて当該データの圧縮後のデータが格納されてもよい。また、複数のDSVOL1000Dに格納されたデータの重複排除がされてもよく、プール1003に格納されたデータのアドレスに、複数のDSVOL1000Dにおける複数の位置のアドレスがマッピングされてもよい。
以下、本実施形態で行われる処理の例を説明する。なお、以下に説明する処理は、プロセッサ24がプログラム領域201に格納されているコンピュータプログラムを実行することにより行われる。また、以下の説明では、PVOL1000P又はSVOL1000Sにおける位置(領域)のアドレスを「VOLアドレス」と言い、DSVOL1000Dにおける位置(領域)のアドレスを「DSVOLアドレス」と言う。
図13は、リード処理の流れを示す。
リード処理は、ホスト計算機30からネットワーク31を介してストレージシステム11がリード要求を受けた場合に開始する。リード要求では、例えば、VOL ID(PVOL1000P又はSVOL1000SのID)、VOLアドレス(論理アドレス)、及びデータサイズが指定される。
プロセッサ24は、リード要求で指定されているVOLアドレスの排他を確保する(S1301)。なお、当該VOLアドレスの排他が別のI/O要求のために既に確保されている場合、プロセッサ24は、一定の時間待ってから、S1301を行ってよい。また、当該排他の確保は、当該指定されたVOLアドレスを参照元アドレスとして含んだアドレスマッピングを表すメタ情報の排他を確保することを含んでもよい。
プロセッサ24は、排他が確保されたVOLアドレスについてリード対象データがキャッシュ領域204に存在するか否かを判定する(S1302)。S1302の判定結果が真の場合(S1302:Yes)、処理がS1307に進む。
S1302の判定結果が偽の場合(S1302:No)、プロセッサ24は、マッピング管理テーブル207を参照し(S1303)、指定されたVOLアドレスに対応の参照先VOL ID63及び参照先アドレス64を特定し、参照先VOL ID63及び参照先アドレス64(つまりDSVOLアドレス)の排他を確保する(S1304)。当該排他の確保は、当該指定されたVOLアドレスを参照元アドレスとして含んだアドレスマッピングを表すメタ情報の排他を確保することを含んでもよい。プロセッサ24は、排他が確保されたDSVOLアドレスについてリード対象データがキャッシュ領域204に存在するか否かを判定する(S1305)。S1305の判定結果が真の場合(S1305:Yes)、処理がS1307に進む。
S1305の判定結果が偽の場合(S1305:No)、プロセッサ24は、論物変換テーブル208を参照する(S1306)。
S1302:Yes、S1305:Yes、又は、S1306の後、プロセッサ24は、リード対象データを読み出し、当該リード対象データをホスト計算機30に転送する(S1307)。S1302:Yes又はS1305:Yesの後のS1307では、リード対象データは、キャッシュ領域204から読み出される。S1306の後のS1307では、リード対象データは、排他が確保されたDSVOLアドレスに対応の物理アドレスの領域(プール1003における領域)から読み出される。
S1307の後、プロセッサ24は、VOLアドレスの排他(S1301で確保された排他)を解除する(S1308)。S1308が、S1304経由の処理の場合、解除対象の排他は、VOLアドレスの排他に加えてDSVOLアドレスの排他(S1304で確保された排他)である。
図14は、ライト処理の流れを示す。
ライト処理は、ホスト計算機30からストレージシステム11がライト要求を受信した場合に開始する。ライト要求では、例えば、VOL ID(PVOL1000P又はSVOL1000SのID)、VOLアドレス(論理アドレス)、及びデータサイズが指定される。
プロセッサ24は、ライト要求で指定されているVOLアドレスの排他を確保する(S1401)。なお、当該VOLアドレスの排他が別のI/O要求のために既に確保されている場合、プロセッサ24は、一定の時間待ってから、S1401を行ってよい。また、当該排他の確保は、当該指定されたVOLアドレスを参照元アドレスとして含んだアドレスマッピングを表すメタ情報の排他を確保することを含んでもよい。
プロセッサ24は、VOLアドレスの排他を確保した場合、ホスト計算機30に対してライト処理の準備ができたことを示す「Ready」を応答する(S1402)。プロセッサ24は、「Ready」を受け取ったホスト計算機30から、ライト対象データを受け、ライト対象データをキャッシュ領域204に転送(格納)する(S1403)。その後、プロセッサ24は、VOLアドレスの排他(S1401で確保された排他)を解除する(S1404)。
プロセッサ24は、デステージが必要か否かを判定する(S1405)。ここで言う「デステージ」は、スナップショットグループ(PVOL1000P及び/又はSVOL1000S)からDSVOL1000Dへのキャッシュ領域204上のデータ格納先の遷移を意味する。なお、「デステージ」は、DSVOL1000Dについてのダーティデータ(ドライブ29に格納されていないデータ)をキャッシュ領域204からドライブ29に格納することを含んでもよい。また、キャッシュ領域204におけるダーティデータのうちドライブ29への格納対象は、一定時間I/O対象とされていないデータが優先されてよい。
S1405の判定結果が真の場合(S1405:Yes)、プロセッサ24は、デステージ処理を行う(S1406)。S1405の判定結果が偽の場合(S1405:No)、プロセッサ24は、非同期デステージ処理要求(I/O処理(ライト処理及びリード処理)と非同期にデステージ処理を行うことの要求)を発行する(S1407)。
S1406又はS1407の後、プロセッサ24は、ホスト計算機30に対してライト完了を応答する(S1408)。
S1405の詳細の一例に関する説明は、次の通りである。すなわち、S1405では、下記(x)及び(y)のうちの少なくとも一つの判定結果が真であることが、デステージが必要か否かの判定の結果が真になることでよい。
(x)キャッシュ領域204上のダーティデータのデータ量が所定のデータ量以上か否かの判定。
(y)キャッシュヒット率が所定のキャッシュヒット率未満であり、且つ、プロセッサ稼働率が所定のプロセッサ稼働率以上か否かの判定。
(x)キャッシュ領域204上のダーティデータのデータ量が所定のデータ量以上か否かの判定。
(y)キャッシュヒット率が所定のキャッシュヒット率未満であり、且つ、プロセッサ稼働率が所定のプロセッサ稼働率以上か否かの判定。
(x)の判定結果が真であることがデステージ要との判定である場合、キャッシュ領域204に新たに格納可能なダーティデータの量が増え、以って、I/O性能の向上が期待できる。なお、「キャッシュ領域204上のダーティデータのデータ量」は、例えば、キャッシュ領域204上のダーティデータのうち、ライト要求で指定されたVOL1000を含むスナップショットグループのダーティデータのデータ量でもよい。
(y)の判定結果が真であることがデステージ要との判定である場合、キャッシュヒット率とプロセッサ稼働率の少なくとも一方の改善が期待される。
図15は、デステージ処理の流れを示す。
デステージ処理は、図14に示したライト処理のS1406で行われるか、或いは、S1407で発行された非同期デステージ処理要求に応答して行われる。
プロセッサ24は、VOLアドレスの排他を確保する(S1501)。ここで確保されるVOLアドレスは、一つ以上のスナップショットグループにおける各VOL1000のVOLアドレスのうちDSVOL1000Dに未格納の一つ以上のデータに対応の一つ以上のVOLアドレスである。以下、説明の簡単のために、一つのスナップショットグループを例に取る。
プロセッサ24は、性能管理テーブル206を参照し(S1502)、排他が確保されたVOLアドレスとそのVOLアドレスに対応のデータとに基づき、スナップショットグループのVOL別流入量52及び合計流入量53を更新する(S1503)。
プロセッサ24は、DSVOL拡張が必要か否かを判定する(S1504)。S1504の判定結果が真の場合(S1504:Yes)、プロセッサ24は、DSVOL拡張処理要求(DSVOLの拡張処理を行うことの要求)を発行する(S1505)。
S1504の判定結果が偽の場合(S1504:No)、又は、S1505の後、プロセッサ24は、マッピング管理テーブル207を参照する(S1506)。
S1501で排他が確保されたVOLアドレスに対応のデータが新規データの場合(S1507:Yes)、プロセッサ24は、新規格納領域割当てを行う(S1509)。S1509では、例えば、プロセッサ24は、スナップショットグループに対応のDSVOL1000DをVOL管理テーブル205から選択し、選択されたDSVOL1000Dの空き領域を空き検索テーブル209から特定し、特定された空き領域を当該VOLアドレスに割り当て、当該DSVOL1000Dの空き容量82及び空き検索ポインタ83を更新する。
S1501で排他が確保されたVOLアドレスに対応のデータが更新後データの場合(S1507:No)、プロセッサ24は、分散割当てが必要か否かを判定する(S1508)。S1508の判定結果が真の場合(S1508:Yes)、プロセッサ24は、S1509を行う。このS1509では、更新前データが格納されているDSVOL1000Dとは別のDSVOL1000Dから、更新後データの格納先となる空き領域が特定される。
S1508の判定結果が偽の場合(S1508:No)、又は、S1509の後、プロセッサ24は、DSVOLアドレスの排他を確保する(S1510)。S1510で排他が確保されるDSVOLアドレスは、下記のうちのいずれかである。
・S1509で特定された空き領域のDSVOLアドレス。
・更新前データのDSVOLアドレスが属するDSVOL1000Dについて空き検索テーブル209に基づき特定された空き領域のDSVOLアドレス。
・S1509で特定された空き領域のDSVOLアドレス。
・更新前データのDSVOLアドレスが属するDSVOL1000Dについて空き検索テーブル209に基づき特定された空き領域のDSVOLアドレス。
プロセッサ24は、S1510の後、キャッシュ転送を行う(S1511)。S1511では、プロセッサ24は、S1501で排他が確保されたVOLアドレスのデータ(キャッシュ領域204におけるデータ)を、S1510で排他が確保されたDSVOLアドレスの領域に転送する。つまり、スナップショットグループにおけるVOL1000からDSVOL1000Dへのデステージが行われる。なお、S1511では、プロセッサ24が、DSVOL1000Dに転送されたデータをドライブ29(プール1003)に格納し、結果として、当該データが、ダーティデータからクリーンデータ(ドライブ29に格納済のデータ)とされてよい。
また、プロセッサ24は、S1511の後、マッピング情報更新を行う(S1512)。S1512では、プロセッサ24は、S1501で排他が確保されたVOLアドレスに対応の参照先VOL ID63及び参照先アドレス64を、S1510で排他が確保されたDSVOLアドレスを有するDSVOL1000DのIDと、当該DSVOLアドレスとを表す情報に更新する。また、S1512では、プロセッサ24は、S1501で排他が確保されたVOLアドレスを参照元アドレスとして含んだアドレスマッピングを表すメタ情報(DSVOL1000Dにおけるメタ情報)を、当該参照元アドレスの参照先アドレスが、S1510で排他が確保されたDSVOLアドレスとなるよう更新してよい。
S1511及びS1512の後、プロセッサ24は、VOLアドレスの排他(S1501で確保された排他)と、DSVOLアドレスの排他(S1510で確保された排他)とを解除する(S1513)。また、プロセッサ24は、S1507:No経由の場合、DSVOL1000Dにおける旧格納領域(更新前データの格納領域)を解放する(S1514)。解放された旧格納領域分の容量は、直ちに空き容量とされてもよいし、ガベージコレクションを経て空き容量とされてもよい。
S1504の詳細の一例に関する説明は、例えば次の通りである。すなわち、スナップショットグループに割り当てられているDSVOL1000DのI/O性能(例えばデータ格納速度)は、当該スナップショットグループ内の全VOLに分けられる。そのため、スナップショットグループの合計流入量53が当該スナップショットグループの期待流入量54よりも多い場合、プロセッサ24は、S1504において、DSVOL拡張が必要と判定する。
なお、スナップショットグループについて、期待流入量54は、当該スナップショットグループに割り当てられている全DSVOL1000DのI/O性能の合計(例えば、DSVOL1000D単体のI/O性能(例えば期待流入量)と、DSVOL1000Dの数との積)でもよいし、当該合計より小さい値でもよい。このため、適切なDSVOL拡張要否判定が期待される。また、スナップショットグループについて、期待流入量は、当該スナップショットグループに割り当てられたDSVOL毎に用意されていて、DSVOL拡張の要否判定は、各DSVOLについて、当該DSVOLの流入量が当該DSVOLの期待流入量を超えているか否かの第1の判定でもよい。当該判定に代えて又は加えて、DSVOL拡張の要否判定は、スナップショットグループに割り当てられている全DSVOLのうちのN以上のDSVOLの各々について(Nは自然数)、当該DSVOLの流入量(I/O負荷の一例)が当該DSVOLの期待流入量(期待されるI/O性能の一例)を超えているか否かの第2の判定でもよい。第1の判定と第2の判定のいずれか又は両方の判定の結果が真の場合、DSVOL拡張が必要との判定がされてよい。このような判定の結果としてDSVOL拡張がされるので、無駄にDSVOLを増やすことと、PVOL1000P及びSVOL1000SのI/O性能低下を回避することとの両立が期待される。
また、スナップショットグループ内でDSVOLのI/O性能が分けられるため、特定のVOLに多くのI/Oが発生する(I/Oの偏りが発生する)と、当該VOLのI/O性能が低下する。そこで、I/OのQoS管理によって特定のVOLにI/Oが偏ることを避けることで、VOL間のI/O性能を均質化することが期待される。
また、DSVOL拡張の要否判定は、スナップショットグループに割り当てられているDSVOL1000Dの空き容量が、DSVOL1000の容量の所定割合未満であるか否かの判定を含んでもよい。この判定の結果が真の場合に、DSVOL拡張の必要があると判定されてよい。
S1508の詳細の一例に関する説明は、例えば次の通りである。すなわち、複数のDSVOLが割当てられたスナップショットグループについて、特定のDSVOL1000Dにデータが偏っている場合、当該特定のDSVOL1000Dに更新ライト(更新後データの書込み)が集中して性能ネックが生じ得る。そこで、本実施形態では、割り当てられた複数のDSVOLに均等にデータが分散配置されるよう、プロセッサ24は、スナップショットグループに割り当てられた各DSVOL1000Dに格納されたデータ量(別の言い方をすれば、当該DSVOL1000Dについて割当て有無93が“割当て済み”となっている論理アドレスの領域の総記憶容量である割当て量)を、当該スナップショットグループに割り当てられた他のDSVOL1000Dに格納されたデータ量と比較する。プロセッサ24は、ライト対象データ(新規データや更新後データ)(及びそのメタ情報)を、データ量の最も少ないDSVOL1000Dに格納する。このような平準化は、例えば、スナップショットグループに割り当てられているX(Xは2以上の整数)のDSVOL1000Dに格納されているデータの量がYの場合、各DSVOL1000Dに格納されるデータの量がY/Xとなるようにされる。すなわち、平準化では、例えば、スナップショットグループに割り当てられているDSVOL1000Dの数と、スナップショットグループに割り当てられている全DSVOL1000Dに格納されている有効なデータ(新規データ及び更新後データ)の総量とに基づき、各DSVOL1000Dに格納されるデータの量が決定される。
なお、分散割当ての要否の判定結果が繰り返し切り替わってしまうことを避けるため、各DSVOL1000Dに格納されるデータの量には、一定のマージンが設けられてよい。一例として、次の平準化が採用されてよい。すなわち、スナップショットグループに割り当てられているDSVOL1000Dの数が4であり、偏りの許容条件が±2%であり、新規ライト(新規データの書込み)無しに73GBのアドレス範囲が更新された場合、下記が採用されてよい。
分散前: 100GB,0GB,0GB,0GB 合計100GB
分散後: 27GB, 25GB, 24GB, 24GB 合計100GB
分散前: 100GB,0GB,0GB,0GB 合計100GB
分散後: 27GB, 25GB, 24GB, 24GB 合計100GB
I/O要求の処理(例えばライト要求の処理)とは非同期の処理によってデータの再配置(平準化)が行われてよい。例えば、プロセッサ24は、DSVOL1000D内のアドレス順(昇順)に決まったデータ量のデータをDSVOL1000D間で移動することを周期的に行ってもよいし、ストレージシステム11の稼働率が低い時間帯に平準化のためのDSVOL1000D間のデータ移動を行ってもよい。
図16は、DSVOL拡張処理の流れを示す。
DSVOL拡張処理は、S1505で発行されたDSVOL拡張処理要求に応答して行われる。
プロセッサ24は、性能管理テーブル206を参照し(S1601)、スナップショットグループに対応のDSVOL数55が目標数未満か否かを判定する(S1602)。S1602の判定結果が真の場合(S1602:Yes)、プロセッサ24は、当該スナップショットグループについてDSVOL1000Dを新たに作成する(S1603)。つまり、DSVOL1000Dが増える。新たに作成されるDSVOL1000Dの数は、元のDSVOL数と目標数との差分以上の数である。例えば、元のDSVOL数が1で、目標数が3の場合、新たに二つかそれよりも多くのDSVOL1000Dが作成される。
S1602の判定結果が偽の場合(S1602:No)、プロセッサ24は、性能管理テーブル206(例えば、期待流入量54及びDSVOL数55)を更新する(S1604)。また、プロセッサ24は、VOL管理テーブル205(例えば、スナップショットグループにおける各VOLのDSVOL ID49)を更新する(S1605)。
S1602の詳細に関する一例は、次の通りである。すなわち、「目標数」は、図15のS1504の判定において拡張不要になるDSVOL数を意味する。例えば、DSVOL数をK(Kは2以上の整数)にすることで合計流入量53が期待流入量54以下となるならば(言い換えれば、DSVOL数がK未満であると合計流入量53が期待流入量54を超えたままならば)、Kが、目標数である。プロセッサ24は、S1603において、DSVOL数55と目標数との差分に基づき、新たに増やすDSVOL1000Dの数を決定し、決定された数分のDSVOL1000Dを作成する。これにより、適切な数のDSVOL1000Dを増やすことができる。
なお、図5に例示の1番目のエントリによれば、合計流入量53“210MB/s”に対し、DSVOL数55“1”に従う期待流入量54は“150MB/s”であるので、S1504で拡張不要になるDSVOL数は2(流入量210MB/sに対し期待流入量300MB/s)である。このため、新たに一つのDSVOL1000Dが作成される。このDSVOL1000Dには未だデータが格納されていない。故に、分散割当て(平準化)のために、S1509(新たに割り当てられる領域のソースとなるDSVOL)が、新たに作成された一つのDSVOLに集中してしまう。一つのDSVOL1000Dの期待流入量は150MB/sであるため、210MB/sものライトを一つのDSVOL1000Dで受けきることはできない。それを避ける方法として、新たに作成された一つのDSVOL1000Dを含む二つのDSVOL1000Dに均等にデータを格納する方法が考えられる。しかし、それでは、DSVOL1000D間でデータが均等にならない。
そこで、新たに作成されるDSVOLの数は、現在のDSVOL数と目標数Kとの差分より多い数とされる。例えば、新たに作成されるDSVOLの数は、現在のDSVOL数と目標数Kとの差分と、現在のDSVOL数とに基づき決定されてよい。具体的には、例えば、P(新たに作成されるDSVOLの数)は、C(現在のDSVOL数)とK(目標数)との差分DのL倍(Lの値は1以上の値)であり、Lの値が、Cに基づき決定されてよい。例えば、C=1、K=2、D=1の場合、L=4とされ、故に、P=D*L=1*4=4とされてよい。また、例えば、C=4、K=6、D=2の場合、L=4(又は8)とされ、故に、P=D*L=2*4(又は8)=8(又は16)とされてよい。増やされるDSVOLの数は、スナップショットグループについてのいずれのDSVOL1000Dについても流入量が当該DSVOLの期待流入量以下とすることを維持することが期待される数である。
また、プロセッサ24は、S1508に関し、一部のデータの格納先を、拡張前(既存)のDSVOL1000Dとしてもよい。つまり、プロセッサ24は、割り当てられる領域(論理アドレス)のソースの一部(例えばx%)を、拡張前のDSVOL1000Dとし、割り当てられる領域(論理アドレス)のソースの残り(例えば(100-x)%)を、新たに作成されたDSVOL1000Dとしてもよい。つまり、スナップショットグループについてDSVOL1000Dの数を増やした後、プロセッサ24は、拡張前のDSVOL1000D(DSVOL1000Dの数を増やす前に存在するDSVOL1000D)を格納先とするデータの量と、拡張されたDSVOL1000D(新たに増えたDSVOL1000D)を格納先とするデータの量を制御してよい(この制御は、一つのDSVOLに対する流入量が当該一つのDSVOLの期待流入量以下に維持するための制御でよい)。これにより、PVOL1000P及びSVOL1000SのI/O性能の低下を回避することと、DSVOL1000Dに基づく資源を節約することとの両立が期待できる。なお、このように、拡張前のDSVOL1000Dと拡張された(新たに作成された)DSVOL1000Dとで割当て量(割り当てられる領域の容量)がプロセッサ24により配分されることは、DSVOL1000Dに基づく資源の制約(例えばメモリ25の容量)又はその他の理由によりスナップショットグループについてのDSVOL数に上限があるケースについて行われてもよい。これにより、限られた資源の中で、PVOL1000P及びSVOL1000SのI/O性能の低下を回避することが期待できる。
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、複数のストレージコントローラ22は、複数のストレージノード(例えば複数の汎用計算機)で構成されたストレージシステムにおける複数のストレージノードであってもよい。
また、図17に示すように、複数のDSVOL1000Dの各々について、当該DSVOL1000Dのオーナ権(I/O権)が、複数のストレージコントローラ22のいずれかに割り当てられてよい。各ストレージコントローラ22は、当該ストレージコントローラ22がI/O権を有するDSVOL1000Dに対してI/Oを行うことができるが、当該ストレージコントローラ22がI/O権を有しないDSVOL1000Dに対してI/Oを行うことができないでよい。つまり、複数のDSVOL1000DのI/O権が複数のストレージコントローラ22に分散しており、故に、ストレージコントローラ22の負荷分散が期待される。例えば、DSVOL1000D2に格納するI/O権を有しているストレージコントローラ22はストレージコントローラ22-2であるため、ストレージコントローラ22-1は、データBをストレージコントローラ22-2に転送し、ストレージコントローラ22-2が、データBをDSVOL1000D2に格納する。いずれのDSVOLのI/O権をいずれのストレージコントローラ22が有しているかを表す情報は、例えばVOL管理テーブル205に格納されていてよく、各ストレージコントローラ22が保持していてよい。なお、DSVOL1000DのI/O権は、当該DSVOL1000Dが新たに作成された際に、複数のDSVOL1000DのI/O権が複数のストレージコントローラ22で均等になるよう、いずれかのストレージコントローラ22に決定されてよい。
11:ストレージシステム
Claims (13)
- PVOL(Primary Volume)のスナップショットであるSVOL(Secondary Volume)を作成するプロセッサを有するストレージシステムであって、
前記PVOLと当該PVOLについての一つ以上のSVOLとのグループであるスナップショットグループについてのDSVOL(Data Store Volume)は、前記スナップショットグループのいずれかのVOL(Volume)が格納先であるデータと、当該データのメタ情報とが格納されるデータ格納領域であり、当該メタ情報は、当該データの前記スナップショットグループにおける位置のアドレスである参照元アドレスと、前記データのDSVOLにおける位置のアドレスである参照先アドレスとのアドレスマッピングを含んだ情報であり、
前記プロセッサは、前記スナップショットグループのうちのいずれかのVOLに対しデータを更新するためのライト要求の処理であるライト処理において、当該データのメタ情報を更新するI/Oを、当該メタ情報を格納しているDSVOLに対し行うようになっており、
前記プロセッサは、
前記スナップショットグループに対するI/O(Input/Output)負荷が閾値を超えたか否かを判定し、
当該判定の結果が真の場合に、前記スナップショットグループについてのDSVOLの数を増やす、
ストレージシステム。 - 前記プロセッサは、前記スナップショットグループについての複数のDSVOLに格納されているデータの量を平準化する、
請求項1に記載のストレージシステム。 - 前記スナップショットグループのうちのいずれかのVOLに対するライト要求の処理において、前記プロセッサは、前記複数のDSVOLに格納されているデータの量が平準化されるよう、当該ライト要求に付随のデータであるライト対象データの格納先のDSVOLを選択し、当該選択されたDSVOLに、当該ライト対象データを格納する、
請求項2に記載のストレージシステム。 - 前記複数のDSVOLに格納されているデータの量の平準化は、DSVOL間のデータの移動を含み、
前記プロセッサは、前記平準化を、前記スナップショットグループのうちのいずれかのVOLに対するI/O要求の処理と非同期に行う、
請求項2に記載のストレージシステム。 - 前記スナップショットグループについてDSVOLの数を増やした後、前記プロセッサは、DSVOLの数を増やす前に存在するDSVOLを格納先とするデータの量と、新たに増えたDSVOLを格納先とするデータの量を制御する、
請求項1に記載のストレージシステム。 - 前記スナップショットグループについてのDSVOL数に上限がある場合に、前記プロセッサは、DSVOLの数を増やす前に存在するDSVOLを格納先とするデータの量と、新たに増えたDSVOLを格納先とするデータの量を制御する、
請求項5に記載のストレージシステム。 - 前記スナップショットグループに対するI/O負荷が前記閾値を超えた場合とは、下記のうちのいずれか又は両方に該当することである、
・前記スナップショットグループにおける全VOLに対するI/O負荷の合計が、前記スナップショットグループについて定められたI/O負荷閾値を超えること、
・前記スナップショットグループに割り当てられている全DSVOLのうちのN以上のDSVOLの各々について(Nは自然数)、当該DSVOLのI/O負荷が当該DSVOLの期待されるI/O性能を超えていること、
請求項1に記載のストレージシステム。 - 前記スナップショットグループについて定められたI/O負荷閾値は、一つのDSVOLに期待されるI/O性能と、前記スナップショットグループに割り当てられているDSVOLの数である現在のDSVOL数との積、又は当該積よりも小さい値である、
請求項7に記載のストレージシステム。 - 前記プロセッサは、前記スナップショットグループについての現在のDSVOL数と目標数との差分に基づき、新たに増やすDSVOLの数を決定し、
現在のDSVOL数は、前記スナップショットグループに割り当てられているDSVOLの数であり、
前記目標数は、前記スナップショットグループに対するI/O負荷が前記閾値以下となる場合のDSVOL数である、
請求項1に記載のストレージシステム。 - 新たに増やされるDSVOLの数は、前記差分と、前記現在のDSVOL数とに基づく数であり、前記差分よりも多い数である、
請求項9に記載のストレージシステム。 - 新たに増やされるDSVOLの数は、前記スナップショットグループについてのいずれのDSVOLについてもI/O負荷が当該DSVOLの期待されるI/O性能以下とすることを維持することが期待される数である、
請求項10に記載のストレージシステム。 - 複数のストレージコントローラを備え、
前記複数のストレージコントローラの各々が、前記プロセッサを有し、
前記複数のストレージコントローラに、前記スナップショットグループについての複数のDSVOLのI/O権が分散しており、
前記複数のストレージコントローラの各々は、
当該ストレージコントローラがI/O権を持つDSVOLに対し、データを格納し、
データの格納先となるDSVOLのI/O権を有していない場合、当該I/O権を有するストレージコントローラに当該データを転送する、
請求項1に記載のストレージシステム。 - PVOL(Primary Volume)のスナップショットであるSVOL(Secondary Volume)を作成するストレージシステムの記憶制御方法であって、
前記PVOLと当該PVOLについての一つ以上のSVOLとのグループであるスナップショットグループについてのDSVOL(Data Store Volume)は、前記スナップショットグループのいずれかのVOL(Volume)が格納先であるデータと、当該データのメタ情報とが格納されるデータ格納領域であり、当該メタ情報は、当該データの前記スナップショットグループにおける位置のアドレスである参照元アドレスと、前記データのDSVOLにおける位置のアドレスである参照先アドレスとのアドレスマッピングを含んだ情報であり、
前記ストレージシステムは、前記スナップショットグループのうちのいずれかのVOLに対しデータを更新するためのライト要求の処理であるライト処理において、当該データのメタ情報を更新するI/Oを、当該メタ情報を格納しているDSVOLに対し行うようになっており、
前記記憶制御方法は、
前記スナップショットグループに対するI/O(Input/Output)負荷が閾値を超えたか否かを判定し、
当該判定の結果が真の場合に、前記スナップショットグループについてのDSVOLの数を増やす、
記憶制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022191738A JP2024079042A (ja) | 2022-11-30 | 2022-11-30 | ストレージシステム及び記憶制御方法 |
US18/119,147 US20240176707A1 (en) | 2022-11-30 | 2023-03-08 | Storage system and storage control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022191738A JP2024079042A (ja) | 2022-11-30 | 2022-11-30 | ストレージシステム及び記憶制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024079042A true JP2024079042A (ja) | 2024-06-11 |
Family
ID=91191845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022191738A Pending JP2024079042A (ja) | 2022-11-30 | 2022-11-30 | ストレージシステム及び記憶制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240176707A1 (ja) |
JP (1) | JP2024079042A (ja) |
-
2022
- 2022-11-30 JP JP2022191738A patent/JP2024079042A/ja active Pending
-
2023
- 2023-03-08 US US18/119,147 patent/US20240176707A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240176707A1 (en) | 2024-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5124551B2 (ja) | ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法 | |
JP5314772B2 (ja) | 性能の異なる実領域群で構成されたプールを有するストレージシステムの管理システム及び方法 | |
US6405284B1 (en) | Distributing data across multiple data storage devices in a data storage system | |
US6880102B1 (en) | Method and system for managing storage systems containing multiple data storage devices | |
US8407436B2 (en) | Methods and apparatus for migrating thin provisioning volumes between storage systems | |
US9037828B2 (en) | Transferring storage resources between snapshot storage pools and volume storage pools in a data storage system | |
JP4819369B2 (ja) | ストレージシステム | |
US8069191B2 (en) | Method, an apparatus and a system for managing a snapshot storage pool | |
JP5303066B2 (ja) | プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置 | |
WO2013018132A1 (en) | Computer system with thin-provisioning and data management method thereof for dynamic tiering | |
US20190310777A1 (en) | Storage system, computer system, and control method for storage system | |
US20020144076A1 (en) | Information processing system | |
US20130067139A1 (en) | Storage system comprising flash memory, and storage control method | |
US10789007B2 (en) | Information processing system, management device, and control method | |
US7849264B2 (en) | Storage area management method for a storage system | |
CN113448502B (zh) | 分布式存储系统和存储控制方法 | |
US11740823B2 (en) | Storage system and storage control method | |
US10019182B2 (en) | Management system and management method of computer system | |
US10698627B2 (en) | Storage system and storage control method | |
WO2015145680A1 (ja) | 管理計算機、及び計算機システム | |
JP2024079042A (ja) | ストレージシステム及び記憶制御方法 | |
JP5597266B2 (ja) | ストレージシステム | |
JP2009123187A (ja) | ストレージシステム | |
US20240176520A1 (en) | Storage system and storage control method | |
JP2022020926A (ja) | ストレージシステム及び処理移行方法 |