JP5406363B2 - プール領域の一部の領域を動的にデータ格納領域として割り当てる記憶制御装置及び記憶制御方法 - Google Patents

プール領域の一部の領域を動的にデータ格納領域として割り当てる記憶制御装置及び記憶制御方法 Download PDF

Info

Publication number
JP5406363B2
JP5406363B2 JP2012502051A JP2012502051A JP5406363B2 JP 5406363 B2 JP5406363 B2 JP 5406363B2 JP 2012502051 A JP2012502051 A JP 2012502051A JP 2012502051 A JP2012502051 A JP 2012502051A JP 5406363 B2 JP5406363 B2 JP 5406363B2
Authority
JP
Japan
Prior art keywords
volume
area
data
control right
snapshot
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
JP2012502051A
Other languages
English (en)
Other versions
JP2012533100A (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 JP2012533100A publication Critical patent/JP2012533100A/ja
Application granted granted Critical
Publication of JP5406363B2 publication Critical patent/JP5406363B2/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

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

本発明は、プール領域の一部の領域を動的にデータ格納領域として割り当てる記憶制御技術に関するものである。
記憶制御装置として、プール領域の一部の領域を動的にデータ格納領域として割り当てる装置が知られている。プール領域は、例えば、一以上のRAID(Redundant Array of Independent Disks)グループに基づく物理記憶領域であり、例えば、一又は複数の論理ボリュームの集合である。RAIDグループは、複数の物理記憶デバイスで構成されており、RAIDグループには、所定のRAIDレベルでデータが格納される。以下の説明では、上記の物理記憶領域を「プール領域」と言う。
プール領域を用いる機能としては、幾つかの種類がある。
例えば、第1種の機能として、動的容量拡張がある。具体的には、例えば、ホスト装置に提供された論理ボリューム(仮想ボリューム)にホストからのライトが発生するなど、実際にデータ格納領域が必要となった場合に、プール領域の一部の領域が、データ格納領域として割当てられる。
また、例えば、第2種の機能として、スナップショット管理がある。具体的には、例えば、或る時点の論理ボリュームのイメージを保持し、保持したイメージと現状のイメージとの差分に相当するデータ(差分データ)を格納するための領域が、プール領域から動的に割り当てられる。
特許文献1では、一元管理されたプール領域を複数機能で共有する事で、記憶領域の使用効率を向上する方法が記載されている。
特開2007−193573号公報
記憶制御装置内の各部位の制御や、機能を実現するプログラムの実行は、CPUで実行される。記憶制御装置内に複数のCPU(Central Processing Unit)を備える、もしくは、CPU内部に複数のCPUコアが搭載されている事により、装置内に複数のCPUコアを備える記憶制御装置がある。
装置内に複数のCPUコアを備える記憶制御装置では、CPUコア間で同一の物理的、論理的リソースにアクセスする際に、他コアの処理を排他する必要があるが、排他論理によるオーバヘッドによって、処理能力の低下が発生する。特に、ホストに提供する論理ボリュームを複数のCPUコアで使用する場合、すなわち、同一論理ボリュームに対して同時に複数コアが処理を実施する可能性がある場合には、同一論理アドレスに対するアクセスや、同一冗長データを使用する近傍アドレスに対するアクセスなど、複数のCPUコアが無制限に処理を実施する事が不可能なケースがあり、多くの排他処理が発生する。
これらの排他処理によるオーバヘッドを回避するための方法として、アクセスする物理的、論理的リソースを予め特定のCPUコアに割り当てるという方法がある。ホストに提供する論理ボリュームについては、或る論理ボリュームに関する制御権を、或るCPUコアに割り当て、このCPUコアのみで当該論理ボリュームに対する処理を実行する事によって、制御権(言い換えれば所有権)を持つCPUコア以外に対する排他を不要とする事が可能となる。なお、この制御権の単位は、ホスト装置に提供する論理ボリュームの単位であっても良いし、論理ボリュームとは異なる論理記憶領域の単位であっても良い。
しかし、単純にこの方法が採用されると、プール領域を一又は複数の論理ボリュームから構成し各論理ボリューム及びプール領域について制御権を設定した場合、プール領域を使用する機能を実行するCPUコア数分のプール領域が必要となる。このため、或るプール領域では容量が余っていても別のプール領域では容量が枯渇してしまうといった容量効率低下の原因ともなる。この問題は、特に、プール領域を使用する異種の機能が記憶制御装置に混在する場合に、大きいと考えられる。
従って、本発明の目的は、複数のCPUコアの各々が論理記憶領域に関する制御権を持つ記憶制御装置での容量効率の低下を抑えることにある。
複数のCPUコアの各々が、複数種類の論理記憶領域のうちの一種類以上の論理記憶領域の制御権を有する。論理記憶領域に割り当てられる領域のソースとして、複数種類の論理記憶領域に共通とした物理記憶領域が管理される。各CPUコアは、そのCPUコアが有する制御権に対応した論理記憶領域に対するデータのアクセスの場合、そのデータの格納に必要な領域を共通の物理記憶領域から割り当てる。
複数のCPUコアの各々が論理記憶領域に関する制御権を持つ記憶制御装置での容量効率の低下を抑えることが出来る。
図1は、本発明の実施例1に係る記憶制御装置を含むコンピュータシステムの全体構成図である。 図2は、メモリ118は記憶するプログラム及び情報を示す。 図3は、仮想ボリューム実現プログラム211によって実現される仮想ボリューム機能の説明図である。 図4は、スナップショット実現プログラム212によって実現されるスナップショット機能の説明図である。 図5は、仮想ボリューム機能とスナップショット機能で共通のプールボリュームを使用する方法について説明した図である。 図6は、制御情報231の構成を示す。 図7は、プール領域へ格納する情報があふれる可能性が発生した場合に行う処理のシーケンスを示した図である。 図8は、プールあふれ対応処理実行要否のチェックをポーリングで行う場合の処理シーケンスを示した図である。 図9は、ディスク151群に対するデータ配置の一例を示す。 図10は、図9で示したデータ配置の別の観点を示した図である。 図11は、図10で示したデータ配置に本実施例に従うデータ管理が適用された図である。 図12は、実施例2に係る制御情報231の一部を示す。 図13は、プール使用LU情報1201の構成を示す。 図14は、制御権セット管理情報1202の構成を示す。 図15は、ページ管理情報1203の構成を示す。 図16は、チャンク管理情報1204の構成を示す。 図17は、属性情報1205の構成を示す。 図18は、新規ページ割り当てを実施する際の処理シーケンスを示す。 図19は、ページの属性変更処理のシーケンスを示す。 図20は、制御権を移行する処理のシーケンスを示す。 図21は、プールLUを設定するための管理画面2101を示す。 図22は、プール使用LUの設定に用いる管理画面2201を示す。 図23は、ページ割り当て方針を設定するための管理画面2301を示す。 図24は、制御権移行処理を指示するための管理画2401を示す。
以下、本発明の一実施例を図面に基づいて説明する。
図1は、本発明の実施例1に係る記憶制御装置を含むコンピュータシステムの全体構成図である。
図1において、コンピュータシステムは、記憶制御装置101、ホスト102、及び管理ホスト103を備える。
ホスト102は、記憶制御装置101にI/Oコマンド(ライトコマンド又はリードコマンド)を発行する装置(例えば計算機又は別の記憶制御装置)である。ホスト102は、記憶制御装置101に接続するための通信ポートを有しており、このポートを介して、接続経路104を通り、記憶制御装置101に接続される。
管理ホスト103は、記憶制御装置101を管理する装置(例えば計算機)である。管理ホスト103は、管理用接続経路105を通り、記憶制御装置101に接続される。
図1では、ホスト102及び管理ホスト103と、記憶制御装置101とを直接接続した構成を記載しているが、ホスト102と記憶制御装置101との接続については、通信ネットワーク(例えばSAN(Storage Area Network))が利用されてもよい。管理ホスト103と記憶制御装置101との接続については、通信ネットワーク(例えばLAN(Local Area Network))が利用されてもよい。ここで、SANとして、Fibre ChannelやiSCSI等のプロトコルを使用する事が出来る。また、管理ホスト接続については、ホスト接続と同じ接続経路を用いる事も出来る。
記憶制御装置101は、コントローラ111及び161と複数のディスク151とを備える。コントローラ111及び161間は、コントローラ間バス141によって接続される。コントローラ111及び161とディスク151とは、ディスク接続経路142によって接続される。ディスク151としては、FC(Fibre Channel)、SAS(Serial Attached SCSI)、ATA(Advanced Technology Attachment)やSSD(Solid state Drive)等のHDD(Hard Disk Drive)を使用することができる。ディスク151に代えて、テープやフラッシュメモリなどの他種の物理記憶デバイスが採用されてもよい。
コントローラ111及び161について、コントローラ111を代表的に例に採り説明する。
コントローラ111は、ホスト入出力制御部112、データ転送制御部113、ディスク入出力制御部114、キャッシュメモリ115、ブリッジ116、CPU117、メモリ118、及び管理I/F119を備える。
ホスト入出力制御部112は、インタフェース装置であり、接続経路104を通じてホスト102に接続され、ホスト102との入出力の制御を行う。
データ転送制御部113は、例えばハードウェア回路(例えばLSI)であり、内部バス131によってホスト入出力制御部112と、内部バス132によってディスク入出力制御部114と、内部バス134によってブリッジ116と接続され、コントローラ111内のデータ転送を制御する。また、データ転送制御部113は、コントローラ161と接続され、コントローラ111及び116間の制御情報通信及びデータ転送を制御する。
ディスク入出力制御部114は、インタフェース装置であり、ディスク接続経路142によってディスク151と接続され、ディスクに対するデータの入出力を制御する。
キャッシュメモリ115は、内部バス133によってデータ転送制御部113と接続され、データ転送に伴い移動するデータを一時的に保持する。
メモリ118は、内部バス136を介してCPU117と接続される。メモリ118は、CPU117内のコア121によって実行されるコンピュータプログラムや、コンピュータプログラムの実行の際に参照される制御情報を記憶する。
CPU117は、内部バス135によってブリッジ116と接続される。また、CPU117は、例えばマルチコアシングルプロセッサ、つまり、複数のコア121を有する。もちろん、CPU117がシングルコアCPUの場合は、複数コアは格納されていないが、CPU117自体を一つのコアと見なす事が出来る。この場合、複数のCPU117が設けられる。コア121は、メモリ118に格納されたプログラムに従って各種の演算処理を実行し、処理結果をもとにコントローラ111全体の制御を実行する。また、コントローラ161内のリソースについても制御を実行する場合がある。
管理I/F119は、インターフェース装置であり、内部バス137によってブリッジ116に接続される。また、管理I/F119は、管理用接続経路105を介して、管理ホスト103に接続されており、管理ホスト103とのデータの授受や通信の制御を行う。
記憶制御装置101の構成は、図1の構成に限らない。例えば、CPU117とブリッジ116が一体となったチップや、CPU117とデータ転送制御部113が一体となったチップや、少なくとも一つのインターフェース装置とCPU117が一体となったチップを用いた構成が採用されてもよい。また、キャッシュメモリ115とメモリ118を同一メモリで実現した構成が採用されてもよい。
図2は、メモリ118は記憶するプログラム及び情報を示す。なお、以下の説明においてプログラムが行う処理は、実際には、プログラムを実行するコアによって実行される。
メモリ118に格納されている情報の多くはCPU117の処理に使用されるが、CPU以外の各部位とのI/Fに使用する場合もある。図2には明示していないが、例えば、ホスト入出力制御部112が行うべき処理を定義した情報をメモリ118に格納し、ホスト入出力制御部112はその情報を確認した後処理を行い、処理の結果をメモリ118上に記録する等の使用方法がある。また、CPU117の処理に使用する情報は、CPU117内部の全てのコア121向けであったり、特定のコア121向けの情報であったりする。図2では、説明の簡単化のため、全ての情報をコア間で共有するような記載としている。しかし、コア間の排他処理に伴うオーバヘッドを削減する目的で、コア毎にアクセスする領域を固定とするため、例えば制御情報231を分割するような構成も採用可能である。
メモリ118は、オペレーティングシステム201、ディスクアレイ制御プログラム202、データ転送制御プログラム203、入出力制御部制御プログラム204、仮想ボリューム実現プログラム211、スナップショット実現プログラム212、プール管理プログラム221、プールあふれ監視プログラム222、データ消去プログラム223、データコピー/移動プログラム224、ページ割り当て/解放プログラム225、チャンク割り当て/開放プログラム226、制御権移行プログラム227、及び制御情報231を記憶する。
オペレーティングプログラム201は、CPU117及びコア121が各プログラムを実行する際のスケジューリング等の基本処理を行うプログラムである。
ディスクアレイ制御プログラム202は、ホストへ提供する論理ボリュームの管理や、ディスク151への入出力位置演算など、記憶制御装置全体の制御に用いるプログラムである。
データ転送制御部制御プログラム203は、データ転送制御部113の制御に用いるプログラムである。
入出力制御部制御プログラム204は、ホスト入出力制御部112、ディスク入出力制御部114の制御に用いるプログラムである。
仮想ボリューム実現プログラム211は、仮想ボリューム機能(例えば、Thin Provisioningに従う容量仮想化)を実現するためのプログラムである。仮想ボリューム機能とは、ホスト102に対して提供する論理ボリュームのデータ領域を記憶制御装置内のプール領域から動的に確保する機能である。
スナップショット実現プログラム212は、スナップショット機能を実現するためのプログラムである。ここでいうスナップショット機能とは、記憶制御装置内の論理ボリュームの或る時点でのイメージを取得及び保持する機能である。スナップショット機能には、複数の実現形態があるが、以下では、複数のスナップショットイメージ及び現時点の論理ボリュームが、同一のデータを共有する形態であるものとする。図2では、仮想ボリューム機能及びスナップショット機能を実現するプログラムのみを記載しているが、もちろん、これ以外にも後述のプール領域を使用する複数種類の機能があってもよい。このような機能の例としては、重複排除機能がある。重複排除機能とは、一又は複数の論理ボリューム間で同一内容のデータを共有し実際のデータをプール領域に格納する機能である。
プール管理プログラム221は、プール領域を管理するためのプログラムである。プール領域は、前述の仮想ボリューム機能やスナップショット機能で用いられる、データを実際に格納する領域である。
プールあふれ監視プログラム222は、プール領域に予め定められたサイズ以上のデータを格納しようとしていないか、もしくはそのような可能性が高い状況になっていないかを監視するプログラムである。
データ消去プログラム223は、プールあふれからの解消を行う場合などに、格納済みのデータ及び関連する管理情報を消去する際に用いるプログラムである。
データコピー/移動プログラム224は、主にプール領域を使用しているデータに関して、格納済みのデータを別の位置にコピーしたり、移動したりする際に用いるプログラムである。
ページ割り当て/開放プログラム225は、ページ単位で領域を確保したり解放したりするためのプログラムである。「ページ」とは、プール領域の一部の領域であり、ページ単位とは、プール領域を使用する機能が使用する管理単位である。
チャンク割り当て/開放プログラム226は、チャンク単位で領域を確保したり解放したりするためのプログラムである。「チャンク」とは、複数のページで構成された記憶領域であり、プール領域の一部の領域である。
制御権移行プログラム227は、あるコア121に対して割り当てられた制御権を別のコアに移行する際に使用するプログラムである。
制御情報231は。コア121が各種プログラムを実行する上で必要となる、各物理的リソース及び論理的リソースの状態や、設定が格納されている。
図3は、仮想ボリューム実現プログラム211によって実現される仮想ボリューム機能の説明図である。
記憶制御装置101は、ホスト102に対して論理ボリュームを提供する。この論理ボリュームは、ホスト向けボリューム301である。ホスト向けボリューム301の中に、通常ボリューム311、仮想ボリュームA312、仮想ボリュームB313があり、ホスト102はこれらのボリュームにアクセスする。
通常ボリューム311は、ディスク151を用いて構成された、実際にデータを格納する領域である実データ領域A331と同等のサイズであり、一対一に結び付けられている。このため、通常ボリューム311内の領域a341に対するホスト102からのアクセスは、そのまま実データ領域331内の該当領域a361に対するアクセスとなる。
一方、仮想ボリュームA312は、仮想ボリューム機能を用いて構成される論理ボリュームである。仮想ボリュームA312は、ボリューム作成時には実際のデータ及びデータ格納領域が割り当てられていない。仮想ボリュームA312に対するホスト102からのアクセス、特にライトアクセスが発生した場合に、実際のデータ格納領域の一部領域が割り当てられる。データ格納領域の割り当ては、仮想プールボリューム(仮想ボリューム機能向けプールボリューム)321の一部を用いて実行される。仮想プールボリューム321は、ディスク151から構成される、実データ領域B332と同等のサイズであり、一対一に結び付けられている。よって、仮想ボリュームA312内のある領域b342に対するアクセスは、まず仮想プールボリューム321内の領域b352へのアクセスに変換される。このときの領域b342へのアクセスが、仮想ボリュームA312を作成してから初めてのアクセスだった場合には、仮想プールボリューム321内の領域b352を新たに割り当てる処理が実行される。さらに、実際にデータを格納する領域は、実データ領域B332内の領域b362となる。
また、仮想ボリュームB313も仮想ボリュームA312と同様に仮想ボリューム機能を用いて構成される論理ボリュームである。仮想ボリュームB313内の領域c343は、仮想プールボリューム321内の領域c353に対応しており、実データ領域332内の領域c363へと対応している。すなわち、仮想ボリュームA312と仮想ボリュームB313は、同一の仮想ボリューム機能向けプールボリューム321を使用する事が可能である。
仮想ボリューム機能によって実現される効果として、例えば、ホストに提供される論理ボリュームのサイズ設計が不要となるという効果がある。ホストが使用する論理ボリュームが必要とするサイズは、将来どのように変化していくかを予測する事は困難であるため、予め大きなサイズの論理ボリュームを作成しておくという方法が有効である。しかし、この論理ボリュームを通常ボリュームとして作成すると、大きな記憶領域が使用されないまま確保されているという状況が生じ得る。このため、大きなサイズの論理ボリュームを仮想ボリュームとして作成しておき、実際にホストからのアクセスがあった場合のみ、実データ領域を割り当てていくという方法が好ましい。
このような目的で仮想ボリューム機能を用いる場合、仮想ボリュームの合計サイズと、仮想プールボリュームの合計サイズが一致している必要は無い。例えば、仮想プールボリュームのサイズの方が小さくてよい。例えば図3の例では、仮想ボリュームA312と仮想ボリュームB313がそれぞれ100TBで、仮想プールボリューム321のサイズが20TBだった場合であっても、実際にホスト102が使用するサイズが、仮想プールボリューム321のサイズ以下であれば、運用可能である。
図4は、スナップショット実現プログラム212によって実現されるスナップショット機能の説明図である。
スナップショット機能とは、記憶制御装置101がホスト102に提供する論理ボリュームの或る時点でのイメージを取得及び保持する機能の事であるが、本実施例では、スナップショット機能とは、前述したように、スナップショットイメージとスナップショットのベースとなるボリュームとの間、及び、スナップショット間で共通するデータについては、同一領域を参照するような機能のことである。
記憶制御装置101は、ホスト102に対して、ホスト向けボリューム301として、スナップショットベースボリューム411と、スナップショットボリュームA412と、スナップショットボリュームB413とを提供している。
スナップショットベースボリューム411は、図3に示したような仮想ボリュームであってもよいが、ここでは通常ボリュームとする。スナップショットベースボリューム411は、ディスク151から構成される実データ領域431と結び付けられており、ボリューム上の領域a441は、実データ領域上の領域a461に相当する。
スナップショットボリュームA412は、スナップショットベースボリューム411のある時点の状態を保持したものである。スナップショットボリュームA412内のある領域a442は、スナップショットベースボリューム411内の領域a441と同等のデータを指し示す。このため、スナップショットボリュームA412内の領域a442に対応するデータは、スナップショットベースボリューム411内の領域a441、すなわち実データ領域431内の領域a461に格納されており、スナップショットベースボリューム411と共有している。
スナップショットボリュームA412内の、スナップショットベースボリューム411とは異なるデータとして、領域b443内のデータを例として挙げる。領域b443内のデータは、スナップショットベースボリューム411とは異なる、スナップショットボリュームA412のみが持つデータとする。これは、スナップショットボリュームA412取得後に、スナップショットベースボリューム411の領域b443に相当する領域に対して更新が行われた場合や、スナップショットボリュームA412の領域b443に対して、直接更新が行われた場合に相当する。領域b443内のデータ等、スナップショットベースボリュームとの差異が発生した場合のデータは、スナッププールボリューム(スナップショット向けプールボリューム)421に格納される。領域b443内のデータは、スナッププールボリューム421内の領域b453内のデータに対応し、実際は、ディスク151から構成される実データ領域B432内の領域b463に格納される。
スナップショットボリュームB413も同様であり、差分が発生した領域c444のデータは、スナッププールボリューム421内の領域c454が対応し、実際のデータは、実データ領域B432内の領域c464に格納される。
領域b443内のデータと領域c444内のデータは、それぞれ異なるスナップショットボリューム内のデータであるが、同一のスナッププールボリューム421に格納する事が可能である。
また、スナップショット取得後のスナップショットベースボリュームやスナップショットボリュームに対するライトアクセスによって、差分データは増加していくが、この増加する度合い(差分データの増加速度)を事前に予想する事は困難である。
差分データは、スナッププールボリューム421のようにプールボリュームという形で動的に領域を割り当てていく事によって、前述のように、異なるスナップショットボリュームのデータを格納する事や、差分データの増加傾向を厳密に予想する事無くスナップショット機能を運用していく事が可能となる。
以上が、スナップショット機能に関する説明である。
図5は、仮想ボリューム機能とスナップショット機能で共通のプールボリュームを使用する方法について説明した図である。
ホスト102に提供されるホスト向けボリューム301として、仮想ボリューム511、スナップショットボリューム512、スナップショットベースボリューム513がある。
仮想ボリューム511は、仮想プールボリューム(仮想ボリューム機能向けプールボリューム)531を使用し、実データ領域A541に実際のデータを格納する。スナップショットベースボリューム513は、実データ領域B542に実際のデータを格納する、通常ボリュームである。もちろん、前述の通り、スナップショットベースボリューム513は仮想ボリュームであってもよい。
スナップショットボリューム512は、スナップショットベースボリューム513の或る時点のボリュームイメージを保持したものである。スナップショットボリューム512内の領域b552については、スナップショットベースボリューム513内の領域b553を指し示しており、実際のデータは実データ領域542内の領域b583に格納されている。すなわち、図4の場合と同じく、ベースボリュームとの共通データについては、同一データを指し示している。
スナップショットボリューム512内の、ベースボリュームと差異が発生した領域として、領域c554がある。この領域c554のデータは、スナップショット向けプールボリュームに格納するが、本実施例では、このプールボリュームを、仮想ボリューム機能にて実現し、スナップショット向け仮想プールボリューム521とする。このスナップショット向け仮想プールボリューム521は、仮想プールボリューム531を、そのプール領域として使用する。スナップショット領域c554は、スナップショット向け仮想プールボリューム521内の領域c564に相当し、さらに仮想ボリューム機能によって、仮想プールボリューム531内の領域c574に相当し、最終的な実データは、実データ領域A541内の領域c584に格納される。
この方式によって、仮想プールボリュームと、その他の機能向けのプールボリューム(本獅子形態では、スナッププールボリューム)を同一のボリュームとする事が可能となる。すなわち、プールを使用する各種機能が使用するプールを単一のプールとする事が可能となる。複数種類の機能による単一プールでは、複数の仮想ボリュームが単一のプールを使用する場合や、複数のスナップショットボリュームが単一のプールを使用する場合と同様に、複数プールボリュームに比べてプールボリュームの容量効率を高める事が可能となる。また、この方式によれば、スナップショット向け仮想プールボリューム521の容量は、実際に記憶制御装置が備える実データ領域A541の容量とは無関係となるため、スナップショット機能向けのプール領域に関する容量設計が不要となる。
さらに、記憶制御装置が論理ボリュームに制御権を設定し、ある論理ボリュームに関する処理はあるコア121が担当するような制御を実施している場合には、仮想ボリューム機能の階層で、制御権に関する処理が実行できていればよい。すなわち、仮想プールボリューム531を、異なる複数のコアから使用可能な状態となっていれば、ホスト向けボリューム301に含まれるボリュームの制御権の状態に関わらず、共通したプールボリュームを使用可能となる。この仮想ボリューム機能の階層で、制御権に関する処理を行う方式については、後述のチャンク方式がある。
図6は、制御情報231の構成を示す。
同図には、制御情報231のうち、複数機能が同一のプールを使用する場合に必要となるものを記載している。また、本実施例では、プール領域として論理ボリュームを使用する事を想定しているため、制御情報に含まれる各種情報は、LU(Logical Unit)単位の情報としている。制御情報231には、プールLU情報601とプール使用LU情報602が含まれている。
プールLU情報601には、プールLU情報テーブルT601が格納されている。プールLU情報テーブルT601には、プールとして使用される論理ボリュームの情報が格納されている。具体的には、例えば、テーブルT601は、プールとして使用される論理ボリューム(LU)毎に、プールLU番号(図では「PLU」)、用途、種別、使用プールLU番号(図では「ULU」)、容量、使用容量、あふれ対応開始閾値(図では「開始閾値」及びあふれ対応終了閾値(図では「終了閾値」)を表す情報を有する。
「プールLU番号」は、プールとして使用する論理ボリュームのLU番号(他種の識別情報でもよい)である。「使用プールLU番号」は、使用中のプールLUの番号である。
「用途」は、プールLUをどのような機能が使用するのかである。
「種別」は、各プールLUの実現方法として、通常ボリュームと仮想ボリュームのいずれの方法でプールを実現するかである。
プールLU情報テーブルT601において、プールLU番号5の論理ボリュームは、スナップショット機能向けの通常ボリュームのプールであるため、スナップショット向けプールボリューム421に相当する。プールLU番号13及び14の論理ボリュームは、スナップショット向けプールであるが、その実現方法が仮想ボリュームのため、スナップショット向け仮想プールボリューム521に相当する。また、プールLU番号3の論理ボリュームは、仮想ボリューム向けプールであり、かつ、スナップショット向け仮想プールボリュームのプールとしても使用されている事から、仮想ボリューム機能向けプールボリューム531に相当する。
プールLU情報テーブルT601について、「容量」は、各プール領域(プールLU)の容量を示す。ここで、種別が通常ボリュームであるプールLUについては、同等の容量を実際に用意する必要があるが、種別が仮想ボリュームの場合は必ずしもそうではない。例えば、プールLU番号3に関しては、容量が30TBとなっており、実際に30TBのディスクを用意する。しかし、共にプールLU番号3を使用するプールLU番号13,14については、合計サイズが40TBとなっているように、実際の容量である30TBとは無関係に設定可能である。
「使用容量」は、前述の定められた容量に対して、現在どの程度のサイズが実際に割り当てられているか(すなわち、割当て済みの領域の総量)を示す。
「あふれ対応開始閾値」及び「あふれ対応終了閾値」は、あふれ対応処理の開始及び終了の契機としての閾値であり、プールLUの容量に対する使用容量の比率の閾値である。例えば、容量が100TB、あふれ対応開始閾値が90%、あふれ対応終了閾値が80%の場合は、使用容量が90TBになった場合にあふれ対応処理が開始される。その後、あふれ対応処理によって使用中の容量を低減したり、容量を追加したりする等の対応を行い、使用容量が容量の80%(容量を増加しなかった場合は80TB)以下になると、あふれ対応処理が終了する。
プール使用LU情報602には、プール使用LU情報テーブルT602が格納されている。プール使用LU情報テーブルT602は、プールLU情報テーブルT601に記載されている各プールLUを実際に使用しているLUの情報が格納されている。具体的には、例えば、テーブルT602は、プールLU情報テーブルT601に記載されている各プールLUを実際に使用しているLU毎に、LU番号、使用プールLU番号(図ではPLU)、用途及び優先度を表す情報を有する。
「LU番号」は、プールLUを使用しているLUの番号である。
「使用プールLU番号」は、使用中のプールLUの番号である。
「用途」は、対象のLUがどういった機能のためにプールを使用しているかである。
「優先度」は、あふれ対応処理における処理内容を決定するためのパラメータである。なお、優先度という情報はテーブルT1602に無くても良く、その場合、用途を基に、優先度に相当する情報が決定されても良い。例えば、後述のあふれ対応処理において、第1の用途のLUは第2の用途のLUよりも高い優先度であると認識されても良い。
図21は、プールLUを設定するための管理画面2101を示す。
本発明の全ての実施例において、「管理画面」とは、管理ホスト103に表示される画面である。管理画面2101は、プールLU設定部位2111、設定ボタン2112及びキャンセルボタン2113を有する。
プールLU設定部位2111には、プールLU選択部位2121があり、新規にプールを作成するのか、既存プールの設定を変更するのかの選択ラジオボタンと、対象とするプールLU番号を設定する入力ボックスがある。選択したプールLU番号に対して、種別設定部位2122にて、通常ボリュームを使用するのか、仮想ボリュームを使用するのか、仮想ボリュームを使用する場合はどのプールLUを使用するのかを選択する。
さらに、プールLU設定部位2111には、設定するプールLUの用途を選択する部位2131、容量を入力する部位2132,あふれ対応開始閾値を入力する部位2133,あふれ対応終了閾値を入力する部位2134がある。
設定ボタン2112は、入力された各種情報を反映するためのボタンであり、キャンセルボタン2113は、入力された各種情報を破棄するためのボタンである。
本管理画面で設定された各種の情報は、プールLU情報テーブルT601に反映される。
図22は、プール使用LUの設定に用いる管理画面2201を示す。
管理画面2201は、プール使用LU設定部位2211と、設定ボタン2212,キャンセルボタン2213からなる。
プール使用LU設定部位には、対象LU選択部位2221があり、本画面で設定対象とするLUを選択する。さらに対象LUがプールを使用する際の用途を選択する、用途選択部位2222と、対象LUが使用するプールLUを選択するプールLU選択部位2223と、対象LUの優先度を設定する優先度設定部位2224を備える。
設定ボタン2212は、入力された各種情報を反映するためのボタンであり、キャンセルボタン2213は、入力された各種情報を破棄するためのボタンである。
本管理画面で設定された各種の情報は、プール使用LU情報テーブルT602に反映される。
図7は、プール領域へ格納する情報があふれる可能性が発生した場合に行う処理のシーケンスを示した図である。
前述の通り、プール領域を使用する各種機能では、プール領域に割り当てられている実際の容量よりも、大きな容量を設定する事が可能である。これは、容量設計を簡易化するという効果がある反面、実際にプール領域に割り当てられた以上の容量をホスト等から要求される可能性がある事を示している。このため、プール領域へ格納すべき情報が、実際の容量を上回る、もしくは、上回る可能性が高くなる(プール領域の使用率が高くなる)という場合がある。
図7が示すプールあふれ対応処理は、上記のような状況で、あふれを回避するために実行する処理であるが、本実施例では、プール内に存在するデータの内、削除可能なデータを削除する処理を対象とする。削除処理以外には、記憶制御装置内の空き領域や、容量に余裕のある他のプール領域から、ディスク領域を追加に割り当て、プールの容量自体を大きくする事で容量使用率を下げる方法や、ユーザに対して当該プールへの容量追加を促す等の処理がある。
まず、プールあふれに関連する処理が開始され(S701)、あふれ対応処理が発生する可能性のある処理が実行される(S702)。あふれ対応処理が発生する契機は、或るプールの使用率が、そのプールに対応したあふれ対応開始閾値を上回る事である。よって、S702では、例えば、或るプールから新たに領域を割り当てる処理(或るプールの使用容量が増加する処理)や、或るプールに割り当てられている実データ領域が取り除かれる処理(プール容量が低減される処理)が行われる。
次に、プールあふれ監視プログラム222が、処理対象としているプールであふれ対応処理が必要かどうかを判断する(S703)。これは、S702によって、例えば使用容量が増加した場合においても、あふれ対応開始閾値を下回っていれば、プールあふれ対応処理を行う必要は無い。そのため、S703で、閾値をチェックする。あふれ対応処理が不要な場合は、あふれ対応処理を行うことなく、プールあふれ関連処理は終了する(S731)。
あふれ対応処理が必要となった場合は、プールあふれ監視プログラム222が、処理中のプールを使用しているLU群を抽出する(S711)。ここでは、プールLU情報テーブルT601と、プール使用LU情報テーブルT602が参照される。プールLU番号3のプールボリュームがあふれる可能性がある場合には、プール使用LU情報テーブルT602から、プールLU番号3を使用しているLUとして、LU番号2,11が対象となる事が分かる。さらに、プールLU情報テーブルT601から、プールLU番号3は、プールLU番号13,14も使用している事が分かり、これらのプールLU番号13,14を使用しているLU番号20,35,52も、S711における、処理中のプールを使用するLU群である事がわかる。
次に、抽出したLU群に関して、プールあふれ監視プログラム222が、各LUの優先度を解析する(S712)。各LUの優先度は、プール使用LU情報テーブルT602から得られる。ここ、で参照する優先度とその解釈の方法は幾つか考えられる。
以下、優先度とその解釈の一例を挙げる。優先度A,B,CのLUについては、必ず削除しないものとする。仮想ボリューム機能を用いたボリュームをコンピュータシステムの通常運用で用いているケースでは、システムの継続運用を行う上で、データを削除する事は通常不可能であるため、これらの優先度に設定する事が妥当である。
優先度AとBとCの差異の例を以下に示す。優先度Aは、同一のプールを使用するLUに削除可能なLUがあった場合は、その削除可能なLUを削除する。優先度Bの場合は、削除可能なLUがあった場合であっても、その削除可能なLUを削除しない。また、優先度Cの場合は、あふれ対応開始閾値を超えている場合には、新規領域割り当てを実行せず、新規領域割り当てを伴う要求を失敗させる。
あふれ対応開始閾値が100%未満であった場合は、本処理を実行したものの使用率を下げる事が出来なかったとしても、処理の継続が可能である。しかし、プールの使用率が100%となってしまうと、その後に当該プールを使用するLUに対して、プールからの新規領域割り当てを伴う処理要求が発行された場合には、その要求は失敗してしまう。
優先度Aのボリュームは、このような完全あふれによる要求失敗を出来るだけ発生させないため、他の削除可能なボリューム(LU)が積極的に削除するという方針のボリュームである。それにより、優先度Aのボリュームが使用するプールに空き容量が増える、つまり、優先度Aのボリュームに割当て可能な領域が増える。
優先度Bのボリュームについては、自身を削除する事やあふれ処理対応中であっても、新規割り当てを伴う処理要求を失敗させる事による運用への影響は避けるが、その他のボリュームの削除を行うほど優先度が高くはなく、完全なあふれをある程度許容するという方針のボリュームとなる。
優先度Cのボリュームは、自身を削除する事は許可できないが、新規割り当てを失敗させる事によって、優先度A,Bのボリュームに対する影響を最小限にするという方針のボリュームとなる。
もちろん、本実施例の様な処理を行ったとしても、プールの完全あふれは発生する場合がある。本実施例の処理は、あくまでもプールあふれを発生しにくくする、またあふれが発生する場合であっても、そのボリュームの優先度から、最適なプールボリュームの使用方法を選択するための処理である。
優先度D以下のボリュームは、あふれ対応処理によって削除可能なボリュームである。例えば、スナップショットボリュームは、削除しても通常のコンピュータシステムの運用には影響を与えない。また、所定の時点間隔(例えば1分おき)にスナップショットボリュームが取得される場合、10分おきのイメージを残して削除した時には復元可能なイメージが減るものの、システム運用に与える影響は小さくなる。また、古いログを格納している仮想ボリュームなどについても、ログのラップという現象ととらえる事で、削除が可能である。優先度D以下は、削除可能なボリュームの中から、さらにどのボリュームを削除すべきかを判断するための情報となり、もちろん、優先度が低いものほど削除した場合の影響が小さい事を示す。
S712によって解析した結果を受け、プールあふれ監視プログラム222が、抽出したLU群に消去すべきLUが存在するかを判断する(S713)。ここでは、例えば、優先度D以下の削除可能なLUが存在しなかったり、優先度AのLUが存在しなかったりした場合には、消去すべきLUは存在しないとなり、プールあふれの対応処理要求があったものの、消去による対応は実施不可という結果であふれ関連処理は終了となる(S731)。
消去すべきLUが存在した場合は、プールあふれ監視プログラム222が、消去すべきLUの中で最低優先度のLUの消去を指示する(S721)。S721の指示を受け、データ消去プログラム223によって、消去すべきLUのデータの消去が実行され、また、処理中のプールの使用容量の低減、使用中LU情報の削除が実施され、プールLU情報テーブルT601とプール使用LU情報テーブルT602が更新される。
次に、処理中のプールに対して、プールあふれ監視プログラム222が、さらに継続してあふれ対応処理が必要か判断を行う(S722)。ここでは、プールLU情報テーブルT601の容量と使用容量とあふれ対応終了閾値を用いて判断する。あふれ対応処理を開始する閾値と終了する閾値は、終了閾値をある程度低く設定する事によって、あふれ対応処理を連続して実行可能な状態とし、処理効率を上げる事が可能であるため、上記のようなシーケンスとしている。S722において、あふれ対応終了閾値を下回っていた場合は、プールあふれ対応処理要求があり、成功したという結果で、プールあふれ関連処理は終了となる(S731)。あふれ対応終了閾値を上回っていた場合は、S711へ戻り、再度処理対象のLU群の抽出から、あふれ対応処理を実行する事となる。
図7においては、プールあふれ対応処理が必要か否かは、プール使用率に変化のある処理の度にS703にてチェックが行われる。この方式では、プールあふれの危険性がある場合に迅速な処理が可能であるものの、チェックのためのオーバヘッドが大きいという問題がある。
図8は、プールあふれ対応処理実行要否のチェックをポーリングで行う場合の処理シーケンスを示した図である。
プールあふれ対応処理が開始されると(S801)、まず、プールあふれ監視プログラム222が、あふれ対応が必要なプールがあるかどうかを判断する(S802)。ここで、あふれ対応が必要なプールが存在しない場合は、プールあふれ対応処理は終了となる(S831)。
あふれ対応が必要なプールが存在した場合は、プールあふれ監視プログラム222が、対応が必要なプールの中から一つを選択する(S811)。
次に、プールあふれ監視プログラム222が、選択したプールを使用するLU群を抽出し(S812)、抽出したLU群の優先度を解析し(S813)、抽出したLU群に消去すべきLUが存在するかを判断する(S814)。これらの処理は、S711,S712,S713と同等である。
S814にて、消去すべきLUが存在しなかった場合は、プールあふれ監視プログラム222が、選択したプールについては、あふれ対応必要判定から除外し(S821)、そのプールが再度選択されないような設定を行った後、S802にて、別のあふれ対応が必要なプールがあるかを判断する。
S814にて、消去すべきLUが存在した場合は、プールあふれ監視プログラム222が、消去すべきLUの中で最低優先度のLUの消去を指示し(S822)、選択したプールに対して、継続してあふれ対応が必要かを判断する(S823)。これらの処理は、S721,S722と同等である。S823にて、あふれ対応が必要となった場合は、S812に戻り、選択したプールを使用するLU群の抽出が再度行われる。あふれ対応が不要となった場合は、選択中プールに対してあふれ対応要求があり、成功したという結果で終了となり、S802にて、さらに別のあふれ対応が必要なプールが存在するかの判断が行われ。
図9は、ディスク151群に対するデータ配置の一例を示す。
データ1等の一つの四角901は、ストライプと呼ばれ、ディスク151上に設けられる単位領域であり、一般的に連続したアドレスのデータとなる。データ1,データ5,データ9,パリティ4,…がディスクAに、データ2,データ6,パリティ3,データ10,…がディスクBに格納される。
図9は、RAID5と呼ばれるデータ配置を示しており、特に、3つのデータから1つのパリティを作成する、3D1Pと呼ばれるデータ配置を示している。データ1〜データ24は、この数字の順でデータが配置される。さらに、データ1,2,3からパリティ1が、データ4,5,6からパリティ2が、というようにパリティデータを作成し、順に格納する。RAIDグループに対するデータのI/Oの単位領域、具体的には、例えば、このデータ1,2,3とパリティ1の組が格納される領域をストライプ列と呼ぶ。もちろん、記憶制御装置では、RAID5以外のRAIDレベルや、1つのパリティに対するデータの数等から異なる構成をサポートしており、本実施例はこれを限定しない。また、同じRAID5の3D1Pであっても、データの配置等について限定するものでは無い。
図10は、図9で示したデータ配置の別の観点を示した図である。
図10によれば、データとパリティの構成に関する関係はそのままに、ディスクへの格納位置のみが仮想的に組み替えられている。具体的には、仮想ディスクAには、データ1,4,7,10,…が、仮想ディスクBには、データ2,5,8,…が格納されている。以降では、図10に示す仮想ディスクA〜Dを用いて、データの管理方法について説明を行う。
図11は、図10で示したデータ配置に本実施例に従うデータ管理が適用された図である。
まず、プールを使用する機能が、プール領域内にデータを格納する領域を確保する単位を「ページ」と呼ぶ。ここでは、例として、ページのサイズが4ストライプ分とする。もちろん、このページのサイズは任意であり、また、プールを使用する機能によって可変であってもよく、さらに同一機能の中でも状況に応じて、サイズを変化させてもよい。ページサイズが4ストライプ分で、順にページを割り当てていった場合、ページA1101には、データ1,2,3,4が、ページB1102には、データ5,6,7,8が、といったようにデータが割り当てられる。
ここで、このプールを仮想ボリューム機能が使用し、かつ複数の仮想ボリュームのデータを格納するケースを想定する。図11は、図3における、仮想ボリュームA312と仮想ボリュームB313が使用する仮想プールボリューム321の、実データ領域332の一部を表しているものとする。このような状況で、各仮想ボリュームに対して、ページ単位で領域が割り当てられると、ページA1101は仮想ボリュームA312に、ページB1102は仮想ボリュームB313にそれぞれ割り当てられるという状況が発生し得る。さらに、各仮想ボリュームの制御権が、異なるコアに割り当てられていた場合、もしくは、領域割り当て時には同一コアに割り当てられていたが、制御権移行処理によって、各仮想ボリュームの制御権が異なるコアに割り当てられてしまった場合を想定する。
この場合、データ1,2,3から算出されるパリティ1については、ページA1101が割り当てられている仮想ボリュームA312の担当コアが処理すればよい。しかし、データ4,5,6から算出されるパリティ2については、データ4,5,6のいずれかに対する変更が行われた場合に、パリティ2に対する更新が発生する。すなわち、データ4が割り当てられているページA1101が所属する仮想ボリュームA312を担当するコアと、データ5,6が割り当てられているページB1102が所属する仮想ボリュームB313を担当するコアの、2つのコアがパリティ2に対して更新を行う可能性がある。
このパリティ更新処理を矛盾無く行うためには、データ4,5,6,パリティ2に対する更新を行う際に、自分以外のコアが同領域に対してアクセスを行わないように排他処理を行う必要がある。これは、制御権を設定する事で低減したはずの、コア間の排他処理を実行する必要がある事を示しており、煩雑で非効率な処理となってしまう。
ここで、本実施例では、チャンクという概念が導入される。「チャンク」は、複数のページから構成されており、チャンクの境界はストライプ列の境界となっている事が保証される単位である。チャンクのサイズは任意であるが、ここではストライプ21個分とし、チャンクA1111には、データ1〜21が含まれ、これは、ページA〜Eに相当する。データ21は空き領域とする。さらに、あるチャンクには、単一の仮想ボリュームのデータのみを格納可能とし、チャンクA1111には仮想ボリュームA312を、チャンクB1112には仮想ボリュームB313のみが割り当てられるとする。こうした場合、チャンクA1111に対応するパリティ領域パリティ1〜7は、仮想ボリュームA312の制御権を持つコアのみがアクセスする事となる。また、同様にチャンクB1112に対応するパリティ8〜14は、仮想ボリュームB313の制御権を持つコアのみがアクセスする事となる。よって、これらの領域に対するアクセスについては、コア間の排他処理が不要となり、制御権を持つコアが、他コアの動作を無視して処理を行う事が可能となり、制御権を導入した目的に見合った高速な動作が可能となる。
なお、ページ単位で制御権を設定し、かつ、ページの境界をストライプ列の境界とする方式でも、上記の効果は得られるが、チャンク方式に比べると、データの無駄領域が多くなってしまう。また、ページというプール領域を使用する機能が意識すべき単位が、制御権の管理単位にも影響を与えてしまい、各処理が複雑化する。
このチャンク方式によって、複数の仮想ボリュームが単一プール内に混在した場合に、各仮想ボリュームの制御権を持つ複数のコアによるアクセスを高速にかつ単純に実施する事が可能となる。これは、図5にて示したように、仮想ボリューム511と、スナップショット向け仮想プールボリューム521が、同じ仮想ボリューム機能向けプールボリューム531を使用する場合にも当てはまる。
よって、複数のコアを持ち、ボリュームの制御権を持ったコアが動作する記憶制御装置において、単一のプールに対して複数のプールを使用する機能がアクセスする場合に、他コアの排他処理を行わない高速で、かつ、各機能のページサイズや各機能における使用するページやその冗長データの制御権等を考慮する必要のない単純な処理を行う事が期待できる。
本発明の実施例2を説明する。その際、第1の実施例との相違点を主に説明し、第1の実施例との共通点については説明を省略或いは簡略する。
図12は、実施例2に係る制御情報231の一部を示す。
実施例2に係る制御情報231は、プール領域を使用するLUに関する設定等を格納するプール使用LU情報1201、後述の制御権セットに関する情報を格納する制御権セット管理情報1202、ページ毎の状態を格納するページ管理情報1203、チャンクに関する情報を格納するチャンク管理情報1204、及び、ページの属性に関する情報を格納する属性情報1205を含む。
図13は、プール使用LU情報1201の構成を示す。
プール使用LU情報1201には、プール使用LU情報テーブルT1301が含まれている。プール使用LU情報テーブルT1301は、プールを使用するLU毎に、LU番号と、LUの範囲、制御権セット番号、用途、ページ割り当て方針を表す情報を有する。
「制御権セット番号」とは、記憶制御装置101内で内部的に割り当てた管理のための番号であり、制御権セットを識別するための番号である。「制御権セット」とは、同一の制御権をもつ論理記憶領域(LUもしくは他種の論理記憶領域)のセットである。同一の制御権セット番号を持つ論理記憶領域セット(一以上のLU及び/又は一以上の他種の論理記憶領域のセット)は、基本的に同一の制御権を持つものとする。このため、同一の制御権セット番号を持つ論理記憶領域群は、チャンクを共有可能であり、また、制御権の移行時には、同一の制御権セット番号を持つ論理記憶領域群全てが例えば同時に移行する。例えば、スナップショットベースボリュームとそのスナップショットボリュームや、ホストが必ずセットで使用するボリューム群などが、同一制御権セット番号を持つLUセットの候補となる。例外及びその際の処理内容については後述する。また、同一LU内で複数の制御権セット番号を持つケースも存在する(プール使用LU情報テーブルT1301内のLU番号3を参照)。こういった状態のLUでは、同一LUを複数のコアが担当する事が可能である。例えば、記憶制御装置101内にLUが1つしか存在しないようなケースにおいても、記憶制御装置101内の全てのCPUコアの能力を活用する場合などに、このような設定を行う事で、LUをある程度のサイズの領域に分割し、複数コアで処理を分け合いつつ、コア間の排他処理を削減する事が可能となる。
「用途」は、各LU(もしくはLUの一部領域)がプール領域をどのような機能により使用するかを示している。
「ページ割り当て方針」は、各LU(もしくはLUの一部領域)に対して、どのようなページを割り当てるべきかを示している。例えば、高速なアクセスが期待されるLU(プール使用LU情報テーブルT1301内のLU番号0を参照)については、高速でかつ高速な状態で固定すると設定する事で、高速なページが優先的に割り当たるよう処理する。
図14は、制御権セット管理情報1202の構成を示す。
制御権セット管理情報1202は、制御権セット管理情報テーブルT1401を有する。制御権セット管理情報テーブルT1401は、制御権セット毎に、制御権セット番号と、担当CPUコア番号と、所属LU番号と、割り当て済みチャンク番号とを有する。
「担当CPUコア番号」は、制御権セット番号から一意に決まる当該制御権セット番号を処理するCPUコアの番号である。ここで、「CPUコアの番号」とは、複数のコア121のそれぞれを識別するための番号である。
「所属LU番号」は、当該制御権セット番号に所属するLU番号の一覧を示すものである。これは、プール使用LU情報テーブルT1301から容易に導かれる情報であるが、処理の簡単化のため、制御権セット管理情報テーブルT1401にも情報を持つものとする。なお、本実施例では、LU番号3のLUが複数の領域に分割され、得られた各領域に異なる制御権セット番号が付与されている。このため、制御権セット管理情報テーブルT1401では、複数の制御権セット番号(1と3)に、同一の所属LU番号(3)が対応付けられている。
「割り当て済みチャンク番号」は、当該制御権セット番号が、現在使用中としているチャンクの番号である。「チャンクの番号」とは、チャンクを識別するための番号である。
図15は、ページ管理情報1203の構成を示す。
ページ管理情報1203は、ページ管理情報テーブルT1501を有する。ページ管理情報テーブルT1501は、ページ毎に、ページ番号、用途、ページサイズ、ページ使用LU番号、チャンク番号、及び、属性を表す情報を有する。
「ページ番号」は、ページを識別するための番号である。
「用途」は、当該ページ番号がどのような機能で使用されているかを示す。
「ページサイズ」は、ページのサイズ(記憶容量)である。ページサイズをページ毎に設定可能とする事によって、同一チャンク内に異なるページサイズのページが混在する事が可能となる。このテーブルT1501によれば、チャンク番号0のチャンク中にページサイズ4kB,64kB,256kBのページが混在している。また、要求されるページサイズが機能毎に異なる場合であっても対応可能であるため、同一チャンク内に複数の機能が使用するページが混在する事も可能である。このテーブルT1501によれば、チャンク番号0のチャンク中に、スナップショット用のページと仮想ボリューム用のページが混在している。
「ページ使用LU番号」は、ページを使用しているLUのLU番号である。スナップショット機能における、スナップショットボリュームとベースボリュームで同一のデータは、ベースボリューム側に存在している。プールを使用する多くの機能は、ホスト向け論理ボリューム上では別のアドレスであっても、内容が同一のデータに関しては共有する事がある。このため、単一ページ番号に対して複数のページLU番号が割り当たっている事がある(ページ番号0のページは、LU1と2が使用)。
「チャンク番号」は、ページが所属するチャンクの識別番号である。
「属性」は、ページが持つ属性を表す情報であり、例えば、ページの性能、コスト及び信頼性を示す情報である。詳細は後述する。
図16は、チャンク管理情報1204の構成を示す。
チャンク管理情報1204は、チャンクがどのような状態にあるかを管理するための情報である。チャンク管理情報1204は、チャンク管理情報テーブルT1601を有する。チャンク管理情報テーブルT1601は、チャンク毎に、チャンク番号、RG番号、属性、及び空き領域状況を表す情報を有する。
「チャンク番号」は、チャンクを識別するための番号である。
「RG番号」は、チャンクが所属するRG(RAID Group)の識別番号である。RG番号から、チャンクが実際に格納される領域は、物理的にどのような構成であるかを参照する事が出来る。このテーブルT1601によれば、チャンク番号15に複数のRG番号が対応付けられている。これは、チャンク番号15のチャンクは、異なる2つのRGから構成されている事を意味する。前述の通り、チャンクの境界がストライプ列境界と合致していればよいため、このような構成が可能となる。
「属性」は、チャンク番号及びRG番号で定まる領域が持つ属性である。詳細は後述する。
「空き領域状況」は、各チャンク内のページがどのように割り当てられており、どのような空きがあるかを示している。例えば、チャンク番号3のチャンクには、4kB,96kBの2つの空き領域が存在する事が分かる。このように、空き領域がチャンク内の合計空き領域サイズではなく複数の数値で表されている理由は、チャンク内でページの確保及び解放を繰り返すうちに空き領域が飛び地になっている(一つのチャンク内に複数の空き領域が分散している)ためである。すなわち、チャンク番号3の例では、4kBと96kBの空き領域があるが、これらは連続していない事を表しており、例えばこの状態で100kBのページを割り当てる場合には、ページを分割したり、アドレスが飛ぶ事を許容したページ構成としたりする等の措置が必要である。
図17は、属性情報1205の構成を示す。
属性情報1205は、属性定義テーブルT1701と、ページ属性情報テーブルT1702とを有する。
属性定義テーブルT1701は、ページ管理情報テーブルT1501や、チャンク管理情報テーブルT1601で示していた属性に用いられていた識別子が持つ内容を定義した情報である。このテーブルT1701は、属性毎に、属性の識別子(属性定義テーブルT1701ではA〜D)と、概要と、特徴とを表す情報を有する。
「概要」は、データ格納領域、基本的にはRGの概要(例えば、構成するディスクのインタフェース種別(例えばSAS)、RAIDレベル(例えばRAID5)、ディスク構成(4D+1P))である。RGの概要以外には、例えば、記憶制御装置101の機能として、他の記憶制御装置101の実データ領域を扱えるような機能(外部接続機能)があり、これを用いている場合(属性D)には、そういった情報を記載する事で、後述のページ割り当て論理の際により詳細な方針に基づく割り当てが可能となる。
「特徴」は、性能やコスト、信頼性等の特徴である。
ページ属性情報テーブルT1702は、ページ毎に、ページ番号、現状属性、及び、ページ状態と方針を表す情報を有する。なお、これらの情報は、ページ毎の情報を管理してるページ管理情報テーブルT1501に統合されても良いが、本実施例では、属性に関する処理方針を決定する情報をまとめるため、別テーブル1702で管理される。
「ページ番号」は、ページの識別番号である。
「現状属性」は、ページの現在の属性である。
「ページ状態と方針」は、ページの使用頻度や、今後のページ属性変更方針である。ページの使用頻度は、主に、ホスト102からページに対して発生するアクセス頻度を表している。属性変更方針は、ページの現在の属性を別の属性に変更することの方針である。例えば、ページの現在の属性は、そのページに対するアクセス頻度が属性変更方針に該当する場合に、変更される。具体的には、例えば、或る高性能のページを含んだチャンクの制御権を持つCPUコアは、そのページに対するアクセス頻度を監視し、そのページに対して低頻度のアクセスしか来ていないことを検出した場合には、低性能で安価なページへの変更を管理者に推奨することができる。また、例えば、或る低性能ページを含んだチャンクの制御権を持つCPUコアは、そのページに対するアクセス頻度を監視し、その低性能ページに対して高頻度のアクセスが来てしまっていることを検出した場合には、高性能なページへの変更を管理者に推奨する事ができる。
図18は、新規ページ割り当てを実施する際の処理シーケンスを示す。
例えば、作成されてから初めてライトの生じた仮想ボリュームについて、新規ページ割り当て処理が開始される(S1801)。ここでは、その仮想ボリュームが、処理対象LUとなる。そして、この新規ページ割り当て処理は、複数のCPUコアのうちの、処理対象LUの制御権を有するCPUコアによって行われる。以下、図18の説明において、そのCPUコアを、「対象担当コア」と言う。
まず、対象担当コアが、処理対象LUが所属する同一制御権セットの割り当て済みチャンク内に空きページがあるかを判断する(S1802)。S1802中では、対象担当コアは、プール使用LU情報テーブルT1301から、処理対象LU及び該当する範囲に関して、制御権セット番号を求める。そして、次に、対象担当コアは、制御権セット管理情報テーブルT1401を用いて、この制御権セット番号に割り当て済みのチャンク番号を抽出する。対象担当コアは、抽出したチャンクに関して、チャンク管理情報テーブルT1601から、空き領域の状況を求める事で、空きページが存在するかどうかを判断する。
空き領域が存在した場合は、対象担当コアは、その空きページ群の中に、プール使用LU情報テーブルT1301に記載されているページ割り当て方針に合致するページがあるかを判断する(S1811)。方針に合致するページがあった場合には、対象担当コアは、ページ割り当て/解放プログラム225を用いて、当該ページを処理対象LUに割り当て(S1833)、新規ページ割り当て処理は終了となる(S1844)。
S1802にて割り当て済みチャンク内に空きページが無かった場合、及び、S1811にて、ページ割り当て方針に合致するページが無かった場合には、対象担当コアは、処理対象LUのページ割り当て方針に合致するページを持つチャンクをチャンク管理情報テーブルT1601から探し、選択する(S1821)。次に、対象担当コアは、S1821の処理が成功したかどうか、すなわち空きチャンクの選択が成功したかどうかを判断する(S1822)。
空きチャンク選択が失敗した場合は、対象担当コアは、新規ページ割り当て失敗用の処理(S1831)を実行する。S1831の処理内容としては、単純にページ不足状態で終了としたり、ページ割り当て方針を緩和して再度ページ割り当て処理を実行したりするなどの方法があるが、いずれにせよ、最終的に新規ページ割り当て処理は終了となる(S1841)。
空きチャンク選択が成功した場合には、対象担当コアは、チャンク割り当て/解放プログラム226を用いて、選択したチャンクを、処理対象LUが所属する制御権セットに割り当てる(S1832)。S1832にて割り当てられたチャンクには、処理対象LUのページ割り当て方針に合致したページが存在しているはずである。このため、対象担当コアは、ページ割り当て/解放プログラム225を用いてページを割り当て(S1833)、新規ページ割り当て処理を終了する(S1841)。
図19は、ページの属性変更処理のシーケンスを示す。
属性変更処理が開始されると(S1901)、或るCPUコアによって、未処理の属性変更推奨ページが選択され、以降、未処理の属性変更推奨ページが無くなるまで処理が繰り返えされる(S1902)。
S1902にて、属性変更を推奨しているページがどれであるかは、上記或るCPUコアによって、ページ属性情報テーブルT1702を用いて特定される。属性変更を推奨するページは、当該ページへのアクセスが当初の予定と異なっていたり、管理者からのページ割り当て方針の変更があったり、記憶制御装置の構成に変更が加えられたり(例えば、新規に極めて高性能の記憶デバイスが追加されるなどした場合には、高性能推奨ページを新規高性能記憶デバイスへ移動させるべき)等の原因によって発生する。
S1902にて選択された属性変更推奨ページについての処理は、そのページを含んだチャンクの制御権を有するCPUコアによって行われる。以下、そのCPUコアを、図19の説明において、「対象担当コア」と言う。
S1902にて選択された属性変更推奨ページについて、対象担当コアは、まず、ページ属性情報テーブルT1702にて推奨された属性を持つ空きページもしくは空きチャンクがあるかを、チャンク管理情報テーブルT1601を用いて判断する(S1911)。この時、もちろん新規にチャンクを割り当てるよりも、割り当て済みチャンク内で新規ページを割り当てる処理の方が、処理内容が小さく高性能である事、また空きページがあるにもかかわらずチャンクを確保する事は容量の無駄を発生させる原因となるため、優先的に確保済みチャンクを調査した方が効率がよい。S1911にて該当する空きページもしくは空きチャンクが無かった場合は、選択したページに対する推奨する属性への変更は不可能と判断される。そして、処理が、ループの末尾に移動し、別の未処理の属性変更推奨ページが選択される。
S1911にて、該当するページがあった場合は、対象担当コアが、新規ページ割り当て処理を実行する(S1921)。S1921の処理は、図18のS1801〜S1841にて示した処理と同一である。S1921が終了すると、対象担当コアは、新規ページ割り当て処理が成功したかを判定する(S1922)。失敗した場合は、対象担当コアが選択中ページの処理を終了する。そして、処理が、ループの末尾に移動し、次の属性変更推奨ページが選択される。
新規ページ割り当て処理が成功した場合は、対象担当コアが、データコピー/移動プログラム224を用いて、新規割り当てページへのデータ移動処理を実行する(S1931)。また、S1931で実行する処理はページの移動であるため、対象担当コアが、ページ割り当て/解放プログラム225を用いて、元々使用していたページを空き状態とし(ページの解放を行い)、チャンクの空き状況の更新や、ページの属性情報の更新などを実施する。また、S1931で実行したページ解放によってチャンクが空となった場合は、対象担当コアが、チャンク割り当て/解放プログラム226を用いて、制御権セットからのチャンク解放の実施も行う。S1931が終了すると、次の未処理の属性変更推奨ページが選択される。
S1902のループによって、全ての属性変更推奨ページの処理が完了すると、属性変更処理は終了する(S1941)。
図20は、制御権を移行する処理のシーケンスを示す。
論理ボリュームもしくはその中のある範囲に関して制御権を設定し、あるコアに制御権を付与する事によって、その他のコアが当該領域にアクセスしない事が保証され、排他処理が削減され、高速かつ単純な動作を行うことができる。このような記憶制御装置101において、CPUコア間の負荷バランスが崩れている場合や、ユーザがあるCPUに少数のボリュームをくくりつけ、優先的に処理をさせたい場合など、制御権を変更すべきケースが存在する。このような場合に、制御権移行プログラム227が、制御権を移行する。そのプログラム227は、例えば、変更前(移行前)の制御権が付与されているCPUコア及び変更後(移行後)に制御権が付与されるCPUコアで実行される。
制御権移行プログラム227は、制御権移行処理を開始すると(S2001)、まず、全ての移行処理の対象群(LUもしくはその中のある範囲)が、制御権セット単位となっているかを、プール使用LU情報テーブルT1301を用いて判断する(S2002)。例えば、プール使用LU情報テーブルT1301において、移行処理対象がLU0,1,2だった場合には、制御権セット番号0に属する全ての論理記憶領域が移行処理対象であるため、S2002の判定は真となる。制御権セットは、可能な限り、保持したままとする事が望ましく、また、そのように設定すべきである。このため、例えば、移行処理対象がLU0,1だった場合は、制御権セット番号0に属する全ての論理記憶領域のうちLU2が移行処理対象ではないため、S2002の判定は偽となる。これは、元々制御権セット番号0に属していた論理記憶領域群が2つに分割され、異なる制御権セットを構成する事を意味している。例えば、スナップショットベースボリューム及びそのスナップショットボリュームは、同一領域を参照する事がある事から、同一の制御権セットに属し、コア間の連携が不要な状態とする事が望ましい。しかし、スナップショットボリュームのうちのいくつかを別コアに割り当て直し、そちらで別のテスト処理を実施したいようなケースでは、上記の制御権セットの分割が行われる。
移行処理対象群が制御権セット単位となっていた場合には、制御権移行プログラム227は、処理対象の制御権セットに所属する全てのチャンクの制御権を移行する(S2011)。例えば、プール使用LU情報テーブルT1301において、移行処理対象がLU0,1,2だった場合には、制御権移行プログラム227は、制御権セット番号0に属する全ての割り当て済みチャンク番号を制御権セット管理情報テーブルT1401から抽出し(チャンク番号0,3,15,46,95)、これらの制御権を他のコアに移行する事となる。S2011には、移行によって発生する各種管理情報の更新処理も含まれている。S2011により、制御権は移行したので、制御権移行は終了となる(S2051)。
S2002にて、移行処理対象群が制御権セット単位となっていなかった場合は、プログラム227は、移行処理対象群が所持している全てのページをページ管理情報テーブルT1501から抽出し、これらを順に選択し、処理を行っていく(S2012)。まず、プログラム227は、選択したページを、移行処理対象群以外の領域が共有しているかを判断する(S2021)。例えば、選択したページの現状が、プール使用LU情報テーブルT1301に記載されている状態で、移行処理対象群が、LU0,1であるとすると、ページ管理情報テーブルT1501から特定される、ページ使用LU番号0,1に対応した全ページが、S2012の対象となる。このページ番号は、図15の例によれば、0,1,3,4,105,315である。さらに、移行処理対象群以外の領域が共有しているかを、同じくプール使用LU情報テーブルT1301から判断すると、ページ番号1,4,315については、LU0,1のみが使用しており、他の領域は共有しておらず、ページ番号0,3,105については、他の領域(LU2)が共有している事が分かる。
選択したページを移行処理対象領域と対象外領域が共有している場合には、プログラム227は、選択したページのデータを、データコピー/移動プログラム224を用いて、移行後の制御権セットに属するチャンク内のページにコピーする(S2031)。これは、選択したページは、異なる制御権セットからのアクセスが発生する可能性があるため、制御権セット毎にデータを用意するという処理に相当する。もちろん、S2031にて、データコピーを行わず、異なる制御権セットからのアクセスを受領可能な状態にするなどの方法もあるが、処理が煩雑となってしまい、また、コア間の連携処理によるオーバヘッドも発生してしまう。
S2021にて、選択したページを移行処理対象領域と対象外領域が共有していない場合には、プログラム227は、選択したページのデータを、データコピー/移動プログラム224を用いて、移行後の制御権セットに属するチャンク内のページに移動する(S2032)。これは、選択したページは、移行後の制御権セットからのみアクセスされるため、移行元制御権セットに当該ページ情報を残しておく必要が無いためである。
また、S2031,S2032では詳細に記述していないが、移行後の制御権セットに対して、あらたなチャンクもしくはページの割り当て処理が実行される。これらの処理は、新規ページ割り当て処理でのS1921と同等である。
S2032では、ページの移行を行うため、移行後にページが解放される。この時、プログラム227は、選択したページを含んだチャンクが空になったかの判断を行い(S2033)、チャンクが空になっていない場合は、次のページを選択する。チャンクが空になった場合は、プログラム227は、チャンク割り当て/解放プログラム226を用いて、選択したページを含んだチャンクの解放を行い(S2041)、次のページを選択する。S2041により、テーブルT1401(図14参照)から、移行元の制御権セットに属するチャンク番号であって、解放されたチャンクの番号が、削除される。
S2012にて、全てのページの処理が終了すると、制御権移行処理は終了となる(S2051)。
以上のように、図18,19,20を用いて、各種のチャンク、ページ及び制御権セットに関する処理を示した。これらの処理、及び、ホスト102からのI/Oコマンドの処理(IO処理)において、制御権を意識した動作は、チャンク割り当て/解放プログラム226をはじめとする、チャンクを扱う論理のみに集約されている。すなわち、チャンク割り当て/解放プログラム226が定められた制御権セット情報に基づき、チャンクを割り当てた後は、各種機能は、制御権を意識することなく、ページを割り当て、処理を実行する事が可能である。よって、制御権という、記憶制御装置101の処理の高速化及び単純化を実現する概念を導入しつつ、チャンク処理以外の箇所ではこれを意識しない事により、単純化された論理の構築が可能となる。
図23は、ページ割り当て方針を設定するための管理画面2301を示す。
管理画面2301は、ページ割り当て方針設定部位2311と、設定ボタン2312と、キャンセルボタン2313とを有する。
ページ割り当て方針設定部位2311は、割り当て方針の設定対象LUを入力する部位2321と、その対象範囲を設定する2322とを持つ。これらから、割り当て方針を設定する範囲を選択することができる。また、あふれが生じた時に削除が可能か不可能かを選択する部位2323と、性能方針を設定する部位2324とが設けられ、これらにより、選択した領域に対するページ割り当て方針を設定することができる。
設定ボタン2312は、入力された各種情報を反映するためのボタンであり、キャンセルボタン2313は、入力された各種情報を破棄するためのボタンである。
図24は、制御権移行処理を指示するための管理画面2401を示す。
管理画面2401は、制御権移行処理対象領域選択部位2411と、移行先選択部位2412と、実行ボタン2413と、キャンセルボタン2414とを有する。
部位2411は、制御権移行処理の対象とする範囲を選択するための部位であり、現在選択されている領域は、選択中領域2424に表示される。領域を追加する場合には、対象LU設定部位2421と、対象範囲設定部位2422とを用いて、領域を選択し、追加ボタン2423を押す事によって、選択中領域2424に領域の情報が追加される。
部位2412は、選択中領域2424をどのCPUコアに割り当てるかを選択する部位である。
実行ボタン2413は、選択中領域2424に表示されている領域の制御権を、移行先選択部位2412に示されたCPUコアに移行させるためのボタンであり、キャンセルボタン2414は、入力された各種情報を破棄するためのボタンである。
図24では、管理者が明示的に制御権を移行する際の画面を示したが、これ以外にも、各領域に対して記憶制御装置が制御権の移行を行う事を許可しておき、記憶制御装置101内の負荷バランスや、管理者からの設定内容から判断し、CPUコアが、自動的に制御権を移行する方法もある。例えば、CPUコアが、自分が担当する制御権セットに属する論理記憶領域へのアクセス頻度を監視し、そのアクセス頻度が一定の頻度を超えた場合に、自分が担当する制御権を移行してもよい。
以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、実施例2(例えば、チャンクの設定やチャンクからのページの割り当て)は、実施例1に適用されても良い。また、領域の割り当ては、論理記憶領域に対するデータのリードのときに行われても良い。
101:記憶制御装置

Claims (7)

  1. 複数のCPU(Central Processing Unit)コアを有し、
    前記複数のCPUコアの各々が、複数種類の論理記憶領域のうちの一種類以上の論理記憶領域の制御権を有し、
    各CPUコアは、そのCPUコアが有する制御権に対応した論理記憶領域に対するデータのアクセスの場合、そのデータの格納に必要な領域を、アクセス先の論理記憶領域に共通の物理記憶領域から割り当て
    前記複数種類の論理記憶領域は、仮想ボリュームと、スナップショットボリュームと、スナップショット用仮想ボリュームとを含み、
    前記仮想ボリューム、前記スナップショット及び前記スナップショット用仮想ボリュームのうち、前記仮想ボリューム及び前記スナップショットボリュームが、ホスト装置向けのボリュームであり、
    前記仮想ボリュームは、ホスト装置からのデータの格納先とされるボリュームであり、
    前記スナップショットボリュームは、ベースとしてのデータを記憶しているスナップショットベースボリュームとの差分のデータを記憶するボリュームであり、
    前記スナップショットボリュームに格納されるデータは、前記スナップショット用仮想ボリュームに格納され、
    前記仮想ボリュームの制御権を有するCPUコアが、前記仮想ボリュームに対するデータのアクセスの際に、そのデータの格納に必要な領域を前記共通の物理記憶領域から割り当て、
    前記スナップショットボリュームの制御権を有するCPUコアが、前記スナップショットボリュームに対するデータのアクセスの際に、そのデータの前記スナップショット用仮想ボリュームに対するアクセスを行い、
    前記スナップショット用仮想ボリュームの制御権を有するCPUコアが、前記スナップショット用仮想ボリュームに対するデータのアクセスの際に、そのデータの格納に必要な領域を前記共通の物理記憶領域から割り当て、
    或るCPUコアが、下記(A)乃至(D)を含んだ処理であるあふれ対応処理を行い、
    (A)前記共通の物理記憶領域の使用率が第1の閾値を超えているか否かを判断する;
    (B)前記(A)の判断の結果が肯定的の場合、前記仮想ボリューム、前記スナップショットボリューム及び前記スナップショット用仮想ボリュームのうち優先度が最も低いボリュームを削除する;
    (C)前記(B)で削除されたボリュームに割り当てられていた、前記共通の物理記憶領域における領域を解放する;
    (D)前記(C)の結果、前記共通の物理記憶領域の使用率が第2の閾値未満に下がったか否かを判断する、
    (E)前記(D)の判断の結果が否定的であれば、前記(B)を実行し、前記(D)の判断の結果が肯定的であれば、処理を終了する、
    前記第2の閾値は、前記第1の閾値より低い閾値であり、
    前記使用率は、前記共通の物理記憶領域の容量に対する割当て済み領域の総量の比率である、
    記憶制御装置。
  2. 複数のCPU(Central Processing Unit)コアを有し、
    前記複数のCPUコアの各々が、複数種類の論理記憶領域のうちの一種類以上の論理記憶領域の制御権を有し、
    各CPUコアは、そのCPUコアが有する制御権に対応した論理記憶領域に対するデータのアクセスの場合、そのデータの格納に必要な領域を、アクセス先の論理記憶領域に共通の物理記憶領域から割り当て、
    前記複数種類の論理記憶領域は、複数の制御権セットに属する複数のボリュームであり、
    各CPUコアに、一以上の制御権セットが割り当てられており、
    前記共通の物理記憶領域は、属性の異なる複数のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループに基づく記憶領域であり、
    RAIDグループは、複数の物理記憶デバイスで構成されており、
    前記共通の物理記憶領域が、複数のチャンクで構成されており、
    各チャンクは、複数のストライプ列で構成されており、
    ストライプ列は、複数のストライプで構成されており、RAIDグループに基づくデータのI/Oの単位領域であり、
    ストライプは、物理記憶デバイスにおける単位領域であり、
    各制御権セットに、ボリュームの他に、前記複数のチャンクから割り当てられた一以上のチャンクが属しており、
    データがアクセスされるボリュームである対象ボリュームの制御権セットが割り当てられているCPUコアが、
    (A)前記対象ボリュームの制御権セットに属するチャンクに、データを格納可能な領域があるか否かを判断し、
    (B)前記(A)の判断の結果が肯定的であれば、前記対象ボリュームの方針に合致する属性の領域があるか否かを判断し、
    (C)前記(B)の判断の結果が肯定的であれば、前記対象ボリュームの方針に合致する属性の領域を前記対象ボリュームに割り当て、
    (D)前記(A)又は前記(B)の判断の結果が否定的であれば、前記対象ボリュームの方針に合致するチャンクを、前記対象ボリュームの制御権セットに割り当て、その後、前記対象ボリュームの方針に合致する領域を、前記割り当てたチャンクから前記対象ボリュームに割り当て、
    いずれかのCPUコアが、一以上の移行対象ボリュームの所属先を第1の制御権セットから第2の制御権セットに移行する制御権移行処理を行い、前記制御権移行処理において、以下の(a)〜(c)を行う、
    (a)前記一以上の移行対象ボリュームの全てが、前記第1の制御権セットに属する一以上のボリュームの全てであるか否かを判断する、
    (b)前記(a)の判断の結果が肯定的であれば、前記一以上の移行対象ボリュームの全ての所属先を、前記第1の制御権セットから前記第2の制御権セットに移行する、
    (c)前記(a)の判断の結果が否定的であれば、前記一以上の移行対象ボリュームに割り当てられている領域毎に、以下の(c−1)〜(c−5)を行う、
    (c−1)領域が、前記一以上の移行対象ボリューム以外のボリュームにも割り当てられているか否かを判断する、
    (c−2)前記(c−1)の判断の結果が肯定的であれば、領域内のデータを、前記第2の制御権セットに所属するチャンクにおける領域にコピーする、
    (c−3)前記(c−1)の判断の結果が否定的であれば、領域内のデータを、前記第2の制御権セットに所属するチャンクにおける領域に移動する、
    (c−4)前記(c−3)の後、データの移動元の領域を有するチャンクが空になったか否かを判断する、
    (c−5)前記(c−4)の判断の結果が肯定的であれば、前記チャンクを前記第1の制御権セットから解放する、
    一つのチャンクには、サイズの異なる領域が混在する、
    記憶制御装置。
  3. 請求項記載の記憶制御装置であって、
    前記複数種類の論理記憶領域は、Thin Provisioning に従う容量仮想化を行う機能である仮想ボリューム機能で使用されるボリュームである複数の第1種のボリュームと、仮想ボリューム機能以外の機能で使用される第2種のボリュームとを含み、
    前記第2種のボリュームにアクセスされるデータのアクセス先として、前記複数の第1種のボリュームのうちの少なくとも一つが採用され、
    データのアクセス先の第1種のボリュームの制御権を有するCPUコアである対象CPUコアが、そのデータの格納に必要な領域を、共通の物理記憶領域から前記アクセス先の第1種のボリュームに割り当てる、
    記憶制御装置。
  4. 請求項記載の記憶制御装置であって、
    或るCPUコアが、下記(A)乃至(C)を含んだ処理であるあふれ対応処理を行い、
    (A)前記共通の物理記憶領域の使用率が第1の閾値を超えているか否かを判断する;
    (B)前記(A)の判断の結果が肯定的の場合、ボリュームを削除する;
    (C)前記(B)で削除されたボリュームに割り当てられていた、前記共通の物理記憶領域における領域を解放する、
    記憶制御装置。
  5. 請求項記載の記憶制御装置であって、
    前記或るCPUコアが、前記あふれ対応処理において、更に、以下の(D)及び(E)を行う、
    (D)前記(C)の結果、前記共通の物理記憶領域の使用率が第2の閾値未満に下がったか否かを判断する、
    (E)前記(D)の判断の結果が否定的であれば、前記(B)を実行し、前記(D)の判断の結果が肯定的であれば、処理を終了する、
    前記第2の閾値は、前記第1の閾値より低い閾値であり、
    記憶制御装置。
  6. 前記複数のCPUコアの各々が、複数種類の論理記憶領域のうちの一種類以上の論理記憶領域の制御権を有し、
    各CPUコアは、そのCPUコアが有する制御権に対応した論理記憶領域に対するデータのアクセスの場合、そのデータの格納に必要な領域を、アクセス先の論理記憶領域に共通の物理記憶領域から割り当て
    前記複数種類の論理記憶領域は、仮想ボリュームと、スナップショットボリュームと、スナップショット用仮想ボリュームとを含み、
    前記仮想ボリューム、前記スナップショット及び前記スナップショット用仮想ボリュームのうち、前記仮想ボリューム及び前記スナップショットボリュームが、ホスト装置向けのボリュームであり、
    前記仮想ボリュームは、ホスト装置からのデータの格納先とされるボリュームであり、
    前記スナップショットボリュームは、ベースとしてのデータを記憶しているスナップショットベースボリュームとの差分のデータを記憶するボリュームであり、
    前記スナップショットボリュームに格納されるデータは、前記スナップショット用仮想ボリュームに格納され、
    前記仮想ボリュームの制御権を有するCPUコアが、前記仮想ボリュームに対するデータのアクセスの際に、そのデータの格納に必要な領域を前記共通の物理記憶領域から割り当て、
    前記スナップショットボリュームの制御権を有するCPUコアが、前記スナップショットボリュームに対するデータのアクセスの際に、そのデータの前記スナップショット用仮想ボリュームに対するアクセスを行い、
    前記スナップショット用仮想ボリュームの制御権を有するCPUコアが、前記スナップショット用仮想ボリュームに対するデータのアクセスの際に、そのデータの格納に必要な領域を前記共通の物理記憶領域から割り当て、
    或るCPUコアが、下記(A)乃至(D)を含んだ処理であるあふれ対応処理を行い、
    (A)前記共通の物理記憶領域の使用率が第1の閾値を超えているか否かを判断する;
    (B)前記(A)の判断の結果が肯定的の場合、前記仮想ボリューム、前記スナップショットボリューム及び前記スナップショット用仮想ボリュームのうち優先度が最も低いボリュームを削除する;
    (C)前記(B)で削除されたボリュームに割り当てられていた、前記共通の物理記憶領域における領域を解放する;
    (D)前記(C)の結果、前記共通の物理記憶領域の使用率が第2の閾値未満に下がったか否かを判断する、
    (E)前記(D)の判断の結果が否定的であれば、前記(B)を実行し、前記(D)の判断の結果が肯定的であれば、処理を終了する、
    前記第2の閾値は、前記第1の閾値より低い閾値であり、
    前記使用率は、前記共通の物理記憶領域の容量に対する割当て済み領域の総量の比率である、
    記憶制御方法。
  7. 前記複数のCPUコアの各々が、複数種類の論理記憶領域のうちの一種類以上の論理記憶領域の制御権を有し、
    各CPUコアは、そのCPUコアが有する制御権に対応した論理記憶領域に対するデータのアクセスの場合、そのデータの格納に必要な領域を、アクセス先の論理記憶領域に共通の物理記憶領域から割り当て、
    前記複数種類の論理記憶領域は、複数の制御権セットに属する複数のボリュームであり、
    各CPUコアに、一以上の制御権セットが割り当てられており、
    前記共通の物理記憶領域は、属性の異なる複数のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループに基づく記憶領域であり、
    RAIDグループは、複数の物理記憶デバイスで構成されており、
    前記共通の物理記憶領域が、複数のチャンクで構成されており、
    各チャンクは、複数のストライプ列で構成されており、
    ストライプ列は、複数のストライプで構成されており、RAIDグループに基づくデータのI/Oの単位領域であり、
    ストライプは、物理記憶デバイスにおける単位領域であり、
    各制御権セットに、ボリュームの他に、前記複数のチャンクから割り当てられた一以上のチャンクが属しており、
    データがアクセスされるボリュームである対象ボリュームの制御権セットが割り当てられているCPUコアが、
    (A)前記対象ボリュームの制御権セットに属するチャンクに、データを格納可能な領域があるか否かを判断し、
    (B)前記(A)の判断の結果が肯定的であれば、前記対象ボリュームの方針に合致する属性の領域があるか否かを判断し、
    (C)前記(B)の判断の結果が肯定的であれば、前記対象ボリュームの方針に合致する属性の領域を前記対象ボリュームに割り当て、
    (D)前記(A)又は前記(B)の判断の結果が否定的であれば、前記対象ボリュームの方針に合致するチャンクを、前記対象ボリュームの制御権セットに割り当て、その後、前記対象ボリュームの方針に合致する領域を、前記割り当てたチャンクから前記対象ボリュームに割り当て、
    いずれかのCPUコアが、一以上の移行対象ボリュームの所属先を第1の制御権セットから第2の制御権セットに移行する制御権移行処理を行い、前記制御権移行処理において、以下の(a)〜(c)を行う、
    (a)前記一以上の移行対象ボリュームの全てが、前記第1の制御権セットに属する一以上のボリュームの全てであるか否かを判断する、
    (b)前記(a)の判断の結果が肯定的であれば、前記一以上の移行対象ボリュームの全ての所属先を、前記第1の制御権セットから前記第2の制御権セットに移行する、
    (c)前記(a)の判断の結果が否定的であれば、前記一以上の移行対象ボリュームに割り当てられている領域毎に、以下の(c−1)〜(c−5)を行う、
    (c−1)領域が、前記一以上の移行対象ボリューム以外のボリュームにも割り当てられているか否かを判断する、
    (c−2)前記(c−1)の判断の結果が肯定的であれば、領域内のデータを、前記第2の制御権セットに所属するチャンクにおける領域にコピーする、
    (c−3)前記(c−1)の判断の結果が否定的であれば、領域内のデータを、前記第2の制御権セットに所属するチャンクにおける領域に移動する、
    (c−4)前記(c−3)の後、データの移動元の領域を有するチャンクが空になったか否かを判断する、
    (c−5)前記(c−4)の判断の結果が肯定的であれば、前記チャンクを前記第1の制御権セットから解放する、
    一つのチャンクには、サイズの異なる領域が混在する、
    記憶制御方法。
JP2012502051A 2009-10-27 2009-10-27 プール領域の一部の領域を動的にデータ格納領域として割り当てる記憶制御装置及び記憶制御方法 Expired - Fee Related JP5406363B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/005671 WO2011052005A1 (en) 2009-10-27 2009-10-27 Storage controller and storage control method for dynamically assigning partial areas of pool area as data storage areas

Publications (2)

Publication Number Publication Date
JP2012533100A JP2012533100A (ja) 2012-12-20
JP5406363B2 true JP5406363B2 (ja) 2014-02-05

Family

ID=42200839

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012502051A Expired - Fee Related JP5406363B2 (ja) 2009-10-27 2009-10-27 プール領域の一部の領域を動的にデータ格納領域として割り当てる記憶制御装置及び記憶制御方法

Country Status (3)

Country Link
US (1) US8307171B2 (ja)
JP (1) JP5406363B2 (ja)
WO (1) WO2011052005A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5521716B2 (ja) * 2010-04-06 2014-06-18 富士通株式会社 ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置
US8423735B2 (en) * 2010-05-21 2013-04-16 International Business Machines Corporation Space reservation in a deduplication system
JP5405663B2 (ja) * 2010-05-31 2014-02-05 パナソニック株式会社 メモリ管理装置、メモリ管理方法、メモリ管理プログラム、メモリ管理プログラムを記録したコンピュータ読み取り可能な記録媒体及び集積回路
US10169087B2 (en) * 2011-01-28 2019-01-01 International Business Machines Corporation Technique for preserving memory affinity in a non-uniform memory access data processing system
WO2013018149A1 (en) 2011-08-04 2013-02-07 Hitachi, Ltd. Data storage system using method for dynamically allocating physical data storage space
US9058120B2 (en) * 2011-11-09 2015-06-16 International Business Machines Corporation Setting optimal space allocation policy for creating dependent snapshots to enhance application write performance and reduce resource usage
WO2013158817A1 (en) * 2012-04-20 2013-10-24 Violin Memory, Inc. Lun management with distributed raid controllers
WO2013186828A1 (ja) * 2012-06-11 2013-12-19 株式会社 日立製作所 計算機システム及び制御方法
US20140101394A1 (en) * 2012-10-04 2014-04-10 Hitachi, Ltd. Computer system and volume management method for the computer system
WO2014057515A1 (en) * 2012-10-10 2014-04-17 Hitachi, Ltd. Storage apparatus comprising snapshot function, and storage control method
WO2014064756A1 (ja) * 2012-10-22 2014-05-01 株式会社日立製作所 ストレージプールから実記憶領域を仮想ボリュームへ割り当てる方法及び計算機システム
WO2014087497A1 (ja) * 2012-12-05 2014-06-12 株式会社日立製作所 ストレージ装置及びその制御方法
JP2014127076A (ja) 2012-12-27 2014-07-07 Nec Corp 情報記録再生装置及び記録再生方法
US9250809B2 (en) * 2013-03-18 2016-02-02 Hitachi, Ltd. Compound storage system and storage control method to configure change associated with an owner right to set the configuration change
WO2015056332A1 (ja) * 2013-10-17 2015-04-23 株式会社日立製作所 ストレージ装置及び制御方法
US20150339069A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
WO2016135872A1 (ja) * 2015-02-25 2016-09-01 株式会社日立製作所 ストレージ装置及び記憶デバイス
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US9444822B1 (en) * 2015-05-29 2016-09-13 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
JP2015232888A (ja) * 2015-07-09 2015-12-24 株式会社日立製作所 ストレージシステム
JP6674092B2 (ja) * 2016-02-10 2020-04-01 富士通株式会社 データ管理プログラム、データ管理装置、及びデータ管理方法
DE102017209697A1 (de) * 2016-06-13 2017-12-14 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
KR102223141B1 (ko) * 2019-02-12 2021-03-04 성균관대학교산학협력단 컨테이너 환경에서의 스토리지 드라이버의 동작 방법 및 스토리지 드라이버 장치
US11016688B1 (en) 2021-01-06 2021-05-25 Open Drives LLC Real-time localized data access in a distributed data storage system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4272275B2 (ja) * 1998-04-28 2009-06-03 株式会社日立製作所 記憶サブシステム
US8032701B1 (en) * 2004-03-26 2011-10-04 Emc Corporation System and method for managing provisioning of storage resources in a network with virtualization of resources in such a network
EP2385459A3 (en) 2003-08-14 2012-02-01 Compellent Technologies Virtual disk drive system and method
JP2005070965A (ja) * 2003-08-21 2005-03-17 Fujitsu Ltd 情報処理方法、情報処理システム及び情報処理装置
JP4451687B2 (ja) * 2004-03-22 2010-04-14 株式会社日立製作所 ストレージシステム
US7933936B2 (en) * 2005-06-10 2011-04-26 Network Appliance, Inc. Method and system for automatic management of storage space
JP4671353B2 (ja) * 2005-12-14 2011-04-13 株式会社日立製作所 ストレージ装置及びその制御方法
JP2006114064A (ja) * 2005-12-28 2006-04-27 Hitachi Ltd 記憶サブシステム
JP4890033B2 (ja) 2006-01-19 2012-03-07 株式会社日立製作所 記憶装置システム及び記憶制御方法
JP5073259B2 (ja) * 2006-09-28 2012-11-14 株式会社日立製作所 仮想化システム及び領域割当て制御方法
JP4930934B2 (ja) * 2006-09-29 2012-05-16 株式会社日立製作所 データマイグレーション方法及び情報処理システム
JP4958641B2 (ja) * 2007-05-29 2012-06-20 株式会社日立製作所 記憶制御装置及びその制御方法
US20090240880A1 (en) 2008-03-21 2009-09-24 Hitachi, Ltd. High availability and low capacity thin provisioning

Also Published As

Publication number Publication date
JP2012533100A (ja) 2012-12-20
US8307171B2 (en) 2012-11-06
US20110231605A1 (en) 2011-09-22
WO2011052005A1 (en) 2011-05-05

Similar Documents

Publication Publication Date Title
JP5406363B2 (ja) プール領域の一部の領域を動的にデータ格納領域として割り当てる記憶制御装置及び記憶制御方法
US8984221B2 (en) Method for assigning storage area and computer system using the same
JP5512833B2 (ja) ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム
US8639899B2 (en) Storage apparatus and control method for redundant data management within tiers
JP6114397B2 (ja) 複合型ストレージシステム及び記憶制御方法
US20110270945A1 (en) Computer system and control method for the same
US9323463B2 (en) Storage system and cache control method
JP5973089B2 (ja) ストレージシステムの移行方式および移行方法
JP2009043030A (ja) ストレージシステム
WO2011096017A1 (ja) 仮想ボリューム内のデータの再配置を行うストレージシステム及び方法
JP2013536478A (ja) ストレージシステム、及びその制御方法
US9003087B2 (en) Compound storage system and storage control method
US9886304B1 (en) Storage device sharing among virtual machines
JP2013114624A (ja) ストレージシステム及びプール容量縮小の制御方法
US20150234671A1 (en) Management system and management program
US20150248245A1 (en) Storage system, management computer, and virtual logical volume management method
WO2015198441A1 (ja) 計算機システム、管理計算機、および管理方法
US8572347B2 (en) Storage apparatus and method of controlling storage apparatus
US9239681B2 (en) Storage subsystem and method for controlling the storage subsystem
JP5597266B2 (ja) ストレージシステム
WO2017163322A1 (ja) 管理計算機、および計算機システムの管理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130701

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131031

R150 Certificate of patent or registration of utility model

Ref document number: 5406363

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees