JP2023176257A - ストレージ装置、ストレージ制御方法およびストレージ制御プログラム - Google Patents

ストレージ装置、ストレージ制御方法およびストレージ制御プログラム Download PDF

Info

Publication number
JP2023176257A
JP2023176257A JP2022088441A JP2022088441A JP2023176257A JP 2023176257 A JP2023176257 A JP 2023176257A JP 2022088441 A JP2022088441 A JP 2022088441A JP 2022088441 A JP2022088441 A JP 2022088441A JP 2023176257 A JP2023176257 A JP 2023176257A
Authority
JP
Japan
Prior art keywords
chunk
allocated
tpp
size
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022088441A
Other languages
English (en)
Inventor
圭馬 阿部
Keima Abe
秀治郎 大黒谷
Hidejiro Daikokuya
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2022088441A priority Critical patent/JP2023176257A/ja
Priority to US18/168,384 priority patent/US20230384968A1/en
Publication of JP2023176257A publication Critical patent/JP2023176257A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

【課題】仮想ボリュームに割り当てるチャンクのサイズを適正化する。【解決手段】プール領域11は、第1のサイズを有する第1のチャンクを単位として物理記憶領域を提供し、プール領域12は、第1のサイズより小さい第2のサイズを有する第2のチャンクを単位として物理記憶領域を提供する。制御部3は、プール領域11から第1のチャンクが割り当てられた仮想ボリューム21を第2のサイズごとに分割した複数の分割領域の中から、データが格納されている分割領域の数を示す計数値を計数し、仮想ボリューム21に割り当てられている第1のチャンクの数に対する計数値の比率または増加量が閾値以下の場合に、仮想ボリューム21に対して第1のチャンクの代わりにプール領域12から第2のチャンクを割り当て、割り当てられていた第1のチャンクのデータを新たに割り当てられた第2のチャンクに移動させる。【選択図】図1

Description

本発明は、ストレージ装置、ストレージ制御方法およびストレージ制御プログラムに関する。
シンプロビジョニング(Thin Provisioning)は、ストレージ容量を仮想化することで、物理記憶領域を効率的に利用できるようにする技術である。この技術では、ユーザのアクセス対象として、仮想的な記憶領域である仮想ボリュームが生成される。そして、仮想ボリュームの記憶領域のうち、データが書き込まれた記憶領域にのみ、物理記憶領域が動的に割り当てられる。
仮想ボリュームに関する技術としては、例えば、仮想ボリュームのデータへのアクセス状況を分析し、仮想ボリュームにおける記憶領域の管理単位がアクセス状況に対して最適になるように管理単位を再設定するストレージ装置が提案されている。
特開2008-269338号公報
ところで、仮想ボリュームに対しては、チャンクと呼ばれる一定サイズの領域を単位として物理記憶領域が動的に割り当てられる。仮想ボリュームに物理記憶領域を提供するプール領域には、チャンクサイズが固定的に設定される。
チャンクサイズに関しては、基本的に、チャンクサイズが小さい方が物理記憶領域の利用効率が高いという特徴がある。例えば、小さなサイズの書き込み先領域を指定した書き込みが要求された場合に、大きなサイズのチャンクが割り当てられると、そのチャンクの一部の領域にのみデータが書き込まれることになり、有効なデータが含まれない無駄な領域がチャンク内に発生してしまう。チャンクサイズが小さいほど、このような無駄な領域は発生しにくい。
その反面、チャンクサイズが小さいほど、プール領域に用意されるチャンクの数や仮想ボリュームに割り当てられるチャンクの数は多くなる。このため、チャンクを管理するための管理情報を記憶するための記憶領域が大きくなるという問題がある。
このように、仮想ボリュームへのチャンク割当に関しては、物理領域の利用効率が高くなり、かつ管理情報の記憶容量が小さくなるような最適なチャンクサイズのプール領域から、チャンクを割り当てるようにすることが難しいという点に課題がある。
1つの側面では、本発明は、仮想ボリュームに割り当てるチャンクのサイズを適正化できるストレージ装置、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
1つの案では、次のような記憶部と制御部とを有するストレージ装置が提供される。このストレージ装置において、記憶部には、第1のサイズを有する第1のチャンクを単位として物理記憶領域を提供する第1のプール領域と、第1のサイズより小さい第2のサイズを有する第2のチャンクを単位として物理記憶領域を提供する第2のプール領域とが設定される。制御部は、第1のプール領域から、データが格納された領域にのみ第1のチャンクが割り当てられた仮想ボリュームを第2のサイズごとに分割した複数の第1の分割領域の中から、データが格納されている第1の分割領域の数を示す第1の計数値を計数し、仮想ボリュームに割り当てられている第1のチャンクの数に対する第1の計数値の比率または増加量が第1の閾値以下である場合に、仮想ボリュームに対して第1のチャンクの代わりに第2のプール領域から第2のチャンクを割り当て、仮想ボリュームに割り当てられていた第1のチャンクのデータを仮想ボリュームに割り当てられた第2のチャンクに移動させる。
また、1つの案では、上記のストレージ装置と同様の処理をコンピュータが実行するストレージ制御方法が提供される。
さらに、1つの案では、上記のストレージ装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
1つの側面では、仮想ボリュームに割り当てるチャンクのサイズを適正化できる。
第1の実施の形態に係るストレージ装置の構成例および処理例を示す図である。 第2の実施の形態に係るストレージシステムの構成例を示す図である。 CMが備える処理機能の構成例を示す図である。 シンプロビジョニング管理情報のデータ構成例を示す図である。 TPPからTPVに対するチャンクの割当例を示す図である。 シンプロビジョニング制御部によるマイグレーション処理を説明するための図である。 チャンクサイズを変更した方がよいケースを示す図である。 大きいチャンクサイズのTPPに対するマイグレーション要否の判定処理例を示す図である。 小さいチャンクサイズのTPPに対するマイグレーション要否の判定処理例を示す図である。 マイグレーション制御処理の手順を示すフローチャートの例である。 第1のマイグレーション判定処理の手順を示すフローチャートの例である。 大きいチャンクサイズのTPPに対するマイグレーション処理の手順を示すフローチャートの例である。 第2のマイグレーション判定処理の手順を示すフローチャートの例である。 小さいチャンクサイズのTPPに対するマイグレーション処理の手順を示すフローチャートの例である。 0レクラメーション処理の手順を示すフローチャートである。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージ装置の構成例および処理例を示す図である。図1に示すストレージ装置1は、記憶部2と制御部3を有する。記憶部2は、1台または複数台の記憶装置に確保される物理記憶領域である。制御部3は、例えばプロセッサである。
記憶部2には、第1のサイズを有するチャンクを単位として物理記憶領域を提供するプール領域11と、第1のサイズより小さい第2のサイズを有するチャンクを単位として物理記憶領域を提供するプール領域12とが設定されている。図1では例として、プール領域11のチャンクサイズはLであり、プール領域12のチャンクサイズはL/2であるとする。
また、ストレージ装置1では、仮想ボリュームを設定し、その仮想ボリュームに対してプール領域11,12のいずれかからチャンクが動的に割り当てることが可能となっている。仮想ボリュームには、データの書き込みが要求された領域にのみチャンクが割り当てられ、そのチャンクにデータが書き込まれる。図1では例として、仮想ボリューム21が設定されている。仮想ボリューム21は、プール領域11のチャンク5個分の容量を有しているが、プール領域11から2つのチャンク11a,11bのみが割り当てられているとする。
ところで、チャンクサイズに関しては、基本的に、チャンクサイズが小さい方が物理記憶領域の利用効率が高いという特徴がある。このため、仮想ボリューム21にチャンクを割り当てる割当元を、プール領域11からチャンクサイズの小さいプール領域12に変更した方が、物理記憶領域の利用効率が向上する可能性が高い。その一方で、チャンクサイズが小さいほど、プール領域に用意されるチャンクの数や仮想ボリュームに割り当てられるチャンクの数が多くなるので、チャンクを管理するための管理情報を記憶するための記憶領域が大きくなるという問題がある。
制御部3は、仮想ボリューム21におけるチャンクの割当状況およびデータの格納状況から、プール領域11のチャンクサイズよりプール領域12のチャンクサイズの方が適切であると判定した場合には、チャンクの割当元をプール領域12に変更する。具体的には、制御部3は以下のような処理を実行する。
制御部3は、仮想ボリューム21を、プール領域12のチャンクサイズごとに分割する。制御部3は、分割により生成された複数の分割領域の中から、データが格納されている分割領域の数を示す計数値を計数する。そして、制御部3は、仮想ボリューム21にプール領域11から割り当てられているチャンクの数に対する、上記の計数値の比率または増加量を算出する。
上記の計数値は、チャンクの割当元をプール領域12に変更した場合に、プール領域12から仮想ボリューム21に割り当てられるチャンクの数の推定値を示す。このため、算出される比率は、チャンクの割当元をプール領域12に変更した場合に、仮想ボリューム21に割り当てられるチャンクの数がどれだけの割合で増加するかを示す。また、算出される増加量は、チャンクの割当元をプール領域12に変更した場合に、仮想ボリューム21に割り当てられるチャンクの数がどれだけ増加するかを示す。
このため、制御部3は、算出された比率または増加量が所定の閾値以下である場合に、チャンクの割当元をプール領域12に変更する。これにより、チャンクの割当数の増加を抑制しつつ、物理記憶領域の利用効率を改善できる。
図1の例では、仮想ボリューム21における分割領域31,32の範囲にチャンク11aが割り当てられ、分割領域33,34の範囲にチャンク11bが割り当てられている。ただし、チャンク11aにおける分割領域31の範囲にはデータが格納されているが、分割領域32の範囲にはデータが格納されていない。また、チャンク11bにおける分割領域34の範囲にはデータが格納されているが、分割領域33の範囲にはデータが格納されていない。このように2つの分割領域31,34にデータが格納されていることから、制御部3は、上記の計数値を「2」と計数する。
また、仮想ボリューム21に対してプール領域11から割り当てられているチャンクの数は「2」である。このため、制御部3は、比率を100%と算出し、増加量を「0」と算出する。チャンクの割当数の増加を抑制するという目的から、比率に対する閾値は100%より大きく設定され、増加量に対する閾値は「1」以上に設定される。したがって、図1の例では比率と増加量のどちらが算出されても閾値以下となるので、制御部3は、仮想ボリューム21へのチャンクの割当元をプール領域11からプール領域12に変更する。
この場合、制御部3は、仮想ボリューム21に対してプール領域11のチャンクの代わりにプール領域12のチャンクを割り当てる。そして、制御部3は、仮想ボリューム21にプール領域11から割り当てられていたチャンクのデータを、プール領域12から割り当てられたチャンクに移動させる。図1の例では、制御部3は、プール領域12のチャンク12a,12bを仮想ボリューム21に割り当てる。そして、制御部3は、チャンク11aにおける分割領域31の範囲のデータをチャンク12aに移動させ、チャンク11bにおける分割領域34の範囲のデータをチャンク12bに移動させる。
このように、制御部3は、チャンクの割当数の増加を抑制しつつ、物理記憶領域の利用効率を改善できると推定される場合に、仮想ボリュームへのチャンクの割当元を、より小さいチャンクサイズのプール領域に変更することができる。したがって、仮想ボリュームに割り当てるチャンクのサイズを適正化できる。
〔第2の実施の形態〕
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、ストレージ装置100とホストサーバ200を含む。ストレージ装置100は、CM(Controller Module)110とドライブ部120を備える。
CM110は、例えばファイバチャネル(FC:Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して、ホストサーバ200と接続されている。CM110は、ホストサーバ200からの要求に応じて、ドライブ部120に搭載された記憶装置へのアクセスを制御するストレージ制御装置である。なお、CM110は、図1に示したストレージ制御装置10の一例である。
ドライブ部120には、ホストサーバ200からのアクセス対象となる記憶装置が複数台搭載されている。本実施の形態では例として、ドライブ部120は、記憶装置としてHDD(Hard Disk Drive)121,122,123,・・・が搭載されたディスクアレイ装置である。なお、記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置が用いられてもよい。
ホストサーバ200は、例えば業務処理などの各種の処理を実行するサーバ装置である。ホストサーバ200は、このような処理の実行に伴い、ストレージ装置100によって提供される記憶領域に対してアクセスする。具体的には、CM110により、ドライブ部120内のHDDを用いた論理ボリューム(論理記憶領域)が生成され、ホストサーバ210は、その論理ボリュームに対するアクセスをCM110に要求することでドライブ部120内のHDDにアクセスする。後述するように、このような論理ボリュームは、シンプロビジョニングを用いた仮想ボリュームとして生成される。なお、CM110にはホストサーバ200が複数台接続されていてもよい。
ここで、図2を用いてCM110のハードウェア構成例を説明する。CM110は、プロセッサ111、RAM(Random Access Memory)112、SSD113、ホストインタフェース(I/F)114およびドライブインタフェース(I/F)115を備える。
プロセッサ111は、CM110全体を統括的に制御する。プロセッサ111は、マルチプロセッサであってもよい。プロセッサ111は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ111は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM112は、CM110の主記憶装置として使用される。RAM112には、プロセッサ111に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。SSD113は、CM110の補助記憶装置として使用される。SSD113には、OSプログラム、アプリケーションプログラム、および各種データが格納される。
ホストインタフェース114は、ホストサーバ200と通信するための通信インタフェースである。ドライブインタフェース115は、ドライブ部120と通信するための通信インタフェースである。ドライブインタフェース115は、例えば、SAS(Serial Attached SCSI)インタフェースである。
以上のハードウェア構成によってCM110の処理機能が実現される。
図3は、CMが備える処理機能の構成例を示す図である。図3に示すように、CM110は、記憶部130、I/O(Input/Output)制御部141およびシンプロビジョニング制御部142を備える。
記憶部130は、RAM112、SSD113など、CM110が備える記憶装置に確保される記憶領域である。記憶部130には、プール構成情報131、ボリューム構成情報132およびシンプロビジョニング管理情報133が記憶される。
CM110では、ホストサーバ200からのアクセス対象となる仮想ボリュームが生成される。仮想ボリュームにおいては、ホストサーバ200からの要求に応じてデータが書き込まれた領域に対してのみ、ストレージプールから物理領域が割り当てられる。ストレージプールは、ドライブ部120に搭載された複数のHDDを用いて実現され、1以上の仮想ボリュームによって共用される物理記憶領域である。
以下の説明では、仮想ボリュームをTPV(Thin Provisioning Volume)と記載し、ストレージプールをTPP(Thin Provisioning Pool)と記載する。
プール構成情報131は、TPPの構成を示す情報である。例えば、プール構成情報131には、TPPの識別情報、TPPに属するHDDの識別情報、TPPの容量、TPPにおけるチャンクのサイズなどの情報が含まれる。なお、チャンクとは、TPVに対する割当単位となる一定サイズの物理領域である。
ボリューム構成情報132は、TPVの構成を示す情報である。例えば、ボリューム構成情報132には、TPVの識別情報、TPVのサイズなどの情報が含まれる。
シンプロビジョニング管理情報133は、TPVの記憶領域と、TPPからTPVの記憶領域に割り当てられたチャンクとの対応関係を示す情報である。
I/O制御部141およびシンプロビジョニング制御部142の処理は、例えば、プロセッサ111が所定のアプリケーションプログラムを実行することで実現される。
I/O制御部141は、ホストサーバ200からの要求に応じてTPVに対するI/O処理を制御する。シンプロビジョニング制御部142は、TPPからのTPVに対するチャンクの割り当て処理を制御する。
例えば、I/O制御部141は、ホストサーバ200からTPV内のあるライト先領域に対するデータのライトI/O要求を受信すると、シンプロビジョニング管理情報133に基づいて、ライト先領域にチャンクが割り当てられているかを判定する。チャンクが割り当てられている場合、I/O制御部141は、割り当て済みのチャンクにライトデータを書き込み、ホストサーバ200に完了応答を送信する。一方、チャンクが割り当てられていない場合、シンプロビジョニング制御部142は、TPPから未割り当てのチャンクを選択し、そのチャンクをライト先領域に割り当てる。I/O制御部141は、割り当てられたチャンクにライトデータを書き込み、ホストサーバ200に完了応答を送信する。なお、実際には、ライトデータがキャッシュに書き込まれた時点で完了応答が送信され、その後の非同期のタイミングでチャンクに対するライトデータの書き込みが行われてもよい。
また、シンプロビジョニング制御部142は、他のTPPに対するTPVのマイグレーション処理を制御する。本実施の形態において、「マイグレーション」とは、TPVに対するチャンクの割当元TPPを他のTPPに変更して、TPVのデータをTPP間で再配置する処理を指す。
また、シンプロビジョニング制御部142は、データ漏洩の防止を目的として、TPPのチャンクのうちTPVから解放されたチャンクに対して値「0」のデータ(0データ)を書き込む。例えば、シンプロビジョニング制御部142は、ホストサーバ200からTPVの削除が要求され、さらにそのTPVの解放(アンマップ)が要求された場合や、マイグレーションの実行により元のTPVが解放された場合に、TPVに割り当てられていたチャンクに0データを書き込む。
図4は、シンプロビジョニング管理情報のデータ構成例を示す図である。図4に示すように、シンプロビジョニング管理情報133は、マッピングテーブル133aと割当情報テーブル133bを含む。
マッピングテーブル133aは、TPPのチャンクと、そのチャンクの割当先であるTPVの分割領域との対応関係を管理するための管理テーブルである。マッピングテーブル133aには、あるTPPのチャンクがTPVの分割領域に対して新たに割り当てられると、新たなレコードが追加される。分割領域とは、TPVをチャンクサイズごとに分割した領域である。
各レコードには、チャンクの識別情報と、そのチャンクの割当先であるTPV内の分割領域の識別情報とが対応付けて登録される。チャンクの識別情報は、TPPを識別するTPP_Noと、TPPにおけるチャンクの先頭位置をTPPの先頭からのオフセット量(Logical Block Address:LBA)で表したTPP_offsetとによって表される。TPV内の分割領域の識別情報は、TPVを識別するTPV_Noと、TPVにおける分割領域の先頭位置をTPVの先頭からのオフセット量(LBA)で表したTPV_offsetとによって表される。
割当情報テーブル133bには、TPVが新たに生成されると、そのTPVに含まれる各分割領域に対応するレコードが追加される。各レコードには、分割領域の識別情報と、マッピングテーブル133aのレコードのアドレスを示すテーブルアドレスとが対応付けて登録される。分割領域の識別情報は、TPVを識別するTPV_Noと、TPVにおける分割領域の先頭位置をTPVの先頭からのオフセット量(LBA)で表したTPV_offsetとによって表される。このような分割領域の識別情報にマッピングテーブル133aのテーブルアドレスが対応付けられることで、分割領域に割り当てられたチャンクの情報を参照可能になる。
なお、分割領域にチャンクが割り当てられていない場合、テーブルアドレスとしては無効値(図4の例では「0xffffffff」)が登録される。したがって、新たなTPVが生成された時点では、そのTPVの各分割領域に対応するレコードにはテーブルアドレスの初期値として無効値が登録される。
図5は、TPPからTPVに対するチャンクの割当例を示す図である。本実施の形態のストレージ装置100では、TPPに対してチャンクサイズが固定的に設定されるとともに、チャンクサイズの異なる複数のTPPを生成可能になっている。図5では、互いにチャンクサイズの異なるTPP#0とTPP#1とが例示されている。TPP#0は、容量が21GB、チャンクサイズが21MB、チャンク数が1024個のストレージプールである。一方、TPP#1は、容量が21GB、チャンクサイズが84MB、チャンク数が256個のストレージプールである。
また、図5では、TPP#0をチャンクの割当元とするTPV#0と、TPP#1をチャンクの割当元とするTPV#1とが例示されている。チャンクはTPVに対する物理領域の割当単位であるので、TPPのチャンクサイズが異なる場合、チャンクの割当先となるTPVの分割領域のサイズも異なる。
例えば、TPP#0におけるチャンクの割当単位となる分割領域のサイズは、TPP#0のチャンクサイズと同じ21MBとなる。したがって、例えば、TPV#0におけるあるライト先領域(ここでは分割領域のサイズ以下とする)に対するライトI/Oがホストサーバ200から要求された場合、このライト先領域に対してTPP#0から21MBのチャンクが割り当てられ、そのチャンクにライトデータが書き込まれる。
同様に、TPP#1におけるチャンクの割当単位となる分割領域のサイズは、TPP#1のチャンクサイズと同じ84MBとなる。したがって、例えば、TPV#1におけるあるライト先領域(ここでは分割領域のサイズ以下とする)に対するライトI/Oがホストサーバ200から要求された場合、このライト先領域に対してTPP#1から84MBのチャンクが割り当てられ、そのチャンクにライトデータが書き込まれる。
ここで、チャンクサイズに関しては、基本的に、チャンクサイズが小さい方が容量効率(物理領域の利用効率)が高いという特徴がある。例えば、チャンクサイズより小さいライト先領域を指定したライトI/Oが要求された場合、割り当てられたチャンクの一部にのみライトデータが書き込まれ、チャンクの残りの領域が未利用状態となる。このようなケースはチャンクサイズが大きいほど発生しやすいので、チャンクサイズが小さい方が容量効率は高いといえる。
一方、TPPの容量が同じであれば、チャンクサイズが小さいほどチャンク数が多くなる。また、図4に例示したように、シンプロビジョニング管理情報133内の管理テーブルにはチャンクや分割領域ごとのレコードが登録される。すなわち、割当情報テーブル133bにはTPVの各分割領域に対応するレコードが登録され、マッピングテーブル133aには、分割領域に割り当てられた各チャンクに対応するレコードが登録される。このため、チャンクサイズが小さい方が登録されるレコード数が大きくなり、管理テーブルの容量が大きくなるという特徴がある。
管理テーブルの容量が大きくなると、必要な記憶領域の容量も大きくなり、装置コストが高まる。例えば、アクセス速度の向上のために管理テーブルがRAMに記憶される場合、必要なRAMの容量が大きくなる。また、RAMがI/O処理用のキャッシュとしても使用されている場合、管理テーブルの容量が大きいほどキャッシュとして使用できる容量が小さくなり、I/O応答性能が低下してしまう。
このように、チャンクサイズの大小によってメリット、デメリットが存在する。TPVに割り当てるチャンクのサイズとして、TPVのI/O環境に応じた適切なチャンクサイズを選択することで、上記のメリットを最大限享受しつつ、デメリットを最小化することが望まれる。
図6は、シンプロビジョニング制御部によるマイグレーション処理を説明するための図である。本実施の形態において、シンプロビジョニング制御部142は、TPVを、現在そのTPVにチャンクを割り当てている割当元TPPよりチャンクサイズの大きい他のTPP、またはチャンクサイズの小さい他のTPPに対して適応的にマイグレーションする。
図6では例として、チャンクサイズが42MBのTPP#10が、TPV#10に対する割当元TPPとなっている。また、TPP#10の他に、チャンクサイズが84MBのTPP#11と、チャンクサイズが21MBのTPP#12とが生成されているとする。この状況において、シンプロビジョニング制御部142は、TPV#10に対するチャンクの割当元TPPを、チャンクサイズがより大きいTPPに変更した方がよいか、またはより小さいTPPに変更した方がよいかを判定する。
前者の場合、シンプロビジョニング制御部142は、TPV#10におけるデータ格納領域に対してTPP#11から新たにチャンクを割り当て、TPV#10に割り当てられていた元のチャンクのデータを新たなチャンクに移動させる。一方、後者の場合、シンプロビジョニング制御部142は、TPV#10におけるデータ格納領域に対してTPP#12から新たにチャンクを割り当て、TPV#10に割り当てられていた元のチャンクのデータを新たなチャンクに移動させる。
ここで、次の図7に示すように、ライトI/Oの発生状況に応じて、大きいチャンクサイズを利用した方がよいケースと、小さいチャンクサイズを利用した方がよいケースとが考えられる。
図7は、チャンクサイズを変更した方がよいケースを示す図である。図7(A)は、大きいチャンクサイズを利用した方がよいケースを示し、図7(B)は、小さいチャンクサイズを利用した方がよいケースを示す。なお、図7では例として、21MBのチャンクを割り当てる場合、84MBのチャンクを割り当てる場合とで比較する。
図7(A)は、比較的サイズが大きいライトデータによるシーケンシャルなライトI/Oが多く発生しているケースを示す。このケースでは、TPV上の比較的大きな連続領域にデータが書き込まれる。この場合、TPVに対してサイズの大きいチャンクを割り当てても、チャンク上においてデータが書き込まれない無駄な領域が発生しにくい。逆に、TPVに対してサイズの小さいチャンクを割り当てると、割り当てられるチャンク数が多くなり、管理テーブルのレコード数が増大する。
図7(A)の例では、2回のライトI/Oに対して、84MBのチャンクは1つだけ割り当てられるが、21MBのチャンクは4つ割り当てられる。どちらの場合でも、チャンク上でデータが書き込まれない領域のサイズは同じであり、容量効率に差はない。しかし、21MBのチャンクを用いた場合の方がチャンクの割当数が多くなり、それによって管理テーブルのレコード数も多くなるので、管理テーブルのためのより大きな記憶領域が必要となる。したがって、このようなケースでは大きいチャンクサイズを利用した方がよいと考えられる。
一方、図7(B)は、比較的サイズが小さいライトデータによるランダムなライトI/Oが多く発生しているケースを示す。このケースでは、TPV上の離散的な位置に小さなサイズのデータが書き込まれる。この場合、TPVに対してサイズの大きいチャンクを割り当てると、チャンク上にデータが書き込まれない大きな領域が発生しやすくなる。このため、サイズの小さいチャンクを割り当てる場合より容量効率が低下する。
図7(B)の例では、4回のライトI/Oに対して、21MBのチャンクを利用した場合と、84MBのチャンクを利用した場合のいずれにおいても4つのチャンクが割り当てられる。このため、管理テーブルのレコード数に差はない。しかし、84MBのいずれのチャンクでもライトデータは一部の領域にしか書き込まれないので、容量効率が低い。したがって、このようなケースでは小さいチャンクサイズを利用した方がよいと考えられる。
このようなライトI/Oの発生状況の違いは、例えば、TPVの利用用途の違いによって発生し得る。一例として、データベース用途であれば小さいライトデータのランダムライトが発生しやすく、マルチメディア系のデータ格納用途であれば大きいライトデータのシーケンシャルライトが発生しやすい。
しかし、このようなTPVの利用用途をCM110側が認識することは難しい。また、例えば、上記のようなライトI/Oの発生状況をCM110が解析する場合、CM110の処理負荷が増大するという問題がある。CM110の処理負荷が増大すると、I/O要求に対する応答性能が低下する可能性がある。また、I/O要求に対する応答性能を維持しようとすると、CM110の処理性能を高める必要が生じ、装置コストが上がってしまう。
そこで、本実施の形態において、シンプロビジョニング制御部142は、TPVに対するチャンクの割当状況やデータの書き込み状況を定期的に監視する。シンプロビジョニング制御部142は、それらの監視結果に基づいて、より大きいチャンクサイズのTPP、またはより小さいチャンクサイズのTPPへのマイグレーションの要否を判定し、必要と判定した場合にマイグレーションを実行する。時間的に連続した期間におけるライトI/Oの発生状況を解析するのではなく、判定時刻におけるチャンクの割当状況やデータの書き込み状況からマイグレーションの要否を判定することで、判定処理負荷を軽減できる。
以下の説明では、判定対象のTPVに対する変更前のチャンク割当元のTPP(現状のチャンク割当元のTPP)を「移行元TPP」と記載し、変更後のチャンク割当元のTPPを「移行先TPP」と記載する。
図8は、大きいチャンクサイズのTPPに対するマイグレーション要否の判定処理例を示す図である。シンプロビジョニング制御部142は、以下のような手順で、判定対象のTPVをより大きいチャンクサイズのTPPにマイグレーションするかを判定する。
まず、シンプロビジョニング制御部142は、判定対象のTPVの移行元TPPの他に、次の判定条件(1-1)~(1-4)をすべて満たすTPPが存在するかを判定する。
判定条件(1-1):チャンクサイズが移行元TPPのチャンクサイズより大きい。
判定条件(1-2):チャンクサイズが移行元TPPのチャンクサイズの倍数である。
判定条件(1-3):空き容量(未割当チャンクの数)が十分にある。
判定条件(1-4):マイグレーション先として判定対象のTPVのユーザが事前に許容している。
判定条件(1-2)は、後述する全割当カウンタ134aおよび部分割当カウンタ134bを用いてマイグレーションの要否を判定できるようにするための条件である。判定条件(1-3)は、マイグレーションしても移行先TPPの容量が枯渇しないことを示す条件であり、例えば、移行先TPPの空き容量が判定対象のTPVの容量以上ある場合に満たされる。判定条件(1-4)は、例えば、事前に設定された情報に基づいて判定される。
シンプロビジョニング制御部142は、上記の判定条件(1-1)~(1-4)をすべて満たす他のTPPが存在する場合に、その中からチャンクサイズが移行元TPPのチャンクサイズに最も近い(すなわちチャンクサイズが最小の)TPPを、移行先候補TPPとして選択する。
次に、シンプロビジョニング制御部142は、全割当カウンタ134aおよび部分割当カウンタ134bを用いて、判定対象のTPVに対するチャンクの割当状況およびデータの書き込み状況を判定する。
この処理では、まず、シンプロビジョニング制御部142は、判定対象のTPVの論理記憶領域を、移行先候補TPPのチャンクサイズごとに分割する。以下、分割された領域を「チャンク区画」と記載する。例えば、移行先候補TPPのチャンクサイズが移行元TPPのチャンクサイズの3倍である場合、各チャンク区画は移行元TPPのチャンク3つ分の長さとなる。
図8では例として、判定対象のTPV#10に対して、チャンクサイズが42MBのTPP#10からチャンクが割り当てられている。また、このような移行元のTPP#10に対し、チャンクサイズが84MBのTPP#11が移行先候補TPPとして選択されたとする。移行先候補のTPP#11のチャンクサイズは移行元のTPP#10のチャンクサイズの2倍であるので、TPV#10上のチャンク区画は移行元のTPP#10のチャンク2つ分の長さとなる。
次に、シンプロビジョニング制御部142は、判定対象のTPVの各チャンク区画について、全割当カウンタ134aおよび部分割当カウンタ134bをカウントアップするか否かを判定する。
具体的には、シンプロビジョニング制御部142は、チャンク区画の全体に移行元TPPからチャンクが割り当てられている場合に、全割当カウンタ134aをカウントアップする。例えば図8のように、移行先候補TPPのチャンクサイズが移行元TPPのチャンクサイズの2倍であるとすると、チャンク区画に2つのチャンクが割り当てられている場合に全割当カウンタ134aがカウントアップされる。図8の例では、チャンク区画152に対して2つのチャンクが割当済みであるので、チャンク区画152において全割当カウンタ134aがカウントアップされる。
また、シンプロビジョニング制御部142は、チャンク区画の一部にのみ移行元TPPからチャンクが割り当てられている場合に、部分割当カウンタ134bをカウントアップする。例えば図8のように、移行先候補TPPのチャンクサイズが移行元TPPのチャンクサイズの2倍であるとすると、チャンク区画に1つのチャンクが割り当てられている場合に部分割当カウンタ134bがカウントアップされる。図8の例では、チャンク区画151,153に対してチャンクが1つずつ割当済みであるので、チャンク区画151,153において部分割当カウンタ134bがカウントアップされる。
次に、シンプロビジョニング制御部142は、判定対象のTPVに含まれる、移行元TPPから1以上のチャンクが割り当てられているチャンク区画のうち、チャンク区画全体に移行元TPPからチャンクが割り当てられているチャンク区画の割合R1を算出する。全割当カウンタ134aのカウント値をall_alloc_cntとし、部分割当カウンタ134bのカウント値をpart_alloc_cntすると、割合R1は次の式(1)を用いて算出される。
R1[%]=all_alloc_cnt/(part_alloc_cnt+all_alloc_cnt)×100・・・(1)
上記の割合R1が大きいほど、移行先候補TPPにマイグレーションした場合に、新たに割り当てられるチャンク内に有効なデータが書かれない無駄な領域が発生しにくく、新たに使用される物理領域の増加容量も抑制される。このため、マイグレーションの実行後における容量効率の低下が抑制される一方、管理テーブルの容量削減効果が得られる。したがって、シンプロビジョニング制御部142は、算出された割合R1が所定の閾値(例えば90%)以上の場合に、移行先候補TPPをマイグレーション先として判定対象のTPVのマイグレーションを実行する。
なお、上記の処理では、判定条件(1-1)~(1-4)をすべて満たす他のTPPのうち、その中からチャンクサイズが移行元TPPのチャンクサイズに最も近いTPP(チャンクサイズが最小のTPP)が移行先候補TPPとして選択された。しかし、よりチャンクサイズが大きい他のTPPが選択されてもよい。ただし、その場合には、全割当カウンタ134aがカウントアップされにくくなり、割合R1が閾値以上になりにくくなるので、その結果として、判定対象のTPVがより大きなチャンクサイズのTPPにマイグレーションされにくくなる。
一方、チャンクサイズが最小の他のTPPが選択されることで、TPVをより大きなチャンクサイズのTPPに段階的にマイグレーションさせることが可能となり、TPVのデータ書き込み状況に合ったサイズのチャンクが割り当てられるようになる。その結果、物理領域の使用率の向上と管理テーブルの記憶容量の削減とのバランスを最適化できる。
図9は、小さいチャンクサイズのTPPに対するマイグレーション要否の判定処理例を示す図である。シンプロビジョニング制御部142は、以下のような手順で、判定対象のTPVをより小さいチャンクサイズのTPPにマイグレーションするかを判定する。
まず、シンプロビジョニング制御部142は、判定対象のTPVの移行元TPPの他に、次の判定条件(2-1)~(2-4)をすべて満たすTPPが存在するかを判定する。
判定条件(2-1):チャンクサイズが移行元TPPのチャンクサイズより小さい。
判定条件(2-2):移行元TPPのチャンクサイズが判定対象のTPPのチャンクサイズの倍数である。
判定条件(2-3):空き容量(未割当チャンクの数)が十分にある。
判定条件(2-4):マイグレーション先として判定対象のTPVのユーザが事前に許容している。
判定条件(2-2)は、後述する割当必要カウンタ134cを用いてマイグレーションの要否を判定できるようにするための条件である。判定条件(2-3)は、マイグレーションしても移行先TPPの容量が枯渇しないことを示す条件であり、例えば、移行先TPPの空き容量が判定対象のTPVの容量以上ある場合に満たされる。判定条件(2-4)は、例えば、事前に設定された情報に基づいて判定される。
シンプロビジョニング制御部142は、上記の判定条件(2-1)~(2-4)をすべて満たす他のTPPが存在する場合に、その中からチャンクサイズが移行元TPPのチャンクサイズに最も近い(すなわちチャンクサイズが最大の)TPPを、移行先候補TPPとして選択する。
次に、シンプロビジョニング制御部142は、割当必要カウンタ134cを用いて、判定対象のTPVに対するチャンクの割当状況およびデータの書き込み状況を判定する。
この処理では、まず、シンプロビジョニング制御部142は、判定対象のTPVの論理記憶領域を、移行先候補TPPのチャンクサイズごとに分割する。図8の場合とは異なり、分割された領域の長さは移行元TPPのチャンクサイズより小さくなる。そこで、以下の説明では分割された領域を「部分チャンク区画」と記載する。例えば、移行先候補TPPのチャンクサイズが移行元TPPのチャンクサイズの1/3である場合、各部分チャンク区画も移行元TPPのチャンクサイズの1/3の長さとなる。
図9では例として、判定対象のTPV#10に対して、チャンクサイズが42MBのTPP#10からチャンクが割り当てられている。また、このような移行元のTPP#10に対し、チャンクサイズが21MBのTPP#12が移行先候補TPPとして選択されたとする。移行先候補のTPP#12のチャンクサイズは移行元のTPP#10のチャンクサイズの1/2であるので、TPV#10上の部分チャンク区画も移行元のTPP#10のチャンクサイズの1/2の長さとなる。
次に、シンプロビジョニング制御部142は、判定対象のTPVの各部分チャンク区画について、割当必要カウンタ134cをカウントアップするか否かを判定する。具体的には、シンプロビジョニング制御部142は、部分チャンク区画に対して移行元TPPからチャンクが割り当てられており、かつ、そのチャンクにおける部分チャンク区画内に有効なデータが含まれる場合に、割当必要カウンタ134cをカウントアップする。
本実施の形態では、TPPに含まれる未割当チャンクには、その全体に0データが書き込まれる。そして、未割当チャンクがTPVに割り当てられ、そのチャンクの一部にデータが書き込まれた場合には、そのチャンクの残りの領域には0データが残る。より具体的には、割り当てられたチャンク内のブロックのうち、一部のブロックにのみデータが書き込まれた場合には、残りのブロックのそれぞれは全体に0データが書き込まれたブロック(0データのブロック)となる。ここでいう「ブロック」とは、ホストサーバ200からTPVに対するライトI/Oの最小単位の領域である。また、以下の説明では、有効なデータが書き込まれたブロックを「0データでないブロック」と記載する。
そこで、シンプロビジョニング制御部142は、部分チャンク区画にチャンクが割り当てられている場合に、そのチャンクにおける部分チャンク区画に0データでないブロックが1つ以上ある場合に、割当必要カウンタ134cをカウントアップする。
図9の例では、部分チャンク区画161,162に1つのチャンクが割り当てられているが、このチャンクにおける部分チャンク区画161に含まれるブロックは、すべて0データのブロックとなっている。一方、このチャンクにおける部分チャンク区画162には、0データでないブロックが含まれている。この場合、部分チャンク区画162において割当必要カウンタ134cがカウントアップされる。
また、部分チャンク区画163,164に1つのチャンクが割り当てられているが、このチャンクにおける部分チャンク区画164に含まれるブロックは、すべて0データのブロックとなっている。一方、このチャンクにおける部分チャンク区画163には、0データでないブロックが含まれている。この場合、部分チャンク区画163において割当必要カウンタ134cがカウントアップされる。
また、部分チャンク区画165,166に1つのチャンクが割り当てられているが、このチャンクにおける部分チャンク区画165,166のいずれの領域にも、0データのブロックのみが含まれている。この場合、割当必要カウンタ134cのカウントアップは行われない。
以上の手順によりカウントされた割当必要カウンタ134cのカウント値は、移行先候補TPPにマイグレーションした場合に、判定対象のTPVに対して移行先候補TPPから割り当てられるチャンクの数を示すことになる。
次に、シンプロビジョニング制御部142は、判定対象のTPVに移行元TPPから割り当てられているチャンク数(割当済みチャンク数)と、マイグレーションした場合に移行先候補TPPから割り当てられるチャンク数、すなわち割当必要カウンタ134cのカウント値とを比較する。シンプロビジョニング制御部142は、前者の割当済みチャンク数に対する後者のチャンク数(カウント値)の比率R2を算出する。割当済みチャンク数をcurr_alloc_cntとし、割当必要カウンタ134cのカウント値をneed_alloc_cntとすると、比率R2は次の式(2)を用いて算出される。
R2[%]=need_alloc_cnt/curr_alloc_cnt×100・・・(2)
移行元TPPのチャンクサイズより移行先候補TPPのチャンクサイズの方が小さいので、通常、比率R2は100%以上の値となる。そして、この比率R2が低いほど、移行先候補TPPにマイグレーションした場合に、判定対象のTPVに割り当てられるチャンク数の増加が抑制され、その結果、管理テーブルを記憶する記憶領域の容量増加が抑制される。このため、管理テーブルの容量増加を抑制しつつ、物理領域の利用効率(容量効率)を向上させることができる。
したがって、シンプロビジョニング制御部142は、算出された比率R2が所定の閾値以下の場合に、移行先候補TPPをマイグレーション先として判定対象のTPVのマイグレーションを実行する。閾値としては、100%より大きい値(例えば110%)が設定されればよい。
なお、上記の処理では、割当済みチャンク数に対する割当必要カウンタ134cのカウント値の比率R2を算出したが、他の例として、割当済みチャンク数に対する割当必要カウンタ134cの増加量(差分)を算出してもよい。この場合、シンプロビジョニング制御部142は、増加量が所定の閾値以下の場合にマイグレーションを実行する。通常、増加量は0以上の値となるので、閾値としては1以上の値が設定されればよい。
また、上記の処理では、判定条件(2-1)~(2-4)をすべて満たす他のTPPのうち、その中からチャンクサイズが移行元TPPのチャンクサイズに最も近いTPP(チャンクサイズが最大のTPP)が移行先候補TPPとして選択された。しかし、よりチャンクサイズが小さい他のTPPが選択されてもよい。ただし、その場合には、部分チャンク区画の数が増大し、それによって割当必要カウンタ134cがカウントアップされやすくなる。その結果として、判定対象のTPVがより小さなチャンクサイズのTPPにマイグレーションされにくくなる。
一方、チャンクサイズが最大の他のTPPが選択されることで、TPVをより小さなチャンクサイズのTPPに段階的にマイグレーションさせることが可能となり、TPVのデータ書き込み状況に合ったサイズのチャンクが割り当てられるようになる。その結果、物理領域の使用率の向上と管理テーブルの記憶容量の削減とのバランスを最適化できる。
次に、シンプロビジョニング制御部142によるマイグレーション制御処理について、フローチャートを用いて説明する。
図10は、マイグレーション制御処理の手順を示すフローチャートの例である。図10の処理は、例えば一定時間間隔で実行される。
[ステップS11]シンプロビジョニング制御部142は、CM110における、ホストサーバ200からの要求に応じたI/O処理の負荷が低いかを判定する。I/O処理負荷は、例えば、プロセッサ111の使用率などの指標から判定され、指標が所定の閾値以下の場合にI/O処理負荷が低いと判定される。I/O処理負荷が低い場合、処理がステップS12に進められ、I/O処理負荷が高い場合、マイグレーション制御処理が終了される。
ステップS11の処理により、CM110のI/O処理負荷が低い状態においてステップS12以降の処理が実行されることになる。ただし、他の例として、CM110のI/O処理負荷が低いと推定されるあらかじめ決められた時刻に、ステップS12以降の処理が実行されるようにしてもよい。
[ステップS12]シンプロビジョニング制御部142は、マイグレーション要否の判定を行っていないTPVがあるかを判定する。未判定のTPVがある場合、処理がステップS13に進められ、すべてのTPVについて判定済みの場合、マイグレーション制御処理が終了される。
[ステップS13]シンプロビジョニング制御部142は、マイグレーション要否が未判定のTPVの1つを判定対象として選択する。
[ステップS14]シンプロビジョニング制御部142は、判定対象のTPVについて第1のマイグレーション判定処理を実行する。この処理では、より大きいチャンクサイズのTPPにマイグレーションするかが判定される。マイグレーションすると判定された場合、移行先TPPが決定され、処理がステップS16に進められる。一方、マイグレーションしないと判定された場合、処理がステップS15に進められる。
[ステップS15]シンプロビジョニング制御部142は、判定対象のTPVについて第2のマイグレーション判定処理を実行する。この処理では、より小さいチャンクサイズのTPPにマイグレーションするかが判定される。マイグレーションすると判定された場合、移行先TPPが決定され、処理がステップS16に進められる。一方、マイグレーションしないと判定された場合、処理がステップS12に進められる。
[ステップS16]シンプロビジョニング制御部142は、判定対象のTPVについて、決定された移行先TPPに対するマイグレーションを実行する。
[ステップS17]ステップS16でより小さいチャンクサイズのTPPにマイグレーションした場合(ステップS15でYesと判定された場合)、シンプロビジョニング制御部142は、マイグレーション済みのTPPについての0レクラメーション(Reclaimation)処理を実行する。後述するように、0レクラメーション処理は、0データだけを含む割り当て済みチャンクをTPVから解放する処理である。
図11は、第1のマイグレーション判定処理の手順を示すフローチャートの例である。この図11の処理は、図10のステップS14の処理に対応する。
[ステップS21]シンプロビジョニング制御部142は、判定対象のTPVに対応する移行元TPPの他に、前述の判定条件(1-1)~(1-4)をすべて満たすTPPがあるかを判定する。該当するTPPがある場合、処理がステップS22に進められ、該当するTPPがない場合、処理がステップS31に進められる。
[ステップS22]シンプロビジョニング制御部142は、ステップS21で判定条件(1-1)~(1-4)をすべて満たすと判定されたTPPの中から、チャンクサイズが移行元TPPのチャンクサイズに近いTPP(チャンクサイズが最小のTPP)を移行先候補TPPとして決定する。また、シンプロビジョニング制御部142は、全割当カウンタ134aおよび部分割当カウンタ134bの各カウント値を0にリセットする。
[ステップS23]シンプロビジョニング制御部142は、判定対象のTPVを移行先候補TPPのチャンクサイズごとに分割したチャンク区画の中から、先頭側の未選択のチャンク区画を選択する。
[ステップS24]シンプロビジョニング制御部142は、選択されたチャンク区画が、チャンク区画の全体に移行元TPPからチャンクが割り当てられている「全割当区画」であるかを判定する。チャンク区画が全割当区画である場合、処理がステップS25に進められ、チャンク区画が全割当区画でない場合、処理がステップS26に進められる。
[ステップS25]シンプロビジョニング制御部142は、全割当カウンタ134aをカウントアップする。
[ステップS26]シンプロビジョニング制御部142は、選択されたチャンク区画が、チャンク区画の一部にのみ移行元TPPからチャンクが割り当てられている「部分割当区画」であるかを判定する。チャンク区画が部分割当区画である場合、処理がステップS27に進められ、チャンク区画が部分割当区画でない場合、処理がステップS28に進められる。
[ステップS27]シンプロビジョニング制御部142は、部分割当カウンタ134bをカウントアップする。
[ステップS28]シンプロビジョニング制御部142は、判定対象のTPVにおけるすべてのチャンク区画を選択済みかを判定する。未選択のチャンク区画がある場合、処理がステップS23に進められ、先頭側の未選択のチャンク区画が選択される。一方、すべてのチャンク区画を選択済みの場合、処理がステップS29に進められる。
[ステップS29]シンプロビジョニング制御部142は、判定対象のTPVに含まれる、移行元TPPから1以上のチャンクが割り当てられているチャンク区画のうち、全割当区画の割合R1が所定の閾値以上かを判定する。割合R1は、全割当カウンタ134aおよび部分割当カウンタ134bの各カウンタ値を基に前述の式(1)を用いて算出される。割合R1が閾値以上の場合、処理がステップS30に進められ、割合R1が閾値未満の場合、処理がステップS31に進められる。
[ステップS30]シンプロビジョニング制御部142は、移行先候補TPPを移行先TPPに決定し、移行先TPPに対して判定対象のTPVをマイグレーションすると判定する。
[ステップS31]シンプロビジョニング制御部142は、判定対象のTPVをマイグレーションしないと判定する。
以上の処理では、マイグレーションした場合に、物理領域の容量効率の低下が少なく、かつ管理テーブルの記憶容量を削減できるような他のTPPを、移行先TPPとして決定できる。
図12は、大きいチャンクサイズのTPPに対するマイグレーション処理の手順を示すフローチャートの例である。この図12の処理は、図10のステップS14でYesと判定された場合(図11のステップS30でマイグレーションすると判定された場合)のステップS16の処理に対応する。
[ステップS41]シンプロビジョニング制御部142は、マイグレーション後のTPV(移行後TPV)に対応する割当情報テーブル133bを作成する。作成された割当情報テーブル133bには、新TPVの論理記憶領域を移行先TPPのチャンクサイズ単位に分割した分割領域ごとのレコードが登録される。なお、新TPVの容量は、マイグレーション前のTPV(移行前TPV)の容量と同じである。
[ステップS42]シンプロビジョニング制御部142は、移行前TPVの先頭側から、移行先TPPに対応する未選択のチャンク区画を1つ選択する。前述のように、チャンク区画とは、移行前TPVを移行先TPPのチャンクサイズごとに分割した区画であり、移行元TPPのチャンクサイズの倍数となる長さを有する。
[ステップS43]シンプロビジョニング制御部142は、選択されたチャンク区画に移行元TPPからチャンクが1つ以上割り当てられているかを判定する。チャンクが1つ以上割り当てられている場合、処理がステップS44に進められ、チャンクが1つも割り当てられていない場合、処理がステップS46に進められる。
[ステップS44]シンプロビジョニング制御部142は、移行後TPVにおけるチャンク区画に対応する領域に対して、移行先TPPからチャンクを割り当てる。このとき、移行先TPPに対応するマッピングテーブル133aに、割り当てられたチャンクと移行後TPVにおける割当先領域との関係を記述したレコードが登録される。また、ステップS41で作成された割当情報テーブル133bの該当レコードに、マッピングテーブル133aに登録されたレコードを示すテーブルアドレスが登録される。
[ステップS45]シンプロビジョニング制御部142は、移行前TPVにおける選択されたチャンク区画に割り当てられていたチャンクのデータを、ステップS44で移行先TPPから移行後TPVに割り当てられたチャンクにコピーする。このとき、コピーの前後でTPV内の論理アドレスが同じになるようにデータがコピーされる。
[ステップS46]シンプロビジョニング制御部142は、移行前TPVにおけるすべてのチャンク区画を選択済みかを判定する。未選択のチャンク区画がある場合、処理がステップS42に進められ、移行前TPVの先頭側から未選択のチャンク区画が選択される。一方、すべてのチャンク区画を選択済みの場合、処理がステップS47に進められる。
[ステップS47]シンプロビジョニング制御部142は、ホストサーバ200からのアクセス先を移行前TPVから移行後TPVに切り替える。そして、シンプロビジョニング制御部142は、移行前TPVを削除する。具体的には、シンプロビジョニング制御部142は、移行前TPVに移行元TPPから割り当てられていたチャンクを解放し、移行前TPVに対応するTPVの構成情報や割当情報テーブル133bのレコードを削除する。解放されたチャンクには、全体に0データが書き込まれる。
なお、ホストサーバ200から要求に応じたTPVのI/O処理を継続しながら上記のマイグレーション処理を実行することもできる。例えば、シンプロビジョニング制御部142は、ステップS42~S45の処理を実行するたびに、TPVにおける選択されたチャンク区画のアクセス先を移行前TPVから移行後TPVに切り替える。この場合、ステップS45でのデータコピーが完了した時点で、移行前TPVに割り当てられていたチャンクが解放されてもよい。
図13は、第2のマイグレーション判定処理の手順を示すフローチャートの例である。この図11の処理は、図10のステップS15の処理に対応する。
[ステップS51]シンプロビジョニング制御部142は、判定対象のTPVに対応する移行元TPPの他に、前述の判定条件(2-1)~(2-4)をすべて満たすTPPがあるかを判定する。該当するTPPがある場合、処理がステップS52に進められ、該当するTPPがない場合、処理がステップS59に進められる。
[ステップS52]シンプロビジョニング制御部142は、ステップS51で判定条件(2-1)~(2-4)をすべて満たすと判定されたTPPの中から、チャンクサイズが移行元TPPのチャンクサイズに近いTPP(チャンクサイズが最大のTPP)を移行先候補TPPとして決定する。また、シンプロビジョニング制御部142は、割当必要カウンタ134cのカウント値を0にリセットする。
[ステップS53]シンプロビジョニング制御部142は、判定対象のTPVを移行先候補TPPのチャンクサイズごとに分割した部分チャンク区画の中から、先頭側の未選択の部分チャンク区画を選択する。
[ステップS54]シンプロビジョニング制御部142は、選択された部分チャンク区画に移行元TPPからチャンクが割り当てられており、かつ、そのチャンクにおける部分チャンク区画に0データでないブロックが含まれている(有効データが含まれている)かを判定する。部分チャンク区画が上記条件に該当する場合、処理がステップS55に進められ、上記条件に該当しない場合、すなわちチャンク区画の全体が0データのブロックである場合には、処理がステップS56に進められる。
[ステップS55]シンプロビジョニング制御部142は、割当必要カウンタ134cをカウントアップする。
[ステップS56]シンプロビジョニング制御部142は、判定対象のTPVにおけるすべての部分チャンク区画を選択済みかを判定する。未選択の部分チャンク区画がある場合、処理がステップS53に進められ、先頭側の未選択の部分チャンク区画が選択される。一方、すべての部分チャンク区画を選択済みの場合、処理がステップS57に進められる。
[ステップS57]シンプロビジョニング制御部142は、判定対象のTPVへの割当済みチャンク数に対する、移行先TPPから割り当てられるチャンク数(割当必要カウンタ134cのカウント値)の比率R2を、前述の式(2)を用いて算出する。シンプロビジョニング制御部142は、算出された比率R2が所定の閾値以下かを判定する。比率R2が閾値以下の場合、処理がステップS58に進められ、比率R2が閾値より大きい場合、処理がステップS59に進められる。
[ステップS58]シンプロビジョニング制御部142は、移行先候補TPPを移行先TPPに決定し、移行先TPPに対して判定対象のTPVをマイグレーションすると判定する。
[ステップS59]シンプロビジョニング制御部142は、判定対象のTPVをマイグレーションしないと判定する。
以上の処理では、マイグレーションした場合に、管理テーブルの記憶容量の増加が少なく、かつ物理領域の容量効率を高めることができるような他のTPPを、移行先TPPとして決定できる。
図14は、小さいチャンクサイズのTPPに対するマイグレーション処理の手順を示すフローチャートの例である。この図14の処理は、図10のステップS15でYesと判定された場合のステップS16の処理に対応する。
[ステップS61]シンプロビジョニング制御部142は、マイグレーション後のTPV(移行後TPV)に対応する割当情報テーブル133bを作成する。作成された割当情報テーブル133bには、新TPVの論理記憶領域を移行先TPPのチャンクサイズ単位に分割した分割領域ごとのレコードが登録される。なお、新TPVの容量は、マイグレーション前のTPV(移行前TPV)の容量と同じである。
[ステップS62]シンプロビジョニング制御部142は、移行前TPVの先頭側から、移行先TPPに対応する未選択の部分チャンク区画を1つ選択する。前述のように、部分チャンク区画とは、移行前TPVを移行先TPPのチャンクサイズごとに分割した区画である。移行先TPPのチャンクサイズが、部分チャンク区画の長さの倍数となる。
[ステップS63]シンプロビジョニング制御部142は、選択された部分チャンク区画に移行元TPPからチャンクが割り当てられているかを判定する。チャンクが割り当てられている場合、処理がステップS64に進められ、チャンクが割り当てられていない場合、処理がステップS66に進められる。
[ステップS64]シンプロビジョニング制御部142は、移行後TPVにおける部分チャンク区画に対応する領域に対して、移行先TPPからチャンクを割り当てる。このとき、移行先TPPに対応するマッピングテーブル133aに、割り当てられたチャンクと移行後TPVにおける割当先領域との関係を記述したレコードが登録される。また、ステップS61で作成された割当情報テーブル133bの該当レコードに、マッピングテーブル133aに登録されたレコードを示すテーブルアドレスが登録される。
[ステップS65]シンプロビジョニング制御部142は、移行前TPVにおける選択された部分チャンク区画に割り当てられていたチャンクの領域のうち、選択された部分チャンク区画に対応する領域のデータを、ステップS64で移行先TPPから移行後TPVに割り当てられたチャンクにコピーする。
ここでは例として、処理の簡略化を目的として、該当領域内のデータがすべて0データであった場合にもコピーが実行される。ただし、該当領域内のデータがすべて0データである場合には、ステップS64,S65がスキップされて、チャンクの割り当てやデータコピーが実行されないようにしてもよい。この場合、後の図15に示す0レクラメーション処理は不要になる。
[ステップS66]シンプロビジョニング制御部142は、移行前TPVにおけるすべての部分チャンク区画を選択済みかを判定する。未選択の部分チャンク区画がある場合、処理がステップS62に進められ、移行前TPVの先頭側から未選択の部分チャンク区画が選択される。一方、すべての部分チャンク区画を選択済みの場合、処理がステップS67に進められる。
[ステップS67]シンプロビジョニング制御部142は、ホストサーバ200からのアクセス先を移行前TPVから移行後TPVに切り替える。そして、シンプロビジョニング制御部142は、移行前TPVを削除する。具体的には、シンプロビジョニング制御部142は、移行前TPVに移行元TPPから割り当てられていたチャンクを解放し、移行前TPVに対応するTPVの構成情報や割当情報テーブル133bのレコードを削除する。解放されたチャンクには、全体に0データが書き込まれる。
なお、図12の場合と同様に、ホストサーバ200から要求に応じたTPVのI/O処理を継続しながら上記のマイグレーション処理を実行することもできる。例えば、シンプロビジョニング制御部142は、ステップS62~S65の処理を実行するたびに、TPVにおける選択されたチャンク区画のアクセス先を移行前TPVから移行後TPVに切り替える。この場合、ステップS65でのチャンク内のすべてのデータ(0データを含む)がコピーされた時点で、移行前TPVに割り当てられていたチャンクが解放されてもよい。
図15は、0レクラメーション処理の手順を示すフローチャートである。この図15の処理は、図10のステップS17の処理に対応する。
図14のステップS65では、割当済みチャンクの領域のうち、部分チャンク区画に対応する領域のデータがすべて0データであった場合にも、移行元TPPと移行先TPPの各チャンク間でデータがそのままコピーされる。このため、図14のマイグレーション処理が完了した後の所定のタイミングで、移行先TPPから割り当てられたチャンクのうち、0データだけを含むチャンクを解放するための0レクラメーション処理が実行される。
[ステップS71]シンプロビジョニング制御部142は、マイグレーションされたTPVに割り当てられているチャンクを1つ選択する。
[ステップS72]シンプロビジョニング制御部142は、選択されたチャンクに記憶されたデータがすべて0データであるかを判定する。すべて0データの場合、処理がステップS73に進められ、0データ以外のデータ(有効データ)が含まれる場合、処理がステップS74に進められる。
[ステップS73]シンプロビジョニング制御部142は、割り当てられているチャンクを解放する。このとき、移行先TPPに対応するマッピングテーブル133aから、解放されたチャンクに対応するレコードが削除され、このレコードを参照する割当情報テーブル133bのレコードにおいて、テーブルアドレスが無効値に更新される。
なお、上記の各実施の形態に示した装置(例えば、ストレージ装置1、CM110、ホストサーバ200)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
1 ストレージ装置
2 記憶部
3 制御部
11,12 プール領域
11a,11b,12a,12b チャンク
21 仮想ボリューム
31~34 分割領域

Claims (6)

  1. 第1のサイズを有する第1のチャンクを単位として物理記憶領域を提供する第1のプール領域と、前記第1のサイズより小さい第2のサイズを有する第2のチャンクを単位として物理記憶領域を提供する第2のプール領域とが設定された記憶部と、
    前記第1のプール領域から、データが格納された領域にのみ前記第1のチャンクが割り当てられた仮想ボリュームを前記第2のサイズごとに分割した複数の第1の分割領域の中から、データが格納されている第1の分割領域の数を示す第1の計数値を計数し、
    前記仮想ボリュームに割り当てられている前記第1のチャンクの数に対する前記第1の計数値の比率または増加量が第1の閾値以下である場合に、前記仮想ボリュームに対して前記第1のチャンクの代わりに前記第2のプール領域から前記第2のチャンクを割り当て、
    前記仮想ボリュームに割り当てられていた前記第1のチャンクのデータを前記仮想ボリュームに割り当てられた前記第2のチャンクに移動させる、制御部と、
    を有するストレージ装置。
  2. 前記第1のサイズは、前記第2のサイズの倍数である、
    請求項1記載のストレージ装置。
  3. 前記記憶部には、前記第1のサイズより大きい第3のサイズを有する第3のチャンクを単位として物理記憶領域を提供する第3のプール領域がさらに設定され、
    前記制御部はさらに、
    前記仮想ボリュームを前記第3のサイズごとに分割した複数の第2の分割領域の中から、領域全体に前記第1のチャンクが割り当てられている第2の分割領域の数を示す第2の計数値と、領域の一部にのみ前記第1のチャンクが割り当てられている第2の分割領域の数を示す第3の計数値とを計数し、
    前記第2の計数値と前記第3の計数値との合計値に対する前記第2の計数値の割合が第2の閾値以上である場合に、前記仮想ボリュームに対して前記第1のチャンクの代わりに前記第3のプール領域から前記第3のチャンクを割り当て、
    前記仮想ボリュームに割り当てられていた前記第1のチャンクのデータを前記仮想ボリュームに割り当てられた前記第3のチャンクに移動させる、
    請求項1記載のストレージ装置。
  4. 前記第3のサイズは、前記第1のサイズの倍数である、
    請求項3記載のストレージ装置。
  5. コンピュータが、
    第1のサイズを有する第1のチャンクを単位として物理記憶領域を提供する第1のプール領域と、前記第1のサイズより小さい第2のサイズを有する第2のチャンクを単位として物理記憶領域を提供する第2のプール領域とが設定されている状態において、前記第1のプール領域から、データが格納された領域にのみ前記第1のチャンクが割り当てられた仮想ボリュームを前記第2のサイズごとに分割した複数の第1の分割領域の中から、データが格納されている第1の分割領域の数を示す第1の計数値を計数し、
    前記仮想ボリュームに割り当てられている前記第1のチャンクの数に対する前記第1の計数値の比率または増加量が第1の閾値以下である場合に、前記仮想ボリュームに対して前記第1のチャンクの代わりに前記第2のプール領域から前記第2のチャンクを割り当て、
    前記仮想ボリュームに割り当てられていた前記第1のチャンクのデータを前記仮想ボリュームに割り当てられた前記第2のチャンクに移動させる、
    ストレージ制御方法。
  6. コンピュータに、
    第1のサイズを有する第1のチャンクを単位として物理記憶領域を提供する第1のプール領域と、前記第1のサイズより小さい第2のサイズを有する第2のチャンクを単位として物理記憶領域を提供する第2のプール領域とが設定されている状態において、前記第1のプール領域から、データが格納された領域にのみ前記第1のチャンクが割り当てられた仮想ボリュームを前記第2のサイズごとに分割した複数の第1の分割領域の中から、データが格納されている第1の分割領域の数を示す第1の計数値を計数し、
    前記仮想ボリュームに割り当てられている前記第1のチャンクの数に対する前記第1の計数値の比率または増加量が第1の閾値以下である場合に、前記仮想ボリュームに対して前記第1のチャンクの代わりに前記第2のプール領域から前記第2のチャンクを割り当て、
    前記仮想ボリュームに割り当てられていた前記第1のチャンクのデータを前記仮想ボリュームに割り当てられた前記第2のチャンクに移動させる、
    処理を実行させるストレージ制御プログラム。
JP2022088441A 2022-05-31 2022-05-31 ストレージ装置、ストレージ制御方法およびストレージ制御プログラム Pending JP2023176257A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022088441A JP2023176257A (ja) 2022-05-31 2022-05-31 ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
US18/168,384 US20230384968A1 (en) 2022-05-31 2023-02-13 Storage device, storage control method, and computer-readable recording medium storing storage control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022088441A JP2023176257A (ja) 2022-05-31 2022-05-31 ストレージ装置、ストレージ制御方法およびストレージ制御プログラム

Publications (1)

Publication Number Publication Date
JP2023176257A true JP2023176257A (ja) 2023-12-13

Family

ID=88877208

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022088441A Pending JP2023176257A (ja) 2022-05-31 2022-05-31 ストレージ装置、ストレージ制御方法およびストレージ制御プログラム

Country Status (2)

Country Link
US (1) US20230384968A1 (ja)
JP (1) JP2023176257A (ja)

Also Published As

Publication number Publication date
US20230384968A1 (en) 2023-11-30

Similar Documents

Publication Publication Date Title
US9569130B2 (en) Storage system having a plurality of flash packages
US7536505B2 (en) Storage system and method for controlling block rearrangement
US7415573B2 (en) Storage system and storage control method
US11861204B2 (en) Storage system, memory management method, and management node
JP5530863B2 (ja) ストレージシステムのためのi/o変換方法及び装置
JP5410386B2 (ja) ストレージシステムのためのi/o変換方法及び装置
JP5073259B2 (ja) 仮想化システム及び領域割当て制御方法
US20060212495A1 (en) Method and system for storing data into a database
WO2015015550A1 (ja) 計算機システム及び制御方法
JP6678230B2 (ja) ストレージ装置
JP6569477B2 (ja) ストレージ制御装置、および制御プログラム
JPWO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
EP3671423B1 (en) Data access method and storage array
JP2017211920A (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
JP7197783B2 (ja) 情報処理システム、管理装置および管理プログラム
JP2016066142A (ja) ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
JP5594647B2 (ja) ストレージ装置及びその制御方法
WO2010119478A1 (en) Storage system and control method therefor
JP3127796B2 (ja) 情報記録再生装置
JP2023176257A (ja) ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
JPWO2016103356A1 (ja) 階層化ストレージシステム、ストレージコントローラ及びレプリケーション初期化方法
JP7482905B2 (ja) ストレージシステム、メモリ管理方法、および管理ノード
JP6805501B2 (ja) ストレージ装置
JP2022166986A (ja) ストレージ制御装置およびストレージ制御方法
KR20090113624A (ko) 솔리드 스테이트 드라이브 및 그 동작 제어방법