JP5303066B2 - プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置 - Google Patents

プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置 Download PDF

Info

Publication number
JP5303066B2
JP5303066B2 JP2012512531A JP2012512531A JP5303066B2 JP 5303066 B2 JP5303066 B2 JP 5303066B2 JP 2012512531 A JP2012512531 A JP 2012512531A JP 2012512531 A JP2012512531 A JP 2012512531A JP 5303066 B2 JP5303066 B2 JP 5303066B2
Authority
JP
Japan
Prior art keywords
pool
status
virtual
capacity
real
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.)
Expired - Fee Related
Application number
JP2012512531A
Other languages
English (en)
Other versions
JPWO2011135617A1 (ja
Inventor
豊 ▲高▼田
信太郎 井上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2011135617A1 publication Critical patent/JPWO2011135617A1/ja
Application granted granted Critical
Publication of JP5303066B2 publication Critical patent/JP5303066B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

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

Description

本発明は、Thin Provisioningに従う記憶制御に関する。
Thin Provisioning(Dynamic Provisioningとも呼ばれる)が適用されたストレージ装置が知られている。そのストレージ装置は、一般に、複数の仮想ページで構成された仮想的な論理ボリューム(以下、仮想ボリューム)を提供し、複数の実ページで構成されたプールを有する。ストレージ装置は、未割当ての仮想ページに対するデータの書込みの場合に、書込み先の仮想ページに実ページをプールから割当て、割り当てた実ページに、書込み対象のデータを書き込む。仮想ページは、仮想的な記憶領域であり、実ページは、実体的な記憶領域である。
この種のストレージ装置に関する技術として、例えば、特許文献1及び2に開示の技術が知られている。
特許文献1によれば、実ページの数がゼロであるならば、物理的な記憶デバイスが追加され、その物理的な記憶デバイスを基に論理的なディスクが新たに生成される。その論理的なディスクが分割されることにより、割当て可能な実ページが新たに生成される。
特許文献2によれば、ストレージ装置は、ホストから書込みコマンドを受信した場合に、割当て可能な実ページが無い場合、failがホストに返される。つまり、書込みの失敗となる。
米国特許第7032093号明細書 米国特許第6823442号明細書
仮想ボリューム(VVOL)の容量は、プールの容量と無関係に決定される。一般に、1以上の仮想ボリュームの総容量は、1以上のプールの総容量よりも大きい。
そして、未割当ての仮想ページに対する書込みの際に、割当て可能な実ページ(フリーの実ページ)がプールに無ければ、書込みの失敗となる。
それを回避するための方法として、プール内のフリーの実ページの数を監視し、その数が所定数未満になった場合に、プールの容量を拡張する方法が考えられる。
しかし、プールの容量の拡張が間に合わないケースがあり得る。そのケースとしては、フリーの実ページの数が所定数未満になった直後に未割当ての仮想ページに対する書込みが頻繁に行われるようなケースが考えられる。プールの容量の拡張が間に合わない場合には、書込みの失敗を回避することはできないと考えられる。
そこで、本発明の目的は、割当て可能な実ページが不足しないようにすることにある。
実ページのステータスとして、(1)初期化済みであり仮想ページに割当て可能であることを意味する第1ステータス、(2)仮想ページに割り当てられていることを意味する第2ステータス、及び、(3)仮想ページに割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがある。
記憶制御装置は、ホスト(例えば、物理的又は仮想的な計算機)から仮想ボリューム内の未割当ての仮想ページに対するライトコマンドを受信し、その仮想ボリュームが関連付けられているプールから、第1ステータスの実ページを割り当て、その実ページのステータスを第2のステータスに変更する。
また、記憶制御装置は、仮想ページに割り当てられている実ページのステータスを、或るタイミングで、第3ステータスに変更する。
また、記憶制御装置は、第3ステータスの実ページを初期化し、その初期化が終了した場合に、その実ページのステータスを、第1ステータスに変更する。
記憶制御装置は、プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、第3ステータスの実ページをプールが有するか否かを基に、そのプールの容量以下に制限する。
記憶制御装置は、ストレージ装置が有するコントローラであっても良いし、ストレージ装置とホストとの間の通信を中継する装置(例えば、サーバ装置、或いは、インテリジェントなスイッチ装置)であっても良い。
本発明の実施例1に係る概要を示す。 実ページのステータス及びそのステータスの遷移の流れを示す。 本発明の実施例1に係るストレージ装置の構成を示す。 ストレージ装置101における各種記憶領域の関係を示す。 図5Aは、制御プログラム551を示す。図5Bは、共有メモリ(SM)309が記憶する管理情報を示す。 管理情報内の各種情報の関係を示す。 図7Aは、VOL管理テーブル501を示す。図7Bは、マッピングテーブル503を示す。 図8Aは、フリーキュー505を示す。図8Bは、削除キュー509を示す。 図9Aは、ページ情報701を示す。図9Bは、プール管理テーブル504を示す。 制御プログラム551の起動時の処理の流れを示す。 VVOL総容量算出の流れを示す。 図12Aは、VVOL一覧1211を示す。図12Bは、プール一覧1221を示す。 VVOL関連付けの流れを示す。 VVOL容量チェックの流れを示す。 ゼロ書きチェックの流れを示す。 VVOL関連付け解除の流れを示す。 ゼロ書き処理の流れを示す。 削除容量の算出の流れを示す。 プール一覧1901を示す。 VVOL容量の拡張の流れを示す。 対象プールの実ページ数5043と対象プールのゼロ書きページ数との差と、対象プールの仮想ページ総数5047と拡張容量分の仮想ページ数との和との比較を示す。 図22Aは、本発明の実施例2で行われる処理を示す。図22Bは、本発明の実施例3で行われる処理を示す。 本発明の実施例4で行われる処理の流れを示す。 本発明の実施例5に係るゼロ書き処理の流れを示す。 図25Aは、本発明の実施例6に係るVVOL間コピーの前の状況の一例を示す。図25Bは、セカンダリのVVOLに割り当てられている実ページのステータスを変更した後にVVOL間コピーを行うことを示す。図25Cは、VVOL間コピー完了後の状況を示す。 ティア管理テーブル506を示す。
以下、図面を参照して、本発明の幾つかの実施例を説明する。
なお、以下の説明では、「xxxテーブル」或いは「xxxリスト」の表現にて各種情報を説明することがあるが、各種情報は、テーブル及びリスト以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」及び「xxxリスト」を「xxx情報」と呼ぶことができる。
また、以下の説明では、種々の対象の識別情報として、番号が使用されるが、番号以外種類の識別情報(例えば、英字や符号を含んだ識別子)も採用可能である。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェース装置(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、ストレージ装置或いは記憶制御装置が行う処理としても良い。また、プロセッサは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
また、以下の説明では、論理ボリュームを「VOL」と記載し、仮想的な論理ボリュームを「VVOL」と記載することがある。
また、以下の説明では、番号がxxである対象Pを表す場合、「P#xx」と表現することがある。例えば、VOL番号が01のVVOLを、「VVOL#01」と表現することがある。
また、以下の説明では、仮想ページと実ページは、同じ容量(サイズ)であり、それ故、1個の仮想ページに1個の実ページが割り当てられる。しかし、それに限らず、1個の仮想ページに複数の実ページが割り当てられても良いし、複数の仮想ページに1個の実ページが割り当てられても良い。
また、以下の説明では、仮想ページの容量(サイズ)と実ページの容量は、固定であるが、可変であっても良い。
図1は、本発明の実施例1に係る概要を示す。
ストレージ装置が、プール113に関連付け可能なVVOL111の総容量を、プール113の容量以下に制限する。以下、幾つかの例を説明する。なお、図1の説明において、プール#01の容量は、100GB(ギガバイト)であるとする。また、以下の説明では、プール113に関連付けられている1以上のVVOLの総容量を、そのプール113について、「VVOL総容量」と言う。
(A)管理者が、ストレージ装置に、50GBのVVOL#01をプール#01に関連付けることを要求したとする。この場合、ストレージ装置は、その要求に応答して、VVOL#01をプール#01に関連付ける。なぜなら、VVOL#01の容量(50GB)は、プール#01の容量(100GB)以下のためである。
(B)(A)の次に、管理者が、ストレージ装置に、40GBのVVOL#02をプール#01に関連付けることを要求したとする。この場合、ストレージ装置は、その要求に応答して、VVOL#02もプール#01に関連付ける。なぜなら、VVOL総容量(90GB(50GB+40GB))は、プール#01の容量(100GB)以下のためである。
(C)(B)の次に、管理者が、ストレージ装置に、30GBのVVOL#03をプール#01に関連付けることを要求したとする。しかし、この場合、ストレージ装置は、その要求を断る(すなわち、VVOL#03をプール#01に関連付けない)。なぜなら、VVOL総容量(120GB(50GB+40GB+30GB))は、プール#01の容量(100GB)を越えてしまうためである。
(D)(B)の次に、管理者が、ストレージ装置に、VVOL#01の容量を50GBから60GBに拡張することを要求したとする。この場合、ストレージ装置は、その要求に応答して、VVOL#01の容量を50GBから60GBに拡張する。なぜなら、VVOL#01の容量拡張後のVVOL総容量(100GB(60GB+40GB))は、プール#01の容量(100GB)以下のためである。
(E)(B)の次に、管理者が、ストレージ装置に、VVOL#02の容量を40GBから80GBに拡張することを要求したとする。しかし、この場合、ストレージ装置は、その要求を断る(すなわち、VVOL#02の容量を40GBから80GBに拡張しない)。なぜなら、VVOL#02の容量拡張後のVVOL総容量(130GB(50GB+80GB))は、プール#01の容量(100GB)を越えてしまうためである。
上述の通り、ストレージ装置は、プール113に関連付け可能なVVOL111の総容量を、プール113の容量以下に制限する。その際、ストレージ装置は、プール113を構成する実ページのステータスを考慮する。本実施例では、実ページのステータスは、「フリー」、「割当て済み」、及び「ゼロ書き中」のいずれかである。
図2は、実ページのステータス及びそのステータスの遷移の流れを示す。
「フリー」は、実ページが仮想ページに割り当てられておらず、且つ、その実ページを仮想ページに割当て可能であることを意味する。フリーの実ページ内の全てのビットの値は、“0”である。つまり、フリーの実ページは、初期化(ゼロ書き)済みの実ページである。
「割当て済み」は、実ページがいずれかの仮想ページに既に割り当てられており、それ故、その実ページが割当て不可能であることを意味する。
「ゼロ書き中」は、実ページ内の全ビットの値が“0”とされるべき(例えば、実ページの先頭から末端にかけてビット値“0”が書き込まれている最中)であることを意味する。ゼロ書き中の実ページは、仮想ページに割り当てられておらず、且つ、割当て不可能である。
実ページのステータスの変化の流れは、例えば、下記の通りである。
矢印201に示すように、ストレージ装置は、未割当ての仮想ページに対する書込みのために、未割当ての仮想ページにフリーの実ページ#1を割り当てる。この場合、ストレージ装置は、実ページ#1のステータスを、「フリー」から「割当て済み」に遷移させる。その実ページ#1の全部又は一部に、書込み対象のデータが書き込まれる。図2によれば、書込み対象のデータは、4ビットのデータであり、且つ、4つのビット値は全て“1”である。
矢印202に示すように、ストレージ装置が、実ページ#1のステータスを、「割当て済み」から「ゼロ書き中」に遷移させる。その遷移は、実ページ#1内のデータが不要であることに該当する所定のイベント(例えば、実ページ#1が割り当てられている仮想ページを含んだVVOLのプール#01に対する関連付けが解除されたこと)を契機に、行われる。
ストレージ装置は、実ページ#1のステータスを「ゼロ書き中」に遷移させた場合、実ページ#1に対してゼロ書きを行い、それにより、実ページ#内の全ビット値を“0”に更新する。具体的には、ストレージ装置は、実ページ#1の全域に、ビット値“0”を書き込んでも良いし、実ページ#1内のビット値“1”のみを“0”に更新しても良い。(図2によれば、実ページ#1に“0”が書き込まれている途中である)。ゼロ書きの開始タイミングは、ステータスが「ゼロ書き中」に遷移した直後であっても良いし、ステータスが「ゼロ書き中」に遷移した後の任意のタイミングであっても良い。
「ゼロ書き中」の実ページ#1内の全ビットの値が“0”になったら、ストレージ装置は、矢印203に示すように、実ページ#1のステータスを、「ゼロ書き中」から「フリー」に遷移させる。実ページ#1が割当て可能となったためである。なお、以下の説明では、全ビットの値が“0”の実ページを、「ゼロページ」と言う。
矢印201、202及び203に示した遷移の流れの他に、矢印211に示す遷移も可能である。すなわち、ストレージ装置は、定期的に又は不定期的に、「割当て済み」のゼロページを探す。ストレージ装置は、「割当て済み」のゼロページ#2を見つけた場合、矢印211に示すように、ゼロページ#2のステータスを、「割当て済み」から、「ゼロ書き中」に遷移させることなく、「フリー」に遷移させる。なぜなら、実ページ#2は既にゼロページであるため、ゼロ書きを行う必要が無いからである。
以上が、実ページのステータス及びそのステータスの遷移の流れである。なお、本実施例では、「未割当ての仮想ページ」は、実ページが割り当てられていない仮想ページであるが、それに限らず、実質的に実ページが割り当てられていない仮想ページ、例えば、所定のデータが書き込まれている所定の実ページ(例えば、所定のゼロページ)が割り当てられている仮想ページであっても良い。その所定の実ページは、複数の未割当ての仮想ページに共通であって良い。未割当ての仮想ページに対する書込みの場合、その仮想ページに、所定の実ページに代えて、フリーの実ページが割り当てられて良い。
図2の説明によれば、「フリー」の実ページ及び「割当て済み」の実ページは、VVOL111に貢献する。なぜなら、「フリー」の実ページは、VVOL111内の未割当て仮想ページに割当て可能であるし、「割当て済み」の実ページは、その実ページの割当先の仮想ページに対するデータ(ホスト装置が利用するデータ)を記憶しているからである。
しかし、「ゼロ書き中」の実ページは、VVOL111に貢献しない。なぜなら、VVOL111内の未割当て仮想ページに割当て不可能であるからである。
そこで、ストレージ装置は、プール113内の実ページのステータスが「ゼロ書き中」か否かを基に、プール113に関連付け可能なVVOL111の総容量をプール113の容量以下に制限する。
以下、本実施例を詳細に説明する。
図3は、本発明の実施例1に係るストレージ装置の構成を示す。
通信ネットワーク361に、1以上のホスト351と、ストレージ装置101とが接続されている。
ホスト351は、物理的又は仮想的な装置(例えば計算機)である。ホスト351は、アクセス先情報を有するアクセスコマンドを送信する。アクセスコマンドは、ライトコマンド又はリードコマンドである。アクセス先情報は、アクセス先を表す情報、例えば、アクセス先のVVOL111に関連付けられている識別情報(例えばLUN(Logical Unit Number))と、アクセス先の仮想ページのアドレス範囲に属するアドレス(例えばLBA(Logical Block Address))とを含む。
ストレージ装置101は、物理記憶デバイス群と、コントローラ131と、SVP(Service Processor)311とを有する。
物理記憶デバイス群は、複数の物理記憶デバイス(以下、PDEV)371(例えば、HDD(Hard Disk Drive)、又は、フラッシュメモリデバイス(例えばSSD(Solid State Drive))の集合である。PDEV群は、1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループ375を有する。RAIDグループ375は、2以上のPDEV371で構成されており、所定のRAIDレベルでデータを記憶する。プール113は、1以上のRAIDグループ375の記憶空間に基づいている。プール113は、例えば、1以上の実ボリューム(1以上のRAIDグループ375に基づく実体的な論理ボリューム)の集合であって、プール113内の各実ボリュームが、2以上の実ページ191に分割されて良い。
コントローラ131は、ホスト351との通信インタフェースと、PDEV371との通信インタフェースと、メモリと、それらに接続されたプロセッサとを有する。具体的には、例えば、コントローラ131は、CHA301と、DKA303と、キャッシュメモリ(以下、CM)307と、共有メモリ(以下、SM)309と、スイッチ装置(以下、SW)305とを有する。これらの要素の数は1以上である。
CHA301は、ホスト351との通信インタフェース装置である。CHA301は、ポート302と、MP(Micro Processor)20とを有する。これらの要素の数は1以上である。MP20は、ホスト351からのコマンドを処理する。例えば、MP20は、ホスト351からポート302を介して受信したライトコマンドに応答して、ライト対象のデータをCM307に書き込む。
DKA303は、PDEV371との通信インタフェース装置である。DKA303は、1以上のMP(Micro Processor)30を有する。MP30は、PDEV371に対するデータの入出力を制御する。例えば、MP30は、CM307に記憶されているライト対象のデータを、そのデータのライト先の実ページに基づくRAIDグループ375に書き込む。
CM307は、複数のMP20及び30に共有のメモリであり、PDEV群に入出力されるデータを一時的に記憶する。
SM309は、複数のMP20及び30に共有のメモリであり、管理情報を記憶する。CM307とSM309は、別々のメモリでなく、一体であっても良い。つまり、1つのメモリが、CMとして使用される領域と、SMとして使用される領域とを有して良い。
SW305に、CHA301、DKA303、CM307及びSM309が接続されている。SW305は、例えばクロスバススイッチであり、それらの要素間の接続を切り替える。SW305以外の接続部(例えばバス)で、CHA301、DKA303、CM307及びSM309が互いに接続されても良い。
SVP311は、ストレージ装置101の保守又は管理に使用される1以上のコンピュータ(管理コンピュータ)であり、例えばLAN(Local Area Network)を通じて、各MP20及び30に接続されている。SVP311は、ストレージ装置101の外にあっても良い。また、SVP311は、入出力コンソール(例えば、入力装置と表示装置)と、制御コンソール(例えば、マザーボードのような制御基板)とで構成されて良い。両方のコンソールがストレージ装置101内にあっても良いし、制御コンソールがストレージ装置101内にあって入出力コンソールがストレージ装置101から離れた場所にあっても良い。
図4は、ストレージ装置101における各種記憶領域の関係を示す。
図4に示すように、下位から上位にかけて、1以上のRG(RAIDグループ)375、1以上のプール113、1以上のVVOL111が管理される。
1つのRG375は、同一種類のPDEVで構成されている。PDEV種類は、例えば、性能で定義される。性能とは、例えば、PDEVに対するデータのアクセス速度、又は、レスポンスタイム(PDEVがコマンドを受けてから応答を返すまでの時間長)である。例えば、RG#00は、複数のSSDで構成されており、RG#01は、複数のHDD−SAS(Serial Attached SCSI)で構成されており、RG#02は、複数のHDD−SATA(Serial ATA)で構成されている。なお、1つのRGを構成する複数のPDEVの容量は、例えば同じである。
プール113は、実ページ231の集合である。具体的には、例えば、プール113は、1以上の実ボリューム(RVOL)205で構成されており、各RVOL205が、1以上の実ページ231で構成されている。以下、プール113を構成するRVOLを、「プールVOL」と言う。
1つのプール113を構成する実ページ231が階層化されている。すなわち、1つのプール113に、複数のティア441が存在する。ティア441は、例えば、RVOLの種類毎に存在する。例えば、図4によれば、RVOLの種類として3種類あるため、ティア441の数も3つである。このため、1つのティア441には、そのティアに対応した種類のRVOL205が属することになる。具体的には、例えば、ティア#00は、SSDという種類であり、SSDで構成されたRG375に基づくRVOLが属する。ティア#01は、HDD−SASという種類であり、HDD−SASで構成されたRG375に基づくRVOLが属する。ティア#03は、HDD−SATAという種類であり、HDD−SATAで構成されたRG375に基づくRVOLが属する。なお、ティア441は、必ずしも、厳密にRVOL種類毎に設けられる必要も無く、同一のティア441に、類似の種類のRGに基づく複数のRVOL205が属しても良い。
図4に示すプール113の構成は、一例であり、プール113は、図4に示すようなマルチティア構成でなくても良い。すなわち、例えば、プール113は、同種のプールVOLのみで構成されていても良い。
本実施例では、前述したように、コントローラ131が、プール113に関連付け可能なVVOL111の総容量を、プール113の容量以下に制限する。VVOL総容量がプール113の容量以下とされても、アクセスの負荷を分散することが期待できる。なぜなら、プール113は複数のRGに基づく実ページ群であり、それ故、1つのVVOLに対するアクセスが集中しても、それらのアクセスが、別々のRGに基づく複数の実ページに分散されることが期待されるからである。
図4に示したような構成において、仮想ページに対する書込み又は読出しの制御や、プール113内のデータの再配置の制御や、VVOL111のプール113に対する割当ての制御や、VVOL113の容量拡張の制御が行われる。これらの制御は、例えば、図5Aに示す制御プログラム(コンピュータプログラム)551がプロセッサ(例えばMP20)で実行されることにより、行われる。コントローラ131は、例えば、コントローラ131内の記憶資源(例えば、SM309、又は、CHA301内のメモリ(図示せず))に記憶され、その記憶資源から読み出され、実行される。制御プログラム551が実行されることにより行われる処理は、コントローラ131が行う処理である。
図5Bは、SM309が記憶する管理情報を示す。管理情報の一部が、CHA301内のメモリ(図示せず)、及び/又は、DKA303内のメモリ(図示せず)に記憶されても良い。
管理情報は、例えば、VOL管理テーブル501、マッピングテーブル503、プール管理テーブル504、ティア管理テーブル506、フリーキュー505、削除キュー509及びページ情報701を含む。
VOL管理テーブル501は、ストレージ装置101が有する全てのVOL(論理ボリューム)に関する情報を有する。
マッピングテーブル503は、VVOL毎に存在する。マッピングテーブル503は、仮想ページと実ページとの対応関係を表す。具体的には、例えば、マッピングテーブル503には、実ページが割り当てられている仮想ページに、その実ページのページ情報701が関連付けられている。
フリーキュー505は、プールVOL毎に存在する。フリーキュー505は、「フリー」の実ページに対応したページ情報701の列である。
削除キュー509は、プール113毎に存在する。削除キュー509は、プール113に対する割当てが解除されたVVOLに対応するマッピングテーブル503の列である。
ページ情報701は、実ページ毎に存在する。ページ情報701は、実ページに関する情報を有する。
制御プログラム551は、図6に示す流れで、実ページを特定する。
(A)制御プログラム551は、VOL管理テーブル501を基に、対象のVVOLに対応したマッピングテーブル503を特定する。
(B1)(A)で特定されたマッピングテーブル503が、削除キュー509に関連付けられておらず、且つ、そのテーブル503に、対象の仮想ページに割り当てられている実ページのページ情報701が関連付けられている場合、制御プログラム551は、そのページ情報701を特定する。制御プログラム551は、そのページ情報701に対応する実ページが、「割当て済み」の実ページ、具体的には、対象の仮想ページに割り当てられている実ページである。
(B2)(A)で特定されたマッピングテーブル503が、削除キュー509に関連付けられておらず、且つ、対象の仮想ページが未割当ての仮想ページの場合、制御プログラム551は、フリーキュー505に関連付けられているページ情報701を特定する。そのページ情報701に対応する実ページが、「フリー」の実ページである。
(B3)(A)で特定されたマッピングテーブル503が、削除キュー509に関連付けられている場合、制御プログラム551は、そのマッピングテーブル503に関連付けられているページ情報701を特定する。そのページ情報701に対応する実ページが、「ゼロ書き中」の実ページである。
以下、管理情報が有する各種情報を詳細に説明する。なお、以下の説明では、「フリー」の実ページを「フリーページ」と言い、「ゼロ書き中」の実ページを、「ゼロ書きページ」と言い、「割当て済み」の実ページを「割当て済みページ」と言うことがある。
図7Aは、VOL管理テーブル501を示す。
VOL管理テーブル501は、VOL毎に、下記の情報、
(*)VOLの識別番号であるVOL番号5011、
(*)VOLの種別を表すVOL種別5012、
(*)プール113に関連付けられているか否かを表す関連付けフラグ5013、
(*)VOLの容量を表す容量5014、
(*)関連付けられているプールの識別番号であるプール番号5015、
(*)参照すべきテーブルの識別情報を表すポインタ5016、
を有する。
VOLの種別としては、例えば、「仮想」、「プール」及び「通常」がある。「仮想」は、VOLがVVOLであることを意味する。「プール」は、VOLがプールVOL(ホスト351に認識されないVOL)であることを意味する。「通常」は、VOLがプールVOLではなくホストに認識されるRVOL(実ボリューム)であることを意味する。
関連付けフラグ5013について、「ON」が、VVOL111がプール113に関連付けられていることを意味し、「OFF」が、VVOL111がプール113に関連付けられていないことを意味する。VVOL以外のVOLに対応する関連付けフラグ5013は、無効な値(例えば「NULL」)である。
プール113に関連付けられているVVOL111に対応するポインタ5016は、有効な値、例えば、そのVVOL111に対応するマッピングテーブル503の識別情報である。
図7Bは、マッピングテーブル503を示す。
マッピングテーブル503は、そのテーブル503に対応するVVOL111が有する仮想ページ毎に、下記の情報、
(*)仮想ページの識別番号である仮想ページ番号5031、
(*)仮想ページに割り当てられている実ページに対応したページ情報701の識別情報であるポインタ5032、
を有する。
図8Aは、フリーキュー505を示す。
フリーキュー505は、前述したように、プールVOL毎に存在する。フリーキュー505は、例えば、先頭のページ情報701の識別情報を表すポインタを有する。そして、ページ情報701が、次のページ情報701の識別情報を表すポインタ(図9A参照)を有する。これにより、フリーキュー505に関連付けられているページ情報701の順序がわかる。
図8Bは、削除キュー509を示す。
削除キュー509は、前述したように、プール113毎に存在する。削除キュー509には、マッピングテーブル503が関連付けられる。削除キュー509は、例えば、先頭のマッピングテーブル503の識別情報を表すポインタを有する。また、マッピングテーブル503には、図示しないが、次のマッピングテーブル503の識別情報を表すポインタが設定される。これにより、削除キュー509に関連付けられているマッピングテーブル503の順序がわかる。
また、マッピングテーブル503には、図7Bに示したように、そのテーブル503に対応したVVOL111に割り当てられている実ページに対応したページ情報701が関連付けられている。削除キュー509に関連付けられているマッピングテーブル503に関連付けられているページ情報701に対応した実ページが、ゼロ書きページである。
図9Aは、ページ情報701を示す。
ページ情報701は、そのページ情報701に対応する実ページ(以下、図9Aの説明において「対象実ページ」と言う)について、以下の情報、
(*)そのページ情報701の次のページ情報701の識別情報である次ポインタ7011、
(*)対象実ページの場所を表すプールVOLアドレス(例えば、プールVOLのVOL番号と、そのプールVOLにおけるLBAとを含んだアドレス)7012、
(*)対象実ページの割当先の仮想ページの場所を表すVVOLアドレス(例えば、割当先の仮想ページを含んだVVOLのVOL番号と、そのVVOLにおけるLBAとを含んだアドレス)7013、
(*)対象実ページのステータスを表すステータス7014、
を有する。ページ情報701が、対象実ページが属するティアの番号を有していても良い。
図9Bは、プール管理テーブル504を示す。
プール管理テーブル504は、プール113毎に、下記の情報、
(*)プール113の識別番号であるプール番号5041、
(*)プール113を構成するプールVOLの数であるプールVOL数5042、
(*)プール113を構成する実ページの数である実ページ数5043、
(*)プール113を構成する実ページのうちのフリーページの数であるフリーページ数5044、
(*)プール113の使用率(プール113を構成する実ページの総数に対する割当て済み実ページの数の割合)と比較される閾値である閾値5045、
(*)プール113に関連付けられているVVOLの数であるVVOL数5046、
(*)プール113に関連付けられている1以上のVVOLを構成する仮想ページの数である仮想ページ総数5047、
を有する。テーブル504は、プール113の容量を表す値を有しても良い。
図26は、ティア管理テーブル506を示す。
ティア管理テーブル506は、各プールについて、ティア毎に、下記の情報、
(*)ティアを有するプールの識別番号であるプール番号5061、
(*)ティアの番号であるティア番号5062、
(*)ティアに属するプールVOLの基になっているPDEVの種類を表す情報であるPDEV種類5063、
(*)ティアに属する実ページに対応したページ情報へのポインタであるページ情報ポインタ5064、
を有する。このテーブル506から、どのプールのどのティアに属する実ページに対応したページ情報701を特定することができる。
本実施例では、制御プログラム551は、以下の処理を行うことができる。
<ライト処理>
(a1)制御プログラム551が、ライトコマンドをホスト351から受信する。
(a2)制御プログラム551が、受信したライトコマンドが有するアクセス先情報を基に、ライト先VVOLとライト先仮想ページとを特定する。
(a3)制御プログラム551が、ライトコマンドに従うライト対象のデータをCM307に書き込む(制御プログラム551は、この段階で、ホスト351にライト完了を応答して良い)。
(a4)制御プログラム551が、(a2)で特定されたライト先VVOLに対応するマッピングテーブル503を基に、上記(W2)で特定されたライト先仮想ページが未割当ての仮想ページか否かを判断する。
(a5)上記(a4)の判断の結果が肯定的であれば、制御プログラム551が、ライト先仮想ページに割り当てられている実ページ(ライト先仮想ページに関連付けられているページ情報701に対応した実ページ)に、CM307内のライト対象のデータを書き込む。
(a6)上記(a4)の判断の結果が否定的であれば、制御プログラム551が、フリーキュー505からフリーページを特定する。ここで、制御プログラム551は、なるべく上位のティアに対応したフリーキュー505からフリーページを特定して良い。
(a7)制御プログラム551が、上記(a6)で特定したフリーページをライト先仮想ページに対応付ける。具体的には、例えば、制御プログラム551は、マッピングテーブル503における、ライト先仮想ページに対応したポインタ5032として、上記(a6)で特定したフリーページに対応するページ情報701の識別情報を書き込む。また、制御プログラム551が、特定したフリーページに対応するページ情報701をフリーキュー505から外す。また、制御プログラム551が、そのページ情報701を更新する(例えば、次ポインタ7011として無効値(例えば「NULL」)を書込み、ステータス7014を「フリー」から「割当て済み」に更新する)。
(a8)制御プログラム551は、上記(a6)で特定したページに、CM307内のライト対象のデータを書き込む(制御プログラム551は、この段階で、ホスト351にライト完了を応答して良い)。
(a9)制御プログラム551は、は、上記(a5)又は(a8)において、ライト先仮想ページに対応したアクセス負荷情報及び/又は最終アクセス時刻を更新して良い。アクセス負荷情報は、仮想ページに対するアクセスの負荷(例えば、アクセス頻度(単位時間当りのアクセス回数)、或いは、データ転送速度(単位時間当たりに入出力されるデータの量))を表す値である。アクセス負荷情報は、仮想ページ毎に存在する情報であり、例えば、マッピングテーブル503に含まれていても良い。
<リード処理>
(b1)制御プログラム551は、リードコマンドをホスト351から受信する。
(b2)制御プログラム551は、リードコマンドが有するアクセス先情報を基に、リード元VVOLとリード元仮想ページを特定する。
(b3)制御プログラム551が、リード対象のデータがCM307に残っているか否かを判断する。
(b4)上記(b3)の判断の結果が肯定的の場合、制御プログラム551は、CM307内のリード対象データを、ホスト351に送信する。この場合、制御プログラム551は、リード元仮想ページに対応したアクセス負荷情報及び/又は最終アクセス時刻を更新してもしなくても良い。
(b5)上記(b3)の判断の結果が否定的の場合、制御プログラム551は、マッピングテーブル503を基に、上記(b2)で特定されたリード元仮想ページが未割当ての仮想ページか否かを判断する。
(b6)上記(b5)の判断の結果が否定的であれば、制御プログラム551は、所定のデータ(例えばエラー)をホスト351に送信する。
(b7)上記(b5)の判断の結果が肯定的であれば、制御プログラム551は、リード元仮想ページに割り当てられている実ページからデータを読み出し、そのデータをCM307に書き込む。そして、制御プログラム551は、CM307内のそのデータをホスト351に送信する。
(b8)制御プログラム551は、上記(b6)において、リード元仮想ページに対応したアクセス負荷情報及び/又は最終アクセス時刻を更新して良い。
<データの再配置処理に関する処理>。
制御プログラム551は、割当て済みの仮想ページ(実ページが割り当てられている仮想ページ)に対応したアクセス負荷又は最終アクセス時刻を基に、再配置処理を実行するか否かを判断する。
例えば、制御プログラム551は、或る仮想ページ(以下、この段落において、「対象仮想ページ」と言う)に対応したアクセス負荷が、対象仮想ページに割り当てられている実ページを有するティアに対応したアクセス負荷範囲に属している場合、再配置処理を行わないと判断し、そうではない場合、再配置処理を行うと判断する。再配置処理では、制御プログラム551は、対象仮想ページに割り当てられている実ページ内のデータを、対象ページのアクセス負荷が属するアクセス負荷範囲に対応したティア内のフリーページにマイグレーションする。そして、制御プログラム551は、対象仮想ページに、マイグレーション元の実ページに代えて、マイグレーション先の実ページを割り当てる。
また、例えば、制御プログラム551は、或る仮想ページに対応した最終アクセス時刻から一定時間を経過している場合、再配置処理を行う判断し、そうではない場合、再配置処理を行わないと判断する。再配置処理では、制御プログラム551は、対象仮想ページに割り当てられている実ページ内のデータを、その実ページを有するティアよりも下位のティア内のフリーページにマイグレーションする。そして、制御プログラム551は、対象仮想ページに、マイグレーション元の実ページに代えて、マイグレーション先の実ページを割り当てる。
<制御プログラム551の起動時の処理>。
図10は、制御プログラム551の起動時の処理の流れを示す。
制御プログラム551は、制御プログラムの更新後(例えばバージョンアップ後)に初めて起動したか否かを判断する(S1001)。具体的には、例えば、起動済みが設定されていない場合、制御プログラム551は、初めて起動したと判断し、起動済みが設定されている場合、初めての起動ではないと判断する。
S1001の判断の結果が肯定的の場合(S1001:YES)、制御プログラム551は、更新前の制御プログラム(VVOL総容量をプール113の容量以下に制限する機能を有していないプログラム)が実行されていた時点にあった情報を基に、VVOL総容量をプール113の容量以下に制限するために必要な情報を準備する。具体的には、制御プログラム551は、VVOL総容量算出(図11参照)を行う(S1002)。
その後、制御プログラム551は、例えば起動済みを設定し(S1003)、終了する。これにより、制御プログラム551の2回目以降の起動では、S1001の判断の結果が否定的となる。
<VVOL総容量算出>。
図11は、VVOL総容量算出の流れを示す。
制御プログラム551は、VVOL毎に、S1101を行う(ループ(A))。以下、ループ(A)における処理を、1つのVVOL(図11の説明において、「対象VVOL」と言う)を例に採り、説明する。
S1101で、制御プログラム551は、VOL管理テーブル501を基に、対象VVOLがいずれかのプール113に関連付けられているか否かを判断する。
この判断の結果が肯定的の場合(S1101:YES)、制御プログラム551は、対象VVOLの容量を基に、対象VVOLが関連付けられているプール(図11の説明において、「対象プール」と言う)113について、VVOL総容量を更新する。具体的には、制御プログラム551は、以下の処理を行う。
(S1102)制御プログラム551は、対象VVOLに対応したVVOL容量5014から、対象VVOLの容量を取得する。
(S1103)制御プログラム551は、対象VVOLに対応したプール番号5015から、対象VVOLが関連付けられているプールの識別番号(プール番号)を取得する。
(S1104)制御プログラム551は、S1102で取得した、対象VVOLの容量を、仮想ページ数に変換する。対象VVOLの容量を仮想ページの容量で除算することにより得られた値が、対象VVOLの仮想ページ数である。
(S1105)制御プログラム551は、S1104で得られた仮想ページ数を、対象プール(S1103で取得されたプール番号)に対応する仮想ページ総数5047に加算する。
つまり、VVOL総容量算出では、更新後の制御プログラム551によって、仮想ページ総数5047が作成される(更新される)。
S1101の判断の結果が否定的の場合(S1101:NO)、制御プログラム551は、対象VVOLについて、S1102乃至S1105を行わない。
全てのVVOLについて、S1101(S1101の判断の結果が肯定的の場合、S1102乃至S1105)が行われた場合、ループ(A)が終了する。
VVOL総容量算出の完了が、VVOL総容量をプール113の容量以下に制限するために必要な情報の準備の完了である。
なお、制御プログラム551は、S1105を行った都度に、更新後の仮想ページ総数5047が対象プールの実ページ数5043(対象プールの容量)以下であるか否かを判断しても良い。その判断の結果が否定的であれば、制御プログラム551は、警告を出力して良い(例えば、SVP311に警告を出力して良い)。
また、例えば、制御プログラム551は、図11のループ(A)が終了した後、更新後の仮想ページ総数5047が実ページ数5043を超えているプール(この段落で「第1のプール」と言う)があるか否かを判断しても良い。その判断の結果が肯定的であれば、制御プログラム551は、第1のプールに関連付けられている1以上のVVOL内のデータを、更新後の仮想ページ総数5047が実ページ数5043より小さいプール(この段落で「第2のプール」と言う)にマイグレーションして良い。第1のプールについて、仮想ページ総数5047を実ページ数5043以下にするためである。具体的には、例えば、下記のVVOLマイグレーション処理が行なわれても良い。
(d1)制御プログラム551は、第1のプールに関連付けられている1つのVVOL(ここの説明において、「選択VVOL」と言う)を選択する。
(d2)制御プログラム551は、選択VVOLの仮想ページ数が仮想ページ総数5047に加算されても仮想ページ総数5047が実ページ数5043以下となる第2のプールを探す。そのような第2のプールが見つからなければ、VVOLマイグレーション処理が終了する。
(d3)制御プログラム551は、(d2)で第2のプールが見つかれば、選択VVOLが有するデータを、第1のプールから、実ページ単位で、見つかった第2のプールにマイグレーションする。
(d4)制御プログラム551は、選択VVOLの第1のプールに対する関連付けを解除し、選択VVOLを第2のプールに関連付ける。具体的には、以下の処理が行われる。
(d41)制御プログラム551は、第1のプールの仮想ページ総数5047から、選択VVOLの仮想ページ数を減算し、且つ、第1のプールのVVOL数5046から、1を減算する。
(d42)制御プログラム551は、選択VVOLに対応したプール番号5015を、第1のプールの識別番号から第2のプールの識別番号に変更する。
(d43)制御プログラム551は、第2のプールの仮想ページ総数5047に、選択VVOLの仮想ページ数を加算し、且つ、第2のプールのVVOL数5046に、1を加算する。
<関連付け対象のVVOL、又は、関連付けの解除対象のVVOL、の指定>。
管理者は、SVP311を用いて、プール113に関連付けられていない1以上のVVOLのうちの管理者所望のVVOLを、1以上のプール113のうちの所望のプール113に関連付けたり、関連付けを解除したりすることができる。
例えば、SVP311が、制御プログラム551から、VOL管理テーブル501が有する情報を受信し、その情報を基に、図12Aに示すVVOL一覧1211を表示する。VVOL一覧1211は、VVOL毎の情報(VVOL番号(VVOLのVOL番号)、関連付けフラグ、容量、プール番号)を有する。SVP311は、管理者所望のVVOLの指定を受け付ける。管理者所望のVVOLが、関連付けフラグ「OFF」のVVOLであれば、関連付けを行うか否かを管理者に問い合わせる。管理者所望のVVOLが、関連付けフラグ「ON」のVVOLであれば、関連付けを解除するか否かを管理者に問い合わせる。
SVP311は、関連付けフラグ「OFF」のVVOLについて関連付けを行うことを管理者から受けた場合、SVP311が、制御プログラム551から、プール管理テーブル504が有する情報を受信し、その情報を基に、図12Bに示すプール一覧1221を表示する。プール一覧1221は、プール毎の情報(プール番号、プール容量(例えば、実ページ数5043を基に算出された値)、使用容量(例えば、実ページ数5043とフリーページ数5044とを基に算出された値)、閾値)を有する。SVP311は、管理者所望のプールの指定を受け付ける。
<VVOL関連付け>。
図13は、VVOL関連付けの流れを示す。この処理は、例えば、制御プログラム551が、VVOL一覧1211(図12A参照)及びプール一覧1221(図12B参照)を通じて、VVOLの関連付けを管理者から指示された場合に、行われる。
制御プログラム551が、管理者から指定されたプール(図13及び図14の説明において「対象プール」と言う)の識別番号(プール番号)を、SVP311から取得する(S1301)。
また、制御プログラム551は、管理者から指定されたVVOL(図13及び図14の説明において「対象VVOL」と言う)の識別番号(VVOL番号)を、SVP311から取得し、そのVVOL番号に対応した容量5014から、対象VVOLの容量を取得する(S1302)。そして、制御プログラム551は、S1302で取得したVVOL容量を仮想ページ数に変換する(S1303)。
また、制御プログラム551は、S1301で取得したプール番号に対応した仮想ページ総数5047(対象プールの仮想ページ総数5047)から、仮想ページの総数を取得する(S1304)。
制御プログラム551は、S1303での変換後の仮想ページ数(対象VVOLの仮想ページ数)と、S1304で取得した仮想ページ総数(対象プールの仮想ページ総数)とを基に、VVOL容量チェック(図14参照)を行う(S1305)。
VVOL容量チェックの戻り値が、「正常」を意味する場合(S1306:YES)、制御プログラム551は、対象VVOLを対象プールに関連付ける(S1307)。具体的には、以下の処理が行われる。
(*)制御プログラム551は、対象プールの仮想ページ総数5047に、対象VVOLの仮想ページ数を加算する。
(*)制御プログラム551は、対象プールのVVOL数5046に、1を加算する。
(*)制御プログラム551は、対象VVOLのプール番号5015を、対象プールの識別番号に更新する。
VVOL容量チェックの戻り値が、「異常」を意味する場合(S1306:NO)、制御プログラム551は、S1307をスキップし、VVOL関連付けを終了する。
<VVOL容量チェック>。
図14は、VVOL容量チェックの流れを示す。
制御プログラム551は、オプション#1がONか否かを判断する(S1401)。「オプション#1」は、VVOL総容量をプール113の容量以下に制限することを、ストレージ装置101に存在する全てのプール113について行うモードである。
S1401の判断の結果が肯定的の場合(S1401:YES)、以下の処理が行われる。
(*)制御プログラム551は、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043以下か否かを判断する(S1404)。
(*)S1404の判断の結果が否定的であれば、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043を越えてしまうということである。この場合、制御プログラム551は、「異常」を意味する戻り値を出力する(S1407)。この結果、図13に示したように、S1307(対象VVOLの対象プールに対する関連付け)は行われない。
(*)S1404の判断の結果が肯定的であれば、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043を越えないということである。この場合、制御プログラム551は、ゼロ書きチェック(図15参照)を行う(S1405)。つまり、制御プログラム551は、対象プールにゼロ書きページが存在するか否かを調べる。
(*)S1405の結果、対象プールにゼロ書きページが無ければ(S1406:NO)、制御プログラム551は、「正常」を意味する戻り値を出力する(S1408)。なぜなら、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043を越えておらず、且つ、対象プールがゼロ書きページ(VVOLへの割当てが不可能な実ページ)を有していないが故に、対象プールが、対象VVOLの仮想ページ数以上のフリーページを有するからである。S1408の結果、図13に示したように、S1307(対象VVOLの対象プールに対する関連付け)が行われる。
(*)S1405の結果、対象プールにゼロ書きページがあれば(S1406:YES)、制御プログラム551は、「異常」を意味する戻り値を出力する(S1407)。なぜなら、対象VVOLの仮想ページ数と対象プールの仮想ページ総数との和が、対象プールの実ページ数5043を越えていなくても、対象プールがゼロ書きページを有しているが故に、対象プールが、対象VVOLの仮想ページ数以上のフリーページを有していない可能性があるからである。
S1401の判断の結果が否定的の場合(S1401:NO)、制御プログラム551は、オプション#2がONか否かを判断する(S1402)。「オプション#2」は、VVOL総容量をプール113の容量以下に制限することを、ストレージ装置101に存在するプール113のうちの管理者所望のプール113についてのみ行うモードである。
S1402の判断の結果が否定的の場合(S1402:NO)、制御プログラム551は、「正常」を意味する戻り値を出力する(S1408)。なぜなら、オプション#1及びオプション#2のいずれもOFFになっており、それ故、対象プールについて、VVOL総容量を対象プールの容量以下に制限する必要が無いからである。
S1402の判断の結果が肯定的の場合(S1402:YES)、制御プログラム551は、対象プールが、VVOL総容量をプール容量以下に制限する必要のあるプールか否かを判断する(S1403)。ここでは、例えば、対象プールの閾値5045が、有効な値、又は、第1の値以上であれば、S1403の判断の結果が肯定的となり、対象プールの閾値5045が、無効な値(例えば「NULL」)、又は、第2の値未満(第2の値は第1の値以下)であれば、S1403の判断の結果が否定的となる。
S1403の判断の結果が否定的の場合(S1403:NO)、制御プログラム551は、「正常」を意味する戻り値を出力する(S1408)。なぜなら、対象プールについて、VVOL総容量を対象プールの容量以下に制限する必要が無いからである。
S1403の判断の結果が肯定的の場合(S1403:YES)、制御プログラム551は、前述したS1404以降を行う。なぜなら、対象プールについて、VVOL総容量を対象プールの容量以下に制限する必要があるからである。
以上のVVOL容量チェックの流れによれば、オプション#1とオプション#2の両方がONの場合、オプション#1が優先されるが、それに代えて、オプション#2が優先されても良い。
<ゼロ書きチェック>。
図15は、ゼロ書きチェックの流れを示す。
制御プログラム551は、対象プールの識別番号(プール番号)を取得する(S1501)。ここで言う「対象プール」は、図13及び図14の説明における対象プールであることもあれば、図20の説明における容量拡張の対象のVVOLに関連付けられているプールであることもある。
制御プログラム551は、対象プールに対応した削除キュー(図15の説明において「対象削除キュー」と言う)509にマッピングテーブル503が関連付けられているか否かを判断する(S1502)。
S1502の判断の結果が肯定的の場合(S1502:YES)、制御プログラム551は、S1503を行う。具体的には、以下の処理が行われる。
(e1)制御プログラム551は、対象削除キュー509に関連付けられている1つのマッピングテーブル(例えば先頭のマッピングテーブル)503を選択する。
(e2)制御プログラム551は、(e1)で選択したマッピングテーブル503に関連付けられているページ情報701の数を、ゼロ書きページ数に加算する。
(e3)制御プログラム551は、対象削除キュー509から、最近の(e1)で選択したマッピングテーブル503を除去する。
制御プログラム551は、S1503でマッピングテーブル503を対象削除キュー509から除去した後、再び、S1502を行う。
S1502の判断の結果が否定的の場合(S1502:NO)、制御プログラム551は、ゼロ書きページ数がゼロか否かを判断する(S1504)。
S1504の判断の結果が肯定的であれば(S1504:YES)、制御プログラム551は、ゼロ書きページ無しという判断結果を出力する(S1505)。
S1504の判断の結果が否定的であれば(S1504:NO)、制御プログラム551は、ゼロ書きページ有りという判断結果を出力する(S1506)。
<VVOL関連付け解除>
図16は、VVOL関連付け解除の流れを示す。この処理は、例えば、制御プログラム551が、VVOL一覧1211(図12A参照)を通じて、VVOLの関連付けの解除を管理者から指示された場合に、行われる。
制御プログラム551が、管理者から指定されたVVOL(図16の説明において「対象VVOL」と言う)のVOL番号(VVOL番号)を取得する(S1601)。
制御プログラム551が、S1601で取得したVVOL番号を有する、VOL管理テーブル501における行を特定する(S1602)。
制御プログラム551が、その行におけるポインタ5016を特定する(S1603)。
制御プログラム551が、特定したポインタ5016をクリアする(S1604)。例えば、制御プログラム551が、そのポインタ5016を、無効値(例えば「NULL」)に更新する。
制御プログラム551が、クリア前のポインタ5016が表すマッピングテーブル(対象VVOLに対応したマッピングテーブル)503を、対象VVOLが関連付けられていたプールに対応する削除キュー509に関連付ける(S1605)。
<ゼロ書き処理>。
制御プログラム551は、プール毎に、ゼロ書き処理を行う。ゼロ書き処理では、制御プログラム551は、そのプールに対応した削除キュー509に関連付けられている実ページ(正確には、削除キュー509に関連付けられているマッピングテーブル503に関連付いているページ情報701に対応した実ページ)に、ビット値“0”を書き込む。ゼロ書き処理の開始のタイミングは、実ページのステータスが「ゼロ書き中」になった以降における任意のタイミングで良い。具体的には、例えば、下記が考えられる。
(*)制御プログラム551が、実ページのステータスを「ゼロ書き中」にしたら直ちに、その実ページに対するゼロ書きを行う。
(*)制御プログラム551が、定期的に又は不定的に、削除キュー509に関連付けられている実ページがあるか否かを判断し、その判断の結果が肯定的であれば、その実ページに対してゼロ書きを行う。
(*)制御プログラム551が、VVOL内の仮想ページに対する書込みの際に、そのVVOLが関連付けられているプールにフリーページが無い場合、そのプール内のゼロ書き実ページに対してゼロ書きを行う(ゼロ書きが済んだ実ページが、フリーページとして、書込み先の仮想ページに割り当てられて良い)。
図17は、ゼロ書き処理の流れを示す。
制御プログラム551が、ゼロ書き処理の対象のプールの識別番号(プール番号)を取得する(S1701)。
制御プログラム551が、取得したプール番号に対応する削除キュー(図17の説明において「対象削除キュー」と言う)509が有するポインタが表す情報、又は、最近のS1704でのマッピングテーブル503が有するポインタが表す情報を取得する(S1702)。
制御プログラム551は、S1702で取得した情報がNULLであれば(S1703:YES)、この処理を終了する。なぜなら、対象削除キューにマッピングテーブル503が関連付けられていないからである。
制御プログラム551は、S1702で取得した情報がマッピングテーブル503を表していれば(S1703:NO)、そのマッピングテーブル503に対応するVVOLの先頭の仮想ページから最終の仮想ページにかけて、ポインタ5032がページ情報701の識別情報を表す仮想ページ毎に、以下の処理を行う。
(S1704)制御プログラム551は、仮想ページのポインタ5032を基に、ページ情報701を取得する。
(S1705)制御プログラム551は、取得したページ情報701に対応する実ページ内の全ビットの値が“0”になるよう、1以上のビット値“0”を書き込む。
(S1706)制御プログラム551は、S1705を行ってからスリープ時間待つ。
(S1707)制御プログラム551は、最終の仮想ページまでチェックしていなければ(S1707:NO)、ページ情報701が関連付けられている別の仮想ページについてS1704を行い、最終の仮想ページまでチェックしていれば(S1707:YES)、S1702を行う。
図17に示した流れによれば、スリープ時間の長さを調節することで、ゼロ書き処理の速度を調整することができる。
例えば、ホスト351からのアクセス先の実ページの基になっているRG(RAIDグループ)と、ビット値“0”の書込み先の実ページの基になっているRGとが同じ場合、そのRGを構成するPDEVの負荷が高くなり、それ故、ホスト351からのアクセスに悪影響がある。そこで、通常、制御プログラム551は、通常、スリープ時間を第1の時間長とする。その後、制御プログラム551は、プール内のフリーページの数が所定値以下(所定値は0以上の整数)であれば、そのプールに対応したスリープ時間を、第1の時間長よりも短い第2の時間長に変更する。
<削除容量の算出>。
制御プログラム551は、プール毎に、削除容量を算出し、算出された削除容量をSVP311に表示することができる。「削除容量」は、ゼロ書きページ数と実ページの容量との積である。
図18は、削除容量の算出の流れを示す。
制御プログラム551は、削除キュー509毎に、S1801及びS1802を行い(ループ(A))、削除キュー509に関連付けられているマッピングテーブル毎に、S1801を行う(ループ(B))。
(S1801)制御プログラム551は、削除キュー509に関連付けられているマッピングテーブル503に関連付いたページ情報701の数を把握し、その数を、ゼロ書きページ数に加算する。
(S1802)制御プログラム551は、1つの削除キュー509(1つのプール)に対応したゼロ書きページ数を、削除容量に変換する。
制御プログラム551は、プール毎の削除容量を、例えば図19に示すように、プール一覧1901に含めて表示する(S1803)。
<VVOL容量の拡張>。
図20は、VVOL容量の拡張の流れを示す。
制御プログラム551は、SVP311からのVVOL拡張要求に応答して、管理者所望のVVOL(図20の説明において「対象VVOL」と言う)の容量を拡張することができる。VVOL拡張要求は、例えば、対象VVOLの識別番号、対象VVOLの容量に追加する容量(拡張容量)を表す情報を有する。
図20によれば、図14のS1401〜S1406と同様の処理が行われる(S2001〜S2006)。
S2006の結果、対象VVOLが関連付けられているプール(図20の説明において「対象プール」と言う)にゼロ書きページがあれば(S2006:YES)、制御プログラム551は、対象VVOLの容量拡張が可能か否かを判断する(S2007)。具体的には、制御プログラム551は、対象プールの実ページ数とゼロ書きページ数との差が容量拡張後の仮想ページ総数以上か否かを判断する。より具体的には、制御プログラム551は、下記の(P)の値が下記の(Q)の値以上か否かを判断する(図21参照)。
(P)対象プールの実ページ数5043から対象プールのゼロ書きページ数(対象プールに対応した削除キュー509に関連付けられているページ情報701の総数)を減算した値、
(Q)対象プールの仮想ページ総数5047に拡張容量分の仮想ページ数(増加する仮想ページ数)を加算した値。
S2007の判断の結果が否定的であれば(S2007:NO)、制御プログラム551は、対象VVOLの容量の拡張を行わない(S2008)。例えば、制御プログラム551は、エラーをSVP311に通知する。
S2007の判断の結果が肯定的であれば(S2007:YES)、制御プログラム551は、上述のVVOL拡張要求に従って、対象VVOLの容量を拡張する(S2009)。
なお、S2006:YESの場合、制御プログラム551は、S2007の判断を行うことなく、S2008を行っても良い。
以上が、実施例1の説明である。
実施例1によれば、プールから関連付けが解除されたVVOLに割り当てられていた実ページが、やがて、ゼロ書きページとなる。
そして、実施例1によれば、更新後のVVOL総容量がプールの容量以下であっても、そのプールにゼロ書きページがある場合には、VVOLの関連付けが非実行(キャンセル)とされる。これにより、VVOLをプールに関連付けた後に、書込み先の未割当ての仮想ページに割り当てるためのフリーページがそのプールで不足するということが生じないようにすることができる。
また、実施例1によれば、プールに関連付けられているVVOLの容量を拡張すると、容量拡張後のVVOL総容量が、そのプールの実質容量(プールの容量と1以上のゼロ書きページの総容量との差)を超えてしまう場合には、VVOLの容量拡張が非実行(キャンセル)とされる。これにより、VVOLの容量を拡張した後に、書込み先の未割当ての仮想ページに割り当てるためのフリーページがプールで不足するということが生じないようにすることができる。
以下、本発明の実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する。
実施例2では、制御プログラム551が、VVOL関連付け後のVVOL総容量がプールの容量以下の場合、そのプールにゼロ書きページがあっても、VVOL関連付け後のVVOL総容量がそのプールの実質容量(プールの容量と1以上のゼロ書きページの総容量との差)を超えていなければ、VVOLをプールに関連付ける。
具体的には、図22Aに示すように、S1406:YESの場合、制御プログラム551は、下記の(X)の値が下記の(Y)の値を越えているか否かを判断する(S2201)。
(X)対象プールの仮想ページ総数5047と対象VVOL(関連付け対象のVVOL)の仮想ページ数との和、
(Y)対象プールの実ページ数5043から対象プールのゼロ書きページ数(対象プールに対応した削除キュー509に関連付けられているページ情報701の総数)を減算した値。
S2201の判断の結果が肯定的の場合(S2201:YES)、制御プログラム551は、「異常」を意味する戻り値を出力する(S1407)。
S2201の判断の結果が否定的の場合(S2201:NO)、制御プログラム551は、「正常」を意味する戻り値を出力する(S1408)。
実施例2によれば、書込み先の未割当ての仮想ページに割り当てるためのフリーページがプールで不足するということが生じないようにすることを実現しつつ、VVOLをプールに関連付けられる可能性を高めることができる。
本発明の実施例3では、制御プログラム551は、下記(k)のケースにおいて、VVOL総容量の更新(VVOLの関連付け、又は、VVOLの容量拡張)を非実行(キャンセル)とするのではなく、図22BのS2211を行った後に、S1408(「正常」を表す戻り値の出力)、又は、S2009(VVOLの容量拡張)を行う。
(k)更新後のVVOL総容量(VVOL関連付け後のVVOL総容量、又は、VVOLの容量拡張後のVVOL総容量)がプールの容量以下であり、且つ、そのプールにゼロ書きページがある、又は、更新後のVVOL総容量がそのプールの実質容量(プールの容量と1以上のゼロ書きページの総容量との差)を超えてしまう。
S2211で、制御プログラム551は、下記の(a)又は(b)を行う。
(a)制御プログラム551は、ゼロ書き処理が終わるまで待つ。具体的には、例えば、制御プログラム551は、プールの実質容量(プール容量と1以上のゼロ書きページの総容量との差)が更新後のVVOL総容量以上になるぐらいに、プールからゼロ書きページが減るまで(プール内のゼロ書きページのステータスが「フリー」に遷移するまで)、待つ。制御プログラム551は、そのプール内のゼロ書きページの数がゼロになるまで、待っても良い。
(b)制御プログラム551は、対象VVOL(関連付け対象のVVOL、又は、容量が拡張されるVVOL)を、第1のプール(VVOLの関連付け先のプール、又は、容量が拡張されるVVOLが関連付けられているプール)に代えて、第2のプールに関連付ける。その第2のプールは、下記の条件(v)及び(w)を満たすプールである。
(v)更新後のVVOL総容量(プールのVVOL総容量と、関連付け対象のVVOLの容量、又は、拡張される容量との和)が、プールの容量以下である。
(w)ゼロ書きページが無い、又は、更新後のVVOL総容量がプールの実質容量(プールの容量と1以上のゼロ書きページの総容量との差)以下である。
実施例3によれば、書込み先の未割当ての仮想ページに割り当てるためのフリーページがプールで不足するということが生じないようにすることを実現しつつ、VVOLの関連付け、又は、VVOLの容量拡張を行える可能性を高めることができる。
本発明の実施例4では、制御プログラム551は、実施例3で述べたケース(k)においても、VVOL総容量の更新(VVOLの関連付け、又は、VVOLの容量拡張)を非実行(キャンセル)とするのではなく、図23のS2301を行った後に、S1408(「正常」を表す戻り値の出力)、又は、S2009(VVOLの容量拡張)を行う。
S2301で、制御プログラム551は、ゼロ書き処理が終わるまで待ち、且つ、VVOLの総容量が更新されるプール(VVOLの関連付け先のプール、又は、容量が拡張されるVVOLが関連付けられているプール、以下、実施例4の説明において「対象プール」と言う)についてのゼロ書き処理(図17参照)を、他のプールについてのゼロ書き処理よりも優先して行う。また、制御プログラム551は、S2301で、対象プールについてのゼロ書き処理における、スリープ時間を、最短にして良い。
実施例4によれば、書込み先の未割当ての仮想ページに割り当てるためのフリーページがプールで不足するということが生じないようにすることを実現しつつ、VVOLの関連付け、又は、VVOLの容量拡張を迅速に行える可能性を高めることができる。
本発明の実施例5では、プールに対するゼロ書き処理において、制御プログラム551は、上位のティアほど、優先的に、ゼロ書きページに対するゼロ書き(ビット値“0”の書込み)を行う。具体的には、本実施例では、制御プログラム551は、図17に示したゼロ書き処理に代えて、図24に示すゼロ書き処理を行う。
すなわち、制御プログラム551が、ゼロ書き処理の対象のプール(図25の説明において「対象プール」と言う)のうち、最上位のティアを選択する(S2401)。
制御プログラム551は、選択されたティアにゼロ書きページがあるか否かを判断する(S2402)。具体的には、例えば、制御プログラム551は、ティア管理テーブル506を基に、選択されたティアに属するページ情報701を特定し、特定したページ情報701毎に、ページ情報701に対応する実ページがゼロ書きページであるか否かを判断する。
S2402の判断の結果が肯定的であれば(S2402:YES)、制御プログラム551は、選択されたティア内の全てのゼロ書きページ内の全ビットの値を“0”に更新する(S2403)。
S2403の後、又は、S2402の判断の結果が否定的の場合(S2402:NO)、制御プログラム551は、対象プールに未選択のティアがあれば(S2404:NO)、最近選択したティアの次に上位のティアを選択し(S2404)、S2402を行う。一方、対象プールに未選択のティアがなければ、つまり、最下位のティアまで選択済みであれば(S2404:YES)、制御プログラム551は、対象プールに対するゼロ書き処理を終了する。
実施例5によれば、上位のティア(つまり性能の高いティア)から優先的にフリーページを増やしていくことができる。これは、例えば、初期割当て用のティア(未選択の仮想ページに初めに割り当てられる実ページのソースとなるティア)が、最上位のティアである場合に、特に有効である。
なお、実施例5では、制御プログラム551は、上位のティアほど優先的にゼロ書きを行うことに代えて、初期割当て用のティア内のゼロ書きページに対して、他のティア内のゼロ書きページよりも優先的に、ゼロ書きを行っても良い。
本発明の実施例6では、制御プログラム551は、プライマリのVVOL(以下、PVOL)からセカンダリのVVOL(以下、SVOL)にデータをコピー(レプリケーション又はマイグレーション)するが、その際に、SVOLに割り当てられている実ページをフリーページとすることがある。なぜなら、SVOLが関連付けられているプールからフリーページが不足してしまう可能性を無くすためである。
以下、図25A〜図25Cを参照して、実施例6を詳細に説明する。
図25Aに示すように、PVOL111Pがプール113Pに関連付けられており、SVOL111Sがプール113Sに関連付けられている。プール113P及び113Sは、異なるプールである。なぜなら、PVOL111P内のデータを記憶しているRG(RAIDグループ)に障害が発生してもデータが無くならないようにするためである。
また、SVOL111Sの容量は、PVOL111Pの容量以上である。
図25Aに示すように、PVOL111Pにプール113P内の2つの実ページが割り当てられており、SVOL111Sにプール113S内の3つの実ページが割り当てられているとする。
ここで、プール113Sが、VVOL総容量を制限する対象のプールでない場合、PVOL111P内の2ページ分のデータがSVOL111Sにコピーされると、プール113Sでフリーページが不足してしまう可能性がある。具体的には、例えば、図25Aに示した状況において、プール113Sにフリーページが無い場合、SVOL111Sに新たに実ページを割り当てることはできない。
そこで、図25Bに示すように、制御プログラム551は、PVOL111P内の全てのデータをSVOL113Sにコピーする前に、SVOL113Sに割り当てられている全ての実ページをフリーページとすることがある。具体的には、例えば、制御プログラム551は、以下の処理(f1)〜(f4)を行う。
(f1)制御プログラム551は、PVOL111Pに対応したマッピングテーブル503と、SVOL111Sに対応したマッピングテーブル503と、プール管理テーブル504とを基に、PVOL111Pに割り当てられている実ページの数以上のフリーページがプール113Sにあるか否かを判断する。
(f2)(f1)の判断の結果が肯定的の場合、制御プログラム551は、SVOL111Sに割り当てられている全ての実ページをゼロ書きページとし、且つ、PVOL111P内の全てのデータをSVOL111Sにコピーする。その際、SVOL111Sには、コピーの進捗に応じて、適宜にプール113Sからフリーページが割り当てられるが、フリーページが不足することはない。
(f3)(f2)の判断の結果が否定的の場合、制御プログラム551は、以下の処理を行う、
(f3−1)制御プログラム551は、SVOL111Sに割り当てられている全ての実ページをゼロ書きページとする。
(f3−2)制御プログラム551は、PVOL111PからSVOL111Sへのデータのコピーを、少なくとも、PVOL111Pに割り当てられている実ページの数と同数のフリーページがプール113Sにできるまで、待つ。
(f3−3)(f3−2)の間、制御プログラム551は、プール113S内のゼロ書きページにゼロ書きを行うことで、そのゼロ書きページをフリーページに変える。つまり、制御プログラム551は、プール113Sにフリーページを増やす。その際、制御プログラム551は、スリープ時間(或るゼロ書きページに対するゼロ書きを行ってから次にゼロ書きページに対するゼロ書きを行うまでの時間長)を最短にして良い。
(f4)(f3−3)により、PVOL111Pに割り当てられている実ページの数以上のフリーページがプール113Sにできた場合、制御プログラム551は、(f3−2)を終了し、PVOL111PからSVOL111Sへのデータのコピーを行う。
PVOL111PからSVOL111Sへのデータのコピーが終了した場合、図25Cに示すように、SVOL111Sに、PVOL111Pに割り当てられていた実ページの数と同数の実ページがプール113Sから割り当てられていることになる。なお、PVOL111PからSVOL111Sへのデータのコピーがマイグレーションの場合、制御プログラム551は、PVOL111Pに割り当てられた全ての実ページを、ゼロ書きページに変更して良い。
以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、実施例1乃至6のうちの2以上の実施例が組み合わされても良い。
例えば、図20のS2007、及び/又は、図22AのS2201では、比較される容量は、ページ数で表れた容量であるが、それに代えて、メガバイト或いはギガバイトといった他種の単位で表現された容量でも良い。
また、例えば、コントローラ131の構成は、図3に示した構成に限られない。例えば、CHA及びDKAが有するMP(マイクロプロセッサ)を有することに代えて、CHA及びDKAとは別のモジュール(プロセッサモジュール)がMPを有しても良い。
101…ストレージ装置

Claims (15)

  1. 物理記憶デバイス群と、
    ホストと前記物理記憶デバイス群とに接続されたコントローラと
    を有し、
    Thin Provisioningが適用された仮想的な論理ボリュームであり複数の仮想領域で構成された仮想ボリュームがあり、
    前記物理記憶デバイス群に基づくプールがあり、前記プールは、複数の実領域で構成され、
    前記実領域のステータスとして、(1)初期化済みであり仮想領域に割当て可能であることを意味する第1ステータス、(2)仮想領域に割り当てられていることを意味する第2ステータス、及び、(3)仮想領域に割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがあり、
    前記コントローラは、下記の処理を行うようになっており、
    (a)前記ホストから前記仮想ボリューム内の未割当ての仮想領域に対するライトコマンドを受信し、前記仮想ボリュームが関連付けられているプールから、前記第1ステータスの実領域を割り当て、その実領域のステータスを前記第2のステータスに変更し、
    (b)前記仮想領域に割り当てられている実領域のステータスを、前記第3ステータスに変更し、
    (c)前記第3ステータスの実領域を初期化し、その初期化が終了した場合に、その実領域のステータスを、前記第1ステータスに変更し、
    前記コントローラが、前記プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、前記第3ステータスの実領域を前記プールが有するか否かを基に、前記プールの容量以下に制限する、
    ストレージ装置。
  2. 請求項1記載のストレージ装置であって、
    (f)前記コントローラは、仮想ボリューム総容量が増える増加処理の要求である増加要求を受信し、
    (g)前記コントローラは、下記(p)の値が下記(q)の値以上か否かを判断し、
    (p)前記プールの容量と、前記プール内の第3ステータスの実領域の総容量との差、
    (q)仮想ボリューム総容量の増加分の容量と、仮想ボリューム総容量との和、
    (h)前記コントローラは、前記(g)の判断の結果が肯定的の場合、前記増加処理を実行する、
    ストレージ装置。
  3. 請求項2記載のストレージ装置であって、
    前記コントローラが、1つの第3ステータスの実領域を初期化し、且つ、その実領域のステータスを第1ステータスに変更することで、前記プールから第3ステータスの実領域が1つ減り、
    (i)前記コントローラは、前記(g)の判断の結果が否定的の場合、前記(p)の値が前記(q)の値以上になるぐらいに、前記プールから前記第3ステータスの実領域が減るまで、待ち、その後、前記増加処理を実行する、
    ストレージ装置。
  4. 請求項3記載のストレージ装置であって、
    前記物理記憶デバイス群に基づく複数のプールがあり、
    前記コントローラは、前記(i)において、前記プール内の第3ステータスの実領域を初期化することを、前記複数のプールのうちの別のプール内の第3ステータスの実領域を初期化することよりも優先する、
    ストレージ装置。
  5. 請求項4記載のストレージ装置であって、
    前記コントローラは、スリープ時間周期で、前記プール内の1つの第3ステータスの実領域を初期化し、
    前記(i)の前、前記スリープ時間は、第1の時間であり、
    前記コントローラは、前記(i)において、前記スリープ時間を、前記第1の時間より短い第2の時間に変更する、
    ストレージ装置。
  6. 請求項5記載のストレージ装置であって、
    前記増加処理は、新たに仮想ボリュームを前記プールに関連付ける処理、又は、前記プールに関連付けられている仮想ボリュームの容量を拡張する処理である、
    ストレージ装置。
  7. 請求項2記載のストレージ装置であって、
    (j)前記コントローラは、前記(g)の判断の結果が否定的の場合、前記増加処理を実行しない、
    ストレージ装置。
  8. 請求項1記載のストレージ装置であって、
    (t)前記コントローラは、仮想ボリューム総容量が増える増加処理の要求である増加要求を受信し、
    (u)前記コントローラは、前記プールの容量が、仮想ボリューム総容量の増加分の容量と仮想ボリューム総容量との和以上か否かを判断し、
    (v)前記コントローラは、前記(u)の判断の結果が肯定的の場合、前記プールが第3ステータスの実領域を有するか否かを判断し、
    (w)前記コントローラは、前記(v)の判断の結果が否定的の場合、前記増加処理を実行する、
    ストレージ装置。
  9. 請求項8記載のストレージ装置であって、
    (x)前記コントローラは、前記(v)の判断の結果が肯定的の場合、前記増加処理を実行しない、
    ストレージ装置。
  10. 請求項1記載のストレージ装置であって、
    前記コントローラは、管理情報を記憶する記憶資源と、コンピュータプログラムを実行するプロセッサとを有し、
    前記管理情報は、前記仮想ボリュームの容量を表す情報と、前記プールに関連付けられている仮想ボリュームを表す情報と、前記プールの容量を表す情報と、前記プール内の各実ページのステータスを表す情報とを含み、
    前記プロセッサは、前記コンピュータプログラムを起動した場合、その起動が初めてか否かを判断し、その判断の結果が肯定的の場合、前記管理情報を基に、前記プールに関連付けられている仮想ボリュームの総容量を算出し、算出された仮想ボリューム総容量を表す情報を、前記管理情報に含める、
    ストレージ装置。
  11. 請求項1記載のストレージ装置であって、
    前記物理記憶デバイス群に基づく複数のプールがあり、
    第1のモードと、第2のモードがあり、
    前記第1のモードがONの場合、前記複数のプールの全てが、仮想ボリューム総容量がプール容量以下に制限され、
    前記第2のモードがONの場合、前記複数のプールのうち所定の条件を満たすプールだけが、仮想ボリューム総容量がプール容量以下に制限され、
    前記第1のモードと前記第2のモードの両方がONの場合、前記第1のモードが優先される、
    ストレージ装置。
  12. 請求項1記載のストレージ装置であって、
    第1及び第2のプールがあり、
    第1及び第2の仮想ボリュームがあり、
    前記第1のプールは、仮想ボリューム総容量がプール容量以下に制限されるプールであり、
    前記第2のプールは、仮想ボリューム総容量がプール容量以下に制限されないプールであり、
    前記第1の仮想ボリュームが、前記第1のプールに関連付けられており、
    前記第2の仮想ボリュームが、前記第2のプールに関連付けられており、
    (A)前記コントローラが、前記第2のプールから前記第2の仮想ボリュームに割り当てられている全ての実ページのステータスを、第3ステータスに変更し、
    (B)前記コントローラが、前記第1のプールから前記第1の仮想ボリュームに割り当てられている全ての実ページ内のデータを、前記第1の仮想ボリュームから前記第2の仮想ボリュームにコピーすることを、前記第2のプール内の第3ステータスの実ページが初期化され、且つ、その実ページのステータスが第1ステータスに変わるまで、待つ、
    ストレージ装置。
  13. 請求項1記載のストレージ装置であって、
    前記コントローラが、前記プール内の第3ステータスの実ページの総容量を算出し、算出された総容量を表示するための情報を出力する、
    ストレージ装置。
  14. プールに関連付けられる仮想ボリュームの総容量を制限する方法であって、
    前記プールは、物理記憶デバイス群に基づく複数の実領域で構成されており、
    前記仮想ボリュームは、Thin Provisioningが適用された仮想的な論理ボリュームであり、複数の仮想領域で構成されており、
    前記実領域のステータスとして、(1)初期化済みであり仮想領域に割当て可能であることを意味する第1ステータス、(2)仮想領域に割り当てられていることを意味する第2ステータス、及び、(3)仮想領域に割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがあり、
    前記実領域のステータスは、下記のように遷移し、
    (a)ホストから前記仮想ボリューム内の未割当ての仮想領域に対するライトの際に、前記仮想ボリュームが関連付けられているプールから、前記第1ステータスの実領域が割り当てられ、その実領域のステータスが、前記第2のステータスに変更され、
    (b)前記仮想領域に割り当てられている実領域のステータスが、前記第3ステータスに変更され、
    (c)前記第3ステータスの実領域が初期化され、その初期化が終了した場合に、その実領域のステータスが、前記第1ステータスに変更され、
    前記方法が、前記プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、前記第3ステータスの実領域を前記プールが有するか否かを基に、前記プールの容量以下に制限する、
    方法。
  15. ホストに対する通信インタフェース装置と、
    前記通信インタフェース装置に接続されたプロセッサと
    を有し、
    Thin Provisioningが適用された仮想的な論理ボリュームであり複数の仮想領域で構成された仮想ボリュームがあり、
    物理記憶デバイス群に基づくプールがあり、前記プールは、複数の実領域で構成され、
    前記実領域のステータスとして、(1)初期化済みであり仮想領域に割当て可能であることを意味する第1ステータス、(2)仮想領域に割り当てられていることを意味する第2ステータス、及び、(3)仮想領域に割当て不可能であり所定データの書込みである初期化がされることを意味する第3ステータスがあり、
    前記プロセッサは、下記の処理を行うようになっており、
    (a)前記ホストから前記仮想ボリューム内の未割当ての仮想領域に対するライトコマンドを受信し、前記仮想ボリュームが関連付けられているプールから、前記第1ステータスの実領域を割り当て、その実領域のステータスを前記第2のステータスに変更し、
    (b)前記仮想領域に割り当てられている実領域のステータスを、前記第3ステータスに変更し、
    (c)前記第3ステータスの実領域を初期化し、その初期化が終了した場合に、その実領域のステータスを、前記第1ステータスに変更し、
    前記プロセッサが、前記プールに関連付けられる1以上の仮想ボリュームの総容量である仮想ボリューム総容量を、前記第3ステータスの実領域を前記プールが有するか否かを基に、前記プールの容量以下に制限する、
    記憶制御装置。
JP2012512531A 2010-04-27 2010-04-27 プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置 Expired - Fee Related JP5303066B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/003018 WO2011135617A1 (ja) 2010-04-27 2010-04-27 プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置

Publications (2)

Publication Number Publication Date
JPWO2011135617A1 JPWO2011135617A1 (ja) 2013-07-18
JP5303066B2 true JP5303066B2 (ja) 2013-10-02

Family

ID=44816768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012512531A Expired - Fee Related JP5303066B2 (ja) 2010-04-27 2010-04-27 プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置

Country Status (3)

Country Link
US (1) US8677080B2 (ja)
JP (1) JP5303066B2 (ja)
WO (1) WO2011135617A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8543786B2 (en) * 2010-09-29 2013-09-24 Hitachi, Ltd. Computer system and computer system management method for adding an unused real volume to a pool
US8495331B2 (en) * 2010-12-22 2013-07-23 Hitachi, Ltd. Storage apparatus and storage management method for storing entries in management tables
WO2014002162A1 (ja) * 2012-06-25 2014-01-03 富士通株式会社 ストレージ制御装置、情報処理装置、ストレージ制御プログラム、及びストレージ制御方法
US9104590B2 (en) 2012-07-20 2015-08-11 Hitachi, Ltd. Storage system including multiple storage apparatuses and pool virtualization method
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
US9201598B2 (en) * 2012-09-14 2015-12-01 International Business Machines Corporation Apparatus and method for sharing resources between storage devices
WO2016129053A1 (ja) * 2015-02-10 2016-08-18 株式会社日立製作所 ストレージ装置の管理計算機
JP6276301B2 (ja) * 2016-01-22 2018-02-07 Necプラットフォームズ株式会社 ストレージアクセス制御装置、ストレージアクセス制御システム、ストレージアクセス制御方法、及び、ストレージアクセス制御プログラム
US10248320B2 (en) * 2016-10-28 2019-04-02 International Business Machines Corporation Workload-aware thin-provisioning storage-allocation system
EP3695319B1 (en) * 2017-09-27 2022-11-23 Telefonaktiebolaget LM Ericsson (publ) Method and reallocation component for managing reallocation of information from source to target memory sled
US11249852B2 (en) 2018-07-31 2022-02-15 Portwonx, Inc. Efficient transfer of copy-on-write snapshots
US11354060B2 (en) 2018-09-11 2022-06-07 Portworx, Inc. Application snapshot for highly available and distributed volumes
JP6853227B2 (ja) 2018-10-10 2021-03-31 株式会社日立製作所 ストレージシステム及びストレージ制御方法
US11494128B1 (en) 2020-01-28 2022-11-08 Pure Storage, Inc. Access control of resources in a cloud-native storage system
US11531467B1 (en) 2021-01-29 2022-12-20 Pure Storage, Inc. Controlling public access of resources in a secure distributed storage system
US11733897B1 (en) 2021-02-25 2023-08-22 Pure Storage, Inc. Dynamic volume storage adjustment
US11520516B1 (en) 2021-02-25 2022-12-06 Pure Storage, Inc. Optimizing performance for synchronous workloads
US11726684B1 (en) 2021-02-26 2023-08-15 Pure Storage, Inc. Cluster rebalance using user defined rules

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008097502A (ja) * 2006-10-16 2008-04-24 Hitachi Ltd 容量監視方法及び計算機システム
JP2010033261A (ja) * 2008-07-28 2010-02-12 Hitachi Ltd ストレージ装置及びその制御方法
JP2010073095A (ja) * 2008-09-22 2010-04-02 Hitachi Ltd 計算機システム及びその制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7032093B1 (en) 2002-08-08 2006-04-18 3Pardata, Inc. On-demand allocation of physical storage for virtual volumes using a zero logical disk
US6823442B1 (en) 2003-05-12 2004-11-23 3Pardata, Inc. Method of managing virtual volumes in a utility storage server system
US8918585B2 (en) * 2010-01-28 2014-12-23 Hitachi, Ltd. Management system calculating storage capacity to be installed/removed

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008097502A (ja) * 2006-10-16 2008-04-24 Hitachi Ltd 容量監視方法及び計算機システム
JP2010033261A (ja) * 2008-07-28 2010-02-12 Hitachi Ltd ストレージ装置及びその制御方法
JP2010073095A (ja) * 2008-09-22 2010-04-02 Hitachi Ltd 計算機システム及びその制御方法

Also Published As

Publication number Publication date
US8677080B2 (en) 2014-03-18
US20110264868A1 (en) 2011-10-27
WO2011135617A1 (ja) 2011-11-03
JPWO2011135617A1 (ja) 2013-07-18

Similar Documents

Publication Publication Date Title
JP5303066B2 (ja) プールに関連付けられる仮想ボリュームの総容量を制限する方法及びストレージ装置
JP5314772B2 (ja) 性能の異なる実領域群で構成されたプールを有するストレージシステムの管理システム及び方法
US8612704B2 (en) Storage system with virtual areas and method for managing storage system
EP1837751B1 (en) Storage system, storage extent release method and storage apparatus
JP4684864B2 (ja) 記憶装置システム及び記憶制御方法
US8984221B2 (en) Method for assigning storage area and computer system using the same
JP5749803B2 (ja) 情報記憶システム及びストレージシステム管理方法
JP5080611B2 (ja) ThinProvisioningが適用されたストレージ装置
JP5124551B2 (ja) ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法
JP5706531B2 (ja) 計算機システム、及び情報管理方法
US20130036279A1 (en) Storage system using real data storage area dynamic allocation method
US20120297156A1 (en) Storage system and controlling method of the same
WO2013098960A1 (ja) 計算機システム、ファイル管理方法及び記憶媒体
JP2009134397A (ja) 仮想ボリュームに割り当て済みの全ての実記憶領域を解放するか否かを制御する計算機及び方法
JP2011070345A (ja) 計算機システム、計算機システムの管理装置、計算機システムの管理方法
JP5957520B2 (ja) データ管理システム及び方法
US7676644B2 (en) Data processing system, storage apparatus and management console
JP6772202B2 (ja) ストレージシステム及び記憶制御方法
US20120254583A1 (en) Storage control system providing virtual logical volumes complying with thin provisioning
JP6035363B2 (ja) 管理計算機、計算機システム、及び管理方法
JP6019169B2 (ja) 情報記憶システム
WO2017085792A1 (ja) ストレージシステム、及びストレージシステムの制御方法
WO2018167950A1 (ja) ストレージシステム及び複製制御方法
JP7113698B2 (ja) 情報システム
JP2018169637A (ja) 情報処理装置,仮想化プログラムおよび仮想化方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130621

R150 Certificate of patent or registration of utility model

Ref document number: 5303066

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees