JP5555260B2 - 仮想ボリュームを提供するストレージシステム - Google Patents
仮想ボリュームを提供するストレージシステム Download PDFInfo
- Publication number
- JP5555260B2 JP5555260B2 JP2011547082A JP2011547082A JP5555260B2 JP 5555260 B2 JP5555260 B2 JP 5555260B2 JP 2011547082 A JP2011547082 A JP 2011547082A JP 2011547082 A JP2011547082 A JP 2011547082A JP 5555260 B2 JP5555260 B2 JP 5555260B2
- Authority
- JP
- Japan
- Prior art keywords
- page
- migration
- virtual
- real
- real page
- 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
Links
- 238000003860 storage Methods 0.000 title claims description 203
- 238000013508 migration Methods 0.000 claims description 415
- 230000005012 migration Effects 0.000 claims description 414
- 238000000034 method Methods 0.000 claims description 120
- 230000008569 process Effects 0.000 claims description 111
- 238000012545 processing Methods 0.000 claims description 55
- 230000008707 rearrangement Effects 0.000 description 45
- 238000009826 distribution Methods 0.000 description 24
- 238000012544 monitoring process Methods 0.000 description 24
- 238000012423 maintenance Methods 0.000 description 22
- 230000004044 response Effects 0.000 description 15
- 230000007704 transition Effects 0.000 description 15
- 238000004590 computer program Methods 0.000 description 12
- 238000012546 transfer Methods 0.000 description 10
- 208000011338 SATB2 associated disease Diseases 0.000 description 7
- 208000013959 SATB2-associated syndrome Diseases 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- IUVCFHHAEHNCFT-INIZCTEOSA-N 2-[(1s)-1-[4-amino-3-(3-fluoro-4-propan-2-yloxyphenyl)pyrazolo[3,4-d]pyrimidin-1-yl]ethyl]-6-fluoro-3-(3-fluorophenyl)chromen-4-one Chemical compound C1=C(F)C(OC(C)C)=CC=C1C(C1=C(N)N=CN=C11)=NN1[C@@H](C)C1=C(C=2C=C(F)C=CC=2)C(=O)C2=CC(F)=CC=C2O1 IUVCFHHAEHNCFT-INIZCTEOSA-N 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 238000001808 supercritical antisolvent technique Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Description
本発明は、Thin Provisioning(Dynamic Provisioningとも呼ばれる)が適用される記憶制御に関する。
データ移行技術が知られている。データ移行は、一般に、ボリューム単位で行われる。例えば、特許文献1によれば、第1の論理ボリュームに格納されている全てのデータが、第1の論理ボリュームから第2の論理ボリュームに移行される。
また、ストレージ階層化技術も知られている。例えば、特許文献2によれば、複数のストレージシステムが有する複数の論理ボリュームが、それぞれ、複数のティアのうちのいずれかのティアに分類され、或るティアに属する論理ボリュームが、別のティアに移行される。複数のティアには、例えば、高信頼性のティア、低コストのティアなどが含まれる。
ところで、Thin Provisioningと呼ばれる(Dynamic Provisioningとも呼ばれる)技術が知られている。Thin Provisioningによれば、複数の仮想的な記憶領域(仮想ページ)で構成された仮想的な論理ボリューム(仮想ボリューム)と、複数の実体的な記憶領域(実ページ)とが用意される。仮想ページに対するライトが行われた場合に、その仮想ページに実ページが割り当てられ、割り当てられた実ページに、ライト対象のデータが書き込まれる。
上述したデータ移行技術及びストレージ階層化技術がThin Provisioningに適用されたとする。また、第1のティアに第1の仮想ボリュームが属し第2のティアに第2の仮想ボリュームが属しているとする。この場合、第1のティアに属する第1の仮想ボリュームから第2のティアに属する第2の仮想ボリュームに全てのデータを移行することができる。
この技術によれば、第1の仮想ボリューム内の全てのデータが、第1のティアから第2のティアに移行されるが、全てのデータが必ずしも第2のティアに存在することが好ましいとは限らない。
そこで、本発明の目的は、Thin Provisioningに従う仮想ボリューム内のデータの配置を適切にすることにある。
複数の記憶デバイスから提供される複数の記憶領域を記憶領域の属性に従って分類された複数の記憶領域グループを管理する。論理ボリューム内の複数のアドレスに含まれる少なくとも1つのアドレスへのライト要求に応じて前記複数の記憶領域に含まれる少なくとも1つの記憶領域が割り当てられる前記論理ボリュームの複数を提供する。前記論理ボリューム内の前記少なくとも1つのアドレスのアクセス状況に応じて、前記ライト要求によって前記少なくとも1つのアドレスにライトされているデータを、前記複数の記憶領域グループの1つに含まれる前記少なくとも1つの記憶領域から前記複数の記憶領域グループに含まれる他の記憶領域グループ内の少なくともひとつの記憶領域へ移行する。
以下、本発明の後述する複数の実施例に基づく観点を述べる。
<観点1>
複数の記憶デバイスから提供される複数の記憶領域を記憶領域の属性に従って分類された複数の記憶領域グループを管理し、
論理ボリューム内の複数のアドレスに含まれる少なくとも1つのアドレスへのライト要求に応じて前記複数の記憶領域に含まれる少なくとも1つの記憶領域が割り当てられる前記論理ボリュームの複数を提供し、
前記論理ボリューム内の前記少なくとも1つのアドレスのアクセス状況に応じて、前記ライト要求によって前記少なくとも1つのアドレスにライトされているデータを、前記複数の記憶領域グループの1つに含まれる前記少なくとも1つの記憶領域から前記複数の記憶領域グループに含まれる他の記憶領域グループ内の少なくともひとつの記憶領域へ移行する、ことを特徴とするストレージシステムの制御方法。
複数の記憶デバイスから提供される複数の記憶領域を記憶領域の属性に従って分類された複数の記憶領域グループを管理し、
論理ボリューム内の複数のアドレスに含まれる少なくとも1つのアドレスへのライト要求に応じて前記複数の記憶領域に含まれる少なくとも1つの記憶領域が割り当てられる前記論理ボリュームの複数を提供し、
前記論理ボリューム内の前記少なくとも1つのアドレスのアクセス状況に応じて、前記ライト要求によって前記少なくとも1つのアドレスにライトされているデータを、前記複数の記憶領域グループの1つに含まれる前記少なくとも1つの記憶領域から前記複数の記憶領域グループに含まれる他の記憶領域グループ内の少なくともひとつの記憶領域へ移行する、ことを特徴とするストレージシステムの制御方法。
<観点2>
観点1に従う方法であって、前記ストレージシステムは、前記論理ボリューム単位のデータ移行も実施しうるものである、ことを特徴とするストレージシステムの制御方法。
観点1に従う方法であって、前記ストレージシステムは、前記論理ボリューム単位のデータ移行も実施しうるものである、ことを特徴とするストレージシステムの制御方法。
<観点3>
一以上のホストに接続されるストレージシステムであって、複数種類の物理記憶デバイス群と、記憶制御装置とを備える。前記記憶制御装置が、記憶資源と、前記複数種類の物理記憶デバイス群、前記記憶資源及び前記ホストに接続されるコントローラとを有する。物理記憶デバイス群は、一以上の物理記憶デバイスで構成されている。前記複数種類の物理記憶デバイス群が、複数種類の実ページ群の基になっている。実ページ群の種類は、その実ページ群の基になっている物理記憶デバイス群の属性に基づいている。実ページ群が、複数の実ページを有する。前記コントローラが、一以上の仮想ボリュームを前記一以上のホストに提供する。前記仮想ボリュームは、複数の仮想ページで構成されている仮想的な論理ボリュームである。前記仮想ページは、仮想的な記憶領域である。前記実ページは、実体的な記憶領域である。前記記憶資源が、どの仮想ページにどの実ページが割り当てられているかを表す情報である割当て情報を記憶する(テーブル形式又はキュー形式など、情報の形式は何でもよい)。前記コントローラが、前記ホストからライトコマンドを受信し、前記ライトコマンドからライト先の仮想ページを特定し、特定した仮想ページにフリーの実ページを割り当てるよう前記割当て情報を更新し、割り当てた実ページにライト対象のデータを格納する。前記実ページは、実体的な記憶領域であり、実ページに格納されるデータはその実ページの基になっている物理記憶デバイスに記憶さる。前記コントローラが、以下の(A)及び(B)の処理を含んだ処理である移行処理を行う、
(A)第1種の実ページ群内の第1の実ページに格納されているデータを、第2種の実ページ群内の第2の実ページに移行する、
(B)前記第1の実ページの割当て先の仮想ページである第1の仮想ページに前記第1の実ページに代えて前記第2の実ページを割り当てるよう前記割当て情報を更新する。コントローラは、例えば、少なくとも一つのプロセッサを有してよい。記憶資源は、例えば、メモリであって良い。ホストは、計算機であっても良いし、別のストレージシステム又は別の記憶制御装置であっても良い。
一以上のホストに接続されるストレージシステムであって、複数種類の物理記憶デバイス群と、記憶制御装置とを備える。前記記憶制御装置が、記憶資源と、前記複数種類の物理記憶デバイス群、前記記憶資源及び前記ホストに接続されるコントローラとを有する。物理記憶デバイス群は、一以上の物理記憶デバイスで構成されている。前記複数種類の物理記憶デバイス群が、複数種類の実ページ群の基になっている。実ページ群の種類は、その実ページ群の基になっている物理記憶デバイス群の属性に基づいている。実ページ群が、複数の実ページを有する。前記コントローラが、一以上の仮想ボリュームを前記一以上のホストに提供する。前記仮想ボリュームは、複数の仮想ページで構成されている仮想的な論理ボリュームである。前記仮想ページは、仮想的な記憶領域である。前記実ページは、実体的な記憶領域である。前記記憶資源が、どの仮想ページにどの実ページが割り当てられているかを表す情報である割当て情報を記憶する(テーブル形式又はキュー形式など、情報の形式は何でもよい)。前記コントローラが、前記ホストからライトコマンドを受信し、前記ライトコマンドからライト先の仮想ページを特定し、特定した仮想ページにフリーの実ページを割り当てるよう前記割当て情報を更新し、割り当てた実ページにライト対象のデータを格納する。前記実ページは、実体的な記憶領域であり、実ページに格納されるデータはその実ページの基になっている物理記憶デバイスに記憶さる。前記コントローラが、以下の(A)及び(B)の処理を含んだ処理である移行処理を行う、
(A)第1種の実ページ群内の第1の実ページに格納されているデータを、第2種の実ページ群内の第2の実ページに移行する、
(B)前記第1の実ページの割当て先の仮想ページである第1の仮想ページに前記第1の実ページに代えて前記第2の実ページを割り当てるよう前記割当て情報を更新する。コントローラは、例えば、少なくとも一つのプロセッサを有してよい。記憶資源は、例えば、メモリであって良い。ホストは、計算機であっても良いし、別のストレージシステム又は別の記憶制御装置であっても良い。
これにより、仮想ボリューム内のデータをページ単位で再配置することができる。
<観点4>
観点3に従うストレージシステムにおいて、前記記憶資源が、仮想ページ毎のI/O(Input/Output)頻度を表す情報であるモニタ情報を記憶する。前記コントローラが、仮想ページ又はその仮想ページに割り当てられる実ページに対するI/Oに応じて、前記モニタ情報における、その仮想ページのI/O頻度を更新する。前記第1の仮想ページは、前記モニタ情報から特定されたI/O頻度が所定の条件に適合していない仮想ページである。
観点3に従うストレージシステムにおいて、前記記憶資源が、仮想ページ毎のI/O(Input/Output)頻度を表す情報であるモニタ情報を記憶する。前記コントローラが、仮想ページ又はその仮想ページに割り当てられる実ページに対するI/Oに応じて、前記モニタ情報における、その仮想ページのI/O頻度を更新する。前記第1の仮想ページは、前記モニタ情報から特定されたI/O頻度が所定の条件に適合していない仮想ページである。
これにより、仮想ページのI/O頻度に応じて、データ再配置を行うことができる。
<観点5>
観点4に従うストレージシステムにおいて、前記記憶資源が、実ページ群の種類毎に設定されたI/O頻度レンジを表す情報を含んだ情報である実ページ群管理情報を記憶する。前記所定の条件とは、前記第1種の実ページ群のI/O頻度レンジに収まることである。前記第2種の実ページ群は、I/O頻度レンジが前記第1の仮想ページのI/O頻度に収まっている実ページ群である。
観点4に従うストレージシステムにおいて、前記記憶資源が、実ページ群の種類毎に設定されたI/O頻度レンジを表す情報を含んだ情報である実ページ群管理情報を記憶する。前記所定の条件とは、前記第1種の実ページ群のI/O頻度レンジに収まることである。前記第2種の実ページ群は、I/O頻度レンジが前記第1の仮想ページのI/O頻度に収まっている実ページ群である。
これにより、データを、そのデータを格納する実ページが割り当てられている仮想ページのI/O頻度が収まるI/O頻度レンジに対応した種類の実ページ群に配置することができる。
<観点6>
観点3乃至5のうちのいずれかの観点のストレージシステムにおいて、前記コントローラは、I/Oコマンドを前記ホストから受信し、そのI/OコマンドからI/O先の仮想ページを特定する。前記コントローラは、前記I/O先の仮想ページに割り当てられる実ページに対してI/Oを行う場合、前記モニタ情報における、前記I/O先の仮想ページに対応したI/O頻度を更新し、一方、前記I/O先の仮想ページに割り当てられる実ページに対してI/Oを行わない場合、前記モニタ情報における、前記I/O先の仮想ページに対応したI/O頻度を更新しない。
観点3乃至5のうちのいずれかの観点のストレージシステムにおいて、前記コントローラは、I/Oコマンドを前記ホストから受信し、そのI/OコマンドからI/O先の仮想ページを特定する。前記コントローラは、前記I/O先の仮想ページに割り当てられる実ページに対してI/Oを行う場合、前記モニタ情報における、前記I/O先の仮想ページに対応したI/O頻度を更新し、一方、前記I/O先の仮想ページに割り当てられる実ページに対してI/Oを行わない場合、前記モニタ情報における、前記I/O先の仮想ページに対応したI/O頻度を更新しない。
これにより、実ページに対してI/Oが行われた場合にだけ、その実ページが割り当てられている仮想ページのI/O頻度を更新することができる。
<観点7>
観点4乃至6のうちのいずれかの観点に従うストレージシステムにおいて、前記記憶資源は、前記モニタ情報として、状態がアクティブのモニタ情報と、状態がスタンバイのモニタ情報とを記憶する。前記コントローラは、前記アクティブのモニタ情報におけるI/O頻度を更新する。前記コントローラは、前記移行処理において、前記アクティブのモニタ情報を基に、前記第1の仮想ページを特定し、且つ、前記スタンバイのモニタ情報の状態をスタンバイからアクティブに変更し、その後、仮想ページが特定されるI/Oコマンドに従って実ページに対してI/Oを行う場合、状態がアクティブに変更されたモニタ情報における、その特定された仮想ページのI/O頻度を更新する。
観点4乃至6のうちのいずれかの観点に従うストレージシステムにおいて、前記記憶資源は、前記モニタ情報として、状態がアクティブのモニタ情報と、状態がスタンバイのモニタ情報とを記憶する。前記コントローラは、前記アクティブのモニタ情報におけるI/O頻度を更新する。前記コントローラは、前記移行処理において、前記アクティブのモニタ情報を基に、前記第1の仮想ページを特定し、且つ、前記スタンバイのモニタ情報の状態をスタンバイからアクティブに変更し、その後、仮想ページが特定されるI/Oコマンドに従って実ページに対してI/Oを行う場合、状態がアクティブに変更されたモニタ情報における、その特定された仮想ページのI/O頻度を更新する。
これにより、前記移行処理が行われるときでも、I/O頻度の監視(更新)を継続することができる。
<観点8>
観点7に従うストレージシステムにおいて、前記コントローラは、前記アクティブのモニタ情報を用いて、I/O頻度と仮想ページ数との関係を表す情報である関係情報を作成し、作成した関係情報が表示されるよう前記関係情報を出力する。前記コントローラは、移行開始の指示を受けたときに、前記移行処理を開始する。
観点7に従うストレージシステムにおいて、前記コントローラは、前記アクティブのモニタ情報を用いて、I/O頻度と仮想ページ数との関係を表す情報である関係情報を作成し、作成した関係情報が表示されるよう前記関係情報を出力する。前記コントローラは、移行開始の指示を受けたときに、前記移行処理を開始する。
これにより、前記関係情報を閲覧したオペレータが手動で移行処理を開始させることができる。
<観点9>
観点3乃至7のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の実データ群の使用割合が所定の割合閾値を超えた場合に、前記移行処理を開始する。
観点3乃至7のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の実データ群の使用割合が所定の割合閾値を超えた場合に、前記移行処理を開始する。
このため、前記第1の実データ群の使用割合が所定の割合閾値を超えた場合には、前記移行処理により、第1の実データ群にフリーの実ページが増えることが期待できる。
<観点10>
観点3乃至9のうちのいずれかの観点に従うストレージシステムにおいて、前記第1種の実データ群が、最上位の実データ群である。前記コントローラは、前記ライトコマンドから特定されたライト先の仮想ページには、必ず、前記第1種の実データ群から実ページを割り当てる。
観点3乃至9のうちのいずれかの観点に従うストレージシステムにおいて、前記第1種の実データ群が、最上位の実データ群である。前記コントローラは、前記ライトコマンドから特定されたライト先の仮想ページには、必ず、前記第1種の実データ群から実ページを割り当てる。
これにより、データを、最上位の実データ群に優先的に格納できる。
<観点11>
観点3乃至10のうちのいずれかの観点に従うストレージシステムにおいて、前記仮想ボリュームとして、第1及び第2の仮想ボリュームがある。前記複数種類の物理記憶デバイス群に基づく複数のプールがある。プールは、一種類以上の実ページ群を有し、少なくとも一つの仮想ボリュームに割り当てられている。前記コントローラは、前記第1の仮想ボリュームについて、ページ単位移行処理を実行し、前記第2の仮想ボリュームについて、ボリューム単位移行処理を実行する。前記コントローラは、前記ページ単位移行処理では、前記第1の仮想ボリュームに割り当てられているプールにおいて、前記第1の実ページから前記第2の実ページにデータを移行する。前記コントローラは、前記ボリューム単位移行処理では、前記第2の仮想ボリュームに割り当てられているプールにおける、前記第2の仮想ボリュームに割り当てられている全ての実ページ内のデータを、前記第2の仮想ボリュームに割り当てられているプールとは別のプール内の実ページにそれぞれ移行する。
観点3乃至10のうちのいずれかの観点に従うストレージシステムにおいて、前記仮想ボリュームとして、第1及び第2の仮想ボリュームがある。前記複数種類の物理記憶デバイス群に基づく複数のプールがある。プールは、一種類以上の実ページ群を有し、少なくとも一つの仮想ボリュームに割り当てられている。前記コントローラは、前記第1の仮想ボリュームについて、ページ単位移行処理を実行し、前記第2の仮想ボリュームについて、ボリューム単位移行処理を実行する。前記コントローラは、前記ページ単位移行処理では、前記第1の仮想ボリュームに割り当てられているプールにおいて、前記第1の実ページから前記第2の実ページにデータを移行する。前記コントローラは、前記ボリューム単位移行処理では、前記第2の仮想ボリュームに割り当てられているプールにおける、前記第2の仮想ボリュームに割り当てられている全ての実ページ内のデータを、前記第2の仮想ボリュームに割り当てられているプールとは別のプール内の実ページにそれぞれ移行する。
つまり、一つの仮想ボリューム内のデータをページ単位で移行することだけでなく、一つの仮想ボリューム内の全てのデータを、プール間で移行することができる。
<観点12>
観点11に従うストレージシステムにおいて、前記記憶資源が、前記第2の仮想ボリュームのI/O頻度を表す情報であるモニタ情報と、実ページ群の種類毎に設定されたI/O頻度レンジを表す情報を含んだ情報である実ページ群管理情報とを記憶する。前記コントローラが、前記第2の仮想ボリューム又は前記第2の仮想ボリュームに割り当てられる実ページに対するI/Oに応じて、前記モニタ情報における、前記第2の仮想ボリュームのI/O頻度を更新する。前記コントローラが、前記第2の仮想ボリュームに割り当てられている実ページを有する実ページ群の種類に対応したI/O頻度レンジを基に、I/O頻度の閾値レンジを算出する。前記コントローラが、前記第2の仮想ボリュームのI/O頻度が前記閾値レンジに収まっていない場合、前記第2の仮想ボリュームのI/O頻度が収まる閾値レンジが得られるように、前記第2の仮想ボリュームに割り当てられている全ての実ページ内のデータを、前記別のプールに移行する。
観点11に従うストレージシステムにおいて、前記記憶資源が、前記第2の仮想ボリュームのI/O頻度を表す情報であるモニタ情報と、実ページ群の種類毎に設定されたI/O頻度レンジを表す情報を含んだ情報である実ページ群管理情報とを記憶する。前記コントローラが、前記第2の仮想ボリューム又は前記第2の仮想ボリュームに割り当てられる実ページに対するI/Oに応じて、前記モニタ情報における、前記第2の仮想ボリュームのI/O頻度を更新する。前記コントローラが、前記第2の仮想ボリュームに割り当てられている実ページを有する実ページ群の種類に対応したI/O頻度レンジを基に、I/O頻度の閾値レンジを算出する。前記コントローラが、前記第2の仮想ボリュームのI/O頻度が前記閾値レンジに収まっていない場合、前記第2の仮想ボリュームのI/O頻度が収まる閾値レンジが得られるように、前記第2の仮想ボリュームに割り当てられている全ての実ページ内のデータを、前記別のプールに移行する。
これにより、第2の仮想ボリューム内のデータを、第2の仮想ボリュームのI/O頻度に応じたプールに、移行することができる。
<観点13>
観点12に従うストレージシステムにおいて、前記ボリューム単位移行処理では、全ての移行元の実ページについて、移行元の実ページを有する実ページ群の種類と、移行先の実ページを有する実ページ群の種類が同じである。
観点12に従うストレージシステムにおいて、前記ボリューム単位移行処理では、全ての移行元の実ページについて、移行元の実ページを有する実ページ群の種類と、移行先の実ページを有する実ページ群の種類が同じである。
これにより、前記仮想ボリュームの性能を実質的に変えないようにすることができる。
<観点14>
観点12記載のストレージシステムにおいて、前記ボリューム単位移行処理では、全ての移行元の実ページについて、移行元の実ページを有する実ページ群の種類に関わらず、移行先の実ページは一つの所定種類の実ページ群内の実ページである。
観点12記載のストレージシステムにおいて、前記ボリューム単位移行処理では、全ての移行元の実ページについて、移行元の実ページを有する実ページ群の種類に関わらず、移行先の実ページは一つの所定種類の実ページ群内の実ページである。
これにより、第2の仮想ボリューム内の全てのデータを、移行先のプール内の所定種類の実ページ群に集約することができる。
<観点15>
観点3乃至14のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記仮想ボリュームに割り当てられている全ての実ページのうちの所定割合以上の実ページが或る種の実ページ群に存在する場合、前記仮想ボリュームに割り当てられている全ての実ページのうち、前記或る種の実ページ群以外の種類の実ページ群内の実ページ内のデータを、前記或る種の実ページ群内の実ページに移行する。
観点3乃至14のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記仮想ボリュームに割り当てられている全ての実ページのうちの所定割合以上の実ページが或る種の実ページ群に存在する場合、前記仮想ボリュームに割り当てられている全ての実ページのうち、前記或る種の実ページ群以外の種類の実ページ群内の実ページ内のデータを、前記或る種の実ページ群内の実ページに移行する。
これにより、仮想ボリュームのデータの配置状況に応じて、その仮想ボリュームにとって適切と考えられる種類の実ページ群に、その仮想ボリューム内のデータを集約することができる。
<観点16>
観点15に従うストレージシステムにおいて、前記或る種の実ページ群内の実ページに移行した後に前記仮想ページに割り当てられる実ページは、常に、前記或る種の実ページ群内の実ページである。
観点15に従うストレージシステムにおいて、前記或る種の実ページ群内の実ページに移行した後に前記仮想ページに割り当てられる実ページは、常に、前記或る種の実ページ群内の実ページである。
これにより、移行処理によってデータが集約された後は、前記第2の仮想ボリュームには、前記或る種の実ページ群から実ページが割り当てられる。
<観点17>
観点3乃至16のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへのデータの移行が開始されていない場合、その移行をキャンセルし、前記ライトコマンドに従うデータを前記第2種の実ページ群内の実ページに書き込み、且つ、前記第1の仮想ページに前記第1の実ページに代えてその書込み先の実ページを割り当てるよう前記割当て情報を更新する。
観点3乃至16のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへのデータの移行が開始されていない場合、その移行をキャンセルし、前記ライトコマンドに従うデータを前記第2種の実ページ群内の実ページに書き込み、且つ、前記第1の仮想ページに前記第1の実ページに代えてその書込み先の実ページを割り当てるよう前記割当て情報を更新する。
移行前に移行先の実ページ群にデータが書き込まれるので、そのデータのライト先の仮想ページについては、移行を行わなくて済む。
<観点18>
観点3乃至16のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへのデータの移行が開始されていない場合、前記ライトコマンドに従うデータを前記第1の実ページに書き込み、その後、前記(A)及び(B)を行う。
観点3乃至16のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへのデータの移行が開始されていない場合、前記ライトコマンドに従うデータを前記第1の実ページに書き込み、その後、前記(A)及び(B)を行う。
<観点19>
観点3乃至18のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへデータを移行中の場合、その移行をキャンセルし、前記ライトコマンドに従うデータを前記第2種の実ページ群内の実ページに書き込み、且つ、前記第1の仮想ページに前記第1の実ページに代えてその書込み先の実ページを割り当てるよう前記割当て情報を更新する。
観点3乃至18のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへデータを移行中の場合、その移行をキャンセルし、前記ライトコマンドに従うデータを前記第2種の実ページ群内の実ページに書き込み、且つ、前記第1の仮想ページに前記第1の実ページに代えてその書込み先の実ページを割り当てるよう前記割当て情報を更新する。
<観点20>
観点3乃至18のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへデータを移行中の場合、前記ライトコマンドに従うデータを前記第1の実ページに書き込み、その後、前記第1の実ページから前記第2種の実ページ群内の実ページへのデータの移行を再開する。
観点3乃至18のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへデータを移行中の場合、前記ライトコマンドに従うデータを前記第1の実ページに書き込み、その後、前記第1の実ページから前記第2種の実ページ群内の実ページへのデータの移行を再開する。
<観点21>
観点3乃至18のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへデータを移行中の場合、その移行が済んだ後に、前記割当て情報に従って、前記ライトコマンドに従うデータを前記第2の実ページに書き込む。
観点3乃至18のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへデータを移行中の場合、その移行が済んだ後に、前記割当て情報に従って、前記ライトコマンドに従うデータを前記第2の実ページに書き込む。
<観点22>
観点3乃至18のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへデータを移行中の場合、前記第1の実ページと前記第2の実ページの両方に、前記ライトコマンドに従うデータを書き込む。
観点3乃至18のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記第1の実ページから前記第2の実ページへデータを移行中の場合、前記第1の実ページと前記第2の実ページの両方に、前記ライトコマンドに従うデータを書き込む。
<観点23>
観点3乃至22のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記(A)及び(B)が済んでいる場合、前記割当て情報に従って、前記第2の実ページに、前記ライトコマンドに従うデータを書き込む。
観点3乃至22のうちのいずれかの観点に従うストレージシステムにおいて、前記コントローラは、前記第1の仮想ページが特定されるライトコマンドを前記移行処理が開始された後に前記ホストから受信し、且つ、前記(A)及び(B)が済んでいる場合、前記割当て情報に従って、前記第2の実ページに、前記ライトコマンドに従うデータを書き込む。
<観点24>
観点3乃至23のうちのいずれかの観点に従うストレージシステムにおいて、前記第1の仮想ページは、I/Oが行われた最新の時刻である最終I/O時刻が所定の条件を満たす仮想ページである。
観点3乃至23のうちのいずれかの観点に従うストレージシステムにおいて、前記第1の仮想ページは、I/Oが行われた最新の時刻である最終I/O時刻が所定の条件を満たす仮想ページである。
<観点25>
観点24に従うストレージシステムにおいて、前記所定の条件とは、最終I/O時刻が現在時刻から所定時間以上に過去であることである。前記第2種の実ページ群は、前記第1種の実ページ群よりも下位の実ページ群である。
観点24に従うストレージシステムにおいて、前記所定の条件とは、最終I/O時刻が現在時刻から所定時間以上に過去であることである。前記第2種の実ページ群は、前記第1種の実ページ群よりも下位の実ページ群である。
<観点26>
観点3乃至25うちのいずれかの観点に従うストレージシステムにおいて、前記第1の仮想ページは、シーケンシャルアクセスに従うI/Oが発生した仮想ページである。前記第2種の実ページ群は、前記第1種の実ページ群よりも下位の実ページ群である。
観点3乃至25うちのいずれかの観点に従うストレージシステムにおいて、前記第1の仮想ページは、シーケンシャルアクセスに従うI/Oが発生した仮想ページである。前記第2種の実ページ群は、前記第1種の実ページ群よりも下位の実ページ群である。
<観点27>
観点4に従うストレージシステムにおいて、前記コントローラは、前記モニタ情報の更新を所定の時間帯においてのみ行う。前記コントローラは、所定の時間帯を過ぎる都度に、前記モニタ情報を保存する。前記第1の仮想ページは、指定された時間帯に対応したモニタ情報から特定されたI/O頻度が所定の条件に適合していない仮想ページである。
観点4に従うストレージシステムにおいて、前記コントローラは、前記モニタ情報の更新を所定の時間帯においてのみ行う。前記コントローラは、所定の時間帯を過ぎる都度に、前記モニタ情報を保存する。前記第1の仮想ページは、指定された時間帯に対応したモニタ情報から特定されたI/O頻度が所定の条件に適合していない仮想ページである。
<観点28>
ホストに接続される記憶制御装置であって、記憶資源と、前記記憶資源及び前記ホストに接続されるコントローラとを備える。前記コントローラが、複数の仮想ページで構成されている仮想ボリュームを前記ホストに提供する。前記記憶資源が、どの仮想ページにどの実ページが割り当てられているかを表す情報である割当て情報を記憶する。前記コントローラが、前記ホストからライトコマンドを受信し、前記ライトコマンドからライト先の仮想ページを特定し、特定した仮想ページに複数種類の実ページ群のいずれかからフリーの実ページを割り当てるよう前記割当て情報を更新し、割り当てた実ページにライト対象のデータを格納する。前記実ページは、実体的な記憶領域である。前記仮想ページは、仮想的な記憶領域である。前記仮想ボリュームは、仮想的な論理ボリュームである。実ページ群が、複数の実ページを有する。前記コントローラが、以下の(A)及び(B)の処理を含んだ処理である移行処理を行う、
(A)第1種の実ページ群内の第1の実ページに格納されているデータを、第2種の実ページ群内の第2の実ページに移行する、
(B)前記第1の実ページの割当て先の仮想ページである第1の仮想ページに前記第1の実ページに代えて前記第2の実ページを割り当てるよう前記割当て情報を更新する。
ホストに接続される記憶制御装置であって、記憶資源と、前記記憶資源及び前記ホストに接続されるコントローラとを備える。前記コントローラが、複数の仮想ページで構成されている仮想ボリュームを前記ホストに提供する。前記記憶資源が、どの仮想ページにどの実ページが割り当てられているかを表す情報である割当て情報を記憶する。前記コントローラが、前記ホストからライトコマンドを受信し、前記ライトコマンドからライト先の仮想ページを特定し、特定した仮想ページに複数種類の実ページ群のいずれかからフリーの実ページを割り当てるよう前記割当て情報を更新し、割り当てた実ページにライト対象のデータを格納する。前記実ページは、実体的な記憶領域である。前記仮想ページは、仮想的な記憶領域である。前記仮想ボリュームは、仮想的な論理ボリュームである。実ページ群が、複数の実ページを有する。前記コントローラが、以下の(A)及び(B)の処理を含んだ処理である移行処理を行う、
(A)第1種の実ページ群内の第1の実ページに格納されているデータを、第2種の実ページ群内の第2の実ページに移行する、
(B)前記第1の実ページの割当て先の仮想ページである第1の仮想ページに前記第1の実ページに代えて前記第2の実ページを割り当てるよう前記割当て情報を更新する。
<観点29>
観点4に従うストレージシステムにおいて、特定されるI/O頻度は、或る時間におけるI/O数の平均である。
観点4に従うストレージシステムにおいて、特定されるI/O頻度は、或る時間におけるI/O数の平均である。
<観点30>
観点4に従うストレージシステムにおいて、前記特定されるI/O頻度は、或る時間帯の複数の時間にそれぞれ対応した複数のI/O数のうちの最大のI/O数である。
観点4に従うストレージシステムにおいて、前記特定されるI/O頻度は、或る時間帯の複数の時間にそれぞれ対応した複数のI/O数のうちの最大のI/O数である。
<観点31>
観点4に従うストレージシステムにおいて、記コントローラは、特定されるI/O頻度を平均I/O数とするか最大I/O数とするかの指定を受ける。平均I/O数とすることの指定を受けた場合、特定されるI/O頻度は、或る時間におけるI/O数の平均である。最大I/O数とすることの指定を受けた場合、特定されるI/O頻度は、或る時間帯の複数の時間にそれぞれ対応した複数のI/O数のうちの最大のI/O数である。
観点4に従うストレージシステムにおいて、記コントローラは、特定されるI/O頻度を平均I/O数とするか最大I/O数とするかの指定を受ける。平均I/O数とすることの指定を受けた場合、特定されるI/O頻度は、或る時間におけるI/O数の平均である。最大I/O数とすることの指定を受けた場合、特定されるI/O頻度は、或る時間帯の複数の時間にそれぞれ対応した複数のI/O数のうちの最大のI/O数である。
前述した観点1及び2は、ストレージシステムの制御方法を例に採った観点であり、観点3乃至27、及び、観点29乃至31は、ストレージシステムを例に採った観点であり、観点28は、記憶制御装置を例に採った観点であるが、それらのうちのいずれの観点も、ストレージシステム、記憶制御装置、記憶制御方法、ストレージシステム又は記憶制御装置の制御方法、ストレージシステム又は記憶制御装置、コンピュータプログラム(例えば、(例えば、記憶制御のためのコンピュータプログラム、或いは、ストレージシステム又は記憶制御装置で実行されるコンピュータプログラム)のうちの少なくとも一つの観点になることができる。
以下、図面を参照して、本発明の幾つかの実施例に係るストレージシステムを説明する。なお、以下の説明において、対象が、参照符号に代えて名称とIDの組み合わせで表されることがある。例えば、論理ボリュームが参照符号500で表される場合には、「論理ボリューム500」と表記され、IDが00の論理ボリュームが表される場合には、「論理ボリューム#00」と表記される。また、以下、一つの実ページに格納されるデータを、「データ要素」と呼ぶ。また、仮想ページに割り当てられた実ページに格納されているデータ要素を、「仮想ページ内のデータ要素」又はそれに類似した表現で表すことがある。
図1は、本発明の実施例1の概要を示す。
ストレージシステム103にホスト装置(以下、ホスト)101が接続されている。ホスト101は、一つであっても複数であってもよい。ストレージシステム103は、仮想ボリューム(以下、VVOL(Virtual VOLume))203をホスト101に提供し、複数種類のティア303を有する。
VVOL203は、Thin Provisioningに従う仮想的な論理ボリューム、すなわち、物理的な記憶デバイス(以下、PDEV)を基としない論理ボリュームである。VVOL203は、複数の仮想ページ207で構成されている。仮想ページ207は、仮想的な記憶領域である。VVOL203として、一つのVVOL#00があるとする。以下、VVOL#a内の仮想ページ#bを、「仮想ページ#(a−b)」と表記することにする。Thin ProvisioningのVVOL203は、仮想的な容量を有するものとしてホスト101へ提供されるものであり、ホスト101から仮想ページのあるアドレスへのライト要求に応じて実ページが割り当てられるものである。したがって、仮想的な容量を満たすように実ページが割り当てられてしまった状態を除いては、あるVVOL203へ割り当てられた全ての実ページのトータル容量は、仮想的な容量よりも小さいものとなる。1つのVVOL203は、1つ以上のホスト101へ提供されるものであり、複数のホスト101へ提供される場合には、これらの複数のホスト101によって共有されることになる。
ティア303は、複数の実ページ209で構成されている。実ページ209は、実体的な記憶領域である。ティア303として、例えば、二つのティア#01及び#02があるとする。以下、ティア#c内の実ページ#dを、「実ページ#(c−d)」と表記することにする。なお、ティア303は、例えば、一以上の実ボリューム(以下、RVOL(Real VOLume))で構成されてよい。RVOLは、実体的な論理ボリューム、すなわち、PDEVを基とする論理ボリュームである。1つのプール内の複数のティア303の各々は、データ移行前の状態には、1つ又は複数のVVOL203に利用されるものとして設定される。
ホスト101は、一般的には計算機であるが、計算機に代えて、別のストレージシステムであってもよい。ホスト101は、例えば、I/O(Input/Output)コマンドをストレージシステム103に送信する。I/Oコマンドは、例えば、ライトコマンド又はリードコマンドであり、I/O先情報を有する。I/O先情報は、I/O先を表す情報であり、例えば、VVOL203のID(例えばLUN(Logical Unit Number))とI/O先のアドレス(例えばLBA(Logical
Block Address))とを含む。I/O先情報から、I/O先のVVOL203及び仮想ページ207が特定される。
Block Address))とを含む。I/O先情報から、I/O先のVVOL203及び仮想ページ207が特定される。
ストレージシステム103が、ホスト101からライトコマンドを受信し、そのライトコマンドが有するI/O先情報を基に、ライト先として、仮想ページ#(00−C)を特定したとする。ストレージシステム103は、特定された仮想ページ#(00−C)にいずれの実ページ209が割り当てられていなければ、その仮想ページ207に、いずれかのフリー(未割当て状態)の実ページ#(01−D)を割り当て、割り当てた実ページ(01−D)に、ライトコマンドに従うライト対象のデータ要素を書き込む。
本実施例では、データ移行が、ページ単位で行われる。具体的には、例えば、図1に示すように、ストレージシステム103が、以下の処理:
*仮想ページ#(00−C)に割り当てられている実ページ#(01−D)内のデータ要素を、フリー(未割当て状態)の実ページ#(02−E)に移行する;
*仮想ページ#(00−C)の割当元を、実ページ#(01−D)から実ページ#(02−E)に変更する;
*実ページ#(01−D)の状態をフリー(未割当て状態)に更新する、
を行う。
*仮想ページ#(00−C)に割り当てられている実ページ#(01−D)内のデータ要素を、フリー(未割当て状態)の実ページ#(02−E)に移行する;
*仮想ページ#(00−C)の割当元を、実ページ#(01−D)から実ページ#(02−E)に変更する;
*実ページ#(01−D)の状態をフリー(未割当て状態)に更新する、
を行う。
以下、実施例1を詳細に説明する。
図2は、ストレージシステム103の構成を示す。
ストレージシステム103は、複数のPDEV105と、複数のPDEV105に接続された記憶制御装置と、電源ユニット100とを有する。
複数のPDEV105には、複数種類のPDEV、例えば、SSD(Solid State Drive)及びHDD(Hard Disk Drive)が含まれる。HDDとしては、HDD−FC(Fibre Channel)、HDD−SATA(Serial ATA)、及びHDD−SAS(Serial Attached SCSI)などがある。
記憶制御装置は、コントローラと、コントローラに接続された複数のCMPK(キャッシュメモリパッケージ)119を有する。コントローラは、複数のCHA(チャネルアダプタ)111と、複数のDKA(ディスクアダプタ)113と、複数のMPPK(マイクロプロセッサパッケージ)121と、SW(スイッチ)117とを有する。CHA111、DKA113、MPPK121、SW117及び電源ユニット100は、冗長化の観点から、それぞれ複数存在するが、それらのうちの少なくとも一つの数は、図示の2に限らず、2より多くても少なくても良い。CMPK119の数は、2より多くても良い。
電源ユニット100は、商用電源からの電力に基づく電力を各パッケージ119、111、113、121及び117に供給する。
CHA111は、ホスト101に接続されるインタフェース装置である。CHA111は、ホスト101から、I/Oコマンド(ライトコマンド又はリードコマンド)を受信し、受信したI/Oコマンドを、複数のMPPK121のうちのいずれかに転送する。
CHA111は、プロトコルチップ112と、LR(Local Router)114とを有する。プロトコルチップ112は、ホスト101との通信のためのプロトコル変換を行う。LR114は、受信したI/Oコマンドを、そのI/Oコマンドが有するI/O先情報から特定されるI/O先に対応したMPPK121に、転送する。
DKA113は、HDD105に接続されるインタフェース装置である。DKA113は、HDD105からデータを読み出してCMPK119のDRAM(Dynamic Random Access Memory)に転送したり、CMPK119からのデータをHDD105に書込んだりする。
MPPK121は、一又は複数のMP(マイクロプロセッサ)を有する装置である。MPは、CHA111からのI/Oコマンドを処理する。
SW117に、複数のパッケージ、すなわち、CHA111、DKA113、CMPK119及びMPPK121が接続されている。SW117は、PK(パッケージ)間の接続を制御する。
CMPK119は、揮発性メモリ及び/又は不揮発性メモリを有する。CMPK119には、例えば、仮想ページ207(実ページ209)に対するI/Oの対象のデータ要素が一時的に格納される記憶領域(以下、キャッシュメモリ或いはそれを略してCM)がある。また、CMPK119には、種々の情報及びコンピュータプログラムが記憶される記憶領域がある。情報及びコンピュータプログラムについては、後に説明する。
ストレージシステム103に、管理装置107が接続されている。管理装置107は、例えば、表示装置及び入力装置を有する計算機である。管理者は、管理装置107からストレージシステム103に対して種々の設定を行うことができる。
図3は、ストレージシステム103における各種記憶領域の関係を示す。
図3に示すように、下位から上位にかけて、一以上のRG301、一以上のプール201、一以上のVVOL203が管理される。
RG301は、RAIDグループの略である。一つのRG301は、同一種類のPDEVで構成されている。PDEV種類は、例えば、性能及び単位コストのうちの少なくとも一方で定義される。性能とは、例えば、データのI/Oの速度、又は、レスポンスタイム(ホストからコマンドを受けてから応答を返すまでの時間長)である。単位コストは、単位サイズのデータを保存するのに要する価格(例えばいわゆるビットコスト)である。例えば、RG#00は、複数のSSDで構成されており、RG#01は、複数のHDD−SASで構成されており、RG#02は、複数のHDD−SATAで構成されている。なお、一つのRGを構成する複数のPDEVの容量は、例えば同じである。
プール201は、実ページ207の集合である。具体的には、例えば、プール201は、一以上のRVOL205で構成されており、各RVOL205が、一以上の実ページ207で構成されている。以下、プール201を構成するRVOLを、プールVOLを略して「PVOL」と表す。
一つのプール201を構成する実ページ207が階層化されている。すなわち、一つのプール201に、複数のティア303が存在する。ティア303は、例えば、RVOLの種類毎に存在する。例えば、図3によれば、RVOLの種類として3種類あるため、ティア303の数も3つである。このため、一つのティア303には、そのティアに対応した種類のRVOL205が属することになる。具体的には、例えば、ティア#00は、SSDという種類であり、SSDで構成されたRG301に基づくRVOLが属することになり、ティア#01は、HDD−SASという種類であり、HDD−SASで構成されたRG301に基づくRVOLが属することになり、ティア#03は、HDD−SATAという種類であり、HDD−SATAで構成されたRG301に基づくRVOLが属することになる。なお、ティア303は、必ずしも、厳密にRVOL種類毎に設けられる必要も無く、同一のティア303に、類似の種類のRGに基づく複数のRVOL205が属しても良い。
VVOL203には、一以上のプール201から、割当元となるプール201が関連付けられる。また、VVOL203には、選択されたプール201から、割当元として使用可能なティア(以下、割当ティア)303が関連付けられる。また、VVOL203には、一以上の割当ティア303のうちの一つがデフォルトのティア303として関連付けられる。図3によれば、VVOL#01の割当ティアは、ティア#00及び#02である。
また、上述の説明によれば、複数のRVOLは、それらが同一のティアに属していれば、一つのRGが基になっている可能性があるが、それらが異なるティアにそれぞれ属していれば、それぞれ別々のRGが基になっていることになる。同一のティア303に関連する1つ又は複数のVVOL203の複数の仮想ページに対して複数の実ページを順次割り当てる場合には、このティア303に関連するRGをまたいで実ページが順次選択されるようすることが望ましい。具体的には、このティア303に含まれる複数のRVOL205から複数の実ページが選択される場合に、RGとの関係を考慮して、順次異なるRGから実ページが順次選択される。これにより、アクセス性能を向上させることが可能になる。
図4は、CMPK119が記憶する情報及びコンピュータプログラムを示す。なお、本実施例では、情報の一例としてテーブルが採用されるが、情報は、テーブル以外の形式(例えばキュー形式)であっても良い。
CMPK119は、情報として、ティア定義テーブル401、ティア管理テーブル402、プール管理テーブル403、VVOL管理テーブル404、PVOL管理テーブル405、アロケーションテーブル407、実ページ管理テーブル408、モニタテーブル409、度数分布テーブル410、移行ページテーブル411及び移行定義テーブル412を記憶する。また、CMPK119は、コンピュータプログラムとして、UI(User Interface)を制御するプログラムであるUI制御プログラム413、I/Oを制御するプログラムであるI/O制御プログラム414、及び、再配置を行うプログラムである再配置プログラム415を記憶する。なお、これらのテーブル及びコンピュータプログラムのうちの少なくとも一つがCMPK119以外の記憶資源に記憶されていても良い。例えば、少なくとも一つのコンピュータプログラム、及び/又は、移行ページテーブル411は、MPPK121内のメモリに記憶されても良い。
以下、各テーブルを説明する。なお、以下の説明では、対象は、IDを用いて特定されるが、IDに代えて又は加えて、名称及び番号のうちの少なくとも一つを用いて特定されても良い。
図5は、ティア定義テーブル401の構成を示す。
ティア定義テーブル401は、ティアの定義を表すテーブルである。具体的には、例えば、テーブル401は、RVOL種類とティアIDとの関係を表す。テーブル401によれば、RVOL種類「SSD」に対応したティアとして、「00」というIDが付与されたティアが用意されることになる。
図6は、ティア管理テーブル402の構成を示す。
ティア管理テーブル402は、ティアに関する情報を管理するためのテーブルである。具体的には、例えば、テーブル402は、ティア毎に、プールID、ティアID、ティアレンジ、PVOL ID、ティア閾値、使用割合、実ページIDを有する。一つのティア(以下、図6の説明において「対象ティア」と言う)を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
*「プールID」は、対象ティアを有するプールのIDである。
*「ティアID」は、対象ティアのIDである。ティアIDから、対象ティアに属するPVOLの基になっているPDEVの種類が一義的に特定される。
*「ティアレンジ」は、対象ティアに存在すべき実ページの負荷(例えばI/O頻度)の範囲である。
*「PVOL ID」は、対象ティアに属するPVOLのIDである。
*「ティア閾値」は、対象ティアの使用割合の閾値である。
*「使用割合」は、対象ティアの使用割合、すなわち、対象ティアを構成する実ページの数に対する、割当て済みの実ページの数の割合である。
*「実ページID」は、対象ティアに属する全ての実ページのIDである。
*「プールID」は、対象ティアを有するプールのIDである。
*「ティアID」は、対象ティアのIDである。ティアIDから、対象ティアに属するPVOLの基になっているPDEVの種類が一義的に特定される。
*「ティアレンジ」は、対象ティアに存在すべき実ページの負荷(例えばI/O頻度)の範囲である。
*「PVOL ID」は、対象ティアに属するPVOLのIDである。
*「ティア閾値」は、対象ティアの使用割合の閾値である。
*「使用割合」は、対象ティアの使用割合、すなわち、対象ティアを構成する実ページの数に対する、割当て済みの実ページの数の割合である。
*「実ページID」は、対象ティアに属する全ての実ページのIDである。
図6のテーブル402の例によれば、ティア閾値は、ティア毎に設定されているが、それに代えて、一つのプールについて一つのティア閾値が設定され、その一つのティアが、その一つのプールが有する全てのティアについて共通であっても良い。
図7は、プール管理テーブル403の構成を示す。
プール管理テーブル403は、プールに関する情報を管理するためのテーブルである。具体的には、例えば、テーブル403は、プール毎に、プールID、階層化、再配置、自動実行、再配置実行周期、再配置実行時刻、モニタ時間帯及びプールステータスを有する。一つのプール(以下、図7の説明において「対象プール」と言う)を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
*「プールID」は、対象プールのIDである。
*「階層化」は、対象プール内の実ページを階層化するか否かである。“ON”は、階層化すること(つまり、対象プールに複数のティアが設けられること)を意味し、“OFF”は、階層化しないこと(つまり、対象プールにティアが設けられないこと)を意味する。
*「再配置」は、対象プール内のデータ要素を再配置するか否かである。“ON”は、再配置を行うことを意味し、“OFF”は、再配置を行わないことを意味する。“ON”の場合、対象プールが割り当てられているVVOL又はその仮想ページのI/O頻度がモニタされ、“OFF”の場合、対象プールが割り当てられているVVOL又はその仮想ページのI/O頻度がモニタされない。I/O頻度のモニタに関して大事なことは、I/O先のVVOL或いは仮想ページに割り当てられた実ページに実際にI/Oが行われなければ、I/O頻度は更新されず、その割り当てられた実ページに対してI/Oが行われたときに、I/O頻度が更新されることである。この点は、後述のライト処理及びリード処理の際にも説明する。
*「自動実行」は、対象プール内のデータ要素の再配置を自動で開始するか手動で開始するかである。“ON”は、再配置が自動で開始されることを意味し、“OFF”は、再配置が手動で開始されることを意味する。
*「再配置実行周期」は、対象プール内のデータ要素の再配置を行う周期である。例えば、“1日”は、1日(24時間)毎に再配置が開始されることを意味する。
*「再配置実行時刻」は、対象プール内のデータ要素の再配置を開始する時刻である。
*「モニタ時間帯」は、対象プールが割り当てられているVVOLに割り当てられた実ページのI/O頻度をモニタする時間帯である。
*「プールステータス」は、対象プールのステータスである。「プールステータス」の値として、例えば、“モニタリング中”、“再配置中”、“非モニタリング中”がある。“モニタリング中”は、対象プールが割り当てられているVVOL又はそのVVOL内の仮想ページのI/O頻度がモニタリングされている最中であり、且つ、データ要素の再配置中ではないことを意味する。“再配置中”は、データ要素の再配置(対象プール内での再配置であっても良いし、対象プールから別のプールへのデータ要素の再配置であっても良い)が行われている最中であることを意味する。“非モニタリング中”は、I/O頻度のモニタリング中でもないしデータ要素の再配置中でもないことを意味する。
*「プールID」は、対象プールのIDである。
*「階層化」は、対象プール内の実ページを階層化するか否かである。“ON”は、階層化すること(つまり、対象プールに複数のティアが設けられること)を意味し、“OFF”は、階層化しないこと(つまり、対象プールにティアが設けられないこと)を意味する。
*「再配置」は、対象プール内のデータ要素を再配置するか否かである。“ON”は、再配置を行うことを意味し、“OFF”は、再配置を行わないことを意味する。“ON”の場合、対象プールが割り当てられているVVOL又はその仮想ページのI/O頻度がモニタされ、“OFF”の場合、対象プールが割り当てられているVVOL又はその仮想ページのI/O頻度がモニタされない。I/O頻度のモニタに関して大事なことは、I/O先のVVOL或いは仮想ページに割り当てられた実ページに実際にI/Oが行われなければ、I/O頻度は更新されず、その割り当てられた実ページに対してI/Oが行われたときに、I/O頻度が更新されることである。この点は、後述のライト処理及びリード処理の際にも説明する。
*「自動実行」は、対象プール内のデータ要素の再配置を自動で開始するか手動で開始するかである。“ON”は、再配置が自動で開始されることを意味し、“OFF”は、再配置が手動で開始されることを意味する。
*「再配置実行周期」は、対象プール内のデータ要素の再配置を行う周期である。例えば、“1日”は、1日(24時間)毎に再配置が開始されることを意味する。
*「再配置実行時刻」は、対象プール内のデータ要素の再配置を開始する時刻である。
*「モニタ時間帯」は、対象プールが割り当てられているVVOLに割り当てられた実ページのI/O頻度をモニタする時間帯である。
*「プールステータス」は、対象プールのステータスである。「プールステータス」の値として、例えば、“モニタリング中”、“再配置中”、“非モニタリング中”がある。“モニタリング中”は、対象プールが割り当てられているVVOL又はそのVVOL内の仮想ページのI/O頻度がモニタリングされている最中であり、且つ、データ要素の再配置中ではないことを意味する。“再配置中”は、データ要素の再配置(対象プール内での再配置であっても良いし、対象プールから別のプールへのデータ要素の再配置であっても良い)が行われている最中であることを意味する。“非モニタリング中”は、I/O頻度のモニタリング中でもないしデータ要素の再配置中でもないことを意味する。
図8は、VVOL管理テーブル404の構成を示す。
VVOL管理テーブル404は、VVOLに関する情報を管理するためのテーブルである。具体的には、例えば、テーブル404は、VVOL毎に、VVOL ID、PVOL ID、割当ティアID、デフォルトティアID、容量、再配置、自動実行、再配置実行周期、再配置実行時刻及びモニタ時間帯を有する。これらの情報要素のうち、再配置、自動実行、再配置実行周期、再配置実行時刻及びモニタ時間帯は、プール管理テーブル403における情報要素と同じであるが、このテーブル404における情報要素(例えば「再配置」)の値がプール管理テーブル403における同じ情報要素(例えば「再配置」)の値と違っていれば、このテーブル404における値が優先されて良い。つまり、プール管理テーブル403では、一つのプールについて情報要素の値が設定され、その結果、そのプールが割り当てられている全てのVVOLについての設定にその値を反映させることができるが、VVOL毎に、設定をすることができる。VVOLについて特に値が設定されていなければ、そのVVOLに割り当てられているプールについて設定されている値が、そのVVOLについての値とされる。一つのVVOL(以下、図8の説明において「対象VVOL」と言う)を例に採っていうと、このテーブル404における上記の情報要素は、具体的には、下記の通りである。
*「VVOL ID」は、対象VVOLのIDである。
*「PVOL ID」は、対象VVOLに割り当てられているプール(以下、割当プール)のIDである。
*「割当ティアID」は、割当プールが有する複数のティアのうちの対象VVOLに割り当てられるティアのIDである。対象VVOL内の仮想ページには、割当ティアから実ページが割り当てられる。
*「デフォルトティアID」は、デフォルトティアのIDである。デフォルトティアとは、ホスト101からのライト先の仮想ページに初めに割り当てられる実ページの提供元となるティアである。
*「容量」は、対象VVOLの容量である。
*「再配置」は、対象VVOL内のデータ要素を再配置するか否かである。“ON”は、再配置を行うことを意味し、“OFF”は、再配置を行わないことを意味する。“ON”の場合、対象VVOL又はその仮想ページのI/O頻度がモニタされ、“OFF”の場合、対象VVOL又はその仮想ページのI/O頻度がモニタされない。
*「自動実行」は、対象VVOL内のデータ要素の再配置を自動で開始するか手動で開始するかである。“ON”は、再配置が自動で開始されることを意味し、“OFF”は、再配置が手動で開始されることを意味する。
*「再配置実行周期」は、対象VVOL内のデータ要素の再配置を行う周期である。
*「再配置実行時刻」は、対象VVOL内のデータ要素の再配置を開始する時刻である。
*「モニタ時間帯」は、対象VVOL又は仮想ページのI/O頻度をモニタする時間帯である。
*「VVOL ID」は、対象VVOLのIDである。
*「PVOL ID」は、対象VVOLに割り当てられているプール(以下、割当プール)のIDである。
*「割当ティアID」は、割当プールが有する複数のティアのうちの対象VVOLに割り当てられるティアのIDである。対象VVOL内の仮想ページには、割当ティアから実ページが割り当てられる。
*「デフォルトティアID」は、デフォルトティアのIDである。デフォルトティアとは、ホスト101からのライト先の仮想ページに初めに割り当てられる実ページの提供元となるティアである。
*「容量」は、対象VVOLの容量である。
*「再配置」は、対象VVOL内のデータ要素を再配置するか否かである。“ON”は、再配置を行うことを意味し、“OFF”は、再配置を行わないことを意味する。“ON”の場合、対象VVOL又はその仮想ページのI/O頻度がモニタされ、“OFF”の場合、対象VVOL又はその仮想ページのI/O頻度がモニタされない。
*「自動実行」は、対象VVOL内のデータ要素の再配置を自動で開始するか手動で開始するかである。“ON”は、再配置が自動で開始されることを意味し、“OFF”は、再配置が手動で開始されることを意味する。
*「再配置実行周期」は、対象VVOL内のデータ要素の再配置を行う周期である。
*「再配置実行時刻」は、対象VVOL内のデータ要素の再配置を開始する時刻である。
*「モニタ時間帯」は、対象VVOL又は仮想ページのI/O頻度をモニタする時間帯である。
図9は、PVOL管理テーブル405の構成を示す。
PVOL管理テーブル405は、PVOLに関する情報を管理するためのテーブルである。具体的には、例えば、テーブル405は、PVOL毎に、RG ID、PDEV ID、種類、PVOL ID、及び容量を有する。一つのPVOL(以下、図9の説明において「対象PVOL」と言う)を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
*「RG ID」は、対象PVOLの基になっているRGのIDである。
*「PDEV ID」は、対象PVOLの基になっているRGを構成する全てのPDEVのIDである。
*「種類」は、対象PVOLの種類である。これは、対象PVOLの基になっているPDEVの種類と同じである。例えば、RVOL種類が“SSD”であれば、対象PVOLの種類も“SSD”となる。
*「PVOL ID」は、対象PVOLのIDである。
*「容量」は、対象PVOLの容量である。
*「RG ID」は、対象PVOLの基になっているRGのIDである。
*「PDEV ID」は、対象PVOLの基になっているRGを構成する全てのPDEVのIDである。
*「種類」は、対象PVOLの種類である。これは、対象PVOLの基になっているPDEVの種類と同じである。例えば、RVOL種類が“SSD”であれば、対象PVOLの種類も“SSD”となる。
*「PVOL ID」は、対象PVOLのIDである。
*「容量」は、対象PVOLの容量である。
図10は、アロケーションテーブル407の構成を示す。
アロケーションテーブル407は、どの仮想ページにどの実ページが割り当てられているかを表すテーブルである。具体的には、例えば、テーブル407は、仮想ページ毎に、VVOL ID、仮想ページID、プールID、実ページID及びティアIDを有する。一つの仮想ページ(以下、図10の説明において「対象仮想ページ」と言う)を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
*「VVOL ID」は、対象仮想ページを有するVVOLのIDである。
*「仮想ページID」は、対象仮想ページのIDである。
*「プールID」は、対象仮想ページを有するVVOLに割り当てられているプールのIDでる。
*「実ページID」は、対象仮想ページに割り当てられている実ページのIDである。
*「ティアID」は、対象仮想ページに割り当てられている実ページを有するティアのIDである。
*「VVOL ID」は、対象仮想ページを有するVVOLのIDである。
*「仮想ページID」は、対象仮想ページのIDである。
*「プールID」は、対象仮想ページを有するVVOLに割り当てられているプールのIDでる。
*「実ページID」は、対象仮想ページに割り当てられている実ページのIDである。
*「ティアID」は、対象仮想ページに割り当てられている実ページを有するティアのIDである。
図11は、実ページ管理テーブル408の構成を示す。
実ページ管理テーブル408は、各実ページの状態を管理するためのテーブルである。具体的には、例えば、テーブル408は、実ページ毎に、プール ID、実ページID及びステータスを有する。一つの実ページ(以下、図11の説明において「対象実ページ」と言う)を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
*「プールID」は、対象実ページを有するプールのIDである。
*「実ページID」は、対象実ページのIDである。
*「ステータス」は、対象実ページのステータスである。ステータスの値として、例えば、“使用中”と“フリー”がある。“使用中”は、対象実ページがいずれかの仮想ページに割当て済みであることを意味する。“フリー”は、対象実ページがいずれの仮想ページにも割り当てられておらずそれ故いずれの仮想ページにも割当て可能な状態になっていることを意味する。
*「プールID」は、対象実ページを有するプールのIDである。
*「実ページID」は、対象実ページのIDである。
*「ステータス」は、対象実ページのステータスである。ステータスの値として、例えば、“使用中”と“フリー”がある。“使用中”は、対象実ページがいずれかの仮想ページに割当て済みであることを意味する。“フリー”は、対象実ページがいずれの仮想ページにも割り当てられておらずそれ故いずれの仮想ページにも割当て可能な状態になっていることを意味する。
図12は、モニタテーブル409の構成を示す。
モニタテーブル409は、VVOL毎に存在する。テーブル409は、VVOLのI/O頻度を表す第1種のモニタテーブル409A、又は、仮想ページのI/O頻度を表す第2種のモニタテーブル409Bである。一つのVVOL(以下、図12の説明において「対象VVOL」と言う)を例に採って、テーブル409A及び409Bを説明する。
テーブル409Aは、具体的には、例えば、VVOL毎に、VVOL ID、合計I/O数、平均I/O数、最大I/O数及び最終I/O時刻を有する。これらの情報要素は、具体的には、下記の通りである。
*「VVOL ID」は、対象VVOLのIDである。
*「合計I/O数」は、モニタ時間帯に対象VVOLに行われたI/O(具体的には、対象VVOLに割り当てられている実ページに対するI/O)の数である。
*「平均I/O数」は、「合計I/O数」の値を所定時間で割ることにより算出された値である。
*「最大I/O数」は、モニタ時間帯を構成する複数の時間帯における複数のI/O数(対象VVOLについてのI/O数)のうちの最も大きいI/O数である。
*「最終I/O時刻」は、対象VVOLにI/Oが行われた最新の時刻である。
*「VVOL ID」は、対象VVOLのIDである。
*「合計I/O数」は、モニタ時間帯に対象VVOLに行われたI/O(具体的には、対象VVOLに割り当てられている実ページに対するI/O)の数である。
*「平均I/O数」は、「合計I/O数」の値を所定時間で割ることにより算出された値である。
*「最大I/O数」は、モニタ時間帯を構成する複数の時間帯における複数のI/O数(対象VVOLについてのI/O数)のうちの最も大きいI/O数である。
*「最終I/O時刻」は、対象VVOLにI/Oが行われた最新の時刻である。
テーブル409Bは、具体的には、例えば、仮想ページ毎に、VVOL ID、仮想ページID、合計I/O数、平均I/O数、最大I/O数及び最終I/O時刻を有する。一つの仮想ページ(以下、図12の説明において「対象仮想ページ」と言う)を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
*「VVOL ID」は、対象仮想ページを有するVVOL(つまり対象VVOL)のIDである。
*「仮想ページID」は、対象仮想ページのIDである。
*「合計I/O数」は、モニタ時間帯に対象仮想ページに行われたI/Oの数である。
*「平均I/O数」は、「合計I/O数」の値を所定時間で割ることにより算出された値である。
*「最大I/O数」は、モニタ時間帯を構成する複数の時間帯における複数のI/O数(対象仮想ページについてのI/O数)のうちの最も大きいI/O数である。
*「最終I/O時刻」は、対象仮想ページにI/Oが行われた最新の時刻である。
*「VVOL ID」は、対象仮想ページを有するVVOL(つまり対象VVOL)のIDである。
*「仮想ページID」は、対象仮想ページのIDである。
*「合計I/O数」は、モニタ時間帯に対象仮想ページに行われたI/Oの数である。
*「平均I/O数」は、「合計I/O数」の値を所定時間で割ることにより算出された値である。
*「最大I/O数」は、モニタ時間帯を構成する複数の時間帯における複数のI/O数(対象仮想ページについてのI/O数)のうちの最も大きいI/O数である。
*「最終I/O時刻」は、対象仮想ページにI/Oが行われた最新の時刻である。
VOL単位のデータ移行が指定されたVVOLについては、テーブル409Aが作成され、ページ単位のデータ移行が指定されたVVOLについては、テーブル409Bが作成される。テーブル409Aは、VOL単位のデータ移行を行うか否かの自動判断の際に参酌され、テーブル409Bは、ページ単位のデータ移行を行うか否かの自動判断の際に参酌される。
テーブル409A及び409Bも、それぞれ、例えば二つ(二つより多くても良い)存在する。テーブル409Bを例に採ると、二つのテーブル409Bが、交互に使用される。具体的には、例えば、再配置が実行される場合、その実行時点の直近のモニタ時間帯についてのテーブル409Bを用いて、後述する移行ページテーブル411が作成され、且つ、他方のテーブル409Bを用いて、I/O頻度のモニタが行われる。以下の説明では、使用されている方のテーブル409A、409Bを、アクティブのテーブル409A、409Bと言い、使用されていない方のテーブル409A、409Bを、スタンバイのテーブル409A、409Bと言うことがある。
図13は、度数分布テーブル410の構成を示す。
度数分布テーブル410は、I/O数と仮想ページ数との相関を表すテーブルである。このテーブル410は、第2種のモニタテーブル409B(すなわち、仮想ページ毎のI/O頻度を表すテーブル)を基に作成される。I/O数としては、前述したテーブル409Bにおける合計I/O数、平均I/O数及び最大I/O数のうちの少なくとも一つが採用されて良い。図13は、平均I/O数が採用された例である。すなわち、図13に示すテーブル410は、平均I/O数別に仮想ページの数を表す。図13によれば、平均I/O数が“0”の仮想ページの数は“561”であることがわかる。このテーブル410(又はこのテーブル410を基に作成されるグラフ)は、管理装置107に表示される。管理者は、テーブル401(又はそれに基づくグラフ)を基に、手動で、データ要素の再配置の開始をストレージシステム103に指示することができる。
度数分布テーブル410は、第2種のモニタテーブル409Bが更新されることに伴って更新されても良いし、度数分布の表示を管理者から命じられたときに、テーブル409Bを基に作成されても良い。
図14は、移行ページテーブル411の構成を示す。
移行ページテーブル411は、ページ単位のデータ移行の際に、第2種のモニタテーブル409Bを基に作成されるテーブルである。テーブル411は、移行元と移行先との関係を表す。具体的には、例えば、テーブル411は、移行対象の仮想ページ毎に、仮想ページID、移行元ティアID、移行先ティアID及び移行ステータスを有する。一つの仮想ページ(以下、図14の説明において「対象仮想ページ」と言う)を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
*「仮想ページID」は、対象仮想ページのIDである。
*「移行元ティアID」は、対象仮想ページに割り当てられている実ページ(移行元の実ページ)を有するティアのIDである。
*「移行先ティアID」は、データ要素の移行先となるティアのIDである。移行先の実ページは、そのティアにおけるいずれかフリーの実ページである。
*「移行ステータス」は、対象仮想ページについての移行のステータスである。「移行ステータス」の値として、例えば、“移行済”、“移行中”及び“未移行”がある。“移行済”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行済みであることを意味する。“移行中”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行中であることを意味する。“未移行”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行することが未だ開始されていないことを意味する。
*「仮想ページID」は、対象仮想ページのIDである。
*「移行元ティアID」は、対象仮想ページに割り当てられている実ページ(移行元の実ページ)を有するティアのIDである。
*「移行先ティアID」は、データ要素の移行先となるティアのIDである。移行先の実ページは、そのティアにおけるいずれかフリーの実ページである。
*「移行ステータス」は、対象仮想ページについての移行のステータスである。「移行ステータス」の値として、例えば、“移行済”、“移行中”及び“未移行”がある。“移行済”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行済みであることを意味する。“移行中”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行中であることを意味する。“未移行”は、移行元の実ページから移行先のティアにおけるいずれかの実ページにデータ要素を移行することが未だ開始されていないことを意味する。
なお、移行ページテーブル411は、仮想ページIDに代えて又は加えて、移行元に関する他種の情報要素を有してもよい。例えば、仮想ページに割り当てられている実ページのIDがテーブル411に含まれてもよい。
また、移行ページテーブル411は、移行先ティアIDに代えて又は加えて、移行先に関する他種の情報要素を有してもよい。例えば、移行先ティアにおけるフリーの実ページがテーブル402(図6)及び408(図11)を基に特定され、その特定された実ページのIDがテーブル411に含まれてもよい。その際、特定された実ページのステータスが、“フリー”から“使用中”(或いは他のステータス(例えば“リザーブ”)に更新されてもよい。
図15は、移行定義テーブル412の構成を示す。
移行定義テーブル412は、各VVOLについて、移行に関する定義を表す。具体的には、例えば、テーブル412は、VVOL毎に、VVOL ID、ページ単位移行、VOL単位移行、ティア維持、割当ティアID及び格納閾値を有する。一つのVVOL(以下、図15の説明において「対象VVOL」と言う)を例に採っていうと、これらの情報要素は、具体的には、下記の通りである。
*「VVOL ID」は、対象VVOLのIDである。
*「ページ単位移行」は、ページ単位のデータ移行を行うか否かである。“ON”は、ページ単位のデータ移行を行うことを意味し、“OFF”は、ページ単位のデータ移行を行わないことを意味する。
*「VOL単位移行」は、VOL単位(厳密にはVOL単位)のデータ移行を行うか否かである。“ON”は、VOL単位のデータ移行を行うことを意味し、“OFF”は、VOL単位のデータ移行を行わないことを意味する。従って、「ページ単位移行」と「VOL単位移行」の両方が“OFF”ということは、対象VVOL内のデータ要素は移行(再配置)されないことを意味する。
*「ティア維持」は、ティアを維持した移行をするか否かである。ティアを維持するとは、移行先のティアのID(つまりティアの種類)を、移行元のティアのIDと同じすることである。“ON”は、ティアを維持することを意味し、“OFF”は、ティアを維持しないことを意味する。
*「割当ティアID」は、対象VVOLの割当ティアのIDである。
*「格納閾値」は、割当ティアの格納割合の閾値である。この閾値は、割当ティア毎に設定される。「格納割合」とは、一つの割当ティア(以下、この段落の説明において「対象割当ティア」)について言えば、次のとおりである。すなわち、格納割合は、対象VVOL内の全てのデータ要素のうちのどの程度の割合のデータ要素が対象割当ティアに格納されているかである。
*「VVOL ID」は、対象VVOLのIDである。
*「ページ単位移行」は、ページ単位のデータ移行を行うか否かである。“ON”は、ページ単位のデータ移行を行うことを意味し、“OFF”は、ページ単位のデータ移行を行わないことを意味する。
*「VOL単位移行」は、VOL単位(厳密にはVOL単位)のデータ移行を行うか否かである。“ON”は、VOL単位のデータ移行を行うことを意味し、“OFF”は、VOL単位のデータ移行を行わないことを意味する。従って、「ページ単位移行」と「VOL単位移行」の両方が“OFF”ということは、対象VVOL内のデータ要素は移行(再配置)されないことを意味する。
*「ティア維持」は、ティアを維持した移行をするか否かである。ティアを維持するとは、移行先のティアのID(つまりティアの種類)を、移行元のティアのIDと同じすることである。“ON”は、ティアを維持することを意味し、“OFF”は、ティアを維持しないことを意味する。
*「割当ティアID」は、対象VVOLの割当ティアのIDである。
*「格納閾値」は、割当ティアの格納割合の閾値である。この閾値は、割当ティア毎に設定される。「格納割合」とは、一つの割当ティア(以下、この段落の説明において「対象割当ティア」)について言えば、次のとおりである。すなわち、格納割合は、対象VVOL内の全てのデータ要素のうちのどの程度の割合のデータ要素が対象割当ティアに格納されているかである。
図15のテーブル412の例によれば、格納閾値は、ティア毎に設定されているが、それに代えて、一つのプールについて一つの格納閾値が設定され、その一つのティアが、その一つのプールが有する全てのティアについて共通であっても良い。
以下、本実施例で行われる処理を説明する。なお、以下の説明において、コンピュータプログラムが行う処理は、実際には、コンピュータプログラムを実行するMP(マイクロプロセッサ)が行う。MPは、MPPK121(図2参照)にある。
<プールの作成>。
図16は、プール作成処理のフローを示す。なお、この<プールの作成>の説明において、そのプール作成処理で新たに作成されるプールを「対象プール」と言う。
(S1601)
UI制御プログラム413が、プールの作成指示を、管理者から管理装置107を通じて受ける。そして、プログラム413は、例えば下記の準備処理を行う。
*プログラム413は、対象プールの新規のレコードを、テーブル402(図6)、403(図7)、408(図11)に追加する。
*プログラム413は、PVOLの指定を管理者から管理装置107を通じて受ける。具体的には、例えば、プログラム413は、RVOLに関する情報(例えば、ID、種類など)を表示し、PVOLとするRVOLの指定を受ける。
UI制御プログラム413が、プールの作成指示を、管理者から管理装置107を通じて受ける。そして、プログラム413は、例えば下記の準備処理を行う。
*プログラム413は、対象プールの新規のレコードを、テーブル402(図6)、403(図7)、408(図11)に追加する。
*プログラム413は、PVOLの指定を管理者から管理装置107を通じて受ける。具体的には、例えば、プログラム413は、RVOLに関する情報(例えば、ID、種類など)を表示し、PVOLとするRVOLの指定を受ける。
指定されたRVOL毎に、S1602〜S1605が行われる。一つのRVOL(以下、図16の説明において「対象RVOL」と言う)を例に採り、S1602〜S1605を説明する。
(S1602)
プログラム413は、指定されたRVOLの種類を特定する。具体的には、例えば、CMPK119が、RVOL毎にID、容量、種類(例えば、SSD、HDD−SAS)などを有するRVOL管理テーブルを記憶していて、プログラム413は、そのRVOL管理テーブルから、指定されたRVOLの種類を特定する。
プログラム413は、指定されたRVOLの種類を特定する。具体的には、例えば、CMPK119が、RVOL毎にID、容量、種類(例えば、SSD、HDD−SAS)などを有するRVOL管理テーブルを記憶していて、プログラム413は、そのRVOL管理テーブルから、指定されたRVOLの種類を特定する。
(S1603)
プログラム413は、特定されたRVOL種類に対応したティアが対象プールに既に存在しているか否かを、ティア管理テーブル403から判断する。この判断の結果が否定的の場合、S1604が行われ、この判断の結果が肯定的の場合、S1605が行われる。
プログラム413は、特定されたRVOL種類に対応したティアが対象プールに既に存在しているか否かを、ティア管理テーブル403から判断する。この判断の結果が否定的の場合、S1604が行われ、この判断の結果が肯定的の場合、S1605が行われる。
(S1604)
プログラム413は、特定されたRVOL種類に対応したティアのIDをティア定義テーブル401から特定する。そして、プログラム413は、対象プールについて、特定されたティアIDを、テーブル402(図6)に追加する。
プログラム413は、特定されたRVOL種類に対応したティアのIDをティア定義テーブル401から特定する。そして、プログラム413は、対象プールについて、特定されたティアIDを、テーブル402(図6)に追加する。
(S1605)
プログラム413は、特定されたRVOL種類に対応したティア(以下、この段落において「対象ティア」と言う)に、対象RVOLを追加する。具体的には、例えば、プログラム413は、テーブル402(図6)に、対象ティアのティアIDに対応するPVOL IDとして、対象RVOLのIDを登録する。
プログラム413は、特定されたRVOL種類に対応したティア(以下、この段落において「対象ティア」と言う)に、対象RVOLを追加する。具体的には、例えば、プログラム413は、テーブル402(図6)に、対象ティアのティアIDに対応するPVOL IDとして、対象RVOLのIDを登録する。
(S1606)
プログラム413は、全ての指定されたRVOLについてS1602以降が行われたか否かを判断する。指定されたRVOLに、S1602以降の処理が行われていないRVOLがあれば、そのRVOLについて、S1602以降が行われる。
プログラム413は、全ての指定されたRVOLについてS1602以降が行われたか否かを判断する。指定されたRVOLに、S1602以降の処理が行われていないRVOLがあれば、そのRVOLについて、S1602以降が行われる。
(S1607)
プログラム413は、プール定義GUI(Graphical User Interface)を表示する。そして、プログラム413は、そのGUIを通じて種々の設定を受け付ける。
プログラム413は、プール定義GUI(Graphical User Interface)を表示する。そして、プログラム413は、そのGUIを通じて種々の設定を受け付ける。
図17は、プール定義GUI1700を示す。
GUI1700には、対象プールのIDが表示される。なお、プログラム413は、所定のツール(例えばプルダウンメニュー)が管理者に操作されたことに応答して、対象プール以外のプール(すなわち既存のプール)のIDを表示することもできる。
また、GUI1700は、表示されているIDが表すプールについて、テーブル403(図7)に設定すべき情報要素「階層化」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」、「ティア閾値」の値を入力するために管理者が使用する入力ツールを有する。本実施例で言う入力ツールとしては、ラジオボタン、チェックボックス、テキスト入力欄などを任意のツールを採用することができる。なお、GUI1700は、「ティア閾値」について、一つの閾値を、対象プールが有する全てのティアに共通とさせることも、或いは、対象プールが有するティア毎に閾値を設定することもできるようになっている。
なお、前述したように、GUI1700には、既存のプールのIDも表示可能であるため、GUI1700を用いて、管理者所望の既存のプールについての設定を変更することもできる。その際、プログラム413は、例えば、管理者所望のティア閾値が、そのティア閾値が設定されるティアの使用割合よりも高ければ、不適切なティア閾値として、警告を管理装置105に表示し、そのティア閾値をテーブル402(図6)に登録しないようにしても良い。
再び図16を参照する。
(S1608)
プログラム413は、テーブルを更新する。具体的には、例えば、プログラム413は、下記の処理を行う。
*プログラム413は、図17のGUI1700に入力された、情報要素「階層化」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」、「ティア閾値」の値を、テーブル403(図7)に登録する。
*プログラム413は、対象プールを複数の実ページに区切り、それら複数の実ページのIDを、テーブル402(図6)、及び、408(図11)に追加する。
プログラム413は、テーブルを更新する。具体的には、例えば、プログラム413は、下記の処理を行う。
*プログラム413は、図17のGUI1700に入力された、情報要素「階層化」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」、「ティア閾値」の値を、テーブル403(図7)に登録する。
*プログラム413は、対象プールを複数の実ページに区切り、それら複数の実ページのIDを、テーブル402(図6)、及び、408(図11)に追加する。
実ページの容量は、全てのプールにおいて共通であってよい。そのため、対象プールを構成する実ページの数は、対象プールの容量(対象プールを構成するPVOLの総容量)に依存してよい。
なお、PVOL毎に、実ページの容量が異なっていても良い。具体的には、例えば、RAID5(4D+1P)のRGに基づくPVOLを構成する実ページの容量と、RAID6(4D+2P)のRGに基づくPVOLを構成する実ページの容量は、異なっていても良い。なぜなら、一つの実ページに格納されるパリティの数が違っているためである。
<VVOLの作成>。
図18は、VVOL作成処理のフローを示す。なお、この<VVOLの作成>の説明において、そのVVOL作成処理で新たに作成されるVVOLを「対象VVOL」と言う。
(S1801)
UI制御プログラム413は、VVOL作成GUIを表示する。そして、プログラム413は、そのGUIを通じて種々の設定を受け付ける。
UI制御プログラム413は、VVOL作成GUIを表示する。そして、プログラム413は、そのGUIを通じて種々の設定を受け付ける。
図19は、VVOL作成GUI1900を示す。
GUI1900には、対象VVOLのIDが表示される。なお、プログラム413は、所定のツール(例えばプルダウンメニュー)が管理者に操作されたことに応答して、対象VVOL以外のVVOL(既存のVVOL)のIDを表示することもできる。
GUI1900は、表示されているIDが表すVVOLについて、テーブル404(図8)に設定すべき情報要素「プールID」、「容量」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」の値を入力するために管理者が使用する入力ツールを有する。
また、GUI1900は、入力されたプールIDに対応するティアIDをテーブル402(図6)から特定し、特定された全てのティアIDを表示する。GUI1900は、表示されているIDが表すVVOLについて、「割当ティア」、「格納閾値」及び「デフォルトティア」の値を入力するために管理者が使用する入力ツールを有する。管理者は、それらの入力ツールを用いて、入力されたプールIDが表すプール(VVOLに割り当てたプール)が有する複数のティアのうちのどれを割当ティアにするか、割当ティアのうちのどれを「デフォルトティア」にするか、及び、各割当ティアの格納閾値を、入力することができる。
再び図18を参照する。
(1802)
プログラム413は、テーブルを更新する。具体的には、例えば、プログラム413は、下記の処理を行う。
*プログラム413は、図19のGUI1900に入力された、情報要素「プールID」、「容量」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」、「割当ティアID」及び「デフォルトティアID」の値を、テーブル404(図8)に登録する。
*プログラム413は、対象VVOLの容量に基づいて、対象VVOLを構成する仮想ページの数を算出する。プログラム413は、対象VVOLのIDと、算出された仮想ページ数分の仮想ページIDとを、テーブル407(図10)に登録する。
*プログラム413は、対象VVOLについて、「再配置」が“ON”であれば、テーブル409A及び409B(図12)を作成する。モニタ時間帯に、I/O頻度のモニタが行われるからである。なお、テーブル409Bには、上記算出された仮想ページ数分の仮想ページIDが登録される。
*プログラム413は、対象VVOLについて、「割当ティアID」及び「格納閾値」を、テーブル412(図15)に登録する。
プログラム413は、テーブルを更新する。具体的には、例えば、プログラム413は、下記の処理を行う。
*プログラム413は、図19のGUI1900に入力された、情報要素「プールID」、「容量」、「再配置」、「自動実行」、「実行周期」、「実行時刻」、「モニタ時間帯」、「割当ティアID」及び「デフォルトティアID」の値を、テーブル404(図8)に登録する。
*プログラム413は、対象VVOLの容量に基づいて、対象VVOLを構成する仮想ページの数を算出する。プログラム413は、対象VVOLのIDと、算出された仮想ページ数分の仮想ページIDとを、テーブル407(図10)に登録する。
*プログラム413は、対象VVOLについて、「再配置」が“ON”であれば、テーブル409A及び409B(図12)を作成する。モニタ時間帯に、I/O頻度のモニタが行われるからである。なお、テーブル409Bには、上記算出された仮想ページ数分の仮想ページIDが登録される。
*プログラム413は、対象VVOLについて、「割当ティアID」及び「格納閾値」を、テーブル412(図15)に登録する。
<移行の定義>。
図20は、移行定義処理のフローを示す。
(S2001)
UI制御プログラム413は、移行定義GUIを表示する。そして、プログラム413は、そのGUIを通じて種々の設定を受け付ける。
UI制御プログラム413は、移行定義GUIを表示する。そして、プログラム413は、そのGUIを通じて種々の設定を受け付ける。
図21は、移行定義GUI2100を示す。
GUI2100は、VVOLのIDを管理者が指定するための入力ツールを有する。管理者は、移行定義の対象とするVVOL(以下、この<移行の定義>の説明において、「対象VVOL」と言う)のIDを、その入力ツールを用いて表示させる。
GUI2100は、表示されているIDが表すVVOLについて、テーブル412(図15)に設定すべき情報要素「ページ単位移行」、「VOL単位移行」、「ティア維持」の値を入力するために管理者が使用する入力ツールを有する。
プログラム413は、管理者からの操作に応じて、例えば下記の制御を行う。
*プログラム413は、「ページ単位移行」及び「VOL単位移行」の一方の“ON”が選択された場合、「ページ単位移行」及び「VOL単位移行」の他方の“ON”を選択不可能に制御する。つまり、プログラム413は、「ページ単位移行」と「VOL単位移行」の両方が“ON”にされることが無いよう制御する。
*プログラム413は、「ページ単位移行」及び「VOL単位移行」の一方の“OFF”が選択されても、「ページ単位移行」及び「VOL単位移行」の他方の“OFF”を選択可能のままとする(すなわち選択不可能としない)。
*プログラム413は、「VOL単位移行」の“ON”が選択された場合、「ティア維持」の“ON”を選択可能とし、「ティア維持」の“OFF”を選択不可能とする。一方、プログラム413は、「VOL単位移行」の“OFF”が選択された場合、「ティア維持」の“ON”を選択不可能とし、「ティア維持」の“OFF”を選択可能とする。
*プログラム413は、「ページ単位移行」及び「VOL単位移行」の一方の“ON”が選択された場合、「ページ単位移行」及び「VOL単位移行」の他方の“ON”を選択不可能に制御する。つまり、プログラム413は、「ページ単位移行」と「VOL単位移行」の両方が“ON”にされることが無いよう制御する。
*プログラム413は、「ページ単位移行」及び「VOL単位移行」の一方の“OFF”が選択されても、「ページ単位移行」及び「VOL単位移行」の他方の“OFF”を選択可能のままとする(すなわち選択不可能としない)。
*プログラム413は、「VOL単位移行」の“ON”が選択された場合、「ティア維持」の“ON”を選択可能とし、「ティア維持」の“OFF”を選択不可能とする。一方、プログラム413は、「VOL単位移行」の“OFF”が選択された場合、「ティア維持」の“ON”を選択不可能とし、「ティア維持」の“OFF”を選択可能とする。
再び図20を参照する。
(S2002)
プログラム413は、テーブルを更新する。具体的には、例えば、プログラム413は、テーブル412(図15)における、図21のGUI2100に入力されたVVOL IDに対応する欄に、そのGUI2100に入力された情報要素「ページ単位移行」、「VOL単位移行」及び「ティア維持」の値を登録する。
プログラム413は、テーブルを更新する。具体的には、例えば、プログラム413は、テーブル412(図15)における、図21のGUI2100に入力されたVVOL IDに対応する欄に、そのGUI2100に入力された情報要素「ページ単位移行」、「VOL単位移行」及び「ティア維持」の値を登録する。
<情報の表示>。
図22は、情報表示処理のフローを示す。
UI制御プログラム413は、管理装置107から表示命令を受け(S2201)、表示命令で指定されている情報を管理装置107に表示する(S2202)。
表示可能な情報の種類として、例えば、テーブル401〜412のうちの少なくとも一つ(或いはそれを加工することにより得られる情報(例えば、グラフ、サマリーなど))がある。
図23は、度数分布GUI2300を示す。
度数分布GUI2300は、図22のS2202で表示される。具体的には、例えば、図22のS2201で、管理装置107が、管理者からの要求に従って、管理者所望のVVOL IDを指定した度数分布表示命令を送信する。図22のS2202で、プログラム413が、その命令に応答して、その命令で指定されているVVOL IDに対応した度数分布をテーブル410(図13)から抽出し、抽出した度数分布を、図23に示すように管理装置107に表示する。なお、度数分布は、表形式で表示されているが、それに代えて又は加えて、グラフ形式など他の形式で表示されても良い。
管理者は、GUI2300に表示されている度数分布を見て、所望のVVOL内のデータ要素を移行するか否かを判断する。例えば、管理者は、平均I/O数が高い仮想ページ数がたくさん存在すると思った場合には、所望のVVOL内のデータ要素の移行をストレージシステム103に指示して良い(例えば、GUI2300にある「移行実行」ボタンを押して良い)。
このように、度数分布は、データ移行(VVOL内のデータ要素の移行)を行うか否かを管理者が判断するための判断材料として用いられる。別の言い方をすれば、データ移行が自動で実行されるのであれば、度数分布は計算されなくて良い。
<ライト処理(キャッシュメモリへのライト)>。
図24は、ライト処理(キャッシュメモリへのライト)のフローを示す。
(S2401)
I/O制御プログラム414が、ライトコマンドをホスト101から受信する。
I/O制御プログラム414が、ライトコマンドをホスト101から受信する。
(S2402)
プログラム414が、受信したライトコマンドが有するI/O先情報から、ライト先のVVOL及び仮想ページを特定する。ここでは、複数の仮想ページが特定されることが多い。なぜなら、ライト対象のデータのサイズは、通常、一つの仮想ページの容量よりも大きいからである。特定された仮想ページ毎に、S2403以降が行われる。以下、一つの仮想ページを例に採り(図24の説明において、「対象仮想ページ」と言う)、S2403以降を説明する。また、図24の説明において、対象仮想ページに対するライト対象のデータ要素を「対象データ要素」と言う。
プログラム414が、受信したライトコマンドが有するI/O先情報から、ライト先のVVOL及び仮想ページを特定する。ここでは、複数の仮想ページが特定されることが多い。なぜなら、ライト対象のデータのサイズは、通常、一つの仮想ページの容量よりも大きいからである。特定された仮想ページ毎に、S2403以降が行われる。以下、一つの仮想ページを例に採り(図24の説明において、「対象仮想ページ」と言う)、S2403以降を説明する。また、図24の説明において、対象仮想ページに対するライト対象のデータ要素を「対象データ要素」と言う。
(S2403)
プログラム414は、対象仮想ページのIDが、移行ページテーブル411に存在するか否かを判断する。この判断の結果が否定的の場合、S2404〜S2406が行われ、この判断の結果が肯定的の場合、S2407〜S2408が行われる。
プログラム414は、対象仮想ページのIDが、移行ページテーブル411に存在するか否かを判断する。この判断の結果が否定的の場合、S2404〜S2406が行われ、この判断の結果が肯定的の場合、S2407〜S2408が行われる。
(S2404)
プログラム414は、アロケーションテーブル407(図10)を基に、対象仮想ページに、実ページが割り当てられているか否かを判断する。この判断の結果が否定的であれば、S2405が行われる。
プログラム414は、アロケーションテーブル407(図10)を基に、対象仮想ページに、実ページが割り当てられているか否かを判断する。この判断の結果が否定的であれば、S2405が行われる。
(S2405)
プログラム414が、以下の処理を行う。
*プログラム414は、ライト先のVVOLに対応したプール及びそのプール内のデフォルトティアを、VVOL管理テーブル404(図8)を基に特定する。
*プログラム414は、ティア管理テーブル402(図6)及び実ページ管理テーブル408(図11)を基に、特定されたデフォルトティア内のフリーの実ページを特定する。
*プログラム414は、対象仮想ページに、特定した実ページを割り当てる。すなわち、プログラム414は、アロケーションテーブル407(図10)における、対象仮想ページのIDに対応した欄に、割り当てた実ページのIDと、その実ページを有するティアのIDと、そのティアを有するプールのIDとを登録する。
*プログラム414は、デフォルトティアからフリーの実ページを特定できない場合には、ライト先のVVOLに対応した割当ティアからフリーの実ページを特定し、特定した実ページを対象仮想ページに割り当ててよい。
*プログラム414は、テーブル402(図6)における、割り当てた実ページを有するティア(このS2403の説明において「割当元ティア」と言う)の「使用割合」の値を、更新する。
*プログラム414は、割当元ティアの「使用割合」の更新後の値が割当元ティアの「ティア閾値」の値を超えているか否かの判断(以下、「判断Z」と言う)を行う。割当元ティアの「ティア閾値」の値は、テーブル402(図6)に登録されている値、又は、テーブル412(図15)に登録されている値であるが、テーブル412に登録されている値が優先的に採用されて良い。
*プログラム414は、判断Zの結果が肯定的であれば、下記(a)及び(b)のうちの少なくとも一つの処理を行って良い。
(a)プログラム414は、エラーを、管理装置107(及び/又は、ライトコマンドの送信元のホスト101)に通知して良い。管理者は、割当元ティアについてエラーを知った場合、割当元ティアにRVOLを追加することができる。
(b)プログラム414は、再配置プログラム415を呼び出す。再配置プログラム415が、図38に示す処理を行う。図38に示す処理は、後に説明する。
プログラム414が、以下の処理を行う。
*プログラム414は、ライト先のVVOLに対応したプール及びそのプール内のデフォルトティアを、VVOL管理テーブル404(図8)を基に特定する。
*プログラム414は、ティア管理テーブル402(図6)及び実ページ管理テーブル408(図11)を基に、特定されたデフォルトティア内のフリーの実ページを特定する。
*プログラム414は、対象仮想ページに、特定した実ページを割り当てる。すなわち、プログラム414は、アロケーションテーブル407(図10)における、対象仮想ページのIDに対応した欄に、割り当てた実ページのIDと、その実ページを有するティアのIDと、そのティアを有するプールのIDとを登録する。
*プログラム414は、デフォルトティアからフリーの実ページを特定できない場合には、ライト先のVVOLに対応した割当ティアからフリーの実ページを特定し、特定した実ページを対象仮想ページに割り当ててよい。
*プログラム414は、テーブル402(図6)における、割り当てた実ページを有するティア(このS2403の説明において「割当元ティア」と言う)の「使用割合」の値を、更新する。
*プログラム414は、割当元ティアの「使用割合」の更新後の値が割当元ティアの「ティア閾値」の値を超えているか否かの判断(以下、「判断Z」と言う)を行う。割当元ティアの「ティア閾値」の値は、テーブル402(図6)に登録されている値、又は、テーブル412(図15)に登録されている値であるが、テーブル412に登録されている値が優先的に採用されて良い。
*プログラム414は、判断Zの結果が肯定的であれば、下記(a)及び(b)のうちの少なくとも一つの処理を行って良い。
(a)プログラム414は、エラーを、管理装置107(及び/又は、ライトコマンドの送信元のホスト101)に通知して良い。管理者は、割当元ティアについてエラーを知った場合、割当元ティアにRVOLを追加することができる。
(b)プログラム414は、再配置プログラム415を呼び出す。再配置プログラム415が、図38に示す処理を行う。図38に示す処理は、後に説明する。
(S2406)
プログラム414は、対象仮想ページに格納されるデータ要素のためのCM領域をキャッシュメモリから確保する。
プログラム414は、対象仮想ページに格納されるデータ要素のためのCM領域をキャッシュメモリから確保する。
(S2407)
プログラム414は、移行ページテーブル411における、対象仮想ページに対応した「移行ステータス」の値に応じて、CM領域を確保する。具体的には、例えば、下記の通りである。
プログラム414は、移行ページテーブル411における、対象仮想ページに対応した「移行ステータス」の値に応じて、CM領域を確保する。具体的には、例えば、下記の通りである。
<<ケースA: 「移行ステータス」が“未移行”>>
例えば、以下の(具体例A1)及び(具体例A2)のうちのいずれかが行われる。
(具体例A1)
*プログラム414は、CM領域を確保し、対象仮想ページに対応した移行先ティアにおけるフリーの実ページを、ライト先として決定する。より具体的には、例えば、プログラム414は、移行先ティアにおけるいずれかのフリーの実ページ内のデータ要素がキャッシュメモリにあれば、そのデータ要素が存在するCM領域を確保し、且つ、そのフリーの実ページを、ライト先として決定する。移行先ティアにおけるフリーの実ページは、前述したように、テーブル402(図6)、及び408(図11)を基に特定することができる。
*プログラム414は、対象仮想ページに対応した「移行ステータス」を“移行済”に更新する。この結果、対象仮想ページについて、データ要素の移行は行われない。すなわち、言いかえれば、対象仮想ページについてデータ要素の移行がキャンセルされたことになる。
*プログラム414は、対象仮想ページに、元の実ページに代えて、決定したライト先の実ページを割り当てる。すなわち、プログラム414は、アロケーションテーブル407における、対象仮想ページのIDに対応した欄に、上記決定したライト先の実ページのID、及び、その実ページを有するティアのID(移行先ティアのID)を上書きする。
*プログラム414は、実ページ管理テーブル408(図11)における、対象仮想ページに割り当てられていた元の実ページの「ステータス」を、“フリー”に更新する。また、プログラム414は、そのテーブル408における、対象仮想ページに新たに割り当てられた実ページ(決定したライト先の実ページ)の「ステータス」を“使用中”に更新する。
(具体例A2)
*プログラム414は、CM領域を確保し、対象仮想ページに割り当てられている実ページ(移行元ティア内の実ページ)を、ライト先として決定する。より具体的には、例えば、プログラム414は、移行先ティアにおけるいずれのフリーの実ページ内のデータ要素もキャッシュメモリになければ、CM領域(例えば、対象仮想ページに割り当てられている実ページ内のデータ要素が存在する領域)を確保し、且つ、対象仮想ページに割り当てられている実ページ(移行元ティア内の実ページ)を、ライト先として決定する。
*プログラム414は、対象仮想ページに対応した「移行ステータス」を“中断”に更新して良い。これにより、例えば、対象仮想ページについては、再配置プログラム415によるデータ移行は行われない。なお、この「移行ステータス」の値は、例えば、プログラム414によって、後述のデステージが済んだ場合に、“中断”から“未移行”に戻されて良い。
例えば、以下の(具体例A1)及び(具体例A2)のうちのいずれかが行われる。
(具体例A1)
*プログラム414は、CM領域を確保し、対象仮想ページに対応した移行先ティアにおけるフリーの実ページを、ライト先として決定する。より具体的には、例えば、プログラム414は、移行先ティアにおけるいずれかのフリーの実ページ内のデータ要素がキャッシュメモリにあれば、そのデータ要素が存在するCM領域を確保し、且つ、そのフリーの実ページを、ライト先として決定する。移行先ティアにおけるフリーの実ページは、前述したように、テーブル402(図6)、及び408(図11)を基に特定することができる。
*プログラム414は、対象仮想ページに対応した「移行ステータス」を“移行済”に更新する。この結果、対象仮想ページについて、データ要素の移行は行われない。すなわち、言いかえれば、対象仮想ページについてデータ要素の移行がキャンセルされたことになる。
*プログラム414は、対象仮想ページに、元の実ページに代えて、決定したライト先の実ページを割り当てる。すなわち、プログラム414は、アロケーションテーブル407における、対象仮想ページのIDに対応した欄に、上記決定したライト先の実ページのID、及び、その実ページを有するティアのID(移行先ティアのID)を上書きする。
*プログラム414は、実ページ管理テーブル408(図11)における、対象仮想ページに割り当てられていた元の実ページの「ステータス」を、“フリー”に更新する。また、プログラム414は、そのテーブル408における、対象仮想ページに新たに割り当てられた実ページ(決定したライト先の実ページ)の「ステータス」を“使用中”に更新する。
(具体例A2)
*プログラム414は、CM領域を確保し、対象仮想ページに割り当てられている実ページ(移行元ティア内の実ページ)を、ライト先として決定する。より具体的には、例えば、プログラム414は、移行先ティアにおけるいずれのフリーの実ページ内のデータ要素もキャッシュメモリになければ、CM領域(例えば、対象仮想ページに割り当てられている実ページ内のデータ要素が存在する領域)を確保し、且つ、対象仮想ページに割り当てられている実ページ(移行元ティア内の実ページ)を、ライト先として決定する。
*プログラム414は、対象仮想ページに対応した「移行ステータス」を“中断”に更新して良い。これにより、例えば、対象仮想ページについては、再配置プログラム415によるデータ移行は行われない。なお、この「移行ステータス」の値は、例えば、プログラム414によって、後述のデステージが済んだ場合に、“中断”から“未移行”に戻されて良い。
<<ケースB: 「移行ステータス」が“移行中”>>
例えば、以下の(具体例B1)〜(具体例B3)のうちのいずれかが行われる。
(具体例B1)
*プログラム414は、対象仮想ページに対応した「移行ステータス」を“中断”に更新する。そして、プログラム414は、前述の(具体例A1)又は(具体例A2)を行う。(具体例A1)が行われた場合、対象仮想ページに対応した「移行ステータス」は、“移行済”に更新されることになる。(具体例A2)が行われた場合、対象仮想ページに対応した「移行ステータス」は、“未移行”に更新されることになる。
(具体例B2)
*プログラム414は、CM領域を確保する。(具体例B2)の場合、デステージは、対象仮想ページに対応した「移行ステータス」が“移行済”に更新された後に行われる。それ故、ライト先(デステージ先)は、移行先ティア内の実ページである。なぜなら、その時点で、対象仮想ページには、移行先ティア内の実ページが割り当てられているからである。
(具体例B3)
*プログラム414は、CM領域を確保する。(具体例B3)の場合、デステージは、対象仮想ページに対応した「移行ステータス」が“移行中”の最中に行われ、データ要素は、対象仮想ページに割り当てられている実ページと、移行先ティア内の実ページとの両方にデステージされる(いわゆる二重ライトが行われる)。
例えば、以下の(具体例B1)〜(具体例B3)のうちのいずれかが行われる。
(具体例B1)
*プログラム414は、対象仮想ページに対応した「移行ステータス」を“中断”に更新する。そして、プログラム414は、前述の(具体例A1)又は(具体例A2)を行う。(具体例A1)が行われた場合、対象仮想ページに対応した「移行ステータス」は、“移行済”に更新されることになる。(具体例A2)が行われた場合、対象仮想ページに対応した「移行ステータス」は、“未移行”に更新されることになる。
(具体例B2)
*プログラム414は、CM領域を確保する。(具体例B2)の場合、デステージは、対象仮想ページに対応した「移行ステータス」が“移行済”に更新された後に行われる。それ故、ライト先(デステージ先)は、移行先ティア内の実ページである。なぜなら、その時点で、対象仮想ページには、移行先ティア内の実ページが割り当てられているからである。
(具体例B3)
*プログラム414は、CM領域を確保する。(具体例B3)の場合、デステージは、対象仮想ページに対応した「移行ステータス」が“移行中”の最中に行われ、データ要素は、対象仮想ページに割り当てられている実ページと、移行先ティア内の実ページとの両方にデステージされる(いわゆる二重ライトが行われる)。
<<ケースC: 「移行ステータス」が“移行済”>>
例えば、以下の処理が行われる。
*プログラム414は、CM領域を確保する。このケースでは、ライト先(デステージ先)は、移行先ティア内の実ページである。なぜなら、対象仮想ページに対応した「移行ステータス」が“移行済”に更新されているので、対象仮想ページに割り当てられている実ページが、後に説明するように、移行先となった実ページに変更されるからである。
例えば、以下の処理が行われる。
*プログラム414は、CM領域を確保する。このケースでは、ライト先(デステージ先)は、移行先ティア内の実ページである。なぜなら、対象仮想ページに対応した「移行ステータス」が“移行済”に更新されているので、対象仮想ページに割り当てられている実ページが、後に説明するように、移行先となった実ページに変更されるからである。
(S2408)
S2402で特定された全ての仮想ページについてCM領域が確保された場合、プログラム414は、確保された一以上のCM領域にライト対象のデータを書き込み、完了をホスト101に応答する。
S2402で特定された全ての仮想ページについてCM領域が確保された場合、プログラム414は、確保された一以上のCM領域にライト対象のデータを書き込み、完了をホスト101に応答する。
<ライト処理(デステージ))>。
図25は、デステージ処理のフローを示す。
I/O制御プログラム414は、ライト対象のデータを構成する各データ要素について、デステージ処理を行う。
(S2501)
プログラム414は、デステージを行う。すなわち、プログラム414は、キャッシュメモリに存在する複数のデータ要素のうち実ページに未だ書き込まれていないデータ要素(ダーティのデータ要素)を実ページに書き込む。デステージ先の実ページは、その実ページのライト先となった仮想ページに割り当てられている実ページ(アロケーションテーブル407から特定される実ページ)である。なお、このとき、その仮想ページに対応した「移行ステータス」が“中断”になっていれば、プログラム414は、その「移行ステータス」を“未移行”に更新して良い。
プログラム414は、デステージを行う。すなわち、プログラム414は、キャッシュメモリに存在する複数のデータ要素のうち実ページに未だ書き込まれていないデータ要素(ダーティのデータ要素)を実ページに書き込む。デステージ先の実ページは、その実ページのライト先となった仮想ページに割り当てられている実ページ(アロケーションテーブル407から特定される実ページ)である。なお、このとき、その仮想ページに対応した「移行ステータス」が“中断”になっていれば、プログラム414は、その「移行ステータス」を“未移行”に更新して良い。
(S2502)
プログラム414は、テーブル403(図7)又は404(図8)を基に、モニタテーブル409A又は409Bを更新する必要があるか否かを判断する。テーブル404(図8)が優先されて良い。具体的には、例えば、プログラム414は、以下の二つの判断P及び判断Qを行う。
(判断P)プログラム414は、S2501でのデステージ先の実ページを有するプール(以下、図25の説明において「対象プール」と言う)に対応した「再配置」が“ON”か否か、又は、そのデステージ先の実ページが割り当てられている仮想ページを有するVVOL(以下、図25の説明において「対象VVOL」と言う)に対応した「再配置」が“ON”か否かを判断する。この判断Pの結果が否定的の場合、S2503は行われない(すなわち、モニタテーブル409A又は409Bを更新する必要が無いということになる)。
(判断Q)判断Pの結果が肯定的の場合、プログラム414は、現在の時刻が、対象プールに対応した「モニタ時間帯」の値が表す時間帯内か否かを判断する。この判断Qの結果が否定的の場合、S2503は行われない。一方、判断Pだけでなくこの判断Qの結果も肯定的の場合、S2503が行われる(すなわち、モニタテーブル409A又は409Bを更新する必要があるということになる)。
プログラム414は、テーブル403(図7)又は404(図8)を基に、モニタテーブル409A又は409Bを更新する必要があるか否かを判断する。テーブル404(図8)が優先されて良い。具体的には、例えば、プログラム414は、以下の二つの判断P及び判断Qを行う。
(判断P)プログラム414は、S2501でのデステージ先の実ページを有するプール(以下、図25の説明において「対象プール」と言う)に対応した「再配置」が“ON”か否か、又は、そのデステージ先の実ページが割り当てられている仮想ページを有するVVOL(以下、図25の説明において「対象VVOL」と言う)に対応した「再配置」が“ON”か否かを判断する。この判断Pの結果が否定的の場合、S2503は行われない(すなわち、モニタテーブル409A又は409Bを更新する必要が無いということになる)。
(判断Q)判断Pの結果が肯定的の場合、プログラム414は、現在の時刻が、対象プールに対応した「モニタ時間帯」の値が表す時間帯内か否かを判断する。この判断Qの結果が否定的の場合、S2503は行われない。一方、判断Pだけでなくこの判断Qの結果も肯定的の場合、S2503が行われる(すなわち、モニタテーブル409A又は409Bを更新する必要があるということになる)。
(S2503)
プログラム414は、モニタテーブル409A又は409Bを更新する。具体的には、例えば、下記の通りである。
*プログラム414は、テーブル412(図15)において、対象VVOLに対応した「VOL単位移行」が“ON”になっていれば、対象VVOLに対応したアクティブの第1種のモニタテーブル409Aを更新する。具体的には、例えば、プログラム414は、アクティブ第1種のモニタテーブル409Aにおける、「合計I/O数」の値を更新し(例えば1インクリメントし)、且つ、「最終I/O時刻」の値を更新する。また、プログラム414は、例えば、対象VVOLについて、デステージ時点の時刻を、図示しないI/O履歴テーブルに追加する。I/O履歴テーブルは、例えば、実ページに対するI/Oが行われる都度に、そのI/Oが行われた時刻が記録される(更に、I/Oの種類(リード又はライト)などの別種の情報が記録されても良い)。例えば、そのI/O履歴テーブルを基に、後に、プログラム414は、アクティブの第1種のモニタテーブル409Aにおける「平均I/O数」及び「最大I/O数」を更新して良い。
*プログラム414は、テーブル412(図15)において、対象VVOLに対応した「ページ単位移行」が“ON”になっていれば、対象VVOLに対応したアクティブの第2種のモニタテーブル409Bを更新する。具体的には、例えば、プログラム414は、アクティブの第2種のモニタテーブル409Bにおける、デステージされたデータ要素のライト先仮想ページに対応する「合計I/O数」の値を更新し(例えば1インクリメントし)、且つ、「最終I/O時刻」の値を更新する。また、プログラム414は、例えば、そのライト先仮想ページについて、デステージ時点の時刻を、前述のI/O履歴テーブルに追加する。この場合、I/O履歴テーブルには、ライト先の仮想ページのIDが記録されて良い。例えば、そのI/O履歴テーブルを基に、後に、プログラム414は、アクティブの第2種のモニタテーブル409Bにおける「平均I/O数」及び「最大I/O数」を更新して良い。
プログラム414は、モニタテーブル409A又は409Bを更新する。具体的には、例えば、下記の通りである。
*プログラム414は、テーブル412(図15)において、対象VVOLに対応した「VOL単位移行」が“ON”になっていれば、対象VVOLに対応したアクティブの第1種のモニタテーブル409Aを更新する。具体的には、例えば、プログラム414は、アクティブ第1種のモニタテーブル409Aにおける、「合計I/O数」の値を更新し(例えば1インクリメントし)、且つ、「最終I/O時刻」の値を更新する。また、プログラム414は、例えば、対象VVOLについて、デステージ時点の時刻を、図示しないI/O履歴テーブルに追加する。I/O履歴テーブルは、例えば、実ページに対するI/Oが行われる都度に、そのI/Oが行われた時刻が記録される(更に、I/Oの種類(リード又はライト)などの別種の情報が記録されても良い)。例えば、そのI/O履歴テーブルを基に、後に、プログラム414は、アクティブの第1種のモニタテーブル409Aにおける「平均I/O数」及び「最大I/O数」を更新して良い。
*プログラム414は、テーブル412(図15)において、対象VVOLに対応した「ページ単位移行」が“ON”になっていれば、対象VVOLに対応したアクティブの第2種のモニタテーブル409Bを更新する。具体的には、例えば、プログラム414は、アクティブの第2種のモニタテーブル409Bにおける、デステージされたデータ要素のライト先仮想ページに対応する「合計I/O数」の値を更新し(例えば1インクリメントし)、且つ、「最終I/O時刻」の値を更新する。また、プログラム414は、例えば、そのライト先仮想ページについて、デステージ時点の時刻を、前述のI/O履歴テーブルに追加する。この場合、I/O履歴テーブルには、ライト先の仮想ページのIDが記録されて良い。例えば、そのI/O履歴テーブルを基に、後に、プログラム414は、アクティブの第2種のモニタテーブル409Bにおける「平均I/O数」及び「最大I/O数」を更新して良い。
<リード処理>。
図26は、リード処理のフローを示す。
(S2600)
I/O制御プログラム414が、リードコマンドをホスト101から受信する。そして、プログラム414が、受信したリードコマンドが有するI/O先情報から、リード元のVVOL及び仮想ページを特定する。
I/O制御プログラム414が、リードコマンドをホスト101から受信する。そして、プログラム414が、受信したリードコマンドが有するI/O先情報から、リード元のVVOL及び仮想ページを特定する。
(S2601)
プログラム414は、キャッシュメモリ上に、リード対象のデータがあるか否かを判断する。この判断の結果が否定的の場合、S2603が行われ、この判断の結果が肯定的の場合、S2602が行われる。
プログラム414は、キャッシュメモリ上に、リード対象のデータがあるか否かを判断する。この判断の結果が否定的の場合、S2603が行われ、この判断の結果が肯定的の場合、S2602が行われる。
(S2602)
プログラム414は、キャッシュメモリ上のリード対象のデータを、ホスト101に送信する。この場合、リード元のVVOLに対応するモニタテーブル409A及び409Bは更新されない。実ページに対するI/Oが行われていないからである。
プログラム414は、キャッシュメモリ上のリード対象のデータを、ホスト101に送信する。この場合、リード元のVVOLに対応するモニタテーブル409A及び409Bは更新されない。実ページに対するI/Oが行われていないからである。
(S2603)
プログラム414は、アロケーションテーブル407を基に、S2600で特定された仮想ページに実ページが割り当てられているか否かを判断する。この判断の結果が否定的の場合、S2604が行われ、この判断の結果が肯定的の場合、S2605が行われる。
プログラム414は、アロケーションテーブル407を基に、S2600で特定された仮想ページに実ページが割り当てられているか否かを判断する。この判断の結果が否定的の場合、S2604が行われ、この判断の結果が肯定的の場合、S2605が行われる。
(S2604)
プログラム414は、所定の応答(例えば、ゼロを表すデータ)をホスト101に送信する。
プログラム414は、所定の応答(例えば、ゼロを表すデータ)をホスト101に送信する。
(S2605)
プログラム414は、S2600で特定された一以上の仮想ページのIDのうちの少なくとも一つが移行ページテーブル411に登録されており、且つ、その登録されている仮想ページIDに対応する「移行ステータス」が“移行中”か否かを判断する。この判断の結果が否定的の場合、S2607が行われ、この判断の結果が肯定的の場合、S2606が行われる。
プログラム414は、S2600で特定された一以上の仮想ページのIDのうちの少なくとも一つが移行ページテーブル411に登録されており、且つ、その登録されている仮想ページIDに対応する「移行ステータス」が“移行中”か否かを判断する。この判断の結果が否定的の場合、S2607が行われ、この判断の結果が肯定的の場合、S2606が行われる。
(S2606)
プログラム414は、S2600で特定された一以上の仮想ページにそれぞれ割り当てられている一以上の実ページ(アロケーションテーブル407から特定される一以上の実ページ)からデータ要素を読み出す。プログラム414は、それらのデータ要素で構成したリード対象のデータを、ホスト101に送信する。
プログラム414は、S2600で特定された一以上の仮想ページにそれぞれ割り当てられている一以上の実ページ(アロケーションテーブル407から特定される一以上の実ページ)からデータ要素を読み出す。プログラム414は、それらのデータ要素で構成したリード対象のデータを、ホスト101に送信する。
(S2607)
プログラム414は、「移行ステータス」が“移行中”の仮想ページについて、「移行ステータス」が“移行済”に更新されるまで待つ。その後、プログラム414は、S2600で特定された一以上の仮想ページにそれぞれ割り当てられている一以上の実ページ(アロケーションテーブル407から特定される一以上の実ページ)からデータ要素を読み出す。プログラム414は、それらのデータ要素で構成したリード対象のデータを、ホスト101に送信する。
プログラム414は、「移行ステータス」が“移行中”の仮想ページについて、「移行ステータス」が“移行済”に更新されるまで待つ。その後、プログラム414は、S2600で特定された一以上の仮想ページにそれぞれ割り当てられている一以上の実ページ(アロケーションテーブル407から特定される一以上の実ページ)からデータ要素を読み出す。プログラム414は、それらのデータ要素で構成したリード対象のデータを、ホスト101に送信する。
(S2608)
プログラム414は、テーブル403(図7)又は404(図8)を基に、モニタテーブル409A又は409Bを更新する必要があるか否かを判断する。テーブル404(図8)が優先されて良い。具体的には、例えば、プログラム414は、以下の二つの判断V及び判断Wを行う。
(判断V)プログラム414は、リード元のVVOLに割り当てられているプール(以下、図26の説明において「リード元プール」と言う)に対応した「再配置」が“ON”か否か、又は、リード元のVVOLに対応した「再配置」が“ON”か否かを判断する。この判断Vの結果が否定的の場合、S2609は行われない(すなわち、モニタテーブル409A又は409Bを更新する必要が無いということになる)。
(判断W)判断Vの結果が肯定的の場合、プログラム414は、現在の時刻が、対象プールに対応した「モニタ時間帯」の値が表す時間帯内か否かを判断する。この判断Wの結果が否定的の場合、S2609は行われない。一方、判断Vだけでなくこの判断Wの結果も肯定的の場合、S2609が行われる(すなわち、モニタテーブル409A又は409Bを更新する必要があるということになる)。
プログラム414は、テーブル403(図7)又は404(図8)を基に、モニタテーブル409A又は409Bを更新する必要があるか否かを判断する。テーブル404(図8)が優先されて良い。具体的には、例えば、プログラム414は、以下の二つの判断V及び判断Wを行う。
(判断V)プログラム414は、リード元のVVOLに割り当てられているプール(以下、図26の説明において「リード元プール」と言う)に対応した「再配置」が“ON”か否か、又は、リード元のVVOLに対応した「再配置」が“ON”か否かを判断する。この判断Vの結果が否定的の場合、S2609は行われない(すなわち、モニタテーブル409A又は409Bを更新する必要が無いということになる)。
(判断W)判断Vの結果が肯定的の場合、プログラム414は、現在の時刻が、対象プールに対応した「モニタ時間帯」の値が表す時間帯内か否かを判断する。この判断Wの結果が否定的の場合、S2609は行われない。一方、判断Vだけでなくこの判断Wの結果も肯定的の場合、S2609が行われる(すなわち、モニタテーブル409A又は409Bを更新する必要があるということになる)。
(S2609)
プログラム414は、モニタテーブル409A又は409Bを更新する。具体的には、例えば、下記の通りである。
*プログラム414は、テーブル412(図15)において、リード元のVVOLに対応した「VOL単位移行」が“ON”になっていれば、リード元のVVOLに対応したアクティブの第1種のモニタテーブル409Aを更新する。具体的には、例えば、プログラム414は、アクティブ第1種のモニタテーブル409Aにおける、「合計I/O数」の値を更新し(例えば1インクリメントし)、且つ、「最終I/O時刻」の値を更新する。また、プログラム414は、例えば、リード元のVVOLについて、データをリードした時刻を、前述したI/O履歴テーブルに追加する。例えば、そのI/O履歴テーブルを基に、後に、プログラム414は、アクティブの第1種のモニタテーブル409Aにおける「平均I/O数」及び「最大I/O数」を更新して良い。
*プログラム414は、テーブル412(図15)において、リード元のVVOLに対応した「ページ単位移行」が“ON”になっていれば、リード元のVVOLに対応したアクティブの第2種のモニタテーブル409Bを更新する。具体的には、例えば、プログラム414は、アクティブの第2種のモニタテーブル409Bにおける、リード元のライト先仮想ページに対応する「合計I/O数」の値を更新し(例えば1インクリメントし)、且つ、「最終I/O時刻」の値を更新する。また、プログラム414は、例えば、そのリード元の仮想ページについて、リード時点の時刻を、前述のI/O履歴テーブルに追加する。この場合、I/O履歴テーブルには、リード元の仮想ページのIDが記録されて良い。例えば、そのI/O履歴テーブルを基に、後に、プログラム414は、アクティブの第2種のモニタテーブル409Bにおける「平均I/O数」及び「最大I/O数」を更新して良い。
プログラム414は、モニタテーブル409A又は409Bを更新する。具体的には、例えば、下記の通りである。
*プログラム414は、テーブル412(図15)において、リード元のVVOLに対応した「VOL単位移行」が“ON”になっていれば、リード元のVVOLに対応したアクティブの第1種のモニタテーブル409Aを更新する。具体的には、例えば、プログラム414は、アクティブ第1種のモニタテーブル409Aにおける、「合計I/O数」の値を更新し(例えば1インクリメントし)、且つ、「最終I/O時刻」の値を更新する。また、プログラム414は、例えば、リード元のVVOLについて、データをリードした時刻を、前述したI/O履歴テーブルに追加する。例えば、そのI/O履歴テーブルを基に、後に、プログラム414は、アクティブの第1種のモニタテーブル409Aにおける「平均I/O数」及び「最大I/O数」を更新して良い。
*プログラム414は、テーブル412(図15)において、リード元のVVOLに対応した「ページ単位移行」が“ON”になっていれば、リード元のVVOLに対応したアクティブの第2種のモニタテーブル409Bを更新する。具体的には、例えば、プログラム414は、アクティブの第2種のモニタテーブル409Bにおける、リード元のライト先仮想ページに対応する「合計I/O数」の値を更新し(例えば1インクリメントし)、且つ、「最終I/O時刻」の値を更新する。また、プログラム414は、例えば、そのリード元の仮想ページについて、リード時点の時刻を、前述のI/O履歴テーブルに追加する。この場合、I/O履歴テーブルには、リード元の仮想ページのIDが記録されて良い。例えば、そのI/O履歴テーブルを基に、後に、プログラム414は、アクティブの第2種のモニタテーブル409Bにおける「平均I/O数」及び「最大I/O数」を更新して良い。
<I/O頻度のモニタと再配置処理との関係>。
図27は、I/O頻度のモニタと再配置との関係の概要を示す。
実ページに対するI/Oがモニタされ、実ページに対するI/Oが行われた場合に、その実ページが割り当てられている仮想ページ又はその仮想ページを有するVVOLのI/O頻度が更新される。つまり、モニタテーブル409A又は409Bが更新される。別の言い方をすれば、前述したように、I/O制御プログラム414がリードコマンドをホスト101から受けたものの、実ページからデータ要素をリードしなかった場合には、モニタテーブル409は更新されない。
モニタテーブル409A又は409Bの更新に応じて、度数分布テーブル410が更新される。なお、度数分布テーブル410は、予め用意されていなくて良く、例えば、管理者から度数分布の表示が命じられた場合に、モニタテーブル409Bを基に度数分布テーブル410が作成され、そのテーブル410を基に度数分布が表示されてよい。なお、度数分布に代えて、モニタテーブル409A又は409Bが表示されてよい。
再配置処理は、ティア判定処理と移行処理とを有する。ティア判定処理では、移行ページテーブル411が作成される。そのテーブル411は、モニタテーブル409A又は409Bが表すI/O頻度と、ティア管理テーブル402(図6)内のティアレンジとを基に作成されてよい。移行処理では、作成された移行ページテーブル411を基に、ページ単位のデータ移行、或いは、VOL単位のデータ移行が行われる。
<再配置処理>。
再配置処理は、或るティアの使用割合がそのティアのティア閾値を超えた場合に行われても良いし、定期的に(例えば「再配置実行時刻」の値が表す時刻の都度に)行われても良い。
図28は、再配置処理のフローを示す。なお、図28は、一つのVVOL(図28の説明において「対象VVOL」と言う)についてのフローである。
(S2801)
再配置プログラム415は、対象VVOLについてデータ移行を実行するか否かを判断する。具体的には、例えば、以下の処理が行われる。
*プログラム415は、VVOL管理テーブル404(図8)において、対象VVOLに対応した「自動実行」が“ON”になっているか否かを判断する。対象VVOLに対応した「自動実行」の値の設定が無い場合、プログラム415は、プール管理テーブル403(図7)において、対象VVOLに割り当てられているプール(以下、図28の説明において「対象プール」)に対応した「自動実行」が“ON”になっているか否かを判断する。
*対象VVOL又は対象プールに対応した「自動実行」が“ON”の場合、プログラム415は、移行定義テーブル412(図15)において、対象VVOLに対応した「ページ単位移行」及び「VOL単位移行」のいずれかが“ON”か否かを判断する。この判断の結果が否定的の場合、S2801の判断の結果が否定的である。この判断の結果が肯定的の場合、プログラム415は、対象VVOL又は対象プールに対応した「再配置実行時刻」の値が表す時刻に現在の時刻が達しているか否かを判断する。この判断の結果が肯定的の場合、S2801の判断の結果が肯定的であり、この判断の結果が否定的の場合、S2801の判断の結果が否定的である。
*対象VVOL又は対象プールに対応した「自動実行」が“OFF”の場合、プログラム415は、管理者から管理装置105を通じて、対象VVOLについてデータ移行の指示を受け付けたならば、S2801の判断の結果は肯定的となる。
再配置プログラム415は、対象VVOLについてデータ移行を実行するか否かを判断する。具体的には、例えば、以下の処理が行われる。
*プログラム415は、VVOL管理テーブル404(図8)において、対象VVOLに対応した「自動実行」が“ON”になっているか否かを判断する。対象VVOLに対応した「自動実行」の値の設定が無い場合、プログラム415は、プール管理テーブル403(図7)において、対象VVOLに割り当てられているプール(以下、図28の説明において「対象プール」)に対応した「自動実行」が“ON”になっているか否かを判断する。
*対象VVOL又は対象プールに対応した「自動実行」が“ON”の場合、プログラム415は、移行定義テーブル412(図15)において、対象VVOLに対応した「ページ単位移行」及び「VOL単位移行」のいずれかが“ON”か否かを判断する。この判断の結果が否定的の場合、S2801の判断の結果が否定的である。この判断の結果が肯定的の場合、プログラム415は、対象VVOL又は対象プールに対応した「再配置実行時刻」の値が表す時刻に現在の時刻が達しているか否かを判断する。この判断の結果が肯定的の場合、S2801の判断の結果が肯定的であり、この判断の結果が否定的の場合、S2801の判断の結果が否定的である。
*対象VVOL又は対象プールに対応した「自動実行」が“OFF”の場合、プログラム415は、管理者から管理装置105を通じて、対象VVOLについてデータ移行の指示を受け付けたならば、S2801の判断の結果は肯定的となる。
プログラム415は、対象VVOL又は対象プールに対応した「自動実行」が“OFF”であり(S2802:NO)、且つ、対象VVOLについてVOL単位でのデータ移行の指示を受けていれば(S2803:NO)、S2804を行う。
プログラム415は、対象VVOL又は対象プールに対応した「自動実行」が“OFF”であり(S2802:NO)、且つ、対象VVOLについてページ単位でのデータ移行の指示を受けていれば(S2803:YES)、S2806を行う。
プログラム415は、対象VVOL又は対象プールに対応した「自動実行」が“ON”であり(S2802:YES)、対象VVOLに対応した「VOL単位移行」が“ON”であり(S2805:NO)、且つ、対象VVOLに対応したI/O頻度(例えば、対象VVOLに対応したモニタテーブル409Aが表す合計I/O数、平均I/O数、及び、最大I/O数)が所定の条件を満たしていれば、S2804を行う。なお、この時点で、これまでアクティブであったモニタテーブル409Aが参照されるので、別のモニタテーブル409A(スタンバイのテーブル409A)がアクティブとされ、そのアクティブとなったモニタテーブル409Aが、対象VVOLについてのI/O頻度のモニタで使用される。
プログラム415は、対象VVOL又は対象プールに対応した「自動実行」が“ON”であり(S2802:YES)、且つ、対象VVOLに対応した「ページ単位移行」が“ON”であれば(S2805:YES)、S2807を行う。
(S2804)
プログラム415は、対象VVOLについてVOL単位の移行処理を行う。VOL単位のデータ移行では、対象プールが有する複数のデータ要素のうち対象VVOLに割り当てられている実ページ内のデータ要素が別のプールに移行される。VOL単位の移行処理については、後に詳細に説明する。
プログラム415は、対象VVOLについてVOL単位の移行処理を行う。VOL単位のデータ移行では、対象プールが有する複数のデータ要素のうち対象VVOLに割り当てられている実ページ内のデータ要素が別のプールに移行される。VOL単位の移行処理については、後に詳細に説明する。
(S2806)
プログラム415は、管理者からティアレンジが設定されているか否かを判断する。この判断の結果が否定的の場合、S2807が行われた後にS2808が行われ、この判断の結果が否定的の場合、S2807が行われることなくS2808が行われる。
プログラム415は、管理者からティアレンジが設定されているか否かを判断する。この判断の結果が否定的の場合、S2807が行われた後にS2808が行われ、この判断の結果が否定的の場合、S2807が行われることなくS2808が行われる。
(S2807)
プログラム415は、ティアレンジ決定処理を行う。この処理によって、ティアレンジが決定される。ティアレンジ決定の方法としては、幾つか考えられる。例えば、予め、複数種類のティアレンジが用意されていて良く、プログラム415が、ティア毎に、それら複数種類のティアレンジから任意のティアレンジを選択して良い。
プログラム415は、ティアレンジ決定処理を行う。この処理によって、ティアレンジが決定される。ティアレンジ決定の方法としては、幾つか考えられる。例えば、予め、複数種類のティアレンジが用意されていて良く、プログラム415が、ティア毎に、それら複数種類のティアレンジから任意のティアレンジを選択して良い。
(S2808)
プログラム415は、ティア判定処理を行う。ティア判定処理では、前述したように、移行ページテーブル411が作成される。
プログラム415は、ティア判定処理を行う。ティア判定処理では、前述したように、移行ページテーブル411が作成される。
(S2809)
プログラム415は、作成した移行ページテーブル411に従って、ページ単位の移行処理を行う。ページ単位のデータ移行では、対象プール内において、或るティア内の実ページから別のティア内の実ページにデータ要素が移行される。ページ単位の移行処理については、後に詳細に説明する。
プログラム415は、作成した移行ページテーブル411に従って、ページ単位の移行処理を行う。ページ単位のデータ移行では、対象プール内において、或るティア内の実ページから別のティア内の実ページにデータ要素が移行される。ページ単位の移行処理については、後に詳細に説明する。
VOL単位のデータ移行が手動での指示に応答して開始されるケースでは、例えば、UI制御プログラム413が、S2801よりも前の時点で、VOL単位のデータ移行の指示を管理から受け付ける。
<<VOL単位の移行処理>>。
図29は、VOL単位移行指示GUI2900を示す。以下の説明では、移行処理の対象とされるVVOLを「対象VVOL」と言い、対象VVOLに割り当てられているプールを「移行元プール」と言い、移行対象のデータ要素を記憶している実ページを「移行元実ページ」と言い、移行元実ページを有するティアを「移行元ティア」と言い、移行対象のデータ要素の移行先となるプールを「移行先プール」と言い、移行対象のデータ要素の移行先となるティアを「移行先ティア」と言い、移行対象のデータ要素の移行先となる実ページを「移行先実ページ」と言う。
このGUI2900が、プログラム413によって管理装置107に表示される。GUI2900は、例えば、VVOLのIDと、移行先プールのIDと、ティア維持をONにするか否かとを管理者が入力するための入力ツールを有する。GUI2900には、管理者によって選択されたVVOL ID及び移行先プールIDが表示される。
プログラム413は、例えば、ティア維持“OFF”が選択されている間は、移行先プールIDとして、移行元プール以外のプールのIDを選択可能に表示してよい。しかし、例えば、ティア維持“ON”が選択されている間、プログラム413は、移行先プールIDとして、移行元プールが有する複数のティアと同じ複数のティアを有するプール(つまり対象プールの階層構成と同じ階層構成を有するプール)のIDのみを選択可能に表示する。なぜなら、そのようなプールでなければ、図30及び図31を参照して説明するティア維持移行処理ができないからである。
また、プログラム413は、表示されている移行先プールIDに対応したデフォルトティアIDを表示する。プログラム413は、例えば、表示されているプールIDに対応した割当ティアのIDの一覧を表示し、その一覧における管理者所望のIDを新たなデフォルトティアIDとして設定しても良い。
GUI2900にあるボタン「移行」が押された場合に、GUI2900を介して入力された設定に従って、VOL単位の移行処理が行われる。
VOL単位の移行処理としては、ティア維持移行処理と、ティア非維持移行処理とがある。ティア維持移行処理とティア非維持移行処理のどちらを行うかは、手動実行の場合は、例えばGUI2900で指定する事ができ、自動実行の場合は、テーブル412(図15)の設定(「ティア維持」が“ON”か“OFF”か)に従って決定される。
図30は、ティア維持移行処理の概要を示す。
ティア維持移行処理では、移行元実ページ内のデータ要素は、その移行元ティアのID(ティアの種類)と同じIDのティア内の実ページに移行される。具体的には、例えば、プール#00が有するティア#00内の実ページ#Xに記憶されているデータ要素は、プール#11が有するティア#00内の実ページ#Yに移行される。移行後、実ページ#Xの割当先の仮想ページ#Zには、実ページ#Xに代えて実ページ#Yが割り当てられる。
図31は、ティア維持移行処理のフローを示す。
(S3101)
再配置プログラム415は、ティア管理テーブル402(図6参照)を基に、複数のプールから移行先プールを選択する。移行先プールは、対象プールが有する複数のティアと同じ複数のティアを有するプール(つまり対象プールの階層構成と同じ階層構成を有するプール)である。
再配置プログラム415は、ティア管理テーブル402(図6参照)を基に、複数のプールから移行先プールを選択する。移行先プールは、対象プールが有する複数のティアと同じ複数のティアを有するプール(つまり対象プールの階層構成と同じ階層構成を有するプール)である。
なお、このS3101は、例えば手動で既に移行先プールが選択されている場合には、行われなく良い。
(S3102)
プログラム415は、移行不可能か否かを判断する。具体的には、プログラム415は、プール管理テーブル403(図7)における、移行先プールに対応した「プールステータス」が“再配置中”か否かを判断する。この判断の結果が肯定的の場合、S3103が行われ、この判断の結果が否定的の場合、S3104が行われる。
プログラム415は、移行不可能か否かを判断する。具体的には、プログラム415は、プール管理テーブル403(図7)における、移行先プールに対応した「プールステータス」が“再配置中”か否かを判断する。この判断の結果が肯定的の場合、S3103が行われ、この判断の結果が否定的の場合、S3104が行われる。
(S3103)
別のプールが移行先プールとして選択される。例えば、自動実行の場合、プログラム415が、移行元プールが有する複数のティアと同じ複数のティアを有する別のプールを選択してよい。また、例えば、手動の場合、UI制御プログラム413が、図29のGUI2900にエラーを表すメッセージを表示し、管理者から、移行先プールIDの指定を受け付けてよい。この後、選択された移行先プールについてS3102が行われる。
別のプールが移行先プールとして選択される。例えば、自動実行の場合、プログラム415が、移行元プールが有する複数のティアと同じ複数のティアを有する別のプールを選択してよい。また、例えば、手動の場合、UI制御プログラム413が、図29のGUI2900にエラーを表すメッセージを表示し、管理者から、移行先プールIDの指定を受け付けてよい。この後、選択された移行先プールについてS3102が行われる。
(S3104)
プログラム415は、移行元プール及び移行先プールの両方の「プールステータス」の値を“再配置中”に更新する。また、この時点で、プログラム415は、移行元プールに代えて移行先プールが対象プールに割り当てられるようテーブル404(図8)を更新して良い。これにより、以後、対象VVOLを指定したライトコマンドをI/O制御プログラム414が受け、そのライトコマンドに従うライト対象のデータ要素がデステージされる場合には、そのデータ要素は、移行先プール内の実データに書き込まれてよい。
プログラム415は、移行元プール及び移行先プールの両方の「プールステータス」の値を“再配置中”に更新する。また、この時点で、プログラム415は、移行元プールに代えて移行先プールが対象プールに割り当てられるようテーブル404(図8)を更新して良い。これにより、以後、対象VVOLを指定したライトコマンドをI/O制御プログラム414が受け、そのライトコマンドに従うライト対象のデータ要素がデステージされる場合には、そのデータ要素は、移行先プール内の実データに書き込まれてよい。
(S3105)
プログラム415は、対象VVOLの一以上の割当ティアから一つのティアを選択する。ここで選択されたティアは、一つの移行元ティアである。プログラム415は、その移行元ティア内の全ての移行対象のデータ要素を移行先ティア(選択された移行元ティアと同じIDのティアであって移行先プール内のティア)に移行したと仮定して、移行先ティアの使用割合が移行先ティアのティア閾値を越えるか否かを判断する。プログラム415は、この判断を、テーブル402(図6)、及び、408(図8)を基に行う。この判断の結果が肯定的の場合、S3106が行われ、この判断の結果が否定的の場合、S3107が行われる。
プログラム415は、対象VVOLの一以上の割当ティアから一つのティアを選択する。ここで選択されたティアは、一つの移行元ティアである。プログラム415は、その移行元ティア内の全ての移行対象のデータ要素を移行先ティア(選択された移行元ティアと同じIDのティアであって移行先プール内のティア)に移行したと仮定して、移行先ティアの使用割合が移行先ティアのティア閾値を越えるか否かを判断する。プログラム415は、この判断を、テーブル402(図6)、及び、408(図8)を基に行う。この判断の結果が肯定的の場合、S3106が行われ、この判断の結果が否定的の場合、S3107が行われる。
(S3106)
エラー処理が行われる。例えば、プログラム415は、エラーを管理装置107に表示して終了しても良い。或いは、例えば、プログラム415は、図38に示す処理を行うことで、移行先ティアにフリーの実ページを増やしても良い。
エラー処理が行われる。例えば、プログラム415は、エラーを管理装置107に表示して終了しても良い。或いは、例えば、プログラム415は、図38に示す処理を行うことで、移行先ティアにフリーの実ページを増やしても良い。
(S3107)
プログラム415は、移行処理を行う。具体的には、例えば、下記の通りである。
*プログラム415は、この移行処理用に移行ページテーブル411を作成する。具体的には、例えば、プログラム415は、テーブル402(図6)及び407(図10)を基に、対象VVOLを構成する複数の仮想ページのうちの、移行元ティア内の実ページが割り当てられている仮想ページのIDをテーブル411に登録する。また、プログラム415は、登録した仮想ページID毎に、移行元ティアのIDと、移行先ティアのIDとを登録し、且つ、「移行ステータス」として“未移行”を設定する。
*プログラム415は、移行ページテーブル411に登録されている各仮想ページIDについて、以下の処理を行う。移行ページテーブル411に登録されている全ての仮想ページIDについて以下の処理が終了すると、S3107の終了となる。以下、一つの仮想ページ(S3107の説明で「対象仮想ページ」と言う)を例に採り説明する。
**プログラム415は、対象仮想ページに対応した「移行ステータス」の値を“移行中”に更新する。
**プログラム415は、移行先ティアからフリーの実ページを選択する。
**プログラム415は、選択した実ページ(移行先実ページ)に、移行元ティア内の移行元実ページに記憶されているデータ要素を移行する。移行元実ページは、対象仮想ページに割り当てられている実ページである。
**プログラム415は、移行元実ページの代わりに移行先実ページが対象仮想ページに割り当るようアロケーションテーブル407を更新する。つまり、プログラム415は、対象仮想ページに、移行先実ページのIDと、移行先ティアのIDと、移行先プールのIDとを対応付ける。
**プログラム415は、対象仮想ページのI/O頻度(例えば、アクティブのテーブル409A又は409B)を更新する。具体的には、例えば、対象仮想ページ又は対象VVOLの合計I/O数が1インクリメントされる。
**プログラム415は、テーブル402(図6)における、移行先ティアの「使用割合」の値を、更新する。
**プログラム415は、対象仮想ページに対応する「移行ステータス」の値を“移行済”に更新する。
プログラム415は、移行処理を行う。具体的には、例えば、下記の通りである。
*プログラム415は、この移行処理用に移行ページテーブル411を作成する。具体的には、例えば、プログラム415は、テーブル402(図6)及び407(図10)を基に、対象VVOLを構成する複数の仮想ページのうちの、移行元ティア内の実ページが割り当てられている仮想ページのIDをテーブル411に登録する。また、プログラム415は、登録した仮想ページID毎に、移行元ティアのIDと、移行先ティアのIDとを登録し、且つ、「移行ステータス」として“未移行”を設定する。
*プログラム415は、移行ページテーブル411に登録されている各仮想ページIDについて、以下の処理を行う。移行ページテーブル411に登録されている全ての仮想ページIDについて以下の処理が終了すると、S3107の終了となる。以下、一つの仮想ページ(S3107の説明で「対象仮想ページ」と言う)を例に採り説明する。
**プログラム415は、対象仮想ページに対応した「移行ステータス」の値を“移行中”に更新する。
**プログラム415は、移行先ティアからフリーの実ページを選択する。
**プログラム415は、選択した実ページ(移行先実ページ)に、移行元ティア内の移行元実ページに記憶されているデータ要素を移行する。移行元実ページは、対象仮想ページに割り当てられている実ページである。
**プログラム415は、移行元実ページの代わりに移行先実ページが対象仮想ページに割り当るようアロケーションテーブル407を更新する。つまり、プログラム415は、対象仮想ページに、移行先実ページのIDと、移行先ティアのIDと、移行先プールのIDとを対応付ける。
**プログラム415は、対象仮想ページのI/O頻度(例えば、アクティブのテーブル409A又は409B)を更新する。具体的には、例えば、対象仮想ページ又は対象VVOLの合計I/O数が1インクリメントされる。
**プログラム415は、テーブル402(図6)における、移行先ティアの「使用割合」の値を、更新する。
**プログラム415は、対象仮想ページに対応する「移行ステータス」の値を“移行済”に更新する。
(S3108)
プログラム415は、移行元プールにおける全ての移行元ティア(対象VVOLの全ての割当ティア)について、S3105以降が行われたか否かを判断する。この判断の結果が否定的であれば、S3105が行われていない移行元ティアについて、S3105が行われる。この判断の結果が肯定的であれば、S3109が行われる。
プログラム415は、移行元プールにおける全ての移行元ティア(対象VVOLの全ての割当ティア)について、S3105以降が行われたか否かを判断する。この判断の結果が否定的であれば、S3105が行われていない移行元ティアについて、S3105が行われる。この判断の結果が肯定的であれば、S3109が行われる。
(S3109)
プログラム415は、移行元プール及び移行先プールの両方の「プールステータス」の値を、“再配置中”とは別の値、例えば、“モニタリング中”又は“非モニタリング中”に更新する。
プログラム415は、移行元プール及び移行先プールの両方の「プールステータス」の値を、“再配置中”とは別の値、例えば、“モニタリング中”又は“非モニタリング中”に更新する。
図32は、ティア非維持移行処理の概要を示す。
ティア非維持移行処理では、移行元プール内の全ての移行対象のデータ要素が、移行先プール内のデフォルトティアに移行される。具体的には、例えば、プール#00内の全ての移行対象のデータ要素が、プール#11内のデフォルトティア#01に移行される。
図33は、ティア非維持移行処理のフローを示す。
図31のS3101〜S3109と同様の処理が行われる(S3301〜S3309)。S3305の処理は、S3105の処理と若干異なる。具体的には、S3105では、移行先ティアは、移行元ティアが異なれば異なっていたが、S3305では、移行元ティアが異なっていても、移行先ティアは、常に、移行先プール内のデフォルトティアである。
なお、ティア非維持移行処理では、例えば、次のような処理が行われてもよい。この場合、当該移行処理が行われることにより、VVOL内のデータ要素が、VVOLのI/O頻度に適した配置とされることが期待できる。
*プログラム415が、VVOLに割り当てられている全ての実ページがどの程度の割合でどのティアに存在するかを基に、I/O頻度の閾値レンジを算出する。例えば、プログラム415が、VVOLの全ての割当ティアのティアレンジと、各割当ティアが有する、VVOLに割り当てられている実ページの数とを基に、I/O頻度の閾値レンジを算出する。
*プログラム415が、算出された閾値レンジと、VVOLのI/O頻度とを比較する。
*プログラム415が、VVOLのI/O頻度が算出された閾値レンジに収まっていなければ、VVOLのI/O頻度が収まるような閾値レンジが得られるように、VVOL内の全てのデータ要素を、VVOLに割り当てられているプール(移行元プール)から移行先プールに移行する。すなわち、プログラム415は、VVOLに割り当てられている実ページ毎に、移行先プールにおける移行先ティアを決定し、決定した移行先ティア内の実ページにデータ要素を移行する。その結果、移行後の閾値レンジ(VVOLに割り当てられた全ての移行先実ページを有する一以上のティアのティアレンジと、それら一以上のティアの各々における、VVOLに割り当てられている移行先実ページの数とに基づいて得られる閾値レンジ)が、VVOLのI/O頻度が収まる閾値レンジである。
*プログラム415が、VVOLに割り当てられている全ての実ページがどの程度の割合でどのティアに存在するかを基に、I/O頻度の閾値レンジを算出する。例えば、プログラム415が、VVOLの全ての割当ティアのティアレンジと、各割当ティアが有する、VVOLに割り当てられている実ページの数とを基に、I/O頻度の閾値レンジを算出する。
*プログラム415が、算出された閾値レンジと、VVOLのI/O頻度とを比較する。
*プログラム415が、VVOLのI/O頻度が算出された閾値レンジに収まっていなければ、VVOLのI/O頻度が収まるような閾値レンジが得られるように、VVOL内の全てのデータ要素を、VVOLに割り当てられているプール(移行元プール)から移行先プールに移行する。すなわち、プログラム415は、VVOLに割り当てられている実ページ毎に、移行先プールにおける移行先ティアを決定し、決定した移行先ティア内の実ページにデータ要素を移行する。その結果、移行後の閾値レンジ(VVOLに割り当てられた全ての移行先実ページを有する一以上のティアのティアレンジと、それら一以上のティアの各々における、VVOLに割り当てられている移行先実ページの数とに基づいて得られる閾値レンジ)が、VVOLのI/O頻度が収まる閾値レンジである。
<<ページ単位の移行処理>>。
図34は、図28のS2808での移行ページテーブル作成処理のフローを示す。
(S3401)
プログラム415は、対象VVOLの先頭の仮想ページを選択する。
プログラム415は、対象VVOLの先頭の仮想ページを選択する。
(S3402)
プログラム415は、アロケーションテーブル407を基に、選択された仮想ページに実ページが割り当てられているか否かを判断する。この判断の結果が否定的であれば、S3405が行われ、この判断の結果が肯定的であれば、S3403が行われる。
プログラム415は、アロケーションテーブル407を基に、選択された仮想ページに実ページが割り当てられているか否かを判断する。この判断の結果が否定的であれば、S3405が行われ、この判断の結果が肯定的であれば、S3403が行われる。
(S3403)
プログラム415は、第2種のモニタテーブル409Bを基に、選択された仮想ページに割り当てられている実ページ内のデータ要素が存在すべきティアを変更すべきか否かを判断する。具体的には、例えば、下記の通りである。
*プログラム415は、選択された仮想ページに割り当てられている実ページを有するティア(S3403の説明において「対象ティア」)を、テーブル402(図6)から特定する。
*プログラム415は、選択された仮想ページのI/O頻度(例えば、対象VVOLに対応したアクティブのモニタテーブル409Bが表す合計I/O数、平均I/O数、及び最大I/O数のうちの少なくとも一つ)と、対象ティアに対応した「ティアレンジ」の値とを基に、選択された仮想ページに割り当てられている実ページ内のデータ要素を、対象ティアから別のティアに移行すべきかどうかを判断する。例えば、選択された仮想ページの対象ティアに対応したティアレンジに、選択された仮想ページのI/O頻度が収まっていなければ、データ要素が移行されるべきと判断される。
プログラム415は、第2種のモニタテーブル409Bを基に、選択された仮想ページに割り当てられている実ページ内のデータ要素が存在すべきティアを変更すべきか否かを判断する。具体的には、例えば、下記の通りである。
*プログラム415は、選択された仮想ページに割り当てられている実ページを有するティア(S3403の説明において「対象ティア」)を、テーブル402(図6)から特定する。
*プログラム415は、選択された仮想ページのI/O頻度(例えば、対象VVOLに対応したアクティブのモニタテーブル409Bが表す合計I/O数、平均I/O数、及び最大I/O数のうちの少なくとも一つ)と、対象ティアに対応した「ティアレンジ」の値とを基に、選択された仮想ページに割り当てられている実ページ内のデータ要素を、対象ティアから別のティアに移行すべきかどうかを判断する。例えば、選択された仮想ページの対象ティアに対応したティアレンジに、選択された仮想ページのI/O頻度が収まっていなければ、データ要素が移行されるべきと判断される。
このS3403の判断の結果が否定的であれば、S3405が行われ、この判断の結果が肯定的であれば、S3404が行われる。
(S3404)
プログラム415は、選択された仮想ページのI/O頻度(例えば、対象VVOLに対応したアクティブのモニタテーブル409Bが表す合計I/O数、平均I/O数、及び最大I/O数のうちの少なくとも一つ)と、対象ティアを有するプール内の他の割当ティアに対応した「ティアレンジ」の値とを基に、移行先ティアを決定する。ここでは、例えば、選択された仮想ページのI/O頻度が収まっているティアレンジに対応する割当ティア(対象VVOLの割当ティア)が、移行先ティアとして決定される。そして、プログラム415は、移行先ページテーブル411に、選択された仮想ページのIDと、対象ティアのIDと、決定された移行先ティアのIDと、移行ステータス“未移行”とを登録する。
プログラム415は、選択された仮想ページのI/O頻度(例えば、対象VVOLに対応したアクティブのモニタテーブル409Bが表す合計I/O数、平均I/O数、及び最大I/O数のうちの少なくとも一つ)と、対象ティアを有するプール内の他の割当ティアに対応した「ティアレンジ」の値とを基に、移行先ティアを決定する。ここでは、例えば、選択された仮想ページのI/O頻度が収まっているティアレンジに対応する割当ティア(対象VVOLの割当ティア)が、移行先ティアとして決定される。そして、プログラム415は、移行先ページテーブル411に、選択された仮想ページのIDと、対象ティアのIDと、決定された移行先ティアのIDと、移行ステータス“未移行”とを登録する。
(S3405)
プログラム415は、選択された仮想ページが、対象VVOLの末端の仮想ページであるか否かを判断する。この判断の結果が否定的であれば、S3406が行われ、この判断の結果が肯定的であれば、この移行ページテーブル作成処理が終了となる。
プログラム415は、選択された仮想ページが、対象VVOLの末端の仮想ページであるか否かを判断する。この判断の結果が否定的であれば、S3406が行われ、この判断の結果が肯定的であれば、この移行ページテーブル作成処理が終了となる。
(S3406)
プログラム415は、対象VVOLから、直前回に選択された仮想ページの次の仮想ページを選択する。その後、その選択された仮想ページについて、S3402以降が行われる。
プログラム415は、対象VVOLから、直前回に選択された仮想ページの次の仮想ページを選択する。その後、その選択された仮想ページについて、S3402以降が行われる。
この移行ページテーブル作成処理により、ページ単位の移行処理のための移動ページテーブル411が作成される。
図35は、ページ単位の移行処理の概要を示す。
ページ単位の移行処理によれば、テーブル411に登録されている仮想ページ毎に、その仮想ページに割り当てられている実ページ内のデータ要素が、その仮想ページに対応した移行先ティア内のフリーの実ページに移行される。その仮想ページに、移行元実ページに代えて移行先実ページが割り当てられる。図35に示すように、この移行処理によって、より上位のティアに移行されるデータ要素もあれば、より下位のティアに移行されるデータ要素ある。
どのティアについてどのようなティアレンジを設定するかによって、仮想ページのI/O頻度に適したティアにその仮想ページ内のデータ要素を配置することができる。
例えば、上位のティアほど、高いティアレンジが設定され、下位のティアほど、低いティアレンジが設定されるとする。具体的には、例えば、ティア#11が、高速且つ高信頼のティア(例えば、RVOL種類が“SSD”のティア)であって、高いティアレンジが設定されるとする。また、例えば、ティア#13が、低速又は低信頼のティア(例えば、RVOL種類が“HDD−SATA”のティア)であって、低いティアレンジが設定されるとする。また、例えば、ティア#12が、VVOL#50のデフォルトティアであって、中程度のティアレンジが設定されるとする。この場合、VVOL#50を構成する仮想ページに対するライト対象のデータ要素は、一旦は、デフォルトティア#12内の実ページに書き込まれる。その後、例えば、VVOL#50内の或る仮想ページ#AのI/O頻度が、高いティアレンジに収まるぐらいに高いI/O頻度になった場合には、その仮想ページ#Aに割り当てられている実ページ#X内のデータ要素が、ティア#12からティア#11に移行される。一方、例えば、VVOL#50内の或る仮想ページ#BのI/O頻度が、低いティアレンジに収まるぐらいに低いI/O頻度になった場合には、その仮想ページ#Bに割り当てられている実ページ#Y内のデータ要素が、ティア#12からティア#13に移行される。
このように、どのティアにどのようなティアレンジを設定するかと、仮想ページ毎のI/O頻度のモニタ結果と、ページ単位のデータ移行とにより、VVOL内のデータ要素を適切なティア(物理記憶資源)に配置することができる。
図36は、ページ単位の移行処理のフローを示す。
(S3601)
再配置プログラム415が、対象VVOLに割り当てられているプールの「プールステータス」を“再配置中”に更新する。
再配置プログラム415が、対象VVOLに割り当てられているプールの「プールステータス」を“再配置中”に更新する。
(S3602)
プログラム415が、作成された移行ページテーブル411の先頭のレコードを選択する。
プログラム415が、作成された移行ページテーブル411の先頭のレコードを選択する。
(S3603)
プログラム415は、選択されたレコードにおける「移行ステータス」の値を“移行中”に更新する。
プログラム415は、選択されたレコードにおける「移行ステータス」の値を“移行中”に更新する。
(S3604)
プログラム415は、選択されたレコードが表す移行先ティアからフリーの実ページを選択し、選択した実ページ(移行先実ページ)に、移行元ティア内の移行元実ページに記憶されているデータ要素を移行する。移行元実ページは、対象仮想ページに割り当てられている実ページである。
プログラム415は、選択されたレコードが表す移行先ティアからフリーの実ページを選択し、選択した実ページ(移行先実ページ)に、移行元ティア内の移行元実ページに記憶されているデータ要素を移行する。移行元実ページは、対象仮想ページに割り当てられている実ページである。
(S3605)
プログラム415は、テーブルを更新する。具体的には、例えば、下記の通りである。
*プログラム415は、移行元実ページの代わりに移行先実ページが、選択されたレコードが表す仮想ページ(以下、S3605の説明において「選択仮想ページ」)に割り当るよう、アロケーションテーブル407を更新する。つまり、プログラム415は、選択仮想ページに、移行先実ページのIDと、移行先ティアのIDとを対応付ける。
*プログラム415は、選択仮想ページのI/O頻度(例えば、アクティブのテーブル409A又は409B)を更新する。具体的には、例えば、選択仮想ページ又は対象VVOLの合計I/O数が1インクリメントされる。
*プログラム415は、テーブル402(図6)における、移行先ティアの「使用割合」の値を、更新する。
プログラム415は、テーブルを更新する。具体的には、例えば、下記の通りである。
*プログラム415は、移行元実ページの代わりに移行先実ページが、選択されたレコードが表す仮想ページ(以下、S3605の説明において「選択仮想ページ」)に割り当るよう、アロケーションテーブル407を更新する。つまり、プログラム415は、選択仮想ページに、移行先実ページのIDと、移行先ティアのIDとを対応付ける。
*プログラム415は、選択仮想ページのI/O頻度(例えば、アクティブのテーブル409A又は409B)を更新する。具体的には、例えば、選択仮想ページ又は対象VVOLの合計I/O数が1インクリメントされる。
*プログラム415は、テーブル402(図6)における、移行先ティアの「使用割合」の値を、更新する。
(S3606)
プログラム415は、選択されたレコードにおける「移行ステータス」の値を“移行済”に更新する。
プログラム415は、選択されたレコードにおける「移行ステータス」の値を“移行済”に更新する。
(S3607)
プログラム415は、選択されたレコードが、仮想ページテーブル411における末端のレコードであるか否かを判断する。この判断の結果が否定的であれば、S3608が行われ、この判断の結果が肯定的であれば、この移行処理が終了となる。
プログラム415は、選択されたレコードが、仮想ページテーブル411における末端のレコードであるか否かを判断する。この判断の結果が否定的であれば、S3608が行われ、この判断の結果が肯定的であれば、この移行処理が終了となる。
(S3608)
プログラム415は、仮想ページテーブル411から、直前回に選択されたレコードの次のレコードを選択する。その後、その選択されたレコードについて、S3603以降が行われる。
プログラム415は、仮想ページテーブル411から、直前回に選択されたレコードの次のレコードを選択する。その後、その選択されたレコードについて、S3603以降が行われる。
以上が、ページ単位の移行処理のフローである。なお、ページ単位の移行処理の変形例として、例えば、下記の複数の変形例のうちの少なくとも一つが考えられる。
*S3602のS3603の間で、プログラム415が、データ要素を移行先ティアに移行したと仮定して、移行先ティアの使用割合が移行先ティアのティア閾値を超えるか否かを判断してよい。超えると判断された場合、プログラム415は、S3603〜S3606をスキップしてS3607を行ってよい(すなわち、プログラム415は、選択されたレコードについてデータ要素の移行を行わなくて良い)。或いは、超えると判断された場合、プログラム415は、移行先ティアを割当ティアとしているVVOLについて再配置処理を行うことで、移行先ティアにフリーの実ページを増やし、その後で、S3603を開始してもよい。
*S3605で移行先ティアの使用割合を更新したときに、プログラム415が、移行先ティアの使用割合が移行先ティアのティア閾値を超えるか否かを判断してよい。超えたと判断された場合、プログラム415は、管理装置107に警告を表示して良く、及び/又は、移行先ティアを割当ティアとしているVVOLについて再配置処理を行うことで、移行先ティアにフリーの実ページを増やしてよい。
*S3602のS3603の間で、プログラム415が、データ要素を移行先ティアに移行したと仮定して、移行先ティアの使用割合が移行先ティアのティア閾値を超えるか否かを判断してよい。超えると判断された場合、プログラム415は、S3603〜S3606をスキップしてS3607を行ってよい(すなわち、プログラム415は、選択されたレコードについてデータ要素の移行を行わなくて良い)。或いは、超えると判断された場合、プログラム415は、移行先ティアを割当ティアとしているVVOLについて再配置処理を行うことで、移行先ティアにフリーの実ページを増やし、その後で、S3603を開始してもよい。
*S3605で移行先ティアの使用割合を更新したときに、プログラム415が、移行先ティアの使用割合が移行先ティアのティア閾値を超えるか否かを判断してよい。超えたと判断された場合、プログラム415は、管理装置107に警告を表示して良く、及び/又は、移行先ティアを割当ティアとしているVVOLについて再配置処理を行うことで、移行先ティアにフリーの実ページを増やしてよい。
<ティア閾値の変更>。
UI制御プログラム413が、管理者からティア閾値の変更を受け付けることができる。
図37は、ティア閾値の変更処理のフローを示す。
(S3701)
プログラム413が、プールID及びティアIDと、そのティアIDについての変更後のティア閾値とを受け付ける。
プログラム413が、プールID及びティアIDと、そのティアIDについての変更後のティア閾値とを受け付ける。
(S3702)
プログラム413は、S3701で受けたプールID及びティアIDに対応した「使用割合」の値が、変更後のティア閾値を超えているか否かを判断する。
プログラム413は、S3701で受けたプールID及びティアIDに対応した「使用割合」の値が、変更後のティア閾値を超えているか否かを判断する。
(S3703)
プログラム413は、S3702の判断の結果が肯定的の場合、エラーを管理装置107に表示する。
プログラム413は、S3702の判断の結果が肯定的の場合、エラーを管理装置107に表示する。
<使用割合の監視>。
前述したように、I/O制御プログラム414又は再配置プログラム415は、実ページにデータ要素を書き込んだ場合、テーブル402(図6)における、その実ページを有するティアの「使用割合」の値を、更新する。その後、プログラム414又は415は、「使用割合」の更新後の値が、そのティアに対応する「ティア閾値」の値を超えたか否かを判断してよい。この判断の結果が肯定的であれば、プログラム414又は415は、図38に示す閾値オーバー対処処理を行って良い。
図38は、閾値オーバー対処処理のフローを示す。
プログラム414又は415は、使用割合がティア閾値を超えたティアを有するプールの「プールステータス」が“再配置中”か否かを判断する(S3801)。
S3801の判断の結果が肯定的の場合、プログラム414又は415は、管理装置107又はホスト101に、警告を出す(S3802)。その警告は、例えば、使用割合がティア閾値を超えたティアのIDと、そのティアを有するプールのIDと、そのプールの「プールステータス」の値(“再配置中”)とを含んでよい。
S3801の判断の結果が否定的の場合、プログラム414又は415は、管理装置107又はホスト101に、警告を出し(S3803)、そのティアの使用割合がそのティアのティア閾値以下になるよう再配置処理(図28)を実行する(S3804)。なお、S3803での警告は、例えば、使用割合がティア閾値を超えたティアのIDと、そのティアを有するプールのIDと、そのプールについて再配置処理を行うことを意味するメッセージとを含んでよい。
<データ要素の集約>。
本実施例では、データ要素の集約処理が行われて良い。
図39は、データ要素の集約処理の概要を示す。
I/O制御プログラム414又は再配置プログラム415は、VVOL#39について、定期的に、或いは、データ要素を実ページに書き込んだときに(例えば、VOL単位又はページ単位の移行処理の終了時に)、VVOL#39内のデータ要素の配置をチェックする。具体的には、例えば、プログラム414又は415は、VVOL#39の各割当ティア#00、#01、#03について、VVOL#39内の全てのデータ要素のうちのどの程度の割合のデータ要素が存在するか(つまり格納割合)を算出する。プログラム414又は415は、VVOL#39の割当ティア#00、#01、#03に、格納割合が格納閾値を超える割当ティアがあるか否かを判断する。
プログラム414又は415は、格納割合が格納閾値を超える格納割合の割当ティアがある場合、その割当ティア#00以外の割当ティア#01及び#03内のデータ要素(VVOL#39内のデータ要素)を、割当ティア#00(具体的には、例えば、割当ティア#00のフリーの実ページ)に移行する。
なお、その後、例えば、プログラム414は、VVOL#39内の仮想ページ(特に、実ページが割り当てられていない仮想ページ)に対してライトが発生した場合には、その仮想ページに、必ず、割当ティア#00から実ページを割り当てて良い。
なお、割当ティア#01及び#03内のデータ要素(VVOL#39内のデータ要素)を割当ティア#00に移行すると割当ティア#00の使用割合が割当ティア#00のティア閾値を超えてしまうようであれば、プログラム414又は415は、下記の(x)又は(y)を行って良い。
(x)プログラム414は、割当ティア#01及び#03内のデータ要素を割当ティア#00に移行しない。
(y)プログラム414は、対象VVOL以外のVVOL内のデータ要素であって割当ティア#00内のデータ要素を他のティアに移行することで割当ティア#00にフリーの実ページを増やす。
(x)プログラム414は、割当ティア#01及び#03内のデータ要素を割当ティア#00に移行しない。
(y)プログラム414は、対象VVOL以外のVVOL内のデータ要素であって割当ティア#00内のデータ要素を他のティアに移行することで割当ティア#00にフリーの実ページを増やす。
以上が、実施例1についての説明である。
なお、実施例1において、例えば、VVOLについて、デフォルトティアは、必ず、VVOLの割当ティアのうちI/O性能(例えばI/O速度又はレスポンスタイム)が最大のティア(例えば割当ティアのうちの最上位のティア)であってもよい。VVOLのI/O性能をなるべく大きくするためである。この場合、VVOLに書き込まれるデータ要素は、なるべく上位の割当ティアに配置されてよい。但し、割当ティアの使用容量がその割当ティアのティア閾値を超えないように制御される。
また、例えば、各プール、或いは、複数のプールに共通して、退避用のティアが設けられて良い。プログラム414及び415は、退避用のティアには、通常、ホストからのライトコマンドに従うライトでも、再配置処理における移行処理でも、データ要素を書き込まない。しかし、プログラム414又は415は、例えば、データ要素の書き込み先のティア(以下、この段落の説明において「対象ティア」)の使用割合がそのティアのティア閾値を超える場合、対象ティア内の任意の実ページ内のデータ要素(或いは、対象ティアのティアレンジにI/O頻度が収まっていない仮想ページに割り当てられている、対象ティアにおける実ページ内のデータ要素)を、退避用のティアに移行し、それにより、対象ティアにフリーの実ページを増やしてもよい。この場合、プログラム414又は415は、対象ティア内の移行元実ページに割り当てられている仮想ページに、その移行元実ページに代えて、退避用のティア内の移行先実ページを割り当ててよい。その後、プログラム414又は415は、退避用ティア内の実ページに割り当てられている仮想ページのI/O頻度が収まっているティアレンジが設定されているティアに、その退避用ティア内の実ページに格納されているデータ要素を移行してもよい。退避用ティアは、例えば、最上位のティアと同種のRVOLで構成されたティアであってよい。
また、デフォルトティアは設定されなくて良い。VVOLに対するホスト101からのライト対象のデータ要素は、なるべく上位のティアに書き込まれて良い。上位のティアの使用割合がティア閾値を超えた場合には、その上位のティアより一つ下位のティアにデータ要素が書き込まれて良い。
また、モニタテーブル409B及び409Aのうち409Aは必ずしも無くてもよい。この場合、モニタテーブル409Bが有する仮想ページ毎のI/O頻度を合計することでVVOLのI/O頻度が算出されても良い。
また、ページ単位の移行処理、又は、VOL単位の移行処理は、中断することもできる。例えば、再配置プログラム415は、管理者から中断の指示を受けた場合、移行ステータス“移行中”については移行ステータス“移行済”にするまで処理をすすめてから、ページ単位の移行処理、又は、VOL単位の移行処理を中断することができる。プログラム415は、例えば、中断の指示を受けてから一定時間後に、又は、再開の指示を受けたとき、移行ページテーブル411を基に移行処理を再開しても良い。或いは、プログラム415は、中断の指示を受けた場合、移行ページテーブル411を破棄し、次の移行処理の際には、アクティブのモニタテーブル409A又は409Bを基に移行ページテーブル411を作成しても良い。
また、実施例1では、テーブル412(図15)における「VOL単位移行」及び「ページ単位移行」のどちらが“ON”であっても、モニタテーブル409A及び409Bの両方が更新されても良い。
また、本実施例では、Thin ProvisioningのVVOL203は、ホスト101から仮想ページのあるアドレスへのライト要求に応じて実ページが割り当てられるものであるとしたが、本発明はこの場合に限られるものでなく、以下の例に挙げるものも好ましい。これらの例の場合でも、実際に使用される容量の削減を実現できるからである。
1つ目の例は、次のとおりである。すなわち、VVOL203の複数の仮想ページのうちの一部の仮想ページに対しては又はVVOL203の各仮想ページに含まれる一部の領域は、ホスト101から仮想ページのあるアドレスへのライト要求を受信する前に事前に実領域が割り当てられていて(プレアロケーション)、ホスト101から仮想ページのあるアドレスへのライト要求に応じて、既に割当済みの領域で十分でなく更なる割当が必要な場合に、追加の実領域が割り当てられる。
2つ目の例は、次のとおりである。すなわち、VVOL203の複数の仮想ページは、ホスト101から仮想ページのあるアドレスへのライト要求を受信する前に事前にゼロデータが格納されている実領域や制御用の領域(これらの領域はSSDなどの記憶デバイス上の領域に対応するものである)に仮に割り当てられていて(仮アロケーション)、ホスト101から仮想ページのあるアドレスへのライト要求に応じて、仮の割当領域からデータが格納されるべき実ページへ割当先が変更される(本アロケーション)。この場合、本アロケーション実施前にホスト101から仮想ページのあるアドレスへリード要求を受信した場合、仮アロケーション先の実領域や制御用の領域に格納されているゼロデータがホスト101へ応答されることになる。
また、本実施例では、複数のプール201を一元的に管理するべく1つのテーブルで複数のプール201を管理することにしたが、本発明はそれに限られることなく、各プール201毎に実ページ207を一元的に管理するべく、プール201毎に管理用のテーブル(テーブル形式以外の形式の情報でも良い)を分けることも好ましい。
また、ティア303の種類は、本実施例で記載したSSD、HDD−SAS、HDD−SATAなどの属性毎に分類されることに限られるものでなく、FCインタフェースを有するHDDや、HDD形式でない記憶デバイス、例えばフラッシュメモリなどの半導体記憶媒体で構成されたデバイス、等の属性毎に分類されることも好ましい。この場合、各ティア303に関連付けられる仮想ページの属性や各ティア303に含まれる各実ページの属性も、本実施例で記載したSSD、HDD−SAS、HDD−SATAなどの属性毎に分類されることに限られるものでなく、FCインタフェースを有するHDDや、HDD形式でない記憶デバイス、例えばフラッシュメモリなどの半導体記憶媒体で構成されたデバイス、等の属性毎に分類されることになる。
さらに、ティア303の種類は、上記記憶デバイスのタイプという属性だけで分類されることに限られるものでもなく、上記記憶デバイスのタイプとRAID1からRAID5等のRAIDタイプとを組み合わせた属性や、上記記憶デバイスのタイプと上記記憶デバイスの性能(アクセス速度など)や記憶容量とRAID1からRAID5等のRAIDタイプとを組み合わせた属性毎に分類されることも好ましい。これらの場合、各ティア303に関連付けられる仮想ページの属性や各ティア303に含まれる各実ページの属性も、上記記憶デバイスのタイプという属性だけで分類されることに限られるものでもなく、上記記憶デバイスのタイプとRAID1からRAID5等のRAIDタイプとを組み合わせた属性や、上記記憶デバイスのタイプと上記記憶デバイスの性能(アクセス速度など)や記憶容量とRAID1からRAID5等のRAIDタイプとを組み合わせた属性毎に分類されることになる。
以下、本発明の実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する(これは、後の実施例3以降についても同様である)。
本発明の実施例2では、I/O頻度に代えて又は加えて、VVOL毎又は仮想ページ毎の最終I/O時刻を基に、VOL単位又はページ単位の移行処理が行われる。最終I/O時刻は、実施例1で説明したように、実ページにデータ要素が書き込まれた場合に、モニタテーブル409A及び409Bに登録される。再配置プログラムは、仮想ページのI/O頻度とその仮想ページ内のデータ要素を有するティアのティアレンジとの関係に代えて又は加えて、仮想ページの最終I/O時刻を基に、移行ページテーブル411に登録する仮想ページを決定する。例えば、最終I/O時刻が現在の時刻から所定時間以上に過去である仮想ページが、移行ページテーブル411に登録されて良い。その際、その仮想ページ内のデータ要素の移行先は、その仮想ページ内のデータ要素を有するティアよりも下位のティアとされて良い。なぜなら、最終I/O時刻が古い仮想ページ内のデータ要素は、今後も入出力される可能性が低く、より下位のティアに配置するのが好ましいと考えられるからである。
本発明の実施例3では、シーケンシャルアクセスとランダムアクセスのどちらのアクセスパターンでI/Oが行われるかを基に、VOL単位又はページ単位の移行処理が行われる。
I/O対象のデータが、シーケンシャルアクセスされるデータならば、I/O先のRVOLの基になっているPDEVがHDDの場合に、HDDのシークの時間が短くて済む。この場合、比較的性能が低いHDDにI/O対象のデータが入っていても、シーケンシャルアクセスされるが故に、性能低下の度合いは小さいと考えられる。また、シーケンシャルアクセスされるデータを安価で性能の低いPDEVに移すことで、ランダムアクセスされる他のデータのために、性能の高いPDEVに基づく実ページのより多くをフリーにすることができる。このため、ストレージシステム全体のI/O性能の向上が期待できる。
実施例3では、例えば、I/O制御プログラム414が、実ページにデータ要素を書き込んだ場合に、I/O先の仮想ページについてのアクセスパターン(シーケンシャルアクセスかランダムアクセスか)を、例えばアロケーションテーブル407に登録する。アロケーションテーブル407には、仮想ページ毎に、アクセスパターン毎の実行頻度が書き込まれても良い。
再配置プログラム415は、例えば、移行ページテーブル411の作成において、仮想ページに対するアクセスパターンがシーケンシャルアクセスであれば(或いは、シーケンシャルアクセスの実行頻度が高ければ)、その仮想ページに対応した移行先として、より下位のティアを選択して良い。また、例えば、再配置プログラム415は、仮想ページのI/O頻度が、その仮想ページに割り当てられている実ページを有するティアのティアレンジの最大値より高くても、その実ページ内のデータ要素を移行対象としなくて良い。
本発明の実施例4では、二つのモニタテーブル409B(409A)は、交互に使用されることに代えて、所定のタイミングで編集不可能にCMPK119又は他の記憶資源に保存される。例えば、月曜日のモニタ結果を表すモニタテーブル409B(409A)が月曜日のテーブル409B(409A)として保存され、土曜日のモニタ結果を表すモニタテーブル409B(409A)が土曜日のテーブル409B(409A)として月曜日のモニタテーブル409B(409A)とは別に保存されてよい。このようにすることで、再配置処理の運用の運用方法の選択肢が増える。
実施例4では、例えば、再配置プログラム415が、再配置直前に、アクティブのモニタテーブル409B(409A)を保存するかどうかを、管理者に問い合わせる等の方法により決定する。保存する場合には、再配置処理の直前に、プログラム415が、モニタテーブル409B(409A)を管理装置107又は別の記憶資源に保存する。プログラム415は、移行ページテーブル411の作成のために参照するモニタテーブル409B(409A)をどれにするかを、保存されている複数のモニタテーブル409B(409A)から選択し、選択したモニタテーブル409B(409A)を用いて、移行ページテーブル411を作成することができる。
以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、少なくとも一つのPVOLが、仮想的なPVOLであっても良く、PVOLの基になるPDEVが、別のストレージシステムに存在しても良い。この場合、PVOLを構成する実ページに書き込まれるデータ要素は、そのPVOLの基になっている、別のストレージシステム内のPDEVに書き込まれて良い。
また、例えば、モニタテーブル409A及び409Bは、実ページに対するI/Oが行われたか否かに関わらず、仮想ページに対するI/Oが発生する都度に更新されてもよい。
また、例えば、VOL単位又はページ単位の移行処理において、移行先実ページの割当て先の仮想ページ又はその仮想ページを有するVVOLについて、移行先実ページにデータ要素が移行されたときにI/O頻度及び最終I/O時刻が更新されなくても良い。移行後に、その仮想ページ又はVVOLに対するI/Oに応じてその仮想ページ又はVVOLに割り当てられている実ページにI/Oが行われるときに、その仮想ページ又はVVOLのI/O頻度及び最終I/O時刻が更新されて良い。
また、例えば、RVOL種類は、RVOLの基になっているRGを構成するPVEVの種類に代えて又は加えて、そのRGのRAIDレベル(RAID1、RAID5(3D+1P)、など)に基づいても良い。このため、例えば、第1のRGと第2のRGをそれぞれ構成するPDEVの種類が同じであっても、第1のRGと第2のRGのRAIDレベルが異なっていれば、第1のRGに基づく第1のRVOLと、第2のRGに基づく第2のRVOLは種類が異なることになり、それ故、第1のRVOLと第2のRVOLが異なるティアに属して良い。ティアは、RVOL種類に限らず、他の観点から定義されても良い。
また、例えば、一つの実ページの容量は、一つの仮想ページに複数の実ページが割り当てられるような容量であっても良い。この場合、ページ単位の移行は、例えば、仮想ページに割り当てられている複数の移行元実ページから、複数の移行先実ページにデータ要素がそれぞれ移行されてよい。
また、例えば、一つの実ページの容量は、一つの実ページが複数の仮想ページに割り当てられるような容量であっても良い。この場合、ページ単位の移行処理では、複数の仮想ページが選択され、それら複数の仮想ページについて、一つの移行元実ページから移行先実ページにデータ要素が移行されてよい。
また、プールVOLは、外部のストレージシステムが提供するVOLに対応付けられた仮想的な論理ボリュームであっても良い。この場合、プールVOLの実ページに書き込まれるデータ要素は、そのプールVOLに対応する、外部のストレージシステムのVOLに書き込まれる。
また、I/O頻度の単位は、例えば、IOPS(1秒間当たりのI/Oの数)でも良い。
また、度数分布におけるI/O頻度幅は、1でも良い(つまり、I/O頻度毎に仮想ページ数がカウントされても良い)。
103…ストレージシステム
Claims (8)
- 一以上のホストに接続されるストレージシステムであって、
複数のプールの基になりI/O性能が異なる複数種類の物理記憶デバイス群と、
前記複数種類の物理記憶デバイス群及び前記一以上のホストに接続され第1及び第2の仮想ボリュームを含む複数の仮想ボリュームを前記一以上のホストに提供する記憶制御装置と
を備え、
各種物理記憶デバイス群は、一以上の物理記憶デバイスで構成されており、
各プールが、複数種類の実ページ群を有し、実ページ群の種類は、その実ページ群の基になっている物理記憶デバイス群の属性に基づいており、各実ページ群が、複数の実ページを有し、各実ページは、実体的な記憶領域であり、
各仮想ボリュームは、複数の仮想ページで構成されている仮想的な論理ボリュームであり、各仮想ページは、仮想的な記憶領域であり、
前記記憶制御装置が、前記ホストからI/O(Input/Output)コマンドを受信し、前記I/OコマンドからI/O先の仮想ボリューム及び仮想ページを特定し、特定した仮想ページに割り当てられた実ページに対してデータのI/Oを行い、仮想ページ毎のI/O頻度を表す情報であるモニタ情報を前記I/O先の仮想ページについて更新し、
前記記憶制御装置が、実ページ群の種類毎に設定されたI/O頻度レンジを表す情報を含んだ情報である実ページ群管理情報と、前記モニタ情報とを基に、移行処理を行い、前記移行処理では、移行元の実ページが割り当てられている仮想ページのI/O頻度が収まるI/O頻度レンジに対応した種類の実ページ群におけるフリーの実ページを移行先の実ページとし、前記移行元の実ページ内のデータを前記移行先の実ページに移行し、前記移行元の実ページが割り当てられている仮想ページに、前記移行元の実ページに代えて前記移行先の実ページを割り当て、
前記記憶制御装置が、前記第1の仮想ボリュームについて、移行元の実ページと同一のプールから移行先の実ページを選択するページ単位移行処理を実行し、前記第2の仮想ボリュームについて、移行元の実ページと異なるプールから移行先の実ページを選択するボリューム単位移行処理を実行し、
前記記憶制御装置が、前記第2の仮想ボリュームに割り当てられている2以上の実ページを有する1以上の実ページ群の種類にそれぞれ対応し前記実ページ群管理情報を基に特定される1以上のI/O頻度レンジと、前記1以上の実ページ群の各々について前記第2の仮想ボリュームに割り当てられている実ページの数とに基づいて、前記第2の仮想ボリュームについてI/O頻度の閾値レンジを算出し、
前記モニタ情報を基に特定される前記第2の仮想ボリュームのI/O頻度が、前記算出された閾値レンジに収まっていない場合、前記記憶制御装置が、前記第2の仮想ボリュームのI/O頻度が収まる移行後の閾値レンジが得られるように前記ボリューム単位移行処理を行い、そのボリューム単位移行処理では、前記第2の仮想ボリュームに割り当てられている全ての実ページ内のデータをそのデータが存在するプールと異なるプールに移行し、
前記移行後の閾値レンジは、前記第2の仮想ボリュームに割り当てられた全ての移行先実ページを有する一以上の実ページ群の種類に対応したI/O閾値レンジと、それら一以上の実ページ群の各々における、前記第2の仮想ボリュームに割り当てられた移行先実ページの数とに基づいて得られる閾値レンジである、
ストレージシステム。 - 請求項1記載のストレージシステムであって、
前記記憶制御装置は、前記I/O先の仮想ページに割り当てられる実ページに対してI/Oを行う場合、前記モニタ情報における、前記I/O先の仮想ページに対応したI/O頻度を更新し、一方、前記I/O先の仮想ページに割り当てられる実ページに対してI/Oを行わない場合、前記モニタ情報における、前記I/O先の仮想ページに対応したI/O頻度を更新しない、
ストレージシステム。 - 請求項1記載のストレージシステムであって、
前記記憶制御装置は、前記モニタ情報として、状態がアクティブのモニタ情報と、状態がスタンバイのモニタ情報とを記憶し、
前記記憶制御装置は、前記アクティブのモニタ情報におけるI/O頻度を更新し、
前記記憶制御装置は、前記移行処理において、前記アクティブのモニタ情報を基に、割り当てられている実ページを含んだ実ページ群に対応するI/O頻度レンジに収まっていないI/O頻度の仮想ページを特定し、且つ、前記スタンバイのモニタ情報の状態をスタンバイからアクティブに変更し、その後、仮想ページが特定されるI/Oコマンドに従って実ページに対してI/Oを行う場合、状態がアクティブに変更されたモニタ情報における、その特定された仮想ページのI/O頻度を更新する、
ストレージシステム。 - 請求項3記載のストレージシステムであって、
前記記憶制御装置は、前記アクティブのモニタ情報を用いて、I/O頻度と仮想ページ数との関係を表す情報である関係情報を作成し、作成した関係情報が表示されるよう前記関係情報を出力し、移行開始の指示を受けたときに、前記移行処理を開始する、
ストレージシステム。 - 請求項1記載のストレージシステムであって、
実ページ群毎に、構成する実ページの数に対する割当て済の実ページの割合である使用割合の割合閾値が関連付けられており、
前記記憶制御装置は、使用割合が割合閾値を実ページ群がある場合に、前記移行処理を開始する、
ストレージシステム。 - 請求項1記載のストレージシステムであって、
前記記憶制御装置は、前記ホストからのライトコマンドから特定されたライト先の仮想ページには、必ず、そのライト先の仮想ページを含んだ仮想ボリュームに関連付けられているプールが有する複数種類の実ページ群のうちの、I/O性能が最大の実ページ群から実ページを割り当てる、
ストレージシステム。 - 請求項1記載のストレージシステムであって、
前記記憶制御装置は、前記仮想ボリュームに割り当てられている全ての実ページのうちの所定割合以上の実ページが或る種の実ページ群に存在する場合、前記仮想ボリュームに割り当てられている全ての実ページのうち、前記或る種の実ページ群以外の種類の実ページ群内の実ページ内のデータを、前記或る種の実ページ群内の実ページに移行する、
ストレージシステム。 - 記憶資源と、
複数のプールの基になりI/O性能が異なる複数種類の物理記憶デバイス群と一以上のホストとに接続され第1及び第2の仮想ボリュームを含む複数の仮想ボリュームを前記一以上のホストに提供するコントローラと
を備え、
各種物理記憶デバイス群は、一以上の物理記憶デバイスで構成されており、
各プールが、複数種類の実ページ群を有し、実ページ群の種類は、その実ページ群の基になっている物理記憶デバイス群の属性に基づいており、各実ページ群が、複数の実ページを有し、各実ページは、実体的な記憶領域であり、
各仮想ボリュームは、複数の仮想ページで構成されている仮想的な論理ボリュームであり、各仮想ページは、仮想的な記憶領域であり、
前記記憶資源が、仮想ページ毎のI/O(Input/Output)頻度を表す情報であるモニタ情報と、実ページ群の種類毎に設定されたI/O頻度レンジを表す情報を含んだ情報である実ページ群管理情報とを記憶し、
前記コントローラが、前記ホストからI/Oコマンドを受信し、前記I/OコマンドからI/O先の仮想ボリューム及び仮想ページを特定し、特定した仮想ページに割り当てられた実ページに対してデータのI/Oを行い、前記モニタ情報を前記I/O先の仮想ページについて更新し、
前記コントローラが、前記実ページ群管理情報と前記モニタ情報とを基に、移行処理を行い、前記移行処理では、移行元の実ページが割り当てられている仮想ページのI/O頻度が収まるI/O頻度レンジに対応した種類の実ページ群におけるフリーの実ページを移行先の実ページとし、前記移行元の実ページ内のデータを前記移行先の実ページに移行し、前記移行元の実ページが割り当てられている仮想ページに、前記移行元の実ページに代えて前記移行先の実ページを割り当て、
前記コントローラが、前記第1の仮想ボリュームについて、移行元の実ページと同一のプールから移行先の実ページを選択するページ単位移行処理を実行し、前記第2の仮想ボリュームについて、移行元の実ページと異なるプールから移行先の実ページを選択するボリューム単位移行処理を実行し、
前記コントローラが、前記第2の仮想ボリュームに割り当てられている2以上の実ページを有する1以上の実ページ群の種類にそれぞれ対応し前記実ページ群管理情報を基に特定される1以上のI/O頻度レンジと、前記1以上の実ページ群の各々について前記第2の仮想ボリュームに割り当てられている実ページの数とに基づいて、前記第2の仮想ボリュームについてI/O頻度の閾値レンジを算出し、
前記第2の仮想ボリュームの各仮想ページのI/O頻度を基に特定される、前記第2の仮想ボリュームのI/O頻度が、前記算出された閾値レンジに収まっていない場合、前記コントローラが、前記第2の仮想ボリュームのI/O頻度が収まる移行後の閾値レンジが得られるように前記ボリューム単位移行処理を行い、そのボリューム単位移行処理では、前記第2の仮想ボリュームに割り当てられている全ての実ページ内のデータをそのデータが存在するプールと異なるプールに移行し、
前記移行後の閾値レンジは、前記第2の仮想ボリュームに割り当てられた全ての移行先実ページを有する一以上の実ページ群の種類に対応したI/O閾値レンジと、それら一以上の実ページ群の各々における、前記第2の仮想ボリュームに割り当てられた移行先実ページの数とに基づいて得られる閾値レンジである、
記憶制御装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/007208 WO2011077490A1 (ja) | 2009-12-24 | 2009-12-24 | 仮想ボリュームを提供するストレージシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2011077490A1 JPWO2011077490A1 (ja) | 2013-05-02 |
JP5555260B2 true JP5555260B2 (ja) | 2014-07-23 |
Family
ID=44195054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011547082A Expired - Fee Related JP5555260B2 (ja) | 2009-12-24 | 2009-12-24 | 仮想ボリュームを提供するストレージシステム |
Country Status (5)
Country | Link |
---|---|
US (2) | US8407417B2 (ja) |
EP (1) | EP2518614A4 (ja) |
JP (1) | JP5555260B2 (ja) |
CN (1) | CN102483683B (ja) |
WO (1) | WO2011077490A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015531089A (ja) * | 2012-10-12 | 2015-10-29 | 株式会社日立製作所 | ストレージ装置及びデータ管理方法 |
WO2016170631A1 (ja) * | 2015-04-22 | 2016-10-27 | 株式会社日立製作所 | ストレージシステム |
JP2017174150A (ja) * | 2016-03-24 | 2017-09-28 | 日本電気株式会社 | 管理装置、管理方法及びプログラム |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140372607A1 (en) * | 2010-03-15 | 2014-12-18 | Cleversafe, Inc. | Adjusting allocation of dispersed storage network resources |
WO2011162744A1 (en) | 2010-06-22 | 2011-12-29 | Hewlett-Packard Development Company, L.P. | Methods and systems for planning application deployment |
US8345489B2 (en) * | 2010-09-02 | 2013-01-01 | International Business Machines Corporation | Caching scheme synergy for extent migration between tiers of a storage system |
US8677167B2 (en) * | 2010-10-18 | 2014-03-18 | Hitachi, Ltd. | Storage apparatus and power control method |
US9348515B2 (en) * | 2011-01-17 | 2016-05-24 | Hitachi, Ltd. | Computer system, management computer and storage management method for managing data configuration based on statistical information |
US20140223430A1 (en) * | 2011-04-07 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Method and apparatus for moving a software object |
US8838895B2 (en) * | 2011-06-09 | 2014-09-16 | 21Vianet Group, Inc. | Solid-state disk caching the top-K hard-disk blocks selected as a function of access frequency and a logarithmic system time |
US8645655B2 (en) | 2011-09-27 | 2014-02-04 | Hitachi, Ltd. | Computing device system and information managing method for rearrangement of data based on access characteristic related to a task |
US9218131B2 (en) * | 2011-10-19 | 2015-12-22 | Hitachi, Ltd. | Method and apparatus to change tiers |
WO2013072968A1 (en) * | 2011-11-18 | 2013-05-23 | Hitachi, Ltd. | Storage system and management method therefor |
JP2013114624A (ja) * | 2011-11-30 | 2013-06-10 | Hitachi Ltd | ストレージシステム及びプール容量縮小の制御方法 |
WO2013103003A1 (ja) * | 2012-01-05 | 2013-07-11 | 株式会社日立製作所 | 計算機システムの管理装置及び管理方法 |
US9003150B2 (en) | 2012-04-26 | 2015-04-07 | Hitachi, Ltd. | Tiered storage system configured to implement data relocation without degrading response performance and method |
US9367439B2 (en) * | 2012-04-30 | 2016-06-14 | Oracle International Corporation | Physical memory usage prediction |
WO2014002126A1 (en) | 2012-06-25 | 2014-01-03 | Hitachi, Ltd. | Computer system and method of controlling i/o with respect to storage apparatus |
CN103020201B (zh) * | 2012-12-06 | 2016-09-07 | 浪潮电子信息产业股份有限公司 | 一种存储系统自动精简配置存储池及组织管理的方法 |
KR101741346B1 (ko) * | 2013-01-11 | 2017-06-15 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 플래시 메모리들에 대한 페이지 할당 |
KR101742462B1 (ko) | 2013-02-27 | 2017-06-01 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 메모리 디바이스들을 위한 선형 프로그래밍 기반 디코딩 |
US20140280220A1 (en) * | 2013-03-13 | 2014-09-18 | Sas Institute Inc. | Scored storage determination |
US9202245B2 (en) | 2013-08-19 | 2015-12-01 | Estimote Polska Sp. Z O.O. | Wireless beacon and methods |
US9998863B2 (en) | 2013-08-19 | 2018-06-12 | Estimote Polska Sp. Z O. O. | System and method for providing content using beacon systems |
US9859925B2 (en) | 2013-12-13 | 2018-01-02 | Empire Technology Development Llc | Low-complexity flash memory data-encoding techniques using simplified belief propagation |
JP6171084B2 (ja) * | 2014-03-27 | 2017-07-26 | 株式会社日立製作所 | ストレージシステム |
WO2016013075A1 (ja) * | 2014-07-23 | 2016-01-28 | 株式会社日立製作所 | ストレージ、計算機およびその制御方法 |
JP6500505B2 (ja) * | 2015-03-05 | 2019-04-17 | 富士通株式会社 | 制御装置、制御方法、および制御プログラム |
CN105138290A (zh) * | 2015-08-20 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 一种高性能存储池组织方法及装置 |
US10136250B2 (en) | 2015-09-02 | 2018-11-20 | Estimote Polska Sp. Z O. O. | System and method for lower power data routing |
JP6807376B2 (ja) * | 2016-02-29 | 2021-01-06 | 株式会社日立製作所 | 仮想ストレージシステム |
US9872146B2 (en) | 2016-03-22 | 2018-01-16 | Estimote Polska Sp. Z O. O. | System and method for multi-beacon interaction and management |
JP6680069B2 (ja) * | 2016-05-10 | 2020-04-15 | 富士通株式会社 | ストレージ制御装置、ストレージシステム及びストレージ装置制御プログラム |
JP6606235B1 (ja) * | 2018-07-13 | 2019-11-13 | 株式会社日立製作所 | ストレージシステム |
EP3841770A1 (en) | 2018-08-22 | 2021-06-30 | Estimote Polska Sp. Z O.O. | System and method for verifying device security |
EP3841765A2 (en) | 2018-08-24 | 2021-06-30 | Estimote Polska Sp. Z O.O. | A method and system for asset management |
US10891077B2 (en) * | 2018-12-26 | 2021-01-12 | Macronix International Co., Ltd. | Flash memory device and controlling method thereof |
US20220382478A1 (en) * | 2021-06-01 | 2022-12-01 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for page migration in memory systems |
LU501202B1 (en) * | 2022-01-04 | 2023-07-04 | Microsoft Technology Licensing Llc | Prioritized thin provisioning with eviction overflow between tiers |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001519563A (ja) * | 1997-10-08 | 2001-10-23 | シーゲイト テクノロジー エルエルシー | ディスクドライブアレイおよびデータ格納方法 |
JP2002169661A (ja) * | 2000-07-27 | 2002-06-14 | Matsushita Electric Ind Co Ltd | データ処理制御システム、コントローラ、データ処理制御方法、プログラム、および媒体 |
JP2006302077A (ja) * | 2005-04-22 | 2006-11-02 | Hitachi Ltd | ボリュームマイグレーションシステム、ボリューム再配置方法及びプログラム |
WO2007009910A2 (en) * | 2005-07-15 | 2007-01-25 | International Business Machines Corporation | Virtualisation engine and method, system, and computer program product for managing the storage of data |
JP2007200333A (ja) * | 2006-01-26 | 2007-08-09 | Seagate Technology Llc | オブジェクト・ベースのデータ記憶装置 |
JP2007272675A (ja) * | 2006-03-31 | 2007-10-18 | Nec Corp | スナップショット作成装置、方法、およびプログラム |
JP2007280089A (ja) * | 2006-04-07 | 2007-10-25 | Hitachi Ltd | 容量拡張ボリュームの移行方法 |
JP2008047156A (ja) * | 2004-08-30 | 2008-02-28 | Hitachi Ltd | ストレージシステム及びデータ再配置制御装置 |
JP2009043055A (ja) * | 2007-08-09 | 2009-02-26 | Hitachi Ltd | 計算機システム、ストレージ装置及びデータ管理方法 |
JP2009048497A (ja) * | 2007-08-21 | 2009-03-05 | Hitachi Ltd | 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム |
JP2009110451A (ja) * | 2007-10-31 | 2009-05-21 | Masaru Kiregawa | 計算機システム省電力化方法及び計算機 |
JP2009134397A (ja) * | 2007-11-29 | 2009-06-18 | Hitachi Ltd | 仮想ボリュームに割り当て済みの全ての実記憶領域を解放するか否かを制御する計算機及び方法 |
JP2009187468A (ja) * | 2008-02-08 | 2009-08-20 | Hitachi Ltd | 記憶システム、解除方法及び副側のストレージ装置 |
JP2009211132A (ja) * | 2008-02-29 | 2009-09-17 | Hitachi Ltd | 記憶システム及びデータ移行方法 |
JP2009245387A (ja) * | 2008-03-31 | 2009-10-22 | Hitachi Ltd | ストレージシステム |
JP2009299387A (ja) * | 2008-06-16 | 2009-12-24 | Honda Motor Co Ltd | 開閉体制御装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6839739B2 (en) * | 1999-02-09 | 2005-01-04 | Hewlett-Packard Development Company, L.P. | Computer architecture with caching of history counters for dynamic page placement |
US6816957B1 (en) * | 1999-10-26 | 2004-11-09 | Storage Technology Corporation | Management of virtual tape volumes using data page atomic units |
FR2825547B1 (fr) * | 2001-06-05 | 2003-10-31 | Nortel Networks Ltd | Procede et dispositif de controle d'emission de blocs de donnees |
US6980820B2 (en) * | 2001-08-20 | 2005-12-27 | Qualcomm Inc. | Method and system for signaling in broadcast communication system |
US7385995B2 (en) * | 2003-01-13 | 2008-06-10 | Brooktree Broadband Holding, Inc. | System and method for dynamic bandwidth allocation on PONs |
EP1668486A2 (en) | 2003-08-14 | 2006-06-14 | Compellent Technologies | Virtual disk drive system and method |
JP4863605B2 (ja) | 2004-04-09 | 2012-01-25 | 株式会社日立製作所 | 記憶制御システム及び方法 |
US7096338B2 (en) | 2004-08-30 | 2006-08-22 | Hitachi, Ltd. | Storage system and data relocation control device |
US7512769B1 (en) * | 2004-10-06 | 2009-03-31 | Hewlett-Packard Development Company, L.P. | Process migration |
US7404039B2 (en) * | 2005-01-13 | 2008-07-22 | International Business Machines Corporation | Data migration with reduced contention and increased speed |
JP2007066259A (ja) | 2005-09-02 | 2007-03-15 | Hitachi Ltd | 計算機システムとストレージシステム並びにボリューム容量拡張方法 |
JP4993913B2 (ja) * | 2006-01-13 | 2012-08-08 | 株式会社日立製作所 | 記憶制御装置及びそのデータ管理方法 |
US7624178B2 (en) | 2006-02-27 | 2009-11-24 | International Business Machines Corporation | Apparatus, system, and method for dynamic adjustment of performance monitoring |
JP5410025B2 (ja) * | 2008-03-07 | 2014-02-05 | 株式会社日立製作所 | ストレージシステム及びその管理方法 |
JP5222617B2 (ja) * | 2008-04-28 | 2013-06-26 | 株式会社日立製作所 | 情報システム及びi/o処理方法 |
-
2009
- 2009-12-24 CN CN200980161168.8A patent/CN102483683B/zh active Active
- 2009-12-24 JP JP2011547082A patent/JP5555260B2/ja not_active Expired - Fee Related
- 2009-12-24 EP EP09852507.4A patent/EP2518614A4/en not_active Withdrawn
- 2009-12-24 US US12/678,227 patent/US8407417B2/en active Active
- 2009-12-24 WO PCT/JP2009/007208 patent/WO2011077490A1/ja active Application Filing
-
2013
- 2013-02-25 US US13/775,664 patent/US8527702B2/en active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001519563A (ja) * | 1997-10-08 | 2001-10-23 | シーゲイト テクノロジー エルエルシー | ディスクドライブアレイおよびデータ格納方法 |
JP2002169661A (ja) * | 2000-07-27 | 2002-06-14 | Matsushita Electric Ind Co Ltd | データ処理制御システム、コントローラ、データ処理制御方法、プログラム、および媒体 |
JP2008047156A (ja) * | 2004-08-30 | 2008-02-28 | Hitachi Ltd | ストレージシステム及びデータ再配置制御装置 |
JP2006302077A (ja) * | 2005-04-22 | 2006-11-02 | Hitachi Ltd | ボリュームマイグレーションシステム、ボリューム再配置方法及びプログラム |
WO2007009910A2 (en) * | 2005-07-15 | 2007-01-25 | International Business Machines Corporation | Virtualisation engine and method, system, and computer program product for managing the storage of data |
JP2007200333A (ja) * | 2006-01-26 | 2007-08-09 | Seagate Technology Llc | オブジェクト・ベースのデータ記憶装置 |
JP2007272675A (ja) * | 2006-03-31 | 2007-10-18 | Nec Corp | スナップショット作成装置、方法、およびプログラム |
JP2007280089A (ja) * | 2006-04-07 | 2007-10-25 | Hitachi Ltd | 容量拡張ボリュームの移行方法 |
JP2009043055A (ja) * | 2007-08-09 | 2009-02-26 | Hitachi Ltd | 計算機システム、ストレージ装置及びデータ管理方法 |
JP2009048497A (ja) * | 2007-08-21 | 2009-03-05 | Hitachi Ltd | 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム |
JP2009110451A (ja) * | 2007-10-31 | 2009-05-21 | Masaru Kiregawa | 計算機システム省電力化方法及び計算機 |
JP2009134397A (ja) * | 2007-11-29 | 2009-06-18 | Hitachi Ltd | 仮想ボリュームに割り当て済みの全ての実記憶領域を解放するか否かを制御する計算機及び方法 |
JP2009187468A (ja) * | 2008-02-08 | 2009-08-20 | Hitachi Ltd | 記憶システム、解除方法及び副側のストレージ装置 |
JP2009211132A (ja) * | 2008-02-29 | 2009-09-17 | Hitachi Ltd | 記憶システム及びデータ移行方法 |
JP2009245387A (ja) * | 2008-03-31 | 2009-10-22 | Hitachi Ltd | ストレージシステム |
JP2009299387A (ja) * | 2008-06-16 | 2009-12-24 | Honda Motor Co Ltd | 開閉体制御装置 |
Non-Patent Citations (2)
Title |
---|
CSND200800047008; '環境負荷を削減し企業価値を高める「グリーンIT」への挑戦' BUSINESS COMMUNICATION 第45巻 第2号, 20080201, 38-41頁, 株式会社ビジネスコミュニケーション社 * |
JPN6013043352; '環境負荷を削減し企業価値を高める「グリーンIT」への挑戦' BUSINESS COMMUNICATION 第45巻 第2号, 20080201, 38-41頁, 株式会社ビジネスコミュニケーション社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015531089A (ja) * | 2012-10-12 | 2015-10-29 | 株式会社日立製作所 | ストレージ装置及びデータ管理方法 |
WO2016170631A1 (ja) * | 2015-04-22 | 2016-10-27 | 株式会社日立製作所 | ストレージシステム |
JPWO2016170631A1 (ja) * | 2015-04-22 | 2017-12-07 | 株式会社日立製作所 | ストレージシステム |
JP2017174150A (ja) * | 2016-03-24 | 2017-09-28 | 日本電気株式会社 | 管理装置、管理方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
CN102483683B (zh) | 2014-12-10 |
CN102483683A (zh) | 2012-05-30 |
US8407417B2 (en) | 2013-03-26 |
US8527702B2 (en) | 2013-09-03 |
US20110246739A1 (en) | 2011-10-06 |
US20130185505A1 (en) | 2013-07-18 |
WO2011077490A1 (ja) | 2011-06-30 |
EP2518614A1 (en) | 2012-10-31 |
JPWO2011077490A1 (ja) | 2013-05-02 |
EP2518614A4 (en) | 2014-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5555260B2 (ja) | 仮想ボリュームを提供するストレージシステム | |
WO2011077489A1 (ja) | 仮想ボリュームを提供するストレージシステム | |
US8549247B2 (en) | Storage system, management method of the storage system, and program | |
JP5079841B2 (ja) | ThinProvisioningに従う仮想的な論理ボリュームに対するデータのライトを制御する方法及びストレージ装置 | |
US9052823B2 (en) | Storage system and data management method with application specific storage tiers | |
JP5771280B2 (ja) | 計算機システム及びストレージ管理方法 | |
JP5685676B2 (ja) | 計算機システム及びデータ管理方法 | |
WO2012004837A1 (en) | Storage apparatus and storage management method | |
JPWO2012140730A1 (ja) | 管理システム、それを有する計算機システム、及び管理方法 | |
WO2015140931A1 (ja) | トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム | |
JP2007286975A (ja) | 計算機システム及びストレージシステム並びにボリューム割り当て方法 | |
WO2015189988A1 (ja) | ファイル再配置ポリシーを出力する管理サーバ、及びストレージシステム | |
CN104808954B (zh) | 提供虚拟卷的存储系统及其控制方法 | |
US9128819B2 (en) | Storage system and management method therefor | |
JP7261756B2 (ja) | ストレージシステム、処理方法 | |
JP5362751B2 (ja) | 計算機システム、管理計算機およびストレージ管理方法 | |
JP5355764B2 (ja) | ThinProvisioningに従う仮想的な論理ボリュームに対するデータのライトを制御する方法及びストレージ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130903 |
|
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: 20140513 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140530 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5555260 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |