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

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

Info

Publication number
JP2021114264A
JP2021114264A JP2020007820A JP2020007820A JP2021114264A JP 2021114264 A JP2021114264 A JP 2021114264A JP 2020007820 A JP2020007820 A JP 2020007820A JP 2020007820 A JP2020007820 A JP 2020007820A JP 2021114264 A JP2021114264 A JP 2021114264A
Authority
JP
Japan
Prior art keywords
write
storage area
data
area
unit
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
JP2020007820A
Other languages
English (en)
Inventor
广宇 周
Guangyu Zhou
广宇 周
由嘉莉 土山
Yukari Tsuchiyama
由嘉莉 土山
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 JP2020007820A priority Critical patent/JP2021114264A/ja
Priority to US17/111,580 priority patent/US11474750B2/en
Publication of JP2021114264A publication Critical patent/JP2021114264A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】解放された物理記憶領域に対する0の書き込み処理の影響による、書き込み要求に対する応答性能の低下を抑制する。【解決手段】処理部13は、仮想記憶領域2に対するデータの書き込み要求を受信したときに一次キャッシュ11aの空き領域が足りないと判定された場合、一次キャッシュ11aからライトバック対象のデータを選択し、選択された対象データの仮想記憶領域2における書き込み先領域である第2の記憶領域に対して割り当てられている第2の単位記憶領域が、値「0」の上書き処理が未完了の領域である場合、対象データを二次キャッシュ12aに退避させて、一次キャッシュ11aにおいて対象データが記憶されていた第2の記憶領域を解放し、解放された第2の記憶領域に書き込みデータを書き込み、書き込み要求に対して応答する。【選択図】図1

Description

本発明は、ストレージ制御装置およびストレージ制御プログラムに関する。
シン・プロビジョニング(Thin Provisioning)は、ストレージ容量を仮想化することで、物理記憶領域を効率的に利用できるようにする技術である。この技術では、ユーザのアクセス対象として、仮想的な記憶領域である仮想ボリュームが生成される。そして、仮想ボリュームの記憶領域のうち、データが書き込まれた記憶領域にのみ、物理記憶領域が動的に割り当てられる。
シン・プロビジョニングのような記憶装置の仮想化に関しては、例えば、容量仮想化機能で提供される論理ボリュームが、キャッシュ領域が割り当てられるキャッシュボリュームとして使用されるストレージシステムが提案されている。また、各計算ノードのローカルキャッシュ領域に対応する仮想ローカルキャッシュ領域がI/O(Input/Output)ノードに設けられることで、I/Oノードが自ノードのキャッシュ領域とともに各計算ノードのローカルキャッシュ領域も一元的に管理できるようにした計算機システムが提案されている。
一方、SCSI(Small Computer System Interface)規格では、シン・プロビジョニングに関連する標準コマンドの1つとして、UNMAPコマンドがある。UNMAPコマンドは、仮想ボリュームに割り当てられている物理記憶領域の解放を要求するためのコマンドであり、例えば、仮想ボリュームを削除する際に発行される。
国際公開第2013/175529号 国際公開第2014/007249号
ところで、上記のUNMAPコマンドを受信したとき、指定された物理記憶領域を解放するだけでなく、解放された物理記憶領域に値「0」を書き込む「0ライト処理」を実行することも考えられている。0ライト処理の実行により、解放された物理記憶領域に格納されていたデータを確実に消去して、データの漏洩を防止できる。
また、UNMAPコマンドを受信した際、物理記憶領域の解放だけでなく、解放された物理記憶領域に対する0ライト処理を実行した後に、UNMAPコマンドに対する応答を行った場合には、その応答時間が長くなってしまう。そこで、UNMAPコマンドを受信した時点では、指定された物理記憶領域の解放のみを実行してUNMAPコマンドに対して応答し、その後の非同期のタイミングで、解放された物理記憶領域に対して0ライト処理を実行する方法が考えられる。しかし、この方法では以下のような問題がある。
例えば、UNMAPコマンドにより仮想ボリュームが消去された場合には、仮想ボリューム内のデータが存在する領域に物理記憶領域から割り当てられていた大量の単位記憶領域が、仮想ボリュームから解放され、なおかつ0ライト処理の実行対象となる。このため、これらのすべての単位記憶領域に対する0ライト処理の実行には、ある程度長い時間がかかる。
一方、仮想ボリュームの消去直後に、同じ物理記憶領域を共有している別の仮想ボリュームに対して大量のデータの書き込みが要求されたとする。書き込みが要求されたこれらのデータは、一旦キャッシュメモリに格納されるが、その時点で仮想ボリュームにおける各データの書き込み先領域に対して、上記の物理記憶領域から未割り当ての単位記憶領域が割り当てられる。ただし、この時点では、単位記憶領域の割り当てが予約されるだけであり、単位記憶領域に対してデータは格納されない。
このような状況では、仮想ボリュームにおけるこれらの大量のデータの書き込み先領域に対して、単位記憶領域が多数割り当てられることになる。このとき、上記のように0ライト処理の対象となった単位記憶領域の中には、0ライト処理が未完了のものが多数存在し得る。そのため、新たなデータの書き込み先領域に割り当てられる単位記憶領域の中には、0ライト処理が未完了の単位記憶領域が多数含まれ得る。
このような状況が続くと、やがてキャッシュメモリの容量が枯渇し、さらに新たなデータの書き込み要求を受け付けるためには、キャッシュメモリ内の古いデータをライトバックする必要が生じる。上記のように、書き込みが要求されたデータの書き込み先領域には、キャッシュメモリへのデータの格納時点で単位記憶領域が割り当てられる(予約される)が、そのデータをライトバックする際に、割り当てられた単位記憶領域に対してデータが書き込まれる。
しかし、割り当てられた単位記憶領域が、0ライト処理が未完了の単位記憶領域であった場合、0ライト処理が実行されるまで、その単位記憶領域にはキャッシュメモリ上のデータをライトバックできない。この場合、ライトバックを実行してキャッシュメモリに空き領域を確保し、書き込みが要求された新たなデータを確保された空き領域に書き込むまでに、長い時間がかかってしまう。その結果、書き込み要求に対する応答時間が長くなってしまう。
上記のように0ライト処理が未完了の単位記憶領域が多数存在する場合、キャッシュメモリ上のデータをライトバックする際に、ライトバック先の単位記憶領域が、0ライト処理が未完了の領域であるというケースが高い確率で発生する。そのため、仮想ボリュームへの書き込み要求に対する応答性能が低下し、場合によっては書き込み要求の受け付けが不可能になってしまう。
1つの側面では、本発明は、解放された物理記憶領域に対する0の書き込み処理の影響による、書き込み要求に対する応答性能の低下を抑制可能なストレージ制御装置およびストレージ制御プログラムを提供することを目的とする。
1つの案では、一次キャッシュとして使用される第1の記憶部と、二次キャッシュとして使用される第2の記憶部と、次のような処理を実行する処理部とを有するストレージ制御装置が提供される。処理部は、仮想記憶領域のうちの第1の記憶領域についての解放要求を受信すると、物理記憶領域に含まれる単位記憶領域のうち第1の記憶領域に割り当てられている1以上の第1の単位記憶領域を、第1の記憶領域から解放して未割り当て状態として管理し、解放要求に対して応答し、第1の単位記憶領域の解放とは非同期のタイミングで、第1の単位記憶領域のそれぞれに対して0を書き込む上書き処理を実行し、仮想記憶領域に対するデータの書き込み要求を受信するたびに、書き込みが要求された書き込みデータを一次キャッシュに格納して書き込み要求に対して応答するとともに、仮想記憶領域における書き込みデータの書き込み先領域に、物理記憶領域に含まれる単位記憶領域のうち未割り当て状態の単位記憶領域を割り当てる書き込み処理を実行する。また、書き込み処理では、処理部は、書き込み要求を受信したときに一次キャッシュの空き領域が足りないと判定された場合、一次キャッシュからライトバック対象のデータを選択し、選択されたデータの仮想記憶領域における書き込み先領域である第2の記憶領域に対して割り当てられている第2の単位記憶領域が、上書き処理が未完了の領域である場合、選択されたデータを二次キャッシュに退避させて、一次キャッシュにおいて選択されたデータが記憶されていた第2の記憶領域を解放し、解放された第2の記憶領域に書き込みデータを書き込み、書き込み要求に対して応答する。
また、1つの案では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
1つの側面では、解放された物理記憶領域に対する0の書き込み処理の影響による、書き込み要求に対する応答性能の低下を抑制できる。
第1の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。 第2の実施の形態に係るストレージシステムの構成例を示す図である。 CMが備える処理機能の構成例を示す図である。 仮想ボリュームに対する物理領域の割り当てについて説明するための図である。 仮想ボリュームからのデータ読み出しが要求された場合の制御手順の例を示す第1の図である。 仮想ボリュームからのデータ読み出しが要求された場合の制御手順の例を示す第2の図である。 UNMAPコマンドに応じてチャンクの解放および0ライト処理について説明するための図である。 UNMAP要求受信処理の手順を示すフローチャートの例である。 0ライト処理の手順を示すフローチャートの例である。 新たなボリュームが生成された場合の処理を示す図である。 0ライト処理と仮想ボリュームに対する書き込み処理とが並列実行されている場合の処理の比較例を示す図である。 仮想ボリュームに対する書き込み処理の比較例を示すフローチャートである。 第2の実施の形態における書き込み制御を示す図である。 二次キャッシュ管理テーブルの構成例を示す図である。 第2の実施の形態における、仮想ボリュームに対する書き込み処理例を示すフローチャートである。 ライトバック対象データの二次キャッシュへの退避処理の例を示すフローチャートである。 二次キャッシュに退避された退避データのライトバック処理例を示すフローチャートである。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。図1に示すストレージ制御装置10は、第1の記憶部11、第2の記憶部12および処理部13を備える。
このストレージ制御装置10は、物理記憶領域1に対してアクセス可能になっている。物理記憶領域1は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)などの1台以上の記憶装置によって形成される。ストレージ制御装置10は、物理記憶領域1に含まれる単位記憶領域を動的に割り当てることで実現される仮想記憶領域2を生成し、図示しないホスト装置から仮想記憶領域2に対するアクセス要求を受け付ける。すなわち、仮想記憶領域2には、データが書き込まれた領域にのみ、物理記憶領域1から単位記憶領域が割り当てられる。なお、仮想記憶領域2は、例えば、1以上の仮想ボリュームを含んでもよい。
第1の記憶部11は、一次キャッシュ11aとして使用される。第2の記憶部12は、二次キャッシュ12aとして使用される。なお、第1の記憶部11および第2の記憶部12は、ストレージ制御装置10が備える記憶装置によって実現される。
処理部13は、例えば、ストレージ制御装置10が備えるプロセッサとして実現される。処理部13は、一次キャッシュ11aと二次キャッシュ12aを用いて、仮想記憶領域2に対するアクセスを制御する。なお、二次キャッシュ12aは、例えば、リードキャッシュとして用いられる。
以下、処理部13の処理について詳しく説明する。
処理部13は、仮想記憶領域2に割り当てられている物理記憶領域1の単位記憶領域を解放するための解放要求を受け付けることができる。解放要求は、例えば、仮想記憶領域2に含まれる仮想ボリュームを削除する際に発行される。なお、解放要求は、例えば、SCSIで規定されたUNMAPコマンドである。
処理部13は、例えば、仮想記憶領域2の一部の記憶領域(第1の記憶領域とする)についての解放要求を受信すると(ステップS1a)、物理記憶領域1に含まれる単位記憶領域のうち、第1の記憶領域に割り当てられている1以上の単位記憶領域(それぞれ第1の単位記憶領域とする)を、第1の記憶領域から解放する(ステップS1b)。これにより、解放された第1の単位記憶領域は、未割り当て状態として管理される。そして、処理部13は、受信した解放要求に対して応答する(ステップS1c)。
また、処理部13は、上記の第1の単位記憶領域の解放とは非同期のタイミングで、第1の単位記憶領域のそれぞれに対して値「0」を書き込む上書き処理を実行する(ステップS1d)。この上書き処理が実行されることで、第1の単位記憶領域に格納されていたデータの内容を確実に消去することができる。
以上の処理によれば、解放要求が受信された際には、単位記憶領域の解放のみが行われて、解放要求に対する応答が行われる。そして、その後の非同期のタイミングで、解放された単位記憶領域に対する値「0」の上書き処理が実行される。これにより、単位記憶領域の解放に加えて値「0」の上書き処理を実行してから応答する場合と比較して、解放要求に対する応答時間を短縮できる。
また、仮想記憶領域2に対する書き込み処理は、次のように行われる。処理部13は、仮想記憶領域2に対するデータの書き込み要求を受信するたびに(ステップS2a)、次のステップS2cの処理を実行する。ステップS2cにおいて、処理部13は、書き込みが要求された書き込みデータを一次キャッシュ11aに格納し、書き込み要求に対して応答する。さらにステップS2cでは、処理部13は、仮想記憶領域2における書き込みデータの書き込み先領域に、物理記憶領域1に含まれる単位記憶領域のうち、未割り当て状態の単位記憶領域を割り当てる。ただし、この段階では、書き込みデータの書き込み先領域に対しては、単位記憶領域の割り当てが予約されるのみであり、単位記憶領域に対する書き込みデータの格納は行われない。
ここで、上記の書き込み処理では、実際には、書き込み要求を受信した際に、書き込みデータを格納するための空き領域が一次キャッシュ11aにあるかが判定される(ステップS2b)。そして、空き領域があると判定された場合(ステップS2b「Yes」)にはステップS2cが実行されるものの、空き領域がないと判定された場合(ステップS2b「No」)には、次のような処理が実行される。
処理部13は、一次キャッシュ11aに記録されたデータの中から、一次キャッシュ11aに空き領域を生成するためのライトバック対象のデータを選択する(ステップS2d)。例えば、最終アクセス時間が最も早いデータがライトバック対象として選択される。処理部13は、物理記憶領域1に含まれる単位記憶領域の中から、選択されたライトバック対象データの仮想記憶領域2における書き込み先領域(第2の記憶領域とする)に対して割り当てられている単位記憶領域(第2の単位記憶領域とする)を特定する。この第2の単位記憶領域は、ライトバック対象データが一次キャッシュ11aに格納される際に物理記憶領域1内の未割り当ての単位記憶領域の中から選択されて割り当てられたものである。
処理部13は、特定された第2の単位記憶領域が、値「0」の上書き処理が未完了の領域であるかを判定する(ステップS2e)。この判定は、第2の単位記憶領域が、解放要求に応じてステップS1bで仮想記憶領域2から解放されて未割り当て状態になったものの、ステップS1dの上書き処理が完了していない単位記憶領域である可能性があることから行われる。
ここで、ステップS2eで「No」と判定された場合、すなわち、第2の単位記憶領域が、上書き処理を実行済みの領域か、または上書き処理の対象外の領域である場合には、処理部13は、ライトバック対象データを第2の単位記憶領域に書き込む(ライトバックする)(ステップS2f)。この場合、一次キャッシュ11aからライトバック対象データの領域が解放されるので、処理部13は、解放された一次キャッシュ11a内の領域に書き込みデータを格納する(ステップS2c)。
一方、第2の単位記憶領域が、上書き処理が未完了の領域であった場合(ステップS2e「Yes」)、第2の単位記憶領域に対して新たなデータを書き込むことはできない。この場合、処理部13は、ライトバック対象データを一次キャッシュ11aから二次キャッシュ12aに退避させる(ステップS2g)。これにより、一次キャッシュ11aからライトバック対象データの領域が解放されるので、処理部13は、解放された一次キャッシュ11a内の領域に書き込みデータを格納し、書き込み要求に対して応答する(ステップS2c)。
ここで、ステップS2eで「Yes」と判定された場合の処理としては、第2の単位記憶領域に対する値「0」の上書き処理が完了するまで待ち、上書き処理が完了した後にライトバック対象データを第2の単位記憶領域にライトバックする方法が考えられる。このような方法と比較して、処理部13による上記処理によれば、ステップS2eで「Yes」と判定された場合に、一次キャッシュ11aに空き領域を確保するまでの時間を短縮できる。その結果、ステップS2aで受信した書き込み要求に対して短時間で応答できるようになる。したがって、解放された単位記憶領域に対する値「0」の上書き処理の影響による、書き込み要求に対する応答性能の低下を抑制できる。
なお、二次キャッシュ12aに退避されたライトバック対象データについては、例えば、次のような処理が行われればよい。処理部13は、二次キャッシュ12aへの退避とは非同期のタイミングで、ライトバック先の第2の単位記憶領域に対する値「0」の上書き処理が完了したかをチェックする。そして、上書き処理が完了した場合に、処理部13は、ライトバック対象データを第2の単位記憶領域にライトバックする。
ここで、例えば、ステップS1aにおいて、仮想ボリュームの削除の際に解放要求が受信された場合、ステップS1bでは多数の単位記憶領域が解放され得る。その場合、物理記憶領域1内の未割り当ての単位記憶領域の中に、値「0」の上書き処理が未完了の単位記憶領域が多数存在し得る。
一方、仮想記憶領域2に対して大量のデータの書き込みが要求されると、書き込みデータに対して未割り当ての単位記憶領域が多数割り当てられる。このとき、上記のように上書き処理が未完了の単位記憶領域が多数存在している場合には、新たな書き込みデータに対して上書き処理が未完了の単位記憶領域が多数割り当てられる可能性がある。
このような状況が続くと、やがて一次キャッシュ11aの容量が枯渇し、さらに新たなデータの書き込み要求を受け付けるためには、一次キャッシュ11a内の古いデータをライトバックする必要が生じる。しかし、ライトバック対象データのライトバック先の単位記憶領域としては、値「0」の上書き処理が未完了の単位記憶領域が多数含まれ得る。このため、ステップS2eで「Yes」と判定される確率が高くなり、仮に上書き処理の完了を待ってから単位記憶領域にライトバックしようとすると、書き込み要求に対する応答時間が大幅に遅延してしまう。
本実施の形態における処理部13の上記処理によれば、このようなケースでも、書き込み要求に対する応答遅延時間を短縮でき、応答性能の低下を抑制できる。
〔第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は、記憶装置としてHDD121,122,123,・・・が搭載されたディスクアレイ装置である。
ホストサーバ200は、例えば業務処理などの各種の処理を実行するサーバ装置である。なお、CM110にはホストサーバ200が複数台接続されていてもよい。
ここで、図2を用いてCM110のハードウェア構成例を説明する。CM110は、プロセッサ111、RAM(Random Access Memory)112、SSD113、CA(Channel Adapter)114およびDI(Drive Interface)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)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM112には、プロセッサ111による処理に必要な各種データが格納される。例えば、RAM112には、ホストサーバ200からの要求に応じたドライブ部120へのアクセス制御の際に用いられる一次キャッシュの領域が確保され、書き込みデータや読み出しデータが一次キャッシュに一時的に格納される。
SSD113は、CM110の補助記憶装置として使用される。SSD113には、OSプログラム、アプリケーションプログラム、および各種データが格納される。また、SSD113には、ホストサーバ200からの要求に応じてドライブ部120へのアクセス制御の際に用いられる二次キャッシュの領域が確保される。
CA114は、ホストサーバ200と通信するための通信インタフェースである。DI115は、ドライブ部120と通信するための通信インタフェースである。DI115は、例えば、SAS(Serial Attached SCSI)インタフェースである。
以上のハードウェア構成によってCM110の処理機能が実現される。
図3は、CMが備える処理機能の構成例を示す図である。図3に示すように、CM110は、一次キャッシュ131、二次キャッシュ132、I/O制御部141、UNMAP制御部142および記憶部150を備える。
CM110は、ドライブ部120に搭載されたHDDによる物理領域を用いて、仮想ボリューム(論理ボリューム)を生成する。そして、CM110は、ホストサーバ200から仮想ボリュームに対するアクセスを受け付ける。一次キャッシュ131および二次キャッシュ132は、ホストサーバ200からの要求に応じた仮想ボリュームに対するI/O処理の際に、キャッシュ領域として利用される。一次キャッシュ131の記憶領域はRAM112上に確保され、二次キャッシュ132の記憶領域はSSD113上に確保される。
I/O制御部141およびUNMAP制御部142の処理は、例えば、CM110が備えるプロセッサ111が所定のプログラムを実行することで実現される。
I/O制御部141は、ホストサーバ200からの要求に応じて、一次キャッシュ131および二次キャッシュ132を用いて、仮想ボリュームに対するI/O処理を制御する。なお、仮想ボリュームに対する物理領域の割り当てはシン・プロビジョニングにより行われ、仮想ボリュームの領域のうちデータが書き込まれた領域に対してのみ、物理領域が割り当てられる。
UNMAP制御部142は、ホストサーバ200からUNMAPコマンドを受信する。UNMAPコマンドは、仮想ボリュームに割り当てられている物理領域の解放を要求するためのコマンドであり、SCSI規格における標準コマンドの1つである。
本実施の形態において、UNMAP制御部142は、UNMAPコマンドを受信すると、該当する論理領域に割り当てられている物理領域を解放するだけでなく、その物理領域に値「0」を書き込む「0ライト処理」を実行する。これにより、解放された物理領域に記録されていたデータを確実に消去し、データの漏洩を防止する。
ただし、UNMAP制御部142は、UNMAPコマンドを受信した時点では、物理領域の解放のみを行って、UNMAPの完了応答をホストサーバ200に送信する。そして、UMMAP制御部142は、その後の非同期のタイミングで、解放された物理領域に対する0ライト処理を実行する。物理領域は、解放される(論理領域に対する割り当てが解除される)だけでなく、0ライト処理が完了することで、その後に新たに割り当てられる論理領域のデータを書き込み可能な状態となる。
記憶部150は、RAM112やSSD113など、CM110が備える記憶装置の記憶領域によって実現される。記憶部150には、I/O制御部141やUNMAP制御部142の処理で利用される各種の管理情報が記憶される。例えば、記憶部150には、一次キャッシュ管理テーブル151、二次キャッシュ管理テーブル152、プール管理テーブル153、ボリューム管理テーブル154およびビットマップ155が記憶される。
一次キャッシュ管理テーブル151は、一次キャッシュ131に格納されているデータを管理するための管理情報を保持する。例えば、一次キャッシュ管理テーブル151には、一次キャッシュ131内のページごとに、格納されているデータについての仮想ボリューム上の位置情報や、そのデータがダーティデータであるか否かを示すフラグ情報などが登録される。
二次キャッシュ管理テーブル152は、二次キャッシュ132に格納されているデータを管理するための管理情報を保持する。例えば、二次キャッシュ管理テーブル152には、二次キャッシュ132内のページごとに、格納されているデータについての仮想ボリューム上の位置情報や、そのデータの種別が登録される。
プール管理テーブル153は、ストレージプールに関する管理情報を保持する。ストレージプールとは、ドライブ部120に搭載された複数のHDDを用いて実現されて、1以上の仮想ボリュームによって共用される物理記憶領域である。プール管理テーブル153には、例えば、ストレージプールの構成情報(属しているHDDの識別情報など)や、ストレージプールに含まれる割り当て済みチャンクおよび未割り当てチャンクの情報などが登録される。なお、チャンクとは、仮想ボリュームに対する割り当て単位となる一定サイズの記憶領域である。
ボリューム管理テーブル154は、仮想ボリュームに関する管理情報を保持する。ボリューム管理テーブル154には、例えば、仮想ボリュームの構成情報(ボリュームサイズなど)や、仮想ボリューム内の単位記憶領域に割り当てられているチャンクの識別情報などが登録される。
ビットマップ155は、0ライト処理を管理するための管理情報である。ビットマップ155は、ストレージプールごとに用意され、ストレージプール内の各チャンクについて、0ライト処理の実行対象領域か否かを示すビット値を保持する。具体的には、ビットマップ155は、ストレージプール内のチャンクごとのビットを有する。各ビットの初期値は「0」であり、チャンクのUNMAPが要求されて0ライト処理の実行対象領域になると、そのチャンクに対応するビット値が「1」に更新され、0ライト処理が完了するとビット値が「0」に戻される。
次に、仮想ボリュームに対するI/O処理について説明する。
まず、図4は、仮想ボリュームに対する物理領域の割り当てについて説明するための図である。前述のように、CM110では、ドライブ部120に搭載されたHDDによる物理領域を用いて、仮想ボリューム(論理ボリューム)が生成される。そして、CM110のI/O制御部141は、ホストサーバ200から仮想ボリュームに対するアクセスを受け付ける。また、仮想ボリュームに対する物理領域の割り当てはシン・プロビジョニングにより行われ、仮想ボリュームの領域のうちデータが書き込まれた領域に対してのみ、物理領域が割り当てられる。
図4の例では、ドライブ部120のHDD121a,122a,123a,・・・によってストレージプールPL1が生成され、ドライブ部120のHDD121b,122b,123b,・・・によってストレージプールPL2が生成されている。ストレージプールPL1,PL2は、それぞれ1以上の仮想ボリュームによって共有される物理記憶領域である。ストレージプールPL1,PL2の物理記憶領域は、一定サイズのチャンク単位で仮想ボリュームに割り当てられる。
なお、ストレージプールPL1,PL2は、実際には、それぞれ1以上のRAID(Redundant Array of Inexpensive Disks)グループによって実現される。この場合、ストレージプールPL1,PL2のそれぞれにおいて、データが複数のHDDに冗長化されて記録される。
図4では例として、ストレージプールPL1を利用して生成される仮想ボリュームとして、ボリュームLU1〜LU3が設定されている。この場合、ボリュームLU1〜LU3に対してホストサーバ200からデータが書き込まれる際に、そのデータ容量分のチャンクがストレージプールPL1から書き込み先ボリュームに割り当てられ、割り当てられたチャンクに対してデータが格納される。
また、図4では例として、ストレージプールPL2を利用して生成される仮想ボリュームとして、ボリュームLU11〜LU13が設定されている。この場合、ボリュームLU11〜LU13に対してホストサーバ200からデータが書き込まれる際に、そのデータ容量分のチャンクがストレージプールPL2から書き込み先ボリュームに割り当てられ、割り当てられたチャンクに対してデータが格納される。
なお、ボリュームLU1〜LU3,LU11〜LU13に対するアクセスは、同一のホストサーバ200から行われても、それぞれ異なるホストサーバ200から行われてもよい。例えば、ボリュームLU1〜LU3に対するアクセスはある1つのホストサーバ200から行われ、ボリュームLU11〜LU13に対するアクセスは別の1つのホストサーバ200から行われるようにしてもよい。
また、ストレージプールPL1,PL2のいずれかは、図1に示した物理記憶領域1の一例である。さらに、ストレージプールPL1,PL2のいずれかを共有して実現される仮想ボリュームの全体が、図1に示した仮想記憶領域2の一例である。
次に、図5、図6を用いて、一次キャッシュおよび二次キャッシュを用いた仮想ボリュームに対するI/O処理の基本的な手順について説明する。図5、図6では例として、ストレージプールPL1を利用して生成される仮想ボリュームからのデータ読み出しが要求された場合について説明する。
図5は、仮想ボリュームからのデータ読み出しが要求された場合の制御手順の例を示す第1の図である。
本実施の形態において、CM110のI/O制御部141は、一次キャッシュ131と二次キャッシュ132を用いて、ホストサーバ200からの要求に応じた仮想ボリュームに対するI/O処理を制御する。図5および次の図6に示すように、二次キャッシュ132は基本的に、読み出し用のリードキャッシュとして用いられる。以下、リードキャッシュの領域に格納されるデータを「リードキャッシュデータ」と記載する。
図5において、ホストサーバ200は、仮想ボリューム上のデータD1の読み出しをCM110に要求する(ステップS11)。I/O制御部141は、まず、データD1が一次キャッシュ131に存在するかを判定する。
ここで、図示しないが、データD1が一次キャッシュ131に存在する、すなわち一次キャッシュヒットの場合、I/O制御部141は、データD1を一次キャッシュ131から読み出してホストサーバ200に送信する。これにより、読み出し要求に対する応答時間が短縮される。一方、図5では、データD1が一次キャッシュ131に存在していなかった、すなわち一次キャッシュミスであったとする(ステップS12)。この場合、I/O制御部141は次に、データD1が二次キャッシュ132に存在するかを判定する。
図5では、データD1が二次キャッシュ132に存在していた、すなわち二次キャッシュヒットであったとする(ステップS13)。この場合、I/O制御部141は、二次キャッシュ132からデータD1を読み出して一次キャッシュ131にコピー(ステージング)し(ステップS14)、さらに一次キャッシュ131からデータD1を読み出してホストサーバ200に送信する(ステップS15)。
二次キャッシュ132が実装されるSSDは、仮想ボリュームが割り当てられたストレージプールPL1を実現するHDDよりアクセス性能が高い。そのため、図5のように、一次キャッシュミスの場合でも二次キャッシュヒットとなれば二次キャッシュ132からデータD1を読み出すことで、データD1をストレージプールPL1内のHDDから読み出す場合よりもホストサーバ200に対する読み出し応答時間を短縮できる。
なお、ステップS14の実行直前において一次キャッシュ131の空き領域がない場合、I/O制御部141は、例えば、一次キャッシュ131のデータのうち最終アクセス時刻が最も早いデータを一次キャッシュ131から削除する。そして、I/O制御部141は、一次キャッシュ131に生じた空き領域にデータD1をコピーする。
図6は、仮想ボリュームからのデータ読み出しが要求された場合の制御手順の例を示す第2の図である。図6において、ホストサーバ200は、仮想ボリューム上のデータD2の読み出しをCM110に要求する(ステップS21)。I/O制御部141は、図5の場合と同様に、データD2が一次キャッシュ131および二次キャッシュ132に存在するかを判定する。
図6では、一次キャッシュミス(ステップS22)、かつ二次キャッシュミス(ステップS23)であったとする。この場合、I/O制御部141は、ストレージプールPL1に含まれるHDDからデータD2を読み出し、一次キャッシュ131にコピー(ステージング)する(ステップS24)。そして、I/O制御部141は、一次キャッシュ131からデータD2を読み出してホストサーバ200に送信する(ステップS25)。
このとき、I/O制御部141は、データD2のブロックが二次キャッシュミスしたことを所定の管理テーブル(図示せず)に記録しておく。そして、I/O制御部141は、例えば、その後の非同期のタイミングで、管理テーブルに基づいてデータD2をストレージプールPL1に含まれるHDDから読み出し、二次キャッシュ132にコピー(ステージング)する(ステップS26)。これにより、HDDから二次キャッシュ132へのデータD2のコピー(ステージング)は、ホストサーバ200からのI/O要求の受信処理およびその応答処理の実行中に、バックグラウンドで実行されることになる。
以上のように、一次キャッシュミスかつ二次キャッシュミスの場合には、読み出しが要求されたデータD2は一次キャッシュ131に配置される。これにより、その後に同じデータD2の読み出しが要求された場合にも、I/O制御部141は、データD2を一次キャッシュ131から短時間で読み出し、ホストサーバ200に送信できる。
次に、UNMAPコマンドに応じた処理について説明する。
図7は、UNMAPコマンドに応じてチャンクの解放および0ライト処理について説明するための図である。本実施の形態では、ホストサーバ200は、仮想ボリュームの消去時においてUNMAPコマンドを送信して、仮想ボリュームに割り当てられていた物理領域(チャンク)の解放を要求できるようになっている。CM110のUNMAP制御部142は、これらのチャンクを解放するとともに、これらのチャンクに値「0」を書き込む0ライト処理を実行する。ただし、0ライト処理は、UNMAPコマンドの受信とは非同期のタイミングで実行される。
図7では例として、ボリュームLU1の消去のためにホストサーバ200からUNMAPコマンドが送信された場合を示す。CM110のUNMAP制御部142は、UNMAPコマンドを受信すると(ステップS31)、ボリュームLU1内のデータが格納されている領域(データ領域)にストレージプールPL1から割り当てられていたチャンクを解放する(ステップS32)。このチャンク解放により、プール管理テーブル153では、これらのチャンクが「解放済みチャンク(未割り当てチャンク)」として管理される。これとともに、ストレージプールPL1に対応するビットマップ155では、これらのチャンクに対応するビット値が「1」に更新される。UNMAP制御部142は、以上の処理が完了すると、UNMAPが正常に完了したことを示す完了応答をホストサーバ200に送信する(ステップS33)。
UNMAP制御部142は、その後の非同期のタイミングで、ビットマップ155に基づき、解放された各チャンクに対して値「0」を書き込む(ステップS34)。これにより、解放された各チャンクに格納されていたデータが確実に消去される。また、これらの各チャンクは、0ライト処理が完了した時点で、新たなデータを書き込み可能な状態となる。
このような処理により、UNMAP制御部142は、ホストサーバ200からのUNMAP要求に対する高速な応答を可能にしつつ、解放されたチャンクのデータを確実に消去して、データの漏えいを防ぎ、安全な仮想ボリュームの運用を可能にする。
図8は、UNMAP要求受信処理の手順を示すフローチャートの例である。
[ステップS101]UNMAP制御部142は、ホストサーバ200からUNMAPコマンドを受信する。このとき、UNMAP対象の仮想ボリュームを示す識別情報が指定される。
[ステップS102]UNMAP制御部142は、UNMAP対象の仮想ボリュームに割り当てられているチャンクの解放処理を実行する。具体的には、UNMAP制御部142は、ボリューム管理テーブル154を参照して、UNMAP対象の仮想ボリュームに割り当てられているチャンクを特定する。UNMAP制御部142は、特定されたすべてのチャンクが解放済み(未割り当て)であることを示すようにプール管理テーブル153を更新し、さらに、ボリューム管理テーブル154からUNMAP対象の仮想ボリュームに関する情報を消去する。
このステップS102で解放されたチャンクは、新たな論理記憶領域に割り当てることが可能な状態になる。ただし、このチャンクは、0ライト処理が未完了であるので、割り当てられた論理記憶領域のデータを書き込むことは不可能な状態となる。すなわち、この段階では、解放されたチャンクは新たな論理記憶領域に対して割り当てられるチャンクとして予約可能な状態となる。
[ステップS103]UNMAP制御部142は、ステップS102で解放されたチャンクが属するストレージプールに対応するビットマップ155を特定し、特定されたビットマップ155のビット値のうち、解放された各チャンクに対応するビット値を「1」に更新する。これにより、解放されたチャンクの位置がビットマップ155に記録される。
[ステップS104]UNMAP制御部142は、UNMAPが正常に完了したことを示す完了応答をホストサーバ200に送信する。
図9は、0ライト処理の手順を示すフローチャートの例である。図9の処理は、例えば、一定時間ごとに繰り返し実行される。
[ステップS111]UNMAP制御部142は、ビットマップ155を参照し、値が「1」のビットが1つでもあるかを判定する。UNMAP制御部142は、「1」のビットが1つ以上ある場合、処理をステップS112に進め、「1」のビットが1つもない場合、処理を終了する。
[ステップS112]UNMAP制御部142は、ビットマップ155から値が「1」のビットを1つ選択し、そのビットに対応するチャンクに値「0」を書き込む。値「0」は、チャンクのビット列における先頭から終端までの領域全体に書き込まれる。
[ステップS113]UNMAP制御部142は、ビットマップ155のビットのうち、ステップS112で選択されたビットの値を「0」に更新する。
このように、UNMAP制御部142は、ビットマップ155を定期的にチェックし、値「1」のビットに対応するチャンクに対して0ライト処理を実行する。これにより、UNMAPコマンド受信処理とは非同期で0ライト処理が実行される。
次に、図7のようにボリュームLU1が消去された後に新たなボリュームが生成された場合の処理について説明する。
図10は、新たなボリュームが生成された場合の処理を示す図である。図10では例として、図7のようにボリュームLU1が消去され、ボリュームLU1に割り当てられていたチャンクに対する0ライト処理が実行中の状態で、新たなボリュームLU4が生成されたとする。新たなボリュームLU4には、ストレージプールPL1からチャンクが割り当てられるものとする。
図7のようにボリューム単位でUNMAPが要求された場合、大量のチャンクが一度に解放され得る。この場合、ストレージプールPL1内の大量のチャンクについて0ライト処理が実行されることになる。このため、新たなボリュームLU4が生成されたとき、ストレージプールPL1には0ライト処理が未完了のチャンクが大量に残っている可能性がある。
図10では、ストレージプールPL1において、ボリュームLU1から解放されたチャンクの中に、0ライト処理が未完了のチャンクと0ライト処理を実行済みのチャンクとが混在している様子を示している。ここで、0ライト処理が未完了のチャンクは、すでに解放済みであるので新たな論理記憶領域に割り当てることが可能であるが、その論理記憶領域のデータを書き込むことは不可能な状態となる。
一方、ボリュームLU2〜LU4においてその後にデータが書き込まれたデータ領域には、ストレージプールPL1から解放済み状態(未割り当て状態)のチャンクが割り当てられる。特に、新たなボリュームが生成された場合、そのボリュームに対して大量のデータの書き込みが要求される場合がある。図10では、新たなボリュームLU4に対して大量のデータの書き込みが要求された場合の様子を示している。
書き込みが要求されたデータは、一旦一次キャッシュ131に格納されるが、このとき、仮想ボリュームの新たなデータ領域に対してストレージプールPL1からチャンクが割り当てられる。この時点ではチャンクにはデータは書き込まれず、チャンクが予約されるのみである。
上記のように0ライト処理が未完了のチャンクが大量に残っている状態では、新たにデータが書き込まれたデータ領域には、解放済み状態のチャンクとして0ライト処理が未完了のチャンクが割り当てられることがあり得る。特に、新たなデータの書き込み量が大きいほど、新たなデータ領域に0ライト処理が未完了のチャンクが割り当てられる可能性が高くなる。例えば図10のように、新たなボリュームLU4に対して大量のデータの書き込みが要求されると、ボリュームLU4に対して0ライト処理が未完了のチャンクが割り当てられる可能性が高くなる。さらに、ボリュームLU1の消去直前においてストレージプールPL1の空き領域が小さかった場合には、新たなデータ領域に対して0ライト処理が未完了のチャンクが多数割り当てられる可能性が高くなる。
ここで、図11、図12に、仮想ボリュームに対する書き込み処理の比較例を示して、書き込み処理における問題点について説明する。
まず、図11は、0ライト処理と仮想ボリュームに対する書き込み処理とが並列実行されている場合の処理の比較例を示す図である。
仮想ボリュームに対して書き込みが要求されると、書き込みデータが一次キャッシュ131に格納され、仮想ボリュームにおける書き込み先領域に対してストレージプールPL1からチャンクが割り当てられる。その後、書き込みデータが一次キャッシュ131からライトバックされる際に、割り当てられたチャンクに対して書き込みデータが格納される。
また、大量のデータの書き込みが要求されると、一次キャッシュ131の空き容量が小さくなっていく。やがて、一次キャッシュ131からデータをライトバックして一次キャッシュ131の領域を解放しないと、新たな書き込みデータを一次キャッシュ131に格納できない状態になる。この状態では、ライトバックの性能が書き込み要求に対する応答時間に大きく影響する。
ライトバック先のチャンクが、0ライト処理の実行済みか、0ライト処理の実行対象でなかった場合、ライトバック対象のデータをチャンクに即座に書き込んでライトバックを完了できる。しかし、ライトバック先のチャンクが、0ライト処理が未完了のチャンクである場合、0ライト処理が完了するまでそのチャンクにライトバック対象のデータを書き込むことができない。
0ライト処理は、数十MB〜数百MB程度の大きさを有するチャンク単位で行われる。一方、仮想ボリュームに対する書き込み要求は、数KB〜1MB程度の大きさを単位として行われることが多く、ライトバックの単位もこれと同じになる。そのため、ライトバック先のチャンクが、0ライト処理が未完了であった場合には、0ライト処理が完了するまで、ライトバックのための書き込み時間よりはるかに長い時間待たなければならない場合が多くなる。その場合、ライトバックにかかる時間が大幅に長くなり、結果的に書き込み要求に対する応答が大幅に遅延してしまう。
図10で説明したように、0ライト処理と仮想ボリュームに対する書き込み処理とが並列実行されている状況では、新たな書き込みデータのデータ領域に対して0ライト処理が未完了のチャンクが多数割り当てられる可能性がある。このため、大量のデータの書き込みが要求されると、一次キャッシュ131の領域解放のためのライトバックの際に、ライトバック先のチャンクが、0ライト処理が未完了のチャンクとなる確率が高くなり、その結果、書き込み要求に対する応答性能が悪化する。
このような状況が続くと、単位時間において一次キャッシュ131からライトバックできるデータ量より、書き込みが要求されるデータ量の方が大きくなる。その結果、CM110は、ホストサーバ200から発行される書き込み要求を捌ききれず、書き込み要求に対して応答できなくなる。このような状態では、システムダウンが発生する可能性もある。
図12は、仮想ボリュームに対する書き込み処理の比較例を示すフローチャートである。ここでは例として、ストレージプールPL1の物理領域を共有する仮想ボリュームに対してデータの書き込みが要求された場合について示す。
[ステップS121]I/O制御部141は、ホストサーバ200からの書き込み要求を受信する。正確には、ホストサーバ200から受信された書き込み要求は、図示しない受信キューに順次格納される。ステップS121では、I/O制御部141は、受信キューの先頭から書き込み要求を1つ取り出す。
[ステップS122]I/O制御部141は、一次キャッシュ管理テーブル151に基づき、書き込みが要求された書き込みデータを格納するだけの空き領域が一次キャッシュ131にあるかを判定する。空き領域の有無は、例えば、空き領域の割合が所定割合以上か否かによって判定される。I/O制御部141は、空き領域がある場合、処理をステップS123に進め、空き領域がない場合、処理をステップS126に進める。
このステップS122の処理では、例えば、一次キャッシュ131に読み出し用のリードキャッシュデータがある場合、それらをすべて削除しても空き領域がないと判定される場合に、Noと判定される。なお、リードキャッシュデータを削除することで一次キャッシュ131に空き領域が生じると判定される場合には、I/O制御部141は、一次キャッシュ131からリードキャッシュデータを削除して領域を解放した後に、ステップS123の処理を実行する。
[ステップS123]I/O制御部141は、一次キャッシュ131の空き領域に書き込みデータを書き込む。また、I/O制御部141は、一次キャッシュ管理テーブル151において、書き込みデータの書き込み先ページに対して、仮想ボリュームにおける書き込みデータの論理位置情報を対応付けて登録する。
[ステップS124]I/O制御部141は、仮想ボリュームにおける書き込みデータの書き込み領域に対して、ストレージプールPL1から未割り当てチャンクを割り当てる。具体的には、I/O制御部141は、ボリューム管理テーブル154において、仮想ボリュームにおける書き込みデータの書き込み領域に対し、割り当てられたチャンクの識別番号を対応付けて登録する。ただし、この時点ではチャンクにはデータが書き込まれず、チャンクが予約されるのみである。
また、このステップS124において割り当てられるチャンクは、0ライト処理が未完了のチャンクである可能性がある。ステップS124では、例えば、ストレージプールPL1内の未割り当てチャンクのうち、0ライト処理が未完了のものを除くチャンクが優先的に割り当てられるようにしてもよい。
[ステップS125]I/O制御部141は、データの書き込みが正常に完了したことを示す完了応答をホストサーバ200に送信する。
[ステップS126]I/O制御部141は、一次キャッシュ管理テーブル151に基づき、一次キャッシュ131に格納されている、ライトバックが未完了のダーティデータの中から、ライトバック対象データを選択する。例えば、ライトバック対象データは、ダーティデータの中から最終アクセス時刻が最も早いダーティデータが選択される。
[ステップS127]I/O制御部141は、ボリューム管理テーブル154に基づき、仮想ボリュームの領域のうち、選択されたダーティデータの書き込み先領域に対して割り当てられているチャンクを特定する。I/O制御部141は、ストレージプールPL1に対応するビットマップ155を参照し、特定されたチャンクが、0ライト処理が未完了のチャンクであるかを判定する。
ここで言う「0ライト処理が未完了」とは、チャンクがUNMAPコマンドに応じて0ライト処理の対象となっており、かつ、0ライト処理が完了していない(値「0」が書き込まれていない)ことを示す。ビットマップ155におけるこのチャンクに対応するビットの値が「1」の場合、0ライト処理が未完了と判定される。I/O制御部141は、0ライト処理が未完了の場合、処理をステップS128に進め、そうでない場合(0ライト処理を実行済みの場合、または0ライト処理の実行対象でない場合)、処理をステップS129に進める。
[ステップS128]I/O制御部141は、0ライト処理の完了を待つために、一定時間待ち状態になる。そして、一定時間後にステップS127の処理が再度実行される。
[ステップS129]I/O制御部141は、選択されたライトバック対象データを、一次キャッシュ131からチャンクにライトバックする(チャンクに書き込む)。
[ステップS130]I/O制御部141は、一次キャッシュ131における、ライトバック対象データが格納されていた領域を解放する。具体的には、I/O制御部141は、一次キャッシュ管理テーブル151において、ライトバック対象データが格納されていたページに対応付けて登録されている、仮想ボリュームにおけるライトバック対象データの論理位置情報を削除する。
この後、処理はステップS122に進められる。ステップS130の領域解放により、書き込みデータを格納するための十分な空き領域が一次キャッシュ131に確保された場合には、ステップS122では「Yes」と判定される。
以上の図12の処理では、ステップS127で「Yes」と判定された場合、ライトバック先のチャンクに対する0ライト処理が実行されるまで待ち状態となり、その分だけライトバックにかかる時間が長くなってしまう。このようにライトバックにかかる時間が長くなることで、一次キャッシュ131に空き領域を生成するまでの時間が長くなり、その結果、書き込み要求に対する応答に時間がかかってしまう。
特に、図7のように仮想ボリュームの削除に伴って0ライト処理が未完了のチャンクが多数発生し、かつ、図10のように新たな仮想ボリュームに対して大量のデータ書き込みが要求された場合には、ステップS127で「Yes」と判定される確率が高くなる。その結果、書き込み要求に対する応答性能が徐々に低下していき、場合によっては応答不能な状態に陥る。
このような問題に対して、本実施の形態では、次の図13に示すように、ライトバック先のチャンクが、0ライト処理が未完了である場合、ライトバック対象データがチャンクの代わりに二次キャッシュ132に格納(退避)される。これにより、0ライト処理がボトルネックになって書き込み要求に対する応答が遅延することを防止する。
図13は、第2の実施の形態における書き込み制御を示す図である。
図13において、仮想ボリュームに対するデータの書き込みが要求されたとき(ステップS41)、一次キャッシュ131に十分な空き領域が存在せず、ライトバックが必要と判定されたとする。I/O制御部141は、一次キャッシュ131内のダーティデータの中からライトバック対象データを選択する。しかし、選択されたライトバック対象データの書き込み先領域に割り当てられているチャンクが、0ライト処理が未完了のチャンクであったとする(ステップS42)。
この場合、I/O制御部141は、選択されたライトバック対象データを、一次キャッシュ131から二次キャッシュ132に退避させ(ステップS43)、一次キャッシュ131に空き領域を確保する。そして、I/O制御部141は、書き込みが要求された書き込みデータを一次キャッシュ131の空き領域に書き込んで、書き込みが正常に完了したことを示す完了応答をホストサーバ200に送信する(ステップS44)。
さらに、I/O制御部141は、その後の非同期のタイミングで、ライトバック先のチャンクについて0ライト処理が完了したかを判定する。そして、I/O制御部141は、0ライト処理が完了した場合に、二次キャッシュ132に退避されたライトバック対象データ(退避データ)をチャンクにライトバックする(ステップS45)。
このような処理により、図11、図12の比較例のようにライトバック先のチャンクについて0ライト処理が完了するまでライトバックの実行を待つ場合と比較して、一次キャッシュ131に空き領域を生成するまでの時間を短縮できる。その結果、ステップS41での書き込み要求に対する応答時間を短縮できる。
例えば、図7のように仮想ボリュームの削除に伴って0ライト処理が未完了のチャンクが多数発生し、かつ、図10のように新たな仮想ボリュームに対して大量のデータ書き込みが要求された場合でも、書き込み要求に対する応答性能の低下を抑制できる。その結果、ホストサーバ200からの書き込み要求に応答できない状態になる可能性を低減でき、I/O制御の運用の安定性が向上する。
また、図5、図6で説明したように、二次キャッシュ132には基本的に、ストレージプールからステージングされたリードキャッシュデータが格納される。これらのリードキャッシュデータは、ライトバック対象データより優先度が低い。なぜなら、ライトバック対象データを一次キャッシュ131から移動させることができないと、データの書き込み要求に応答できなくなる。一方、読み出しが要求されたデータに対応するリードキャッシュデータが二次キャッシュ132に存在しなくても、要求されたデータはストレージプールから取得可能であり、読み出し要求に応答できるからである。
したがって、ライトバック対象データを二次キャッシュ132に退避させる必要が生じたとき、二次キャッシュ132に空き領域がない場合でも、二次キャッシュ132にリードキャッシュデータが格納されていればそれを消去して、二次キャッシュ132に空き領域を確保できる。このため、ライトバック対象データを退避させる必要が生じたとき、そのデータを二次キャッシュ132に格納できる可能性は高く、その結果として、書き込み要求に対する応答性能の改善効果が大きくなる。
図14は、二次キャッシュ管理テーブルの構成例を示す図である。二次キャッシュ管理テーブル152は、二次キャッシュ132内の各ページに対応するレコードを含む。各レコードには、物理位置、論理位置、退避データフラグおよびアクセス頻度の各情報が含まれる。
物理位置は、二次キャッシュ132におけるページのアドレス情報である。各レコードの物理位置の項目には、対応するページのアドレス情報があらかじめ登録されている。一方、論理位置、アクセス頻度および退避データフラグの各項目には、ページにデータが格納されていない場合、無効値(NULL)が登録される。
論理位置は、ページに格納されたデータの論理アドレス情報である。この論理アドレス情報とは、仮想ボリュームの識別情報と、仮想ボリュームにおける論理アドレス範囲を示す情報とを含む。論理位置の項目には、ページにデータが格納されると論理アドレス情報が登録される。
退避データフラグは、ページに格納されたデータが、一次キャッシュ131から退避された退避データであるか、リードキャッシュデータであるかを示すフラグ情報である。ここでは例として、退避データフラグが「1」の場合は退避データであることを示し、「0」の場合はリードキャッシュデータであることを示すものとする。
アクセス頻度は、ページに格納されたデータのアクセス頻度情報である。アクセス頻度の項目には、ページに格納されたデータがリードキャッシュデータである場合にのみ、情報が登録される。アクセス頻度の項目には、例えば、ページにリードキャッシュデータが格納されたときに初期値「0」が登録され、ホストサーバ200からアクセスがあった場合にその値がインクリメントされて更新される。後述するように、アクセス頻度は、二次キャッシュ132に格納されたリードキャッシュデータの中からどのリードキャッシュを削除するかを判定するために利用される。
図15は、第2の実施の形態における、仮想ボリュームに対する書き込み処理例を示すフローチャートである。この図15では、図12と同じ処理内容のステップには同じステップ番号を付して示している。
本実施の形態では、図12におけるステップS128の処理の代わりに、ステップS128aの処理が実行される。ステップS128aにおいて、I/O制御部141は、ライトバック対象データを一次キャッシュ131から二次キャッシュ132に退避させる退避処理を実行する。その後、処理はステップS130に進められる。
図16は、ライトバック対象データの二次キャッシュへの退避処理の例を示すフローチャートである。この図16の処理は、図15のステップS128aの処理に対応する。
[ステップS141]I/O制御部141は、二次キャッシュ管理テーブル152に基づき、ライトバック対象データを格納するだけの空き領域が二次キャッシュ132にあるかを判定する。この処理では、リードキャッシュデータと、一次キャッシュ131から退避された退避データとを含むデータ全体を除いた二次キャッシュ132の空き領域の有無が判定される。例えば、このような空き領域の割合が所定割合以上か否かによって、空き領域の有無が判定される。I/O制御部141は、空き領域がある場合、処理をステップS144に進め、空き領域がない場合、処理をステップS142に進める。
[ステップS142]I/O制御部141は、二次キャッシュ132に格納されているリードキャッシュデータの中から、ライトバック対象データの書き込み領域を確保するために削除するリードキャッシュデータを選択する。例えば、I/O制御部141は、二次キャッシュ管理テーブル152において退避データフラグが「0」のレコード(すなわち、リードキャッシュデータが格納されたページのレコード)の中から、アクセス頻度が最も低いレコードを選択する。選択されたレコードに対応するリードキャッシュデータが、削除の対象となる。
[ステップS143]I/O制御部141は、ステップS142で選択されたリードキャッシュデータを二次キャッシュ132から削除して、そのリードキャッシュデータが格納されていた領域を解放する。
[ステップS144]I/O制御部141は、ライトバック対象データを二次キャッシュ132に書き込む。ステップS143が実行された場合には、ステップS143で解放された領域にライトバック対象データが書き込まれる。また、I/O制御部141は、二次キャッシュ管理テーブル152から、ライトバック対象データの書き込み先ページに対応するレコードを特定する。I/O制御部141は、特定されたレコードにおいて、ライトバック対象データについての論理位置を登録し、退避データフラグを「1」に設定し、アクセス頻度の項目にNULLを設定する。この後、処理が図15のステップS130に進められる。
以上の図16の処理により、ライトバック対象データが一次キャッシュ131から二次キャッシュ132に退避されて、一次キャッシュ131に空き領域が生成される。この場合、ライトバック対象データのライトバック先のチャンクについて0ライト処理が完了するまで待つ場合より、一次キャッシュ131に空き領域が生成されるまでの時間が短縮される。その結果、書き込み要求に対する応答時間を短縮することができる。
図17は、二次キャッシュに退避された退避データのライトバック処理例を示すフローチャートである。図17の処理は、例えば、一定時間ごとに繰り返し実行される。
[ステップS151]UNMAP制御部142は、二次キャッシュ管理テーブル152を参照し、一次キャッシュ131から退避された退避データが二次キャッシュ132に1つでもあるかを判定する。二次キャッシュ管理テーブル152に退避フラグが「1」のレコードが1つでもあれば、二次キャッシュ132に退避データがあると判定される。UNMAP制御部142は、退避データがある場合、処理をステップS152に進め、退避データがない場合、処理を終了する。
[ステップS152]UNMAP制御部142は、二次キャッシュ管理テーブル152に基づき、退避データが格納されているページを1つ選択する。UNMAP制御部142は、選択されたページ内の退避データの論理位置に基づき、ボリューム管理テーブル154を参照して、退避データの書き込み先の論理記憶領域に対して割り当てられているチャンクを特定する。
UNMAP制御部142は、ビットマップ155に基づき、特定されたチャンクについて0ライト処理の実行が完了しているかを判定する。ビットマップ155のビットのうち、特定されたチャンクに対応するビットの値が「1」の場合、0ライト処理の実行が未完了と判定され、「0」の場合、0ライト処理の実行が完了していると判定される。UNMAP制御部142は、0ライト処理の実行が完了している場合、処理をステップS153に進め、完了していない場合、処理を終了する。
[ステップS153]UNMAP制御部142は、ステップS152で選択されたページに格納されている退避データを、割り当てられているチャンクに書き込む(ライトバックする)。
[ステップS154]UNMAP制御部142は、二次キャッシュ管理テーブル152から、ステップS152で選択されたページに対応するレコードを特定する。UNMAP制御部142は、特定されたレコードにおいて、論理位置および退避データフラグをいずれもNULLに更新する。これにより、二次キャッシュ132上の該当ページが解放され、空き領域となる。
このように、二次キャッシュ132に退避された退避データは、ライトバック先のチャンクに0ライト処理が実行されたかが監視され、0ライト処理が実行されると、チャンクにライトバックされる。
なお、上記の各実施の形態に示した装置(例えば、ストレージ制御装置10、CM110)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 一次キャッシュとして使用される第1の記憶部と、
二次キャッシュとして使用される第2の記憶部と、
仮想記憶領域のうちの第1の記憶領域についての解放要求を受信すると、物理記憶領域に含まれる単位記憶領域のうち前記第1の記憶領域に割り当てられている1以上の第1の単位記憶領域を、前記第1の記憶領域から解放して未割り当て状態として管理し、前記解放要求に対して応答し、
前記第1の単位記憶領域の解放とは非同期のタイミングで、前記第1の単位記憶領域のそれぞれに対して0を書き込む上書き処理を実行し、
前記仮想記憶領域に対するデータの書き込み要求を受信するたびに、書き込みが要求された書き込みデータを前記一次キャッシュに格納して前記書き込み要求に対して応答するとともに、前記仮想記憶領域における前記書き込みデータの書き込み先領域に、前記物理記憶領域に含まれる単位記憶領域のうち未割り当て状態の単位記憶領域を割り当てる書き込み処理を実行する、処理部と、
を有し、
前記書き込み処理では、前記書き込み要求を受信したときに前記一次キャッシュの空き領域が足りないと判定された場合、前記一次キャッシュからライトバック対象のデータを選択し、選択されたデータの前記仮想記憶領域における書き込み先領域である第2の記憶領域に対して割り当てられている第2の単位記憶領域が、前記上書き処理が未完了の領域である場合、前記選択されたデータを前記二次キャッシュに退避させて、前記一次キャッシュにおいて前記選択されたデータが記憶されていた第2の記憶領域を解放し、解放された前記第2の記憶領域に前記書き込みデータを書き込み、前記書き込み要求に対して応答する、
ストレージ制御装置。
(付記2) 前記処理部は、さらに、
前記二次キャッシュへの前記選択されたデータの退避とは非同期のタイミングで、前記第2の単位記憶領域に対する前記上書き処理が完了したかを判定し、完了したと判定された場合、前記選択されたデータを前記第2の単位記憶領域にライトバックする、
付記1記載のストレージ制御装置。
(付記3) 前記書き込み処理では、前記二次キャッシュの空き領域が足りないと判定された場合、前記二次キャッシュに格納されているデータのうち、前記物理記憶領域からステージングされたリードキャッシュデータを選択して前記二次キャッシュから削除し、前記削除によって解放された前記二次キャッシュの領域に前記選択されたデータを書き込む、
付記1または2記載のストレージ制御装置。
(付記4) 前記書き込み処理では、前記第2の単位記憶領域が、前記上書き処理を実行済みの領域、または前記上書き処理の対象外の領域である場合、前記選択されたデータを前記第2の単位記憶領域にライトバックして、前記一次キャッシュにおける前記第2の記憶領域を解放し、解放された前記第2の記憶領域に前記書き込みデータを書き込み、前記書き込み要求に対して応答する、
付記1乃至3のいずれか1つに記載のストレージ制御装置。
(付記5) コンピュータに、
仮想記憶領域のうちの第1の記憶領域についての解放要求を受信すると、物理記憶領域に含まれる単位記憶領域のうち前記第1の記憶領域に割り当てられている1以上の第1の単位記憶領域を、前記第1の記憶領域から解放して未割り当て状態として管理し、前記解放要求に対して応答し、
前記第1の単位記憶領域の解放とは非同期のタイミングで、前記第1の単位記憶領域のそれぞれに対して0を書き込む上書き処理を実行し、
前記仮想記憶領域に対するデータの書き込み要求を受信するたびに、書き込みが要求された書き込みデータを一次キャッシュに格納して前記書き込み要求に対して応答するとともに、前記仮想記憶領域における前記書き込みデータの書き込み先領域に、前記物理記憶領域に含まれる単位記憶領域のうち未割り当て状態の単位記憶領域を割り当てる書き込み処理を実行する、
処理を実行させ、
前記書き込み処理では、前記書き込み要求を受信したときに前記一次キャッシュの空き領域が足りないと判定された場合、前記一次キャッシュからライトバック対象のデータを選択し、選択されたデータの前記仮想記憶領域における書き込み先領域である第2の記憶領域に対して割り当てられている第2の単位記憶領域が、前記上書き処理が未完了の領域である場合、前記選択されたデータを二次キャッシュに退避させて、前記一次キャッシュにおいて前記選択されたデータが記憶されていた第2の記憶領域を解放し、解放された前記第2の記憶領域に前記書き込みデータを書き込み、前記書き込み要求に対して応答する、
ストレージ制御プログラム。
(付記6) 前記コンピュータに、
前記二次キャッシュへの前記選択されたデータの退避とは非同期のタイミングで、前記第2の単位記憶領域に対する前記上書き処理が完了したかを判定し、完了したと判定された場合、前記選択されたデータを前記第2の単位記憶領域にライトバックする、
処理をさらに実行させる付記5記載のストレージプログラム。
(付記7) 前記書き込み処理では、前記二次キャッシュの空き領域が足りないと判定された場合、前記二次キャッシュに格納されているデータのうち、前記物理記憶領域からステージングされたリードキャッシュデータを選択して前記二次キャッシュから削除し、前記削除によって解放された前記二次キャッシュの領域に前記選択されたデータを書き込む、
付記5または6記載のストレージ制御プログラム。
(付記8) 前記書き込み処理では、前記第2の単位記憶領域が、前記上書き処理を実行済みの領域、または前記上書き処理の対象外の領域である場合、前記選択されたデータを前記第2の単位記憶領域にライトバックして、前記一次キャッシュにおける前記第2の記憶領域を解放し、解放された前記第2の記憶領域に前記書き込みデータを書き込み、前記書き込み要求に対して応答する、
付記5乃至7のいずれか1つに記載のストレージ制御プログラム。
1 物理記憶領域
2 仮想記憶領域
10 ストレージ制御装置
11 第1の記憶部
11a 一次キャッシュ
12 第2の記憶部
12a 二次キャッシュ
13 処理部
S1a〜S1d,S2a〜S2g ステップ

Claims (5)

  1. 一次キャッシュとして使用される第1の記憶部と、
    二次キャッシュとして使用される第2の記憶部と、
    仮想記憶領域のうちの第1の記憶領域についての解放要求を受信すると、物理記憶領域に含まれる単位記憶領域のうち前記第1の記憶領域に割り当てられている1以上の第1の単位記憶領域を、前記第1の記憶領域から解放して未割り当て状態として管理し、前記解放要求に対して応答し、
    前記第1の単位記憶領域の解放とは非同期のタイミングで、前記第1の単位記憶領域のそれぞれに対して0を書き込む上書き処理を実行し、
    前記仮想記憶領域に対するデータの書き込み要求を受信するたびに、書き込みが要求された書き込みデータを前記一次キャッシュに格納して前記書き込み要求に対して応答するとともに、前記仮想記憶領域における前記書き込みデータの書き込み先領域に、前記物理記憶領域に含まれる単位記憶領域のうち未割り当て状態の単位記憶領域を割り当てる書き込み処理を実行する、処理部と、
    を有し、
    前記書き込み処理では、前記書き込み要求を受信したときに前記一次キャッシュの空き領域が足りないと判定された場合、前記一次キャッシュからライトバック対象のデータを選択し、選択されたデータの前記仮想記憶領域における書き込み先領域である第2の記憶領域に対して割り当てられている第2の単位記憶領域が、前記上書き処理が未完了の領域である場合、前記選択されたデータを前記二次キャッシュに退避させて、前記一次キャッシュにおいて前記選択されたデータが記憶されていた第2の記憶領域を解放し、解放された前記第2の記憶領域に前記書き込みデータを書き込み、前記書き込み要求に対して応答する、
    ストレージ制御装置。
  2. 前記処理部は、さらに、
    前記二次キャッシュへの前記選択されたデータの退避とは非同期のタイミングで、前記第2の単位記憶領域に対する前記上書き処理が完了したかを判定し、完了したと判定された場合、前記選択されたデータを前記第2の単位記憶領域にライトバックする、
    請求項1記載のストレージ制御装置。
  3. 前記書き込み処理では、前記二次キャッシュの空き領域が足りないと判定された場合、前記二次キャッシュに格納されているデータのうち、前記物理記憶領域からステージングされたリードキャッシュデータを選択して前記二次キャッシュから削除し、前記削除によって解放された前記二次キャッシュの領域に前記選択されたデータを書き込む、
    請求項1または2記載のストレージ制御装置。
  4. 前記書き込み処理では、前記第2の単位記憶領域が、前記上書き処理を実行済みの領域、または前記上書き処理の対象外の領域である場合、前記選択されたデータを前記第2の単位記憶領域にライトバックして、前記一次キャッシュにおける前記第2の記憶領域を解放し、解放された前記第2の記憶領域に前記書き込みデータを書き込み、前記書き込み要求に対して応答する、
    請求項1乃至3のいずれか1項に記載のストレージ制御装置。
  5. コンピュータに、
    仮想記憶領域のうちの第1の記憶領域についての解放要求を受信すると、物理記憶領域に含まれる単位記憶領域のうち前記第1の記憶領域に割り当てられている1以上の第1の単位記憶領域を、前記第1の記憶領域から解放して未割り当て状態として管理し、前記解放要求に対して応答し、
    前記第1の単位記憶領域の解放とは非同期のタイミングで、前記第1の単位記憶領域のそれぞれに対して0を書き込む上書き処理を実行し、
    前記仮想記憶領域に対するデータの書き込み要求を受信するたびに、書き込みが要求された書き込みデータを一次キャッシュに格納して前記書き込み要求に対して応答するとともに、前記仮想記憶領域における前記書き込みデータの書き込み先領域に、前記物理記憶領域に含まれる単位記憶領域のうち未割り当て状態の単位記憶領域を割り当てる書き込み処理を実行する、
    処理を実行させ、
    前記書き込み処理では、前記書き込み要求を受信したときに前記一次キャッシュの空き領域が足りないと判定された場合、前記一次キャッシュからライトバック対象のデータを選択し、選択されたデータの前記仮想記憶領域における書き込み先領域である第2の記憶領域に対して割り当てられている第2の単位記憶領域が、前記上書き処理が未完了の領域である場合、前記選択されたデータを二次キャッシュに退避させて、前記一次キャッシュにおいて前記選択されたデータが記憶されていた第2の記憶領域を解放し、解放された前記第2の記憶領域に前記書き込みデータを書き込み、前記書き込み要求に対して応答する、
    ストレージ制御プログラム。
JP2020007820A 2020-01-21 2020-01-21 ストレージ制御装置およびストレージ制御プログラム Pending JP2021114264A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020007820A JP2021114264A (ja) 2020-01-21 2020-01-21 ストレージ制御装置およびストレージ制御プログラム
US17/111,580 US11474750B2 (en) 2020-01-21 2020-12-04 Storage control apparatus and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020007820A JP2021114264A (ja) 2020-01-21 2020-01-21 ストレージ制御装置およびストレージ制御プログラム

Publications (1)

Publication Number Publication Date
JP2021114264A true JP2021114264A (ja) 2021-08-05

Family

ID=76858123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020007820A Pending JP2021114264A (ja) 2020-01-21 2020-01-21 ストレージ制御装置およびストレージ制御プログラム

Country Status (2)

Country Link
US (1) US11474750B2 (ja)
JP (1) JP2021114264A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11977773B2 (en) 2021-09-30 2024-05-07 Kioxia Corporation Validity table for solid state drives
US11669254B2 (en) * 2021-09-30 2023-06-06 Kioxia Corporation SSD supporting deallocate summary bit table and associated SSD operations

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05175922A (ja) * 1991-12-20 1993-07-13 Nec Corp ステレオ変調器
WO2012002428A1 (ja) * 2010-07-01 2012-01-05 日本電気株式会社 記憶装置、解放優先順位決定方法およびプログラム
JP2013077106A (ja) * 2011-09-30 2013-04-25 Fujitsu Ltd ストレージ装置およびストレージシステム
JP2015185105A (ja) * 2014-03-26 2015-10-22 日本電気株式会社 情報処理システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4945118B2 (ja) * 2005-11-14 2012-06-06 株式会社日立製作所 記憶容量を効率的に使用する計算機システム
CN107247565B (zh) * 2009-03-18 2020-06-09 株式会社日立制作所 存储控制装置以及虚拟卷的控制方法
WO2013175529A1 (en) 2012-05-23 2013-11-28 Hitachi, Ltd. Storage system and storage control method for using storage area based on secondary storage as cache area
WO2014006656A1 (en) 2012-07-05 2014-01-09 Hitachi, Ltd. Computer system, cache control method and computer program
US9606910B2 (en) * 2013-01-17 2017-03-28 Hitachi, Ltd. Method and apparatus for data reduction
WO2015198412A1 (ja) * 2014-06-25 2015-12-30 株式会社日立製作所 ストレージシステム
WO2017175350A1 (ja) 2016-04-07 2017-10-12 株式会社日立製作所 計算機システム
US10838863B2 (en) * 2019-02-01 2020-11-17 EMC IP Holding Company LLC Storage system with write cache release protection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05175922A (ja) * 1991-12-20 1993-07-13 Nec Corp ステレオ変調器
WO2012002428A1 (ja) * 2010-07-01 2012-01-05 日本電気株式会社 記憶装置、解放優先順位決定方法およびプログラム
JP2013077106A (ja) * 2011-09-30 2013-04-25 Fujitsu Ltd ストレージ装置およびストレージシステム
JP2015185105A (ja) * 2014-03-26 2015-10-22 日本電気株式会社 情報処理システム

Also Published As

Publication number Publication date
US20210224002A1 (en) 2021-07-22
US11474750B2 (en) 2022-10-18

Similar Documents

Publication Publication Date Title
US10176212B1 (en) Top level tier management
US20190018784A1 (en) Storage control apparatus and computer-readable storage medium storing storage control program
US7949828B2 (en) Data storage control on storage devices
JP5271424B2 (ja) ダイナミックストレージ階層化によるオンラインデータ配置をボリュームに提供するためのアロケートオンライトのスナップショット機構
US8392670B2 (en) Performance management of access to flash memory in a storage device
US20150262632A1 (en) Grouping storage ports based on distance
JP5309259B2 (ja) ストレージ装置及びその制御方法
WO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
WO2015015550A1 (ja) 計算機システム及び制御方法
JP2013242908A (ja) ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
US10789007B2 (en) Information processing system, management device, and control method
US20190243758A1 (en) Storage control device and storage control method
JP6011153B2 (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
JP6867578B2 (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US11474750B2 (en) Storage control apparatus and storage medium
JP5802283B2 (ja) ストレージシステム及びその論理ユニット管理方法
JP2020113031A (ja) 情報処理システム、管理装置および管理プログラム
JP2017037501A (ja) ストレージ制御装置およびストレージ制御プログラム
EP4307129A1 (en) Method for writing data into solid-state hard disk
US20230130893A1 (en) Methods and systems for seamlessly configuring client nodes in a distributed system
JP7288191B2 (ja) ストレージ制御装置およびストレージ制御プログラム
US11307774B2 (en) Storage control device, non-transitory computer-readable storage medium, and storage control method
JP6867586B2 (ja) ストレージ装置、ストレージ装置の制御プログラムおよびストレージ装置の制御方法
JP2022166986A (ja) ストレージ制御装置およびストレージ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220908

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230808

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240213