JP2015517697A - 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法 - Google Patents
二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法 Download PDFInfo
- Publication number
- JP2015517697A JP2015517697A JP2015509569A JP2015509569A JP2015517697A JP 2015517697 A JP2015517697 A JP 2015517697A JP 2015509569 A JP2015509569 A JP 2015509569A JP 2015509569 A JP2015509569 A JP 2015509569A JP 2015517697 A JP2015517697 A JP 2015517697A
- Authority
- JP
- Japan
- Prior art keywords
- storage
- storage system
- page
- real
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一般的に、キャッシュメモリとしてDRAMが利用されており、ヒット率を上げるべくキャッシュメモリの容量を拡張しようとすると、DRAMの物理的な増加が必要となり、簡単ではない。一方で、容量仮想化機能を有するストレージシステムには、比較的多くの空きページが存在することがある。そこで、ストレージシステムは、容量仮想化機能に従うページ(例えば、Thin Provisioningに従い論理ボリュームに割り当てられ得るページ)を、キャッシュ領域として使用する。これによって、動的なキャッシュ容量の増減が可能となる。【選択図】図2
Description
本発明は、二次記憶装置に基づく記憶領域をキャッシュ領域として用いる技術に関する。
近年のストレージシステムは、多種多様なストレージ機能を有している。また、これらのストレージ機能を有償で販売しているストレージベンダが存在し、この点で、ストレージ機能の高性能化は、ストレージベンダの顧客にとって価値が高いと考えられる。また、フラッシュメモリデバイスは、磁気ディスクデバイス等のディスク記憶装置に比べ性能が優れており、フラッシュメモリの最近の低価格化に伴い、フラッシュメモリデバイスがディスク記憶装置に加えてストレージシステムに搭載されるケースが増えてきている。また、ストレージシステムは、一般に、キャッシュメモリ(例えばDRAM(Dynamic Random Access Memory))を有しており、フラッシュメモリ装置又はディスク記憶装置のような二次記憶装置に格納された、アクセス頻度の高いデータを、キャッシュメモリに格納する。
フラッシュメモリデバイスは、フラッシュメモリの特性上、データを書き換えようとした時、そのデータが元々格納されていた物理領域上に、そのデータを、直接上書きすることはできない。フラッシュメモリデバイスは、すでに書き込みを行った領域に、データの書き込みを行う際には、フラッシュメモリの消去単位であるブロックと呼ばれる単位で、消去処理を実行した後、データを書き込む必要がある。このため、フラッシュメモリデバイスは、データを書きかえる場合、元々そのデータが格納されていた領域に書き込むのではなく、同じブロック内の別の領域に書き込むことが多い。同一のデータが複数の領域に書き込まれ、ブロックにデータが満杯になると(ブロックに空きの領域が無くなると)、フラッシュメモリデバイスは、ブロック内の有効データを別のブロックに移し、移動元のブロックの消去処理を行うことで、空きのブロックを作成する。
データを格納するアドレスを固定的に割り当てる方式をとると、通常はアドレスごとに書換え頻度が異なるので、消去回数のばらつきがブロックごとに生ずることになる。また、フラッシュメモリの各々ブロックの消去回数には限界数があり、消去回数が限界数を超えたブロックには、通常、データを格納することができない。以上の問題を解決するため、このばらつきを少なくする技術として、ウエアレベリングと呼ばれる技術が公開されている(例えば、特許文献1)。ウエアレベリングの基本的な考え方は、外側に見せるアドレス層として、物理的なアドレスとは別に、論理的なアドレス層を設け、物理的なアドレスに割り当てる論理的なアドレスを適宜変更していく(例えば、頻繁にアクセスされる論理的なアドレスには、消去回数の少ないアドレスを割り当てる)ことによって、物理的なブロックの消去回数の偏りを削減しようというものである。また、物理的なアドレスが変更になっても、論理的なアドレスは変わらないので、外側からは、同一のアドレスでデータクセスが可能である。このため、使い勝手の良さも維持できる。
次に、格納容量削減技術について述べる。近年、ストレージシステムでは、格納容量を削減する技術が注目されている。その代表的な技術の1つが、容量の仮想化技術である。容量の仮想化技術とは、ストレージシステムがもっている物理的な容量より大きな仮想的な容量をホスト側に見せる技術である。これは、ユーザが定義した論理ボリュームであるユーザボリューム(ユーザからみた記憶装置)の容量に対し、実際に格納されるデータの量は、この定義容量(ユーザボリュームの容量)には、なかなか達しないという特性を利用したものである。すなわち、容量仮想化技術がない場合には、ボリューム定義時に、ストレージシステムの二次記憶装置群が提供する記憶空間(以下、物理空間)から定義容量が確保されるのに対し、容量仮想化技術が適用されている場合には、実際にデータが格納される場合に、容量が確保されることになる。これによって、格納容量(物理空間から確保される容量)を削減することができ、かつ、ユーザは、ユーザボリュームの容量を厳密に定義する必要なく、単純に大きく余裕をもった値を定義すればよいため、使い勝っても向上できる。この技術において、データが書き込まれたときに確保される物理的な記憶領域は、例えば「ページ」と呼ばれる。一般に、ページのサイズは、多様性にとんでいるが、本発明では、ページのサイズのほうが、フラッシュメモリの消去単位であるブロックのサイズより大きいものとする。一方、フラッシュメモリにおいては、一般的に、消去の単位は、前述したようにブロックと呼ぶのに対し、ブロックの中での読み書きの単位をページとよぶ。当然、フラッシュメモリにおいては、ブロックのサイズのほうが、ページのサイズより大きくなる。しかし、本発明では、「ページ」という言葉は、容量仮想化におけるページをさすこととし、フラッシュメモリでの読み書きの単位をささないこととする。ただし、本発明では、ストレージシステムには、上記の容量仮想化技術が適用されているものとする。
容量仮想化技術が適用されているストレージステムにおいては、ページ単位で、ページ内のデータを記憶装置(典型的にはHDD(Hard Disk Drive))の間で移動させ、性能向上を実現させる技術が、公開されている(例えば特許文献2)。さらに、価格性能比が異なる記憶装置に基づくページ間でデータを移動させ、価格性能比を向上させる技術も公開されている。
一方、複数のフラッシュメモリデバイスを、複数接続した、容量仮想化技術をもったストレージステムにおいて、それぞれの記憶装置の中で、フラッシュメモリの書き換え回数を均衡させ(ローカルウエアレベリング)、さらに、ページ間でデータを移動させることによって、フラッシュメモリデバイスを含む複数の記憶装置間で、書き換え回数を均衡させる(グローバルウエアレベリング)技術が公開されている(例えば特許文献3)。
一方、ディスクデバイスとフラッシュメモリデバイスを含むストレージシステムにおいて、フラッシュメモリデバイスの一部の領域を、ディスクデバイスに格納されたデータのキャッシュングメモリとして利用し、そのフラッシュメモリデバイス内の別の領域を、恒久的にデータを格納する領域として、利用する技術が公開されている(例えば特許文献4)。
また、ファイルレベルのファイルストレージシステムにおいて、ネットワークを経由した階層構成で、サーバに近いエッジ側のファイルトレージシステムで、コア側のファイルストレージシステムのデータをキャッシングする技術が公開されている(例えば特許文献5)。
また、広域のネットワークに接続されたそれぞれがストレージシステムをもつ複数のデータセンタにおいて、いくつかのデータセンタのストレージシステムが論理ボリュームの複製を持つ環境で、ユーザ端末の位置とアクセス先の論理ボリュームとを基に、ユーザがログインするデータセンタが決定され、アクセス先の論理ボリュームの複製をもつデータセンタのストレージシステムが、論理ボリュームとその複製間でデータをリモートコピーする技術も公開されている(例えば特許文献6)。
また、複数のストレージシステムが同一の仮想ストレージ識別子を有することで複数のストレージシステムを1つの仮想的なストレージシステムとして提供される技術も開示されている(例えば特許文献7)
第1の課題は、1つのストレージシステムにおいて、二次記憶装置(例えば、フラッシュメモリデバイス及びディスクデバイスのうちの少なくとも1つ)の一部に基づく領域を、キャッシュ領域として、効率的に利用することである。第2の課題は、複数のストレージシステムにおいて、他のストレージシステムに格納されたデータを格納するために、二次記憶装置(例えば、フラッシュメモリデバイス及びディスクデバイスのうちの少なくとも1つ)の一部に基づく領域を、キャッシュ領域として、効率的に利用することである。
まず、第1の課題について述べる。(1)まず、キャッシングの効果は、ヒット率(アクセスされるデータがキャッシュに存在する確率)が一定値以上ないと効果がないので、これをある値以上に保つ必要がある。(2)次に、二次記憶装置(例えば、フラッシュメモリデバイス及びディスクデバイスのうちの少なくとも1つ)の一部に基づく領域を、キャッシュ領域として用いる場合、キャッシュ領域とそれ以外の領域(例えば恒久的にデータを格納した領域)との負荷をうまく調整する必要がある。(3)さらに、フラッシュメモリデバイスに基づく領域をキャッシュ領域として用いる場合、キャッシュ領域の書き換え回数とそれ以外の領域(例えば恒久的なデータを格納した領域)の書き換え回数をバランスさせる必要がある。(4)また、一般的に、恒久的なデータを格納している記憶領域を有する記憶装置の性能に比較して、キャッシュ領域を有する記憶装置の性能は高いのが一般的である。したがって、ディスクデバイスに恒久的に格納されているデータをキャッシングするためのキャッシュ領域として、フラッシュメモリデバイスを用いるのは効果がある。また、ディスクデバイスとして、高速なディスクデバイス(アクセス速度が速いディスクデバイス)と低速なディスクデバイス(アクセス速度が低速なディスク)があり、低速ディスクデバイスに恒久的に格納されているデータをキャッシングするためのキャッシュ領域として高速ディスクデバイスを用いるのは一定の効果がある。
第2の課題について説明する。第2の課題は、第1の課題で説明した、(1)、(2)、(3)については、共通である。(4)が異なる。第2の課題では、他のストレージシステムの記憶装置に格納されているデータのキャッシングを行う。(5)一般的には、ホスト、あるいは、サーバは、データが恒久的に格納されているストレージシステムに対してリード要求又はライト要求を発行する。しかし、あるストレージステムでキャッシングするためには、このストレージシステムが、サーバからのリード要求/ライト要求を受け取れるようにする必要がある。(6)他のストレージシステムのデータをキャッシングする場合、データを恒久的に記憶しているストレージシステムから、キャッシングするストレージシステムに、データを転送することにかかった時間(キャッシュ転送時間)が、サーバにとって、リード要求を発行してから応答を受けるまでのレスポンス時間の短縮につながる。このため、このキャッシュ転送時間を考慮して、キャシングを行う必要がある。
第1の課題を解決するための手段を説明する。
上記(1)について、十分なヒット率を確保するために、ストレージシステムは、二次記憶装置に基づくキャッシュ領域に、容量仮想化機能で利用している、ページを割り当てる。一般的に、キャッシュメモリとしてDRAMが利用されており、ヒット率を上げるべくキャッシュメモリの容量を拡張しようとすると、DRAMの物理的な増加が必要となり、簡単ではない。
一方で、恒久的にデータを格納する二次記憶装置に基づくページを論理ボリューム(仮想的な論理ボリューム)に割り当てる容量仮想化機能をストレージシステムがもっていると、データの書き込み先の論理領域(論理ボリュームにおける領域)にしかページが割り当てられない。このため、ストレージシステムには、比較的多くの空きページが存在することがある。
そこで、空きページが、キャッシュ領域として利用される。具体的には、例えば、容量仮想化機能で提供される論理ボリュームが、キャッシュ領域(ページ)が割り当てられるキャッシュボリュームとして使用される。キャッシュ容量(キャッシュボリュームの実際の容量)が拡張される都度に、キャッシュボリュームにページが割り当てられる。これにより、キャッシュ容量(キャッシュボリュームに割り当てられているキャッシュ領域(ページ)の総容量)を容易に増やすことができ、以って、ヒット率を向上することができる。
キャッシュ容量を増やしても、それ程ヒット率が改善しない場合、ストレージシステムは、キャッシュボリュームからページを解放することで、比較的容易に、キャッシュ容量を削減することができる。
上記(2)について、二次記憶装置(例えば、フラッシュメモリデバイス及びディスクデバイスのうちの少なくとも1つ)の一部に基づく領域を、キャッシュ領域として用いる場合、キャッシュ領域以外の領域(例えば、恒久的にデータを格納した領域)との負荷をうまく調整するために、ストレージシステムは、ページ間の負荷を監視し、記憶装置間の負荷をバランスさせる。ストレージシステムは、性能の異なる複数の記憶装置で構成される記憶階層構成を有する場合、記憶階層間でページ内のデータを移動するが、キャッシュ領域として利用されているページであるキャッシュページ内のデータの移動先を、恒久的にデータを格納する二次記憶装置より性能の良い二次記憶装置に基づくページのみに制約する。
一般に、DRAMのようなキャッシュメモリにおける領域毎のキャッシュ管理情報があり、ストレージシステムは、領域からデータを移動した場合、その領域に対応するキャッシュ管理情報を書き換える必要がある。これは、オーバーヘッドが大きい。
そこで、キャッシュ管理情報は、キャッシュボリュームにおけるどの領域にページが割り当てられているかを表す。これによって、ストレージシステムは、ページ間でデータを移動させても、キャッシュ管理情報を書き換えるが必要ない。
上記(3)について、キャッシュ領域がフラッシュメモリデバイスに基づく領域の場合、フラッシュメモリデバイスは、ローカルにウエアレベリングを実行し、ストレージシステムは、異なるフラッシュメモリデバイス間でページ内のデータを移動させることで、複数のフラッシュメモリデバイス間で書き換え回数を均衡させる。
上記(4)について、ストレージシステムは、キャッシュ領域の基になる二次記憶装置として、恒久的にデータを格納している二次記憶装置より高速な二次記憶装置を選択する。
第2の課題を解決するための手段を説明する。
上記(5)ついて、複数のストレージシステムを1つの仮想的なストレージステムに見せ、さらに、リード要求又はライト要求を受けるために、個々のストレージシステムがもつポートについては、仮想的なストレージシステムがすべてもつようにする。ホスト(例えばサーバ)には、仮想的なストレージシステムのリード要求又はライト要求を受けるポートを変更する通知を行うことで、キャッシングを行うストレージシステムが、恒久的にデータを格納しているストレージシステムへのリード要求又はライト要求を受け取ることができる。
上記(6)について、まず、恒久的にデータを格納しているストレージシステム内のデータのキャッシングを行う場合、仮想的なストレージシステムを構成するどのストレージシステムのどの二次記憶装置に基づく領域に、キャッシングを行うかが決定される。これは、ホストから、キャッシングを行うことにより得られる効果を基に決定される。この効果とは、データが格納されているストレージシステムからそのデータのアクセス元のホストまで距離があるような場合、ホストに近いストレージシステムで、キャッシングを行うことで、ストレージシステムへデータを転送する時間を削減することができる。ストレージシステム間の距離が長い、或いは、遅延の大きいネットワークでストレーシステム同士が接続されている場合、キャッシングの効果が大きい。このため、データが恒久的に格納されている二次記憶装置と同等の性能の二次記憶装置にキャッシングしても、効果がある。場合によっては、恒久的にデータが格納されている二次記憶装置よりも性能が或る程度落ちる二次記憶装置にデータがキャッシングされても、効果が期待できる。このため、ストレージシステム間のデータ転送時間を考慮したキャッシングを行う必要がある。
二次記憶装置(例えば、フラッシュメモリデバイス及びディスクデバイスのうちの少なくとも1つ)の一部に基づく領域としてのキャッシュ領域にデータをキャッシングすることを、1つのストレージシステム内でも、異なるストレージシステム間でも、効率的に行うことができ、以って、高性能化を実現することができる。
以下、図面を参照して、幾つかの実施例を説明する。
図1は、実施例1における情報システムの構成を示す。
情報システムは、ストレージシステム100とホスト110とを有し、それらは、例えば、SAN(Storage Area Network)120のような通信ネットワークを介して接続される。ホスト120は、ユーザアプリケーションが動作するシステムで、ストレージステム100との間で、SAN120経由で、必要なデータを読み書きする。SAN120では、SCSIコマンドが転送可能なプロトコル、例えば、Fibre Channel等のプロトコルが用いられる。
本実施例は、フラッシュメモリデバイスの一部とディスクデバイスの一部に基づく記憶領域をキャッシュ領域として用いるストレージシステム、そのストレージシステムの制御デバイス、および、制御方法に関する。実施例1では、ストレージシステムは、フラッシュメモリデバイスの一部とディスクデバイスの一部に基づく記憶領域を、恒久的に格納しているデータのキャッシュ領域として用いる。これによって、高性能化が達成される。キャッシュ領域として利用可能な記憶領域は、恒久的にデータが格納されている記憶領域の基になっている二次記憶装置より性能の高い二次記憶装置に基づく記憶領域である。キャッシングは、ヒット率(アクセスされるデータがキャッシュ領域に存在する確率)が一定値以上ないと効果がないので、ヒット率をある値以上に保つ必要がある。本実施例では、十分なヒット率を確保するために、データのキャッシングに関して、容量仮想化機能が利用される。具体的には、データがキャッシングされる領域として、論理ボリューム(典型的には、Thin Provisioningに従う仮想的な論理ボリューム)が用意され、その論理ボリューム(以下、キャッシュボリューム)に、キャッシュ領域としてのページが割り当てられる。
一般的に、キャッシュ領域としては、DRAMのような揮発性のメモリが使用されるが、ヒット率を上げるためにキャッシュ領域の容量を拡張しようとすると、DRAMを増加するといった物理的な増強が必要となり、それ程簡単ではない。一方で、恒久的にデータを格納する記憶装置の場合、容量仮想化機能があると、通常、データの書込み先の領域にのみページが割り当てられるので、ストレージシステムには、比較的多くの空きページが存在し得る。
本実施例では、空きページが、キャッシュ領域として利用される。このため、ヒット率の向上を目的としてキャッシュボリュームにページを動的にわりあてることで、キャッシュ容量を比較的容易に拡張することができる。一方で、キャッシュ容量を増やしても、それ程ヒット率が改善しない場合、キャッシュボリュームからページを解放することで、比較的容易にキャッシュ容量を削減することができる。
次に、フラッシュメモリデバイスの一部とディスクデバイスの一部に基づく記憶領域をキャッシュ領域として用いる場合、恒久的にデータを格納した記憶領域との負荷をうまく調整する必要がある。本実施例では、その負荷調整のために、ページ間の負荷を監視し、記憶装置間の負荷をバンランスさせる仕組みが利用される。この機構は、ストレージシステムが、性能の異なる複数の記憶装置で構成される記憶階層構成を有する場合、或る記憶階層のページから異なる記憶階層のページにデータを移動させるが、キャッシュ領域として利用されているページ内のデータの移動先を、恒久的にデータを記憶する二次記憶装置より性能のよい二次記憶装置に基づくページだけに制約する。1つの記憶階層には、同じ性能(実質的に同じアクセス性能)の1以上の二次記憶装置が属する。
一般に、DRAMのようなキャッシュメモリにおける領域毎のキャッシュ管理情報があり、ストレージシステムは、領域からデータを移動した場合、その領域に対応するキャッシュ管理情報を書き換える必要がある。これは、オーバーヘッドが大きい。
そこで、キャッシュ管理情報は、キャッシュボリュームにおけるどの領域にページが割り当てられているかを表す。これによって、ストレージシステムは、ページ間でデータを移動させても、キャッシュ管理情報を書き換えるが必要ない。
さらに、フラッシュメモリデバイスに基づく領域をキャッシュ領域として用いる場合、キャッシュ領域の書き換え回数とそれ以外の領域(例えば恒久的なデータを格納した領域)の書き換え回数をバランスさせる必要がある。
そこで、キャッシュ領域がフラッシュメモリデバイスに基づく領域の場合、フラッシュメモリデバイスは、自デバイスにおいてローカルにウエアレベリングを実行し、ストレージシステムは、異なるフラッシュメモリデバイス間でページ内のデータを移動させる。これにより、複数のフラッシュメモリデバイス間で書き換え回数を均衡させる。さらに、ストレージシステムは、フラッシュメモリデバイス間でページ内のデータを移動させることで、複数のフラッシュメモリデバイスにおける空きブロックの数も均衡させることができる。
また、一般的に、恒久的なデータを格納している記憶領域を有する記憶装置の性能に比較して、キャッシュ領域を有する記憶装置の性能は高いのが一般的である。したがって、ディスクデバイスに恒久的に格納されているデータをキャッシングするためのキャッシュ領域として、フラッシュメモリデバイスを用いるのは効果がある。また、ディスクデバイスとして、高速なディスクデバイス(アクセス速度が速いディスクデバイス)と低速なディスクデバイス(アクセス速度が低速なディスク)があり、低速ディスクデバイスに恒久的に格納されているデータをキャッシングするためのキャッシュ領域として高速ディスクデバイスを用いるのは一定の効果がある。
そこで、本実施例では、ストレージシステムは、キャッシュ領域の基になる二次記憶装置として、恒久的にデータを格納している二次記憶装置より高速な二次記憶装置を選択する。
図2は、ストレージシステム100の構成を示している。
ストレージシステム100は、1つ以上のストレージコントローラ200、キャッシュメモリ210、共有メモリ220、タイマ240、性能の異なる複数種類(例えば3種類)の二次記憶装置(例えば、1つ以上のフラッシュパッケージ230、1つ以上の高速ディスク(アクセス速度が速いディスクデバイス)265、1つ以上の低速ディスク(アクセス速度が遅いディスクデバイス)290)、及び、これらの構成要素を接続する1つ以上の接続部250を有する。タイマ240は、必ずしも実際の時刻を表す必要はなく、カウンタのようなものでもよい。高速ディスク265は、例えば、SAS(Serial Attached SCSI(Small Computer System Interface))のHDD(Hard Disk Drive)で良い。低速ディスク290は、例えば、SATA(Serial ATA(Advanced Technology Attachment))のHDDで良い。
フラッシュパッケージ230が有するフラッシュメモリとして、いくつかの種類がある。例えば、フラッシュメモリとして、高価格、高性能、消去可能回数の多いSLC(Single Level Cell)と、低価格、低性能、消去可能回数の少ないMLC(Multiple Level Cell)がある。ただし、いずれも、ディスクデバイスよりも高いアクセス速度が期待できる。本発明は、SLC及びMLCのいずれでも有効である。また、将来は、相変化メモリなどの新しい不揮発性のメモリが登場してくる可能性がある。二次記憶装置として、そのような不揮発記憶媒体を含んだ記憶装置が用いられても、本発明は有効である。以下、フラッシュパッケージ230、高速ディスク265及び低速ディスク290を区別しない場合には、「記憶装置」(或いは二次記憶装置)と呼ぶ。
また、本実施例においては、ストレージシステムが、フラッシュパッケージ230、高速ディスク265及び低速ディスク290の少なくとも1つに代えて又は加えて、さらに性能(例えばアクセス速度)の異なる記憶装置を含んでいても、本発明は有効である。また、本実施例におけるフラッシュパッケージ230、高速ディスク265、低速ディスク290の容量は、同一性能の記憶装置について、すべて等しいものとする。ただし、本発明は、同一性能の複数の記憶装置に容量の異なる記憶装置が混在していても、有効である。
ストレージコントローラ200は、プログラムや情報を保管するメモリ270と、ストレージコントローラ200に入出力されるデータが一時的に保管されるバッファ275と、それらに接続されており、ホスト120から発行されたリード要求及びライト要求を処理するプロセッサ260とを有する。バッファ275は、例えば、(1)後述する冗長データを生成する際、生成に必要な情報、及び、生成した冗長データを格納するための領域、及び、(2)記憶装置に基づくキャッシュ領域に格納されたデータを、恒久的にデータを格納する記憶装置に書き込む際の一時的な格納領域、として使用される。
接続部250は、ストレージシステム100内の各構成要素を接続する機構である。また、本実施例では、高信頼化のために、1つのフラッシュパッケージ230、高速ディスク265、低速ディスク290は、複数の接続機構250で、複数のストレージコントローラ200に接続されているものとする。ただし、1つのフラッシュパッケージ230、高速ディスク265、低速ディスク290が1つの接続部250にしか接続されていない場合も本発明は有効である。
キャッシュメモリ210及び共有メモリ220のうちの少なくとも1つは、DRAMのような揮発メモリで構成されるが、バッテリーなどにより不揮発化されていて良い。また、高信頼化のため、それぞれが2重化されていてもよい。ただ、本発明は、キャッシュメモリ210、共有メモリ220が不揮発化されていなくても有効である。キャッシュメモリ210には、フラッシュパッケージ230、高速ディスク265、低速ディスク290に格納されたデータの中で、ストレージコントローラ200からよくアクセスされるデータが格納されて良い。ストレージコントローラ200は、ホスト120からライト要求を受けた場合、ライト対象のデータを、キャッシュメモリ210に書き込んで、該当するライト要求を完了させて良い(ライトの完了をホスト120に通知して良い)。ただし、本発明は、ライト対象のデータを記憶装置(フラッシュパッケージ230、高速ディスク265又は低速ディスク290)に格納した段階でライト要求を完了させる方式でも有効である。本実施例の1つの特徴は、高速ディスク265(又は低速ディスク290)に格納に格納されたデータのキャッシュ領域として、フラッシュパッケージ230(又は高速ディスク265)の一部に基づく記憶領域を利用することである。共有メモリ220は、キャッシュメモリ210の制御情報、ストレージシステム100内の管理情報、ストレージコントローラ200間の連絡情報、及び同期情報などを記憶する。また、本実施例では、共有メモリ220は、キャッシュ領域の基になるフラッシュパッケージ230、高速ディスク265の管理情報も、記憶する。なお、これらの管理情報が、フラッシュパッケージ230、高速ディスク260に格納されも、本発明は有効である。
図23は、キャッシュメモリ210の構成を表している。
キャッシュメモリ210は、固定長のスロット21100に分割されている。スロット21100が、データの記憶単位となる。なお、本実施例では、フラッシュパッケージ230、高速ディスク265及び低速ディスク290は、ストレージコントローラ200からは、それぞれ、1台の記憶装置に見えているものとする。したがって、ストレージコントローラ200が、高信頼化のために、1台の記憶装置が故障してもその記憶装置のデータを回復できるRAID(Redundant Array of Independent (or Inexpensive) Disks)機能をもっているものとする。RAID機能もった場合、複数の同一種類の記憶装置が、1つのRAID構成をとる。これを、本実施例において記憶装置グループと呼ぶ。すなわち、複数のフラッシュパッケージ230、複数の高速ディスク265、複数の低速ディスク290は、それぞれ、RAID構成をとり、それぞれを、フラッシュパッケージグループ280、高速ディスクグループ285、低速ディスクグループ295と呼ぶことができる。なお、これらを総称して、記憶装置グループと呼ぶことができる。ただ、そのようなRAID機能を、ストレージコントローラ200が、もっていなくとも、本発明は有効である。
図3は、共有メモリ220に格納された情報を示す。
共有メモリ220は、ストレージシステム情報2050、論理ボリューム情報2000、実ページ情報2100、空きページ管理情報ポインタ2200、記憶装置グループ情報2300、記憶装置情報2500、仮想ページ容量2600、スケジュール情報2700、空きキャッシュ管理情報ポインタ2650、キャッシュ管理情報2750、スロット管理情報2760、LRUスロット前方ポインタ2770、LRUスロット後方ポインタ2780、空きスロットポインタ2800、空きスロット数2820、セグメント管理情報2850、LRUセグメント前方ポインタ2870、LRUセグメント後方ポインタ2880、空きセグメントポインタ2910、空きセグメント数2920、無効スロットポインタ2950、及び、ヒット率情報2980を記憶する。この中で、ストレージシステム情報2050は、ストレージシステム100に関する情報で、実施例1では、ストレージシステム識別子を含む。ストレージシステム識別子は、当該ストレージシステム100の識別子である。
前述したように、ストレージステム100は、容量仮想化機能を有する。通常、容量仮想化機能において、記憶領域の割り当て単位は、ページと呼ばれる。また、論理ボリュームは、通常、ホスト110が読み書きをする論理的な記憶装置である。ただし、本発明では、キャッシングのために使用する記憶装置に基づく領域(ページ)の割当先が、論理ボリューム(キャッシュボリューム)として定義される。そして、そのキャッシュボリュームに、容量仮想化機能に従いページを割り当てることで、キャッシュ容量(実容量)が増える。なお、本実施例では、論理ボリューム(キャッシュボリューム)の空間は、仮想ページという単位で、分割されているものとし、実際の記憶装置グループは、実ページという単位で分割されているものとする。容量仮想化機能は、一般に、論理ボリュームの記憶容量を、実ページ総数の容量よりも大きく見せることができる。一般に、1つの仮想ページに対して1つの実ページが割り当てられる。このため、仮想ページの数のほうが、実ページの数より大きいのが、一般的である。ストレージコントローラ200は、ホスト120からのライト要求で指定されたライト先アドレスが属する仮想ページに実ページが割り当てられていないとき、その仮想ページに実ページを割り当てる。
仮想ページ容量2600は、仮想ページの容量である。しかし、本実施例では、仮想ページ容量2600と実ページの容量は等しいというわけではない。というのは、実ページの容量は、RAIDのタイプにより異なってくる冗長データを含むためである。したがって、実ページの容量は、その実ページが割り当てられた記憶装置グループのRAIDタイプにより決まる。たとえば、RAID1のようにデータを2重に書き込む場合、実ページの容量は、仮想ページ容量2600の2倍になる。RAID5のように、N台の記憶装置の容量に対し、1台分の記憶装置の容量の冗長データを格納する場合、仮想ページ容量2600の(N+1)/Nの容量が確保される。当然、RAID0のように、冗長性がない場合、仮想ページ容量2600と等しい容量が実ページの容量ということになる。なお、本実施例においては、仮想ページ容量2600はストレージシステム100の中で共通であるが、ストレージシステム100に仮想ページ容量2600に異なったものがあっても、本発明は有効である。なお、本実施例では、それぞれの記憶装置グループは、RAID5で構成されているものとする。もちろん、本発明は、記憶装置グループが任意のRAIDグループで構成されていても有効である。
図4は、論理ボリューム情報2000の形式を示したものである。
論理ボリュームは、ホスト120からデータがライト又はリードされる論理的な記憶装置である。一般的に、論理ボリュームの識別子は、ストレージシステム100内でユニークな情報である。また、ホスト110から発行されるリード要求又はライト要求は、論理ボリュームのID(例えばLUN(Logical Unit Number))、論理ボリューム内のアドレス、リード対象又はライト対象のデータの長さを含む。
論理ボリューム情報2000は、論理ボリュームごとに存在する情報である。この情報2000は、論理ボリューム識別子2001、論理容量2002、論理ボリュームRAIDタイプ2003、初期割り当て記憶装置2010、論理ボリュームタイプ2005、割り当て範囲2006、キャシングフラグ2009、実ページポインタ2004、使用セグメント数2007、及び、ページ返却フラグ2008を含む。
論理ボリューム識別子2001は、対応する論理ボリュームのIDを示す。
論理容量2002は、この論理ボリュームの容量を表す。
論理ボリュームタイプ2005は、論理ボリュームのタイプを表す。本実施例では、当該論理ボリュームが、ホスト110が読み書きする論理ボリュームか、キャッシュ領域のために使用されるキャッシュボリュームのどちらかを示す。
論理ボリュームRAIDタイプ2003は、該当する論理ボリュームのRAIDタイプ、RAID0、RAID1などを指定する。RAID5のように、N台の容量に対し、1台の容量の冗長データを格納する場合、Nの具体的数値を指定するものとする。ただし、任意のRAIDタイプが指定できるわけでなく、少なくとも1つ記憶装置グループがもつRAIDタイプである必要がある。
割り当て範囲2006は、当該論理ボリュームに割り当てる記憶装置の範囲(例えば、どの記憶装置に基づくページを当該論理ボリュームに割り当てられるかを表す情報)を示している。一般に、キャッシングのために使用される領域(キャッシュボリューム)は、データを格納する領域(ホストが読み書きする論理ボリューム)より、よい性能の記憶装置に基づく領域であるべきである。したがって、キャッシュボリュームは、フラッシュパッケージグループ280に基づく実ページが固定的に割り当てられても良いし、フラッシュパッケージグループ280と高速ディスクグループ285のどちらかに基づく実ページが固定的に割り当てられても良いし、高速ディスクグループ285に基づく実ページが固定的に割り当てられても良い。ただし、本発明は、キャッシュボリュームに、低速ディスクグループ295に基づく実ページが割り当られても有効である。以下の実施例では、キャッシュボリュームには、フラッシュパッケージ230に基づく実ページが固定的に割り当てられるものとする。もちろん、キャッシュボリュームに、フラッシュパッケージグループ280と高速ディスクグループ285のどちらかに基づく実ページが固定的に割り当てられても、高速ディスクグループ285に基づく実ページが固定的に割り当てられても、本発明は有効である。一方、ホスト110から読み書きされるデータを格納する論理ボリューム(以下、ホストボリューム)の割り当て範囲2006も、制限されてよい。本実施例では、フラッシュパッケージグループ280に基づく複数の実ページのうちキャッシュボリュームに割り当てられる実ページはホストボリュームには割り当てないように割り当て範囲2006が設定されているものとする。
実ページポインタ2004は、当該論理ボリュームの仮想ページに割り当てられた実ページの実ページ情報2100へのポインタである。実ページポインタ2004の数は、当該論理ボリュームの仮想ページの数(論理ボリューム容量2002を仮想ページ容量2600で割った数になるが、余りがでれば+1)である。最初の実ページポインタ2004に対応する実ページが、論理ボリュームの先頭の仮想ページに割り当てられた実ページで、以降、次の実ページポインタ2004には、次の仮想ページに割り当てる実ページに対応するポインタが格納される。また、容量仮想化機能によれば、実ページが割り当てられるのは、論理ボリュームを定義した契機ではなく、該当する仮想ページにデータ書き込みが行われる契機である。したがって、まだ書き込みが行われていない仮想ページの場合、対応する実ページポインタ2004はヌルになっている。キャッシュボリュームを構成する各仮想ページは、キャッシュの割り当て単位であるセグメントに分割される。セグメントのサイズは、スロットのサイズと同じである。仮想ページのセグメント数は、仮想ページの容量を、セグメントの容量で割った数となる。使用セグメント数2007、ページ返却フラグ2008も仮想ページ対応の情報であるが、これらの情報が用いられるのは、当該論理ボリュームがキャッシュボリュームとして用いられているときである。使用セグメント数2007は、当該仮想ページに含まれるセグメントの中で、データを格納しているセグメントの数である。ページ返却フラグ2008は、仮想ページ単位に、存在する。有効なのは、対応する仮想ページが、キャッシュボリューム内の仮想ページである場合のみである。ページ返却フラグ2008は、キャッシュ容量を削減しても、十分なヒット率が得られると判断したとき、当該仮想ページへの実ページの割り当てを終了したいときONにする。ただし、使用セグメント数2007が0でなければ、対応する実ページには、データが格納されているので、直ちに、当該実ページの解放はできない。本実施例では、ページ返却フラグ2008をオンにした直後、ストレージコントローラ200は、そのフラグ2008に対応する仮想ページで使用しているセグメントを別仮想ページに移して(すなわち、そのフラグ2008に対応する仮想ページに割り当てられている実ページ内のデータを別の実ページに移し、かつ、その別の実ページを別の仮想ページに割り当て)、当該仮想ページを解放してもよい。ただし、本実施例では、ストレージコントローラ200は、
新たに、本仮想ページに含まれるセグメントを割り当てることはやめ、それまで割り当てていたセグメントが解放されるのを待ち、当該仮想ページの解放を行うようにする。
新たに、本仮想ページに含まれるセグメントを割り当てることはやめ、それまで割り当てていたセグメントが解放されるのを待ち、当該仮想ページの解放を行うようにする。
キャシングフラグ2009は、当該論理ボリュームのデータを記憶装置(キャッシュボリューム)にキャッシングするかを示す。
初期割り当て記憶装置2010は、記憶装置へのキャッシングを行う際、フラッシュパッケージ230、高速ディスク265及び低速ディスク290のどの記憶装置にキャッシングするかを示す。後述するように、実施例1は、キャッシングを行う際には、フラッシュパッケージ230に行うとするので、初期割り当て記憶装置2010は、フラッシュパッケージ230を示していることになる。
図5は、スケジュール情報2700の形式である。
本実施例では、ストレージコントローラ200は、記憶装置グループの利用率(さらに、フラッシュパッケージグループ280の場合、空き容量や平均余命)などを計算し、算出された値が、その値と比較される基準値を満たさない場合、実ページ間でデータを移動し、移動元の実ページの割当て先の仮想ページに、移動元の実ページに代えて移動先の仮想ページを割り当てる。本実施例では、この処理を開始するのは、特定のスケジュール時間とする。ただし、任意の時間に実ページの割り当てが変更されても(実ページ間でデータが移動されても)も本発明は有効である。
スケジュール情報2700は、前回スケジュール時刻2701と次回スケジュール2702とを含む。前回スケジュール時刻2701は、実ページ間データ移動が直近に実行されたスケジュール時刻(過去)であり、次回スケジュール時刻2702は、次回に実ページ間データ移動を変更するスケジュールする時刻(将来)である。ここで言う実ページ間データ移動とは、例えば、仮想ページ毎に、次の(1)乃至(3)を行うこと、
(1)仮想ページ(言い換えれば、仮想ページに割り当てられた実ページ)のアクセス状況(例えば、アクセス頻度或いは最終アクセス時刻)が、その仮想ページに割り当てられている実ページを含んだ記憶階層に対応したアクセス状況許容範囲に属しているか否かを判断すること、
(2)その(1)の判断結果が否定的の場合に、その仮想ページに割り当てられている実ページ内のデータを、その仮想ページのアクセス状況が属するアクセス状況許容範囲に対応した記憶階層内の未割当ての実ページに移動すること、
(3)その仮想ページに、移動元実ページに代えて移動先実ページを割り当てること、
を含んで良い。
(1)仮想ページ(言い換えれば、仮想ページに割り当てられた実ページ)のアクセス状況(例えば、アクセス頻度或いは最終アクセス時刻)が、その仮想ページに割り当てられている実ページを含んだ記憶階層に対応したアクセス状況許容範囲に属しているか否かを判断すること、
(2)その(1)の判断結果が否定的の場合に、その仮想ページに割り当てられている実ページ内のデータを、その仮想ページのアクセス状況が属するアクセス状況許容範囲に対応した記憶階層内の未割当ての実ページに移動すること、
(3)その仮想ページに、移動元実ページに代えて移動先実ページを割り当てること、
を含んで良い。
図6は、実ページ情報2100の形式である。
実ページ情報2100は、実ページごとに存在する、該当する実ページの管理情報である。実ページ情報2100は、記憶装置グループ2101、実ページアドレス2102、空きページポインタ2103、実ブロック割り当て数2104、追加実ブロック割り当て数2105、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、追加実ブロック割り当て時間2108、移動中フラグ2109、移動先実ページ情報2110、移動待ちフラグ2111、累積ページ動作時間2113、累積ページR/W回数2114、追加ページ動作時間2115、及び追加ページR/W回数2116を含む。なお、実ブロック割り当て数2104、追加実ブロック割り当て数2105、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、追加実ブロック割り当て時間2108は、当該実ページが、フラッシュパッケージグループ280に定義された実ページの場合、有効になる情報(有効な値が設定される情報)である。
記憶装置グループ2101は、該当する実ページが、どの記憶装置グループの基になっている実ページを示す。実ページアドレス2102は、当該実ページの基になっている記憶装置グループの中で、当該実ページが、どの相対的なアドレスに属する実ページかを示す情報である。空きページポインタ2103は、この実ページが仮想ページに割り当てられていない場合、有効な値となる。この場合、その値は、対応する記憶装置グループの中で、仮想ページが割り当てられていない次の実ページに対応する空きページ情報2100をさす。仮想ページが割り当てられている場合、空きページポインタ2103は、ヌル値となる。実ブロック割り当て数2104、追加実ブロック割り当て数2105は、当該記憶装置グループを構成する記憶装置の数だけ存在する。
本実施例においては、それぞれのフラッシュパッケージ230は、容量仮想化機能をもっており、ストレージコントローラ200には、見かけ上、実際の物理容量より大きな容量を提供している。フラッシュパッケージ230の容量仮想化の単位は、本実施例では、フラッシュメモリの消去単位であるブロックとする。以下、ストレージコントローラ200から見たブロックを仮想ブロックと呼び、仮想ブロックに割り当てられ得るブロックを実ブロックと呼ぶ。したがって、本実施例では、実ページは、仮想ブロックにより構成されることになる。また、本実施例では、仮想ブロックにより構成される容量空間のほうが、実ブロックにより構成される容量空間より大きいことになる。図7は、仮想ページ、実ページ、仮想ブロック、実ブロックの関係を示したものである。すでに述べたように、実ページには、仮想ページにはない、冗長データが含まれている。一方、仮想ブロック、実ブロックに含まれるデータは同じである。また、本実施例では、フラッシュパッケージ230は、実ブロック数より多くの仮想ブロックをもっているように、ストレージコントローラ200に見せていることになる。ただし、本実施例では、ストレージコントローラ200は、実際にフラッシュパッケージ230がいくつの実ブロックをもっているかを意識して、実ページの再配置を行う。本実施例では、フラッシュパッケージ230が、まだ実ブロックを割り当てていない仮想ブロックに、ライト要求を受け付けたとき、実ブロックを割り当てる。新たに、実ブロックを割り当てた場合、フラッシュパッケージ230は、その旨を、ストレージコントローラ200に通知する。実ブロック割り当て数2104は、当該実ページに実際に割り当てられている実ブロックの数の中で前回スケジュール時刻2701以前に割り当てられた実ブロックの数である。また、追加実ブロック数2105は、当該実ページに実際に割り当てられている実ブロックの数の中で前回スケジュール時刻2701以降に割り当てられた実ブロックの数である。
累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、追加実ブロック割り当て時間2108も、それぞれ、当該実ページの基になっているフラッシュパッケージグループ280を構成するフラッシュパッケージ230の数だけ存在する。ただし、これらの情報は、この実ページに含まれる仮想ブロックの属性情報ではなく、この実ページ内のデータに関する属性情報である。したがって、この仮想ページが別の実ページに割り当てられ、現在の実ページからその別の実ページにデータが移動された場合、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、追加実ブロック割り当て時間2108の情報も、移動元実ページの実ページ情報2100から移動先実ページの実ページ情報2100にコピーされる必要がある。
累積実ブロック割り当て時間2106は、この実ページに対応しているそれぞれの仮想ブロックに実ブロックが割り当てられた契機(この割り当て契機は、現在の実ページでではなく、過去の実ページで起こった可能性もある。)から、前回スケジュール時刻2701までの経過時間を、すべての仮想ブロックに関して合計したものである。累積実ブロック消去回数2107は、この実ページに対応しているそれぞれの仮想ブロックに実ブロックが割り当てられた契機からの、仮想ブロックが割り当てられていた実ブロックの消去回数を、すべての仮想ブロックに関して合計したものである。追加実ブロック割り当て時間2108は、前回スケジュール時刻2701以降に仮想ブロックに割り当てた実ブロックの割り当て時間である。当該実ページに実ブロックが新たに1つ割り当てられると、追加実ブロック割り当て時間2108には、次回スケジュール時刻2702から割り当てを行った時刻を引いた値が加算される。この値を加算する理由については、後で説明する。
移動中フラグ2109、移動先実ページ情報2110、移動待ちフラグ2111は、当該実ページのデータを別の実ページに移動するときに使用される情報である。移動中フラグ2109は、この実ページのデータを別実ページに移動中のときにONになるフラグである。移動先実ページ情報2110は、この実ページのデータを移動している移動先の実ページのアドレス情報である。移動待ちフラグ2111は、当該実ブロックを移動すると決定したときに、ONになるフラグである。
累積ページ動作時間2113、累積ページR/W回数2114、追加ページ動作時間2115、追加ページR/W回数2116は、対応する実ページの動作に関する情報である。R/Wは、リード/ライト(リード及びライト)の略である。累積ページ動作時間2113、累積ページR/W回数2114は、これまで、この実ページがR/Wを行っていた時間の累積時間と累積R/W回数を示す。対応する実ページの、追加ページ動作時間2115、追加ページR/W回数2116は、前回スケジュール時刻2701以降の、この実ページがR/Wを行っていた時間の合計時間とR/W回数を示す。これらの実ページに関する情報で、ストレージコントローラ200は、当該実ページの混雑度を評価し、必要があれば、対応する実ページ内のデータを、同一の種類の記憶装置グループに基づく他の実ページに移動したり、割り当て範囲2006の範囲内で、他の種類の記憶装置グループに基づく実ページに移動したり(例えば、フラッシュパッケージ230から高速ディスク265へのデータ移動)する。
図8は、空きページ管理情報ポインタ2200によって管理される空き実ページの集合を表している。
空きページ管理情報ポインタ2200は、記憶装置グループごとに設けられる情報である。空きページ(空き実ページ)とは、仮想ページに割り当てられていない実ページを意味する。また、空き実ページに対応した実ページ情報2100を空き実ページ情報2100と呼ぶことがある。空き実ページ管理情報ポインタ2200は、先頭の空き実ページ情報2100のアドレスをさす。次に、先頭の実ページ情報2100の中の空きページポインタ2103が、次の空き実ページ情報2100を指す。図8では、最後の空き実ページ情報2100の空き実ページポインタ2103は、空きページ管理情報ポインタ2200を示しているが、ヌル値でもよい。ストレージコントローラ200は、実ページが割り当てられていない仮想ページをライト先としたライト要求を受け付けると、論理ボリュームRAIDタイプ2003と割り当て範囲2006に該当する、記憶装置グループのいずれか、例えば、該当する記憶装置グループの中の空き実ページ数の最も多い記憶装置グループに対応する空きページ管理情報ポインタ2200から、空き実ページを探し、見つかった空き実ページを仮想ページに割り当てる。
図9は、記憶装置グループ情報2300の形式を示す。
記憶装置グループ情報2300は、記憶装置グループID2301、記憶装置グループRAIDタイプ2302、実ページ数2303、空き実ページ数2304、及び記憶装置ポインタ2305を含む。
記憶装置グループID2301は、当該記憶装置グループの識別子である。記憶装置グループRAIDタイプ2302は、当該記憶装置グループのRAIDタイプである。本実施例におけるRAIDタイプは、論理ボリュームRAIDタイプ2003を説明したときに述べたとおりである。実ページ数2303、空き実ページ数2304は、それぞれ、フラッシュパッケージグループ280の、全体の実ページ数、空き実ページの数を示す。記憶装置ポインタ2305は、当該記憶装置グループ280に属する記憶装置230の記憶装置情報2500へのポインタである。記憶装置ポインタ2305の数は、当該記憶装置グループ280に属する記憶装置の数であるが、これは、記憶装置グループRAIDタイプ2302によって決まる値である。
図10は、記憶装置情報2500の形式である。
記憶装置情報2500は、記憶装置ID2501、記憶装置タイプ2510、記憶装置仮想容量2502、ブロック容量2503、記憶装置内実ブロック割り当て数2505、記憶装置内追加実ブロック割り当て数2506、記憶装置内累積実ブロック割り当て時間2507、記憶装置内累積実ブロック消去回数2508、記憶装置内追加実ブロック割り当て時間2509、記憶装置累積動作時間2511、記憶装置累積ページR/W回数2512、記憶装置追加ページ動作時間2513、及び記憶装置追加ページR/W回数2514を含む。
記憶装置仮想容量2502、ブロック容量2503、記憶装置内実ブロック割り当て数2505、記憶装置内追加実ブロック割り当て数2506、記憶装置内累積実ブロック割り当て時間2507、記憶装置内累積実ブロック消去回数2508、記憶装置内追加実ブロック割り当て時間2509は、記憶装置がフラッシュパッケージ230のときに、有効な情報である。記憶装置累積動作時間2511、記憶装置累積ページR/W回数2512は、該当する記憶装置の動作時間、R/W回数の累積値である。一方、記憶装置追加ページ動作時間2513、記憶装置追加ページR/W回数2514は、該当する記憶装置の、前回スケジュール時刻以降の、記憶装置の動作時間、R/W回数の合計値である。
記憶装置ID2501は、当該記憶装置の識別子である。記憶装置タイプ2510は、当該記憶装置のタイプ、例えば、フラッシュパッケージ230、高速ディスク265、低速ディスク290のいずかを示す。記憶装置仮想容量2502は、当該記憶装置の仮想的な容量である。ブロック容量2503は、仮想ブロック、実ブロックに含まれるデータの容量である(仮想ブロックに格納されるデータが実際に実ブロックに格納される)。したがって、記憶装置仮想容量2502をブロック容量2503で割った値が、この記憶容量の仮想ブロック数となる。記憶装置内実ブロック割り当て数2505、記憶装置内追加実ブロック割り当て数2506、記憶装置内累積実ブロック割り当て時間2507、記憶装置内累積実ブロック消去回数2508、記憶装置内追加実ブロック割り当て時間2509は、対応する記憶装置グループ280に基づくすべての実ページ情報2100に対応する当該記憶装置に関するページ情報2100の中の実ブロック割り当て数2104、追加実ブロック割り当て数2105、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、追加実ブロック割り当て時間2108が、それぞれ合計されたものである。
キャッシュ管理情報2750は、スロット21100(又はセグメント)に格納されたデータの管理情報で、スロット21100(又はセグメント)対応に存在する。
図11は、キャッシュ管理情報2750のフォーマットを示している。
キャッシュ管理情報2750は、前方ポインタ2751、後方ポインタ2752、パリティ生成後領域ポインタ2753、パリティ生成前領域ポインタ2754、ダーティビットマップ2755、パリティ生成前ダーティビットマップ2756及びキャッシュアドレス2757を含む。
前方ポインタ2751は、図12に示すLRUスロットキュー1200、LRUセグメントキュー1210の前方のキャッシュ管理情報2750を示す。後方ポインタ2752は、LRUスロットキュー1200、LRUセグメントキュー1210の後方のキャッシュ管理情報2750を示す。パリティ生成後領域ポインタ2753は、クリーンデータ(二次記憶装置に格納されたデータ)を格納したスロット21100(又はセグメント)へのポインタを示す。パリティ生成前領域ポインタ2754は、パリティを生成していないダーティデータを格納したスロット21100(又はセグメント)へのポインタを示す。パリティ生成前ダーティビットマップ2756は、パリティ生成前領域ポインタ2754がポイントするスロット21100(又はセグメント)の中のダーティデータを示す。キャッシュドアドレス2757は、当該キャッシュ管理情報2750に対応したスロット21100(又はセグメント)に格納したデータの論理ボリュームとその相対アドレスを示す。
図12は、LRUスロットキュー1200、LRUセグメントキュー1210を表している。
LRUスロットキュー1200は、スロットにデータが格納されたキャッシュ管理情報2750をLRU順に管理している。LRUスロット前方ポインタ2770は、最近アクセスされたキャッシュ管理情報2750を示している。LRUスロット後方ポインタ2780は、最も以前にアクセスされたキャッシュ管理情報2750を示している。本実施例では、空きスロット21100が少なくなってくると、LRUスロット後方ポインタ2780が示したキャッシュ管理情報2750に対応したデータが、セグメントに移される。LRUセグメントキュー1210は、セグメントにデータが格納されたキャッシュ管理情報をLRU順に管理している。LRU前方セグメントポインタ2870は、スロット21100に格納されたデータをセグメントに移した際に、該当するキャッシュ管理情報2750をポイントするようにする。LRU後方セグメントポインタ2880は、セグメントの中で最も以前にアクセスされたキャッシュ管理情報2750をポイントしている。
図13は、空きキャッシュ管理情報キュー1300、空きスロットキュー1310、空きセグメントキュー1320、無効セグメントキュー1330を表している。
空きキャッシュ管理情報キュー1300は、空いた状態のスロット21100(又はセグメント)に対応したキャッシュ管理情報2750のキューである。空きキャッシュ管理情報ポインタ2650は、空きキャッシュ管理情報キュー1300の中の先頭のキャッシュ管理情報2750を示している。
空きスロットキュー1310は、空いた状態のスロット21100に対応したスロット管理情報2760のキューである。空きスロットポインタ2800は、空きスロットキュー1310キューの中の先頭のスロット管理情報2760を示す。空きスロット数2820は、空いた状態のスロット管理情報2760の数である。
空きセグメントキュー1320は、空いた状態のセグメントに対応したセグメント管理情報2850のキューである。なお、空きセグメントキューは、記憶装置の種類ごとに設けられる。記憶装置の種類は、例えば、記憶装置のアクセス性能によって異なる。例えば、フラッシュパッケージ230、高速ディスク265、低速ディスク290の3種類にそれぞれ対応した3つの空きセグメントキューが設けられて良い。ただし、本実施例では、キャッシングがされるのは、フラッシュパッケージ230なので、フラッシュパッケージ230対応の情報が有効で良い。ただし、高速ディスク265がキャッシング用に用いられる場合、高速ディスク265に対応した空きセグメントキュー1320が設けられることになる。空きセグメントポインタ2910は、空きセグメントキュー1320の中の先頭のセグメント管理情報2850へのポインタである。空きセグメント数2920は、空いた状態のセグメント管理情報2850の数である。
無効セグメントキュー1330は、割り当てられていないセグメントに対応したセグメント管理情報2850のキューである。ページが割り当てられ、そのページに含まれるセグメントに、無効セグメントキュー1330の先頭のセグメント管理情報2850が取得され、無効セグメントキュー1330に接続された無効セグメントポインタ2950は、無効セグメントキュー1330の中の先頭のセグメント管理情報2850へのポインタである。なお、無効セグメントキュー1330は、記憶装置の種類ごとに設けられて良い。したがって、フラッシュパッケージ230、高速ディスク265、低速ディスク290の3種類のそれぞれについて無効セグメントキュー1330が設けられて良い。ただし、本実施例では、キャッシングがされるのは、フラッシュパッケージ230なので、フラッシュパッケージ230に対応する無効セグメントキュー1330が設けられて良い。
図14は、スロット管理情報2760のフォーマットである。
スロット管理情報2760は、スロット毎に存在し、次スロットポインタ1400とスロットアドレス1401とを有する。
次スロットポインタ1400は、スロット管理情報2760が空き状態のスロットに対応しているとき、空き状態にあるスロットの次のスロット管理情報2760を示している。スロットアドレス1401は、対応するスロット21100のアドレスを示す。
図15は、セグメント管理情報2850のフォーマットである。
セグメント管理情報2850は、セグメント毎に存在し、次セグメントポインタ1500とセグメントアドレス1501とを有する。
次セグメントポインタ1500は、セグメント管理情報2850が空き状態のセグメントに対応しているとき、空き状態にあるセグメントに対応した次のセグメント管理情報2850を示している。セグメントアドレス1501は、対応するセグメントのアドレスを示す。このアドレスは、キャッシュボリュームのIDと、当該論理ボリュームの相対アドレスとを含む。これによって、ストレージコントローラ200は、このセグメントを含む仮想ページに割り当てた実ページを移動しても、セグメントアドレス1501を変更せずに済む。
図16は、ヒット率情報2980のフォーマットである。
ヒット率情報2980は、目標ヒット率1600、最新ポインタ1601、キャッシュ容量1602、ヒット数1603及びミス数1604を含む。目標ヒット率1600及び最新ポインタ1601は、それぞれ1つであり、キャッシュ容量1602、ヒット数1603及びミス数1604は、それぞれである。本来であれば、目標ヒット率1600、最新ポインタ1601は1つ、キャッシュ容量1602、ヒット数1603及びミス数1604は、記憶装置ごと、例えば、フラッシュパッケージ230、高速ディスク265及び低速ディスク295のそれぞれについて存在して良い。ただし、実施例1では、キャッシングがされるのは、フラッシュパッケージ230であるため、有効なのは、フラッシュパッケージ230に対応した情報1602〜1604である。
目標ヒット率1600は、記憶装置のキャッシュの目標とするヒット率である。本実施例では、キャッシュのヒット率が目標ヒット率1600と同等であれば、キャッシュ容量の増加及び削減のいずれもされないで良い。ヒット率が目標ヒット率1600に到達していなければ、キャッシュ容量が増加される。ヒット率が目標ヒット率1600より明らかに高い場合(例えば、ヒット率が目標ヒット率1600より所定値以上大きい場合)、キャッシュ容量が削減されて良い。キャッシュ容量の調整の判断は、スケジュール時点2700において行われて良い。ここでは、過去m回分のスケジュール時点2700の、キャッシュ容量1602とヒット率(ヒット数1603/(ヒット数1603+ミス数1604)から、目標ヒット率1600を達成するのに必要なキャッシュ容量が予測され良い。この予測容量にキャッシュ容量を近づける(望ましくは等しくさせる)ため、実ページの確保又は解放が行われる。
次に、上記に説明した管理情報を用いて、ストレージコントローラ200が実行する動作の説明を行う。まず、ストレージコントローラ200の動作を説明する。ストレージコントローラ200の動作は、ストレージコントローラ200内のプロセッサ260が実行し、そのプログラムは、メモリ270に格納されている。
図17は、メモリ270内のプログラムを示す。
本実施例に関するプログラムは、リード処理実行部4000、ライト要求受付部4100、スロット確保部4200、セグメント確保部4300、移動ページスケジュール部4400、実ページ移動処理実行部4500、記憶装置選択部4700及びキャッシュ容量調整部4600である。これらのプログラムは、上位レベルの(例えば複数のフラッシュパッケージ230についての)ウエアレベリング技術、容量仮想化技術を実現するプログラムである。これらのプログラムは、プロセッサ260によって実行される。プロセッサ260によって実行される処理の主語を、プログラムとすることもあればプロセッサ260とすることもある。
図18は、リード処理実行部4000の処理フローである。リード処理実行部4000は、ホスト120から、ストレージコントローラ200がリード要求を受け付けたときに実行される。
ステップ5000:プロセッサ260は、受け取ったリード要求で指定されたリード対象とするアドレスから、対応する仮想ページとアクセスする仮想ページ内の相対アドレスを計算する。
ステップ5001:プロセッサ260は、リード対象となったデータが、スロット21100、あるいは、セグメントにヒットしているか(存在しているか)をチェックする。データがヒットしている場合、ステップ5010へジャンプする。
ステップ5002:データがミスしている場合、プロセッサ260は、空きスロット数2820をチェックする。この空きスロット数2820が、一定値未満であれば、プロセッサ260は、スロット確保部4200を起動する。この空きスロット数2820が、一定値以上であれば、ステップ5003へ移る。
ステップ5003:プロセッサ260は、リード対象となっているデータを含むスロット分のデータを格納するための空きキャッシュ管理情報キュー1300から、キャッシュ管理情報2750を確保し、その情報2750内のキャッシュアドレス2757に、リード対象とする論理ボリュームのIDと相対アドレスとを格納する。また、プロセッサ260は、今回の時点(スケジュール時点2700)に対応するミス数1640を1つ増やす。さらに、プロセッサ260は、上記確保した情報2750内の前方ポインタ2751及び後方ポインタ2752などを操作して、当該キャッシュ管理情報2750を、LRUスロットキュー1200の先頭に設定する。さらに、プロセッサ260は、空きスロット管理情報キュー1310から、スロット管理情報2760を確保し、キャッシュ管理情報2750に、このスロット管理情報2760のアドレスを設定する。
ステップ5004:ここでは、プロセッサ260は、リード対象としているデータを含むスロット分のデータをスロット21100にロードする必要がある。まず、当該ステップでは、プロセッサ260は、リード対象となった仮想ページに割り当てた実ページに対応する実ページ情報2100を、論理ブロック管理情報2000の実ページポインタ2004から獲得する。
ステップ5005:プロセッサ260は、獲得した実ページ情報2100の記憶装置グループ2101、実ページアドレス2102から、当該実ページが属する記憶装置グループと当該実ページの記憶装置グループの先頭アドレスを得る。
ステップ5006:プロセッサ260は、ステップ5005で得た仮想ページ内の相対アドレスと記憶装置グループ内RAIDタイプ2302から、当該要求のアクセス対象となる実ページ内の相対アドレスを計算する。プロセッサ260は、計算した実ページ内相対アドレス、記憶装置グループ内RAIDタイプ2302と、記憶装置ポインタ2305とを基に、どの記憶装置のどのアドレスがアクセス先かを獲得する。
ステップ5007:ステップ5006で獲得した記憶装置に対し、プロセッサ260は、獲得したアドレスを指定したリード要求を発行する。
ステップ5008:プロセッサ260は、記憶装置230からデータが送られてくるのを待つ。
ステップ5009:プロセッサ260は、記憶装置から送られてきたデータをスロット21100に格納する。 この後、ステップ5016へジャンプする。
ステップ5010:ここでは、プロセッサ260は、要求されたデータがスロット21100にヒットしているかをチェックする。そうであれば、ステップ5016ヘジャンプする。
ステップ5011:要求されたデータ(リード対象データ)がスロットではなくセグメントに格納されている場合、まず、当該キャッシュ管理情報2750でセグメントのデータを一度、スロット21100(DRAMキャッシュ)に移すという方法がある。もちろん、このような方法をとることは、本発明で有効である。また、プロセッサ260は、ヒット数1603を1つ増加させる。ただし、本実施例では、プロセッサ260は、当該セグメントに対応するキャッシュ管理情報をLRUセグメントキュー1210の先頭に移すようにする。まず、本ステップでは、プロセッサ260は、このセグメントを含む仮想ページのページ返却フラグ2008がオンかをチェックする。オンであれば、キュー移動は行わず、ステップ5013へジャンプする。
ステップ5012:プロセッサ260は、当該キャッシュ管理情報2750を、LRUセグメントキューの先頭に移す。
ステップ5013:プロセッサ260は、キャッシュ領域に格納された要求データを、記憶装置からバッファ275に読み出すよう、記憶装置にリード要求を発行する。
ステップ5014:プロセッサ260は、記憶装置230からデータが、バッファ275に送られてくるのを待つ。
ステップ5015:プロセッサ260は、記憶装置から送られバッファ275に格納されたデータを、ホスト110へ送る。
ステップ5016:プロセッサ260は、当該リード要求で指定されたデータを、スロット21100から、ホスト110へ送る。
図19は、ライト要求受付部4100の処理フローである。ライト要求受付部4100は、ストレージコントローラ200が、ホスト110からライト要求を受け付けたときに実行される。
ステップ6000:プロセッサ260は、受け取ったライト要求がライト対象とするアドレスから、対応する仮想ページとアクセスする仮想ページ内の相対アドレスを計算する。
ステップ6001:プロセッサ260は、ライト要求で指定されている論理ボリュームIDに対応した論理ボリューム情報2000の中で、ステップ6000で得た仮想ページに実ページが割り当てられているかを、実ページポインタ2004を参照して、チェックする。割り当てている場合、ステップ6003へジャンプする。
ステップ6002:当該ステップでは、プロセッサ260は、対応する仮想ページに実ページを割り当てる。プロセッサ260は、論理ボリューム情報2000のRAIDタイプ2002と割り当て範囲2006と、記憶装置グループ情報の、パッケージグループRAIDタイプ2303、空き実ページ数2304等を参照して、どの記憶装置グループの実ページを割り当てるかを決める 。その後、プロセッサ260は、対応する記憶装置グループの空きページ管理情報ポインタ2400を参照して、先頭の空きページ情報2100を、当該実ページポインタ2004が示すようにする。これで、プロセッサ260は、仮想ページに実ページを割り当てたことになる。なお、プロセッサ260は、空きページ管理情報ポインタ2400を、次の実ページ情報2100(仮想ページに割り当てた実ページの実ページ情報2100の中の空きページポインタ2103が示す実ページ情報2100)を示すようにし、さらに、仮想ページに割り当てた実ページの実ページ情報2100の中の空きページポインタ2103をヌルにする。また、プロセッサ260は、当該実ページに対応するフラッシュパッケージグループ管理情報の空きページ数2304の数を減らす。仮想ページを実ページに割り当てる処理を、本実施例では、ライト要求を受け付けたときに実施したが、本発明では、この割り当て処理は、フラッシュパッケージ230へデータを格納するまでに実行すればよい。
ステップ6003:プロセッサ260は、ライト対象となったデータを含むスロット21100に、キャッシュ管理情報2750が、割り当てられているかをチェックする。割り当てられている場合、ステップ6007へジャンプする。
ステップ6004:割り当てられていない場合、プロセッサ260は、空きスロット数2820をチェックする。この空きスロット数2820が、一定値未満であれば、プロセッサ260は、スロット確保部4200を起動する。この空きスロット数2820が一定値以上であれば、ステップ6005へ移る。
ステップ6005:プロセッサ260は、ライト対象となっているデータを含むスロット分のデータを格納するための空きキャッシュ管理情報キュー1300から、キャッシュ管理情報2750を確保し、その情報2750におけるキャッシュアドレス2705にリード対象とする論理ボリュームと相対アドレスを格納する。
ステップ6006:プロセッサ260は、獲得したキャッシュ管理情報2750を、LRUスロットキュー1200の先頭位置にセットする。
ステップ6007:プロセッサ260は、当該キャッシュ管理情報2750で確保されている領域は、スロット2110(キャッシュメモリ210)であるか、セグメント(記憶装置)であるかを判別する。その確保されている領域がセグメントであれば、ステップ6019へジャンプする。
ステップ6008:このステップは、ライトデータが記憶装置にキャッシングされている場合に、実行されるステップである。本実施例では、プロセッサ260は、記憶装置(キャッシュボリュームに割り当てられている、記憶装置に基づく実ページ)にライトデータを書き込んで、ライト要求を完了させる。本発明は、 ライトデータをキャッシュメモリ210に書き込んだ段階で、ライト要求を完了させても有効である。ここでは、プロセッサ260は、ホスト110から受け取ったライトデータをバッファ275に格納する。
ステップ6009:ここでは、プロセッサ260は、キャッシュ管理情報2750のパリティ生成前領域ポインタ2703が有効かをチェック(スロット21100が確保されているか)をチェックする。この後、ステップ6011へジャンプする。
ステップ6010:プロセッサ260は、ライトデータを格納するため、空きスロット管理情報キュー1400から、スロット管理情報2700を確保し、パリティ生成前ポインタ2753に、このスロット管理情報2750のアドレスを設定する。
ステップ6011:プロセッサ260は、パリティ作成前ポインタ2703から、対応するセグメント管理情報2920を参照して、冗長データの領域を認識する。冗長データを生成するのに必要な情報をバッファ275に格納するために、プロセッサ260は、記憶装置にリード要求を発行する。
ステップ6012:プロセッサ260は、必要なデータが、バッファ275に読み込まれるのを待つ。
ステップ6013:プロセッサ260は、新しい冗長データをバッファ275に生成する。
ステップ6014:プロセッサ260は、生成した冗長データを、記憶装置に書き込むため、記憶装置にライト要求を発行する。
ステップ6015:プロセッサ260は、書き込みが完了するのを待つ。
ステップ6016:プロセッサ260は、パリティ生成前領域ポインタ2703が示すセグメント管理情報に対応するセグメントに書き込むため、記憶装置にライト要求を発行する。
ステップ6017:プロセッサ260は、書き込みが完了するのを待つ。
ステップ6018:ここでは、プロセッサ260は、該当するキャッシュ管理情報2750を、前方ポインタ2751及び後方ポインタ2752などを操作して、LRUスロットキュー1300の先頭に設定する。さらに、プロセッサ260は、対応する更新前ダーティビットマップ2702をオンにする。プロセッサ260は、バッファ275から、スロット2110にライトデータを転送する。
ステップ6019:ここでは、プロセッサ260は、該当するキャッシュ管理情報2750を、前方ポインタ2751及び後方ポインタ2752などを操作して、LRUスロットキュー1300の先頭に設定する。さらに、プロセッサ260は、対応する更新前ダーティビットマップ2702をオンにして、ホスト110から、ライトデータを受け取り、スロット21100に格納する。
記憶装置グループは、RAID構成をとるので、キャッシュメモリ210上に格納したライトデータに対して、冗長データを生成する必要がある。これは、キャッシュボリューム及びホストボリュームのいずれにデータが書き込まれる場合にも必要である。また、実ページの中には、冗長データを格納する領域も含まれているので、ライトデータに対応する冗長データの実ページ内の格納アドレスも一意に定まる。本実施例では、プロセッサ260は、冗長データを生成するのに必要で、キャッシュメモリ210にないデータ、および、生成した冗長データはバッファ275に格納する。なお、プロセッサ260は、バッファ275上の冗長データも、ライトデータと同様に、どの記憶装置のどのアドレスに書き込むべきかを示す情報をつけておく。本実施例では、プロセッサ260は、記憶装置への書き込みは、大きく2つに分けられる。すなわち、(A)キャッシュボリュームへのデータの書込みと、(B)ホストボリュームへのデータの書込みである。(A)は、空きスロット数2820が少なくなってきたときに実行されるスロット確保部4200の一部の処理であり、(B)は、空きセグメント数2920が少なくなってきたときに、実行されるセグメント確保部4600の一部の処理である。
図20は、スロット確保部4200の処理フローである。スロット確保部4200は、プロセッサ260が、適宜実行する処理である。ホスト120からリード要求又はライト要求を受け取ったときに行われる処理において、空きスロット数2820が一定値以下の場合に、空きスロット数2820を増加させるために、スロット確保部4200が起動される。
ステップ7000:プロセッサ260は、LRUスロットキュー1300のLRUスロット後方ポインタ2780が示すキャッシュ管理情報2750を、LRUスロットキューからはずす。また、初期キャッシング記憶装置2010で示されている記憶装置にキャッシングをするので、プロセッサ260は、その記憶装置に対応した空きセグメントキュー1320を認識する。ただし、実施例1では、キャッシング先の記憶装置は、フラッシュパッケージ230となるので、これに対応した空きセグメントキューが認識されることになる。
ステップ70001:ここでは、プロセッサ260は、取り出したキャッシュ管理情報2750のキャッシュアドレス2757をチェックして、当該スロットに対応する論理ボリュームを認識する。さらに、該当する論理ボリュームのキャッシングフラグ2009がオンかをチェックする。オフの場合、記憶装置のキャッシングは行わないので、プロセッサ260は、所定の処理を行う。この処理は、公知の処理で良い。そのため、説明を省略する。以下、キャッシングフラグ2009がオンの場合の処理を説明する。
ステップ7002:プロセッサ260は、空きセグメント数2920をチェックする。空きセグメント数2920が、一定値以下であれば、プロセッサ260は、セグメント確保部4300を起動する。
ステップ7003:プロセッサ260は、パリティ生成後領域ポインタ2702をチェックする。無効であれば、ステップ7013へジャンプする。本実施例では、パリティ生成後領域ポインタ2702が示すスロット21100は、クリーン状態であるが、記憶装置にはキャッシングするようにしている。ただし、本発明は、更新データがないクリーンなデータは、記憶装置にキャシングしないようにしても、有効である。
ステップ7004:プロセッサ260は、空きセグメントキュー1320から、セグメント管理情報2850のセグメントアドレス1501を取り出し、このセグメント管理情報2850に対応するセグメント(論理ボリュームと相対アドレス)を認識する。このとき、プロセッサ260は、空きセグメント数2920を減らす。さらに、プロセッサ260は、このセグメントの冗長データが格納されている領域を認識する。
ステップ7005:ここでは、プロセッサ260は、冗長データを生成するのに必要な情報をバッファ275に格納するために、記憶装置にリード要求を発行する。
ステップ7006:プロセッサ260は、必要なデータが、バッファ275に読み込まれるのを待つ。
ステップ7007:プロセッサ260は、新しい冗長データをバッファ275に生成する。
ステップ7008:プロセッサ260は、生成した冗長データを、記憶装置に書き込むため、記憶装置にライト要求を発行する。
ステップ7009:プロセッサ260は、書き込みが完了するのを待つ。
ステップ7010:プロセッサ260は、パリティ生成後領域ポインタ2702が示すスロット21100に格納されたデータを、ステップ7003で認識したセグメントに書き込むため、記憶装置にライト要求を発行する。
ステップ7011:プロセッサ260は、書き込みが完了するのを待つ。
ステップ7012:プロセッサ260は、パリティ生成後領域ポインタ2702が示すスロット管理情報2760を空きスロットキューにつなぎ、空きスロット数2820を増やす。さらに、プロセッサ260は、パリティ生成後領域ポインタ2702が、ステップ7003で認識したセグメント管理情報2850を示すようにする。
ステップ7013: プロセッサ260は、パリティ生成前領域ポインタ2703をチェックする。無効であれば、ステップ7023へジャンプする。
ステップ7014:プロセッサ260は、空きセグメントキュー1320から、セグメント管理情報2850のセグメントアドレス1501を取り出し、このセグメント管理情報2850に対応するセグメント(論理ボリュームと相対アドレス)を認識する。このとき、プロセッサ260は、空きセグメント数2920を減らす。さらに、プロセッサ260は、このセグメントの冗長データが格納されている領域を認識する。
ステップ7015:ここでは、プロセッサ260は、冗長データを生成するのに必要な情報をバッファ275に格納するために、記憶装置にリード要求を発行する。
ステップ7016:プロセッサ260は、必要なデータが、バッファ275に読み込まれるのを待つ。
ステップ7017:プロセッサ260は、新しい冗長データをバッファ275に生成する。
ステップ7018: プロセッサ260は、生成した冗長データを、記憶装置に書き込むため、記憶装置にライト要求を発行する。
ステップ7019:プロセッサ260は、書き込みが完了するのを待つ。
ステップ7020:プロセッサ260は、パリティ生成前領域ポインタ2703が示すスロットに格納されたデータを、ステップ7003で認識したセグメントに書き込むため、記憶装置にライト要求を発行する。
ステップ7021:プロセッサ260は、書き込みが完了するのを待つ。
ステップ7022:プロセッサ260は、パリティ生成前領域ポインタ2703が示すスロット管理情報2760を空きスロットキューにつなぎ、空きスロット数2820を増やす。さらに、パリティ生成前領域ポインタ2702が、ステップ7003で認識したセグメント管理情報2850を示すようにする。
ステップ7023:プロセッサ260は、空きスロットキュー2820の数をチェックする。これが、所定値より大きければ。処理を終了する。そうでなければ、ステップ7000へジャンプする。
図21は、セグメント確保4300の処理フローである。セグメント確保部4300は、プロセッサ260が、適宜実行する処理である。ホスト120からリード要求又はライト要求を受け取ったときに行われる処理において、空きセグメント数2820が一定値以下の場合に、空きセグメント数2820を増加させるために、セグメント確保部4300が起動される。
ステップ8000:プロセッサ260は、LRUセグメントキュー1310のLRUセグメント後方ポインタ2780が示すセグメント管理情報2700を、LRUセグメントキューからはずす。
ステップ8001:プロセッサ260は、パリティ生成前領域ポインタ2703をチェックする。無効であれば、ステップ80011へジャンプする。
ステップ8002:プロセッサ260は、対応するセグメント管理情報2850のセグメントアドレス1501を取り出し、このセグメント管理情報2850に対応するセグメント(論理ボリュームと相対アドレス)を認識する。また、プロセッサ260は、このセグメントの冗長データが格納されている領域を認識する。プロセッサ260は、パリティ生成前ビットマップ2704で示されたデータを記憶装置に書き込むため、データを書き込む記憶装置とアドレスを認識する。加えて、プロセッサ260は、対応するパリティの記憶装置とアドレスを認識する。
ステップ8003:ここでは、プロセッサ260は、冗長データを生成するのに必要な情報をバッファ275に格納するために、記憶装置にリード要求を発行する。
ステップ8004:プロセッサ260は、必要なデータが、バッファ275に読み込まれるのを待つ。
ステップ8005:プロセッサ260は、新しい冗長データをバッファ275に生成する。
ステップ8006: プロセッサ260は、生成した冗長データを、記憶装置に書き込むため、記憶装置にライト要求を発行する。
ステップ8007:プロセッサ260は、書き込みが完了するのを待つ。
ステップ8008:プロセッサ260は、ステップ8002で認識したデータを同ステップで認識した記憶装置に、認識したアドレスに書き込むよう要求する。
ステップ8009:プロセッサ260は、書き込みが完了するのを待つ。
ステップ8010:プロセッサ260は、当該セグメントを含む仮想ページに対応したページ返却フラグが、オンかをチェックする。そのフラグがオフであれば、プロセッサ260は、パリティ生成前ポインタ2703で示されたセグメント管理情報2850を、空きセグメントキュー1320に戻し、空きセグメント数2920を増やす。そのフラグがオンであれば、プロセッサ260は、当該セグメント管理情報を無効セグメントキュー1302に移し、使用セグメント数2007を1減算し、その使用セグメント数2007が0になったら、プロセッサ260は、対応する仮想ページに割り当てた実ページを解放する。また、プロセッサ260は、いずれの場合も、パリティ生成前ポインタ2703をヌルにする。
ステップ8011:ここでは、プロセッサ260は、パリティ生成後ポインタ2702が有効かをチェックする。有効でなければ、ステップ8014へジャンプする。
ステップ8012:プロセッサ260は、当該セグメントを含む仮想ページに対応したページ返却フラグが、オンかをチェックする。そのフラグがオフであれば、プロセッサ260は、パリティ生成後ポインタ2702で示されていたセグメント管理情報2850を、空きセグメントキュー1320に戻し、空きセグメント数2920を増やす。そのフラグがオンであれば、プロセッサ260は、当該セグメント管理情報を無効セグメントキュー1302に移し、使用セグメント数2007を1減算し、その使用セグメント数2007が0になったら、対応する仮想ページに割り当てた実ページを解放する。また、いずれの場合でも、プロセッサ260は、パリティ生成後ポインタ2702をヌルにする。
ステップ8013:ここでは、プロセッサ260は、キャッシュ管理情報2750を、空きキャッシュ管理情報キュー1400に戻す。
ステップ8014:ここでは、プロセッサ260は、空きセグメント数2920が所定値以上になっているかをチェックする。所定値以上になっていない場合、ステップ8000へ戻る。なっていれば、処理を完了する。
図24は、移動ページスケジュール部4400の処理フローである。移動ページスケジュール部4400は、タイマ240が、次回スケジュール時刻2702になったときに、実行を開始する。移動ページスケジュール部4400は、記憶装置グループ間の性能バランスを保つために、記憶装置グループ間で、実ページ内のデータを移動する。本実施例では、ストレージコントローラ200が、キャッシュ領域として割り当てられている実ページと、ホストボリュームボリュームに割り当てられる実ページとの両方を制御することで、ストレージシステム100全体で統制のとれた性能を達成する実ページの配置が可能となる。なお、キャッシュ領域と割り当てられる実ページは、ホストボリュームに割り当てられる実ページに比べ、アクセス性能のよい(アクセス速度が速い)ことが望ましい。したがって、本実施例では、キャッシュ領域として割り当てる実ページは、フラッシュパッケージグループ280に基づく実ページであり、ホストボリュームに割り当てられる実ページは、高速ディスクグループ又は低速ディスクグループに基づく実ページで良い。また、フラッシュパッケージグループ280に関しては、性能だけでなく、ブロックの消去回数を考慮したページ配置を行うことができる。また、本実施例では、ストレージコントローラ200は、容量仮想化機能をもっており、フラッシュパッケージ間の空きブロックの数も均衡させるようなページ配置も実現することができる。
ステップ10000:プロセッサ260は、すべての記憶装置の記憶装置動作時間2511を、(次回スケジジュ−ル時刻2702−前回スケジュール時刻2701)で割って、仮想的な稼働率を計算する。プロセッサ260は、この値が一定値A以上の記憶装置を含む記憶装置グループから、実ページ内のデータを移動し、負荷を軽減することを決定する。さらに、プロセッサ260は、どれだけの仮想的な稼働率を減らすかを計算しておく。また、プロセッサ260は、仮想的な稼働率の最大値が一定値B以下の記憶装置グループを移動先実ページの基になるグループとし、どれだけの仮想稼働率を増やしてもよいかを決定する。
ステップ10001:まず、プロセッサ260は、同じ種類の記憶装置グループ間で、移動元と移動先となる記憶装置グループのペアを決定する。この場合、プロセッサ260は、移動元と移動先となる記憶装置グループのペア間で、それぞれ、どれだけの仮想的な稼働率を移動するかを決定する。この場合、移動元と移動先の仮想的な稼働率は、1対1になる。
ステップ10002: プロセッサ260は、移動元のすべての仮想的な稼働率を移動先の記憶装置グループに加えても、移動先の許容範囲であれば、ステップ10004へジャンプする。
ステップ10003:プロセッサ260は、異なった種類の記憶装置グループ間で、移動元と移動先の記憶装置グループのペアを決定する。この場合、仮想的な稼働率が、移動先と移動元で異なるので、正規化を行う。プロセッサ260は、異なった記憶装置グループ間で、移動元と移動先の記憶装置グループのペアと、移動元となる記憶装置グループの減らす正規化された仮想的な稼働率、移動先となる記憶装置グループの増やす正規化された仮想的な稼働率を決定する。
ステップ10004:プロセッサ260は、ステップ10001とステップ10003で定めた移動元記憶装置グループの移動元実ページと、ステップ10001とステップ10003で定めた移動先記憶装置グループの実ページを決定する。具体的には、プロセッサ260は、当該記憶装置グループの実ページのページ動作時間2113を参照して、この値を累積していき、先の合計値と同等なるまで、実ページを見出し、これらを移動先の実ページとする。もちろん、ページ動作時間2113が大きなものを選択するのが効率がよい。これを、移動先となるすべての記憶装置グループに対し、実行する。ただし、本実施例では、以下の制約の範囲で、移動元なるページが決定される。
(1キャッシュボリュームに割り当てた実ページ内のデータは、他の種類の記憶装置グループに基づく実ページには移動しない。
(2)ホストボリュームに割り当てた実ページ内のデータで、かつ、キャッシュボリュームに割り当てた実ページにキャッシュされているデータは、フラッシュパッケージグループ280に基づく実ページには移動しない。
(1キャッシュボリュームに割り当てた実ページ内のデータは、他の種類の記憶装置グループに基づく実ページには移動しない。
(2)ホストボリュームに割り当てた実ページ内のデータで、かつ、キャッシュボリュームに割り当てた実ページにキャッシュされているデータは、フラッシュパッケージグループ280に基づく実ページには移動しない。
なお、プロセッサ260は、移動を決定したすべての実ページに対応する実ページ情報2100の移動待ちフラグ2111をオンにする。また、プロセッサ260は、移動先となる記憶装置グループの実ページを、移動元実ページの割当て先の仮想ページに割り当てる。具体的には、プロセッサ260は、移動元の実ページの数だけ、以下の処理を実行する。すなわち、プロセッサ260は、移動先となる記憶装置グループに対応する空き実ページ管理情報ポインタ2200がさす実ページ情報2100を、移動元の実ページの実ページ情報2100のコピー先実ページ情報ポインタ2110に設定し、空き実ページ管理情報ポインタ2200が、次の空いた状態にある実ページ情報2100を示すようにする。
ステップ10005:プロセッサ260は、すべての記憶装置の記憶装置動作時間2511とすべての実ページのページ動作時間2113を0クリアする(0にリセットする)。次に、プロセッサ260は、フラッシュパッケージグループ280が存在するかをチェックする。フラッシュパッケージグループ280が存在すれば、プロセッサ260は、ブロック消去回数を、フラッシュパッケージグループ280間で、実ページ内のデータを移動することで、均衡を図る必要があるかをチェックする。このため、フラッシュパッケージグループ280がなければ、ステップ10011へジャンプする。
ステップ10006:プロセッサ260は、すべてのフラッシュパッケージ160に対応するフラッシュパッケージ情報2500のパッケージ内累積実ブロック割り当て時間2507に、パッケージ内実ブロック割り当て数2505に(次回スケジジュ−ル時刻2702−前回スケジュール時刻2701)を乗算した値を加える。さらに、プロセッサ260は、パッケージ内累積実ブロック割り当て時間2507に、パッケージ内追加実ブロック割り当て時間2509を加える。パッケージ内追加実ブロック割り当て時間2509には、前回スケジュール時刻2701以降割り当てた当該フラッシュパッケージ230の実ブロックごとに、(次回スケジュール実時刻2702−実ブロック割り当て時刻)を加算してきたので、これにより、前回スケジュール時刻2701以降割り当てた実ブロックの割り当て時間を反映できたことになる。さらに、プロセッサ260は、ブロックパッケージ内追加実ブロック割り当て時間2509を0にする。また、プロセッサ260は、パッケージ内実ブロック割り当て数2505に、パッケージ内追加実ブロック数2506を加え、パッケージ内追加実ブロック数2506を0にする。
ステップ10007:プロセッサ260は、すべての実ページに対応する実ページ情報2100の累積実ブロック割り当て時間2106に、追加実ブロック数2105に(次回スケジュール時刻2702−前回スケジュール時刻2701)を乗算した値を、加える。さらに、プロセッサ260は、累積実ブロック割り当て時間2106に、追加実ブロック割り当て時間2108を加える。追加実ブロック割り当て時間2108には、前回スケジュール時刻2701以降割り当てた当該実ページの実ブロックごとに、(次回スケジュール実時刻2702−割り当て時刻)を加算してきたので、これにより、前回スケジュール時刻2701以降割り当てた実ブロックの割り当て時間を反映できたことになる。さらに、プロセッサ260は、追加実ブロック割り当て時間2108を0にする。また、プロセッサ260は、実ブロック割り当て数2104に、追加実ブロック数2105を加え、追加実ブロック数2105を0にする。
ステップ10008:プロセッサ260は、すべてのフラッシュパッケージ230に対応するフラッシュパッケージ情報2500のパッケージ内累積実ブロック消去回数2508をパッケージ内累積実ブロック割り当て時間2507で割る。この値は、実ページの割り当ての変更を行わなかった場合のそれぞれのフラシュパッケージ160の実ブロックの単位時間当りの平均消去回数となる。さらに、プロセッサ260は、すべてのフラッシュパッケージ230に対応するフラッシュパッケージ情報2500のパッケージ内実ブロック割り当て数2505を、割り当て可能実ブロック数2504で割る。この値は、実ページの割り当ての変更を行わなかった場合のそれぞれのフラシュパッケージ230の実ブロックの占有率になる。本実施例では、この平均消去回数が、一定値以上である(フラッシュパッケージ230の余命が短い)、又は、他のフラッシュパッケージ160に比べて一定の割合以上大きい(フラッシュパッケージ230間で、平均消去回数の偏りが大きい)、あるいは、占有率が一定値以上である(フラッシュパッケージ230が満杯になる可能性がある)場合、プロセッサ260は、そのフラッシュパッケージ230を含むフラッシュパッケージグループ280に基づく実ページ内のデータを、他のフラッシュパッケージグループ280の実ページに移動する。また、プロセッサ260は、割り当て可能実ブロック数2504がある基準を満たさなくなったとき、そのフラッシュパッケージ230を含むフラッシュパッケージグループ280に基づく実ページ内のデータを、他のフラッシュパッケージグループ280の実ページに移動してもよい。ここでは、プロセッサ260は、どのフラッシュパッケージグループ280の実ページ内のデータを移動するかを決める。さらに、プロセッサ260は、上記のフラッシュパッケージ230ごとの実ブロックの単位時間当たりの平均消去回数、実ブロックの占有率、割り当て可能実ブロック数2504などを参照して、移動先となるフラッシュパッケージグループ280を決定する。
ステップ10009:プロセッサ260は、実ページの移動元となると決めたフラッシュパッケージグループ280に基づく複数の実ページのうち、どの実ページ内のデータを移動するかを決める。ここでは、プロセッサ260は、移動元となるすべてのフラッシュパッケージグループ280に属する各実ブロック情報2100の、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、実ブロック割り当て数2104などを参照して、移動元実ページを決定する。なお、プロセッサ260は、移動を決定したすべての実ページに対応する実ページ情報2100の移動待ちフラグ2111をオンにする。
ステップ10010:プロセッサ260は、ステップ10009で移動を決定した実ページ(移動待ちフラグ2111をオンにした実ページ情報2100に対応する実ページ)を、ステップ10002で決定した移動先のフラッシュパッケージグループ280の中のどの実ページを移動先とするかを決定する。プロセッサ260は、移動先としたフラッシュパッケージグループ280に対応するフラッシュパッケージグループ情報2300の実ページ数2303、空きページ数2304、当該フラッシュパッケージグループ280に属するフラッシュパッケージ230に対応するフラッシュパッケージ情報2500の割り当て可能実ブロック数2504、パッケージ内実ブロック割り当て数2505、パッケージ内累積実ブロック割り当て時間2507、パッケージ内累積実ブロック消去回数2508を参照して、移動先実ページを決める。プロセッサ260は、移動先の実ページを決めると、移動先のフラッシュパッケージグループ280に対応する空き実ページ管理情報ポインタ2200がさす実ページ情報2100を、移動元の実ページの実ページ情報2100のコピー先実ページ情報ポインタ2110に設定する。プロセッサ260は、空き実ページ管理情報ポインタ2200を次の空いた状態にある実ページ情報2100を示すようにする。プロセッサ260は、以上の処理をステップ10003で移動を決定したすべての実ページに対して実行する。以上で、移動元となる実ページの集合のそれぞれの移動元実ページに対する移動先ページが決まったことになる。
ステップ10011:プロセッサ260は、記憶装置グループごとに存在する実ページ移動処理実行部4500の中で、少なくとも移動元となる実ページを1つもつ記憶装置グループに対応した実ページ移動処理実行部4500を起動する。
ステップ10012:プロセッサ260は、記憶装置選択部4700をコールする。
ステップ10013:プロセッサ260は、次回スケジュール時刻2701を前回スケジュール時刻2701にコピーする。次に、プロセッサ260は、次回スケジュール時刻2701に次のスケジュール時刻を設定する。
図25は、実ページ移動処理実行部4500の処理フローである。実ページ移動処理実行部4500は、フラッシュパッケージグループ280ごとに存在する。また、図24のステップ10011で述べたように、対応するフラッシュパッケージグループ280の中に、少なくとも移動元となる実ページを1つもつフラッシュパッケージグループ280に対応した実ページ移動処理実行部4500が、移動ページスケジュール部4400から起動される。
ステップ11000:プロセッサ260は、対応するフラッシュパッケージグループ280の中で、移動待ちフラグ2111が、オンになっている実ページ情報2100を探す。この実ページ情報2100に対応する実ページが移動元(コピー元)なる。もし、移動待ちフラグ2111がオンになっている実ページ情報2100がない場合、当該フラッシュパッケージグループ280で移動すべき実ページ処理はすべて完了したことになるので、処理を終了する。
ステップ11001:プロセッサ260は、当該実ページ情報2100の移動待ちフラグ2111をオフにして、移動中フラグ2109をオンにする。
ステップ11002:ここでは、プロセッサ260は、当該実ページ情報2100に対応する実ページが、実ページが割り当てられている記憶装置グループを構成する記憶装置と、記憶装置内の相対アドレスと読み出しを行う長さを算出する。実ページ情報2100の記憶装置グループ2101が示す記憶装置グループ情報2300が該当する記憶装置グループ情報2300である。この記憶装置グループ情報2300に格納された記憶装置ポインタ2305が示す記憶装置情報2500に対応する記憶装置がコピー元の実ページが割り当てられている記憶装置となる。次に、プロセッサ260は、実ページ情報2100の、実ページアドレス2102と、記憶装置情報2500から、それぞれの記憶装置の中で、移動対象となる相対アドレスと長さを、すべての記憶装置に関して求める。
ステップ11003:プロセッサ260は、移動元となる実ページが割り当てられている記憶装置グループを構成する記憶装置に、指定した相対アドレスから指定した長さの分のデータを移動するよう要求する。
ステップ11004:プロセッサ260は、要求を発行したすべての記憶装置からの完了報告をまつ。
ステップ11005:記憶装置から、帰ってくる情報は、フラッシュパッケージ230以外は、記憶装置に格納されていた情報である。フラッシュパッケージ230の場合、本実施例では、下位レベルの容量仮想化機能をサポートしているので、次のような情報が返ってくる。すなわち、各仮想ブロックに実ブロックが割りてられていたか、いないかの情報が返ってくる。実ブロックを割り当てていた場合、その情報は、格納されていたデータ、その仮想ブロックに実ブロックを割り当てていない状態から始めて実ブロック(現在割り当てている実ブロックとは限らない)を割り当てた時刻、その時刻以降、この仮想ブロックに割り当てていた実ブロックの消去回数を含んで良い。プロセッサ260は、これらの情報を、キャッシュメモリ210上に格納する。
ステップ11006:ここでは、移動先実ページが、割り当てられた当該実ページが割り当てられている記憶装置グループを構成する記憶装置の集合と、それぞれの記憶装置の相対アドレスと長さになるかを算出する。この場合、移動元になる実ページ情報2100の移動先実ページアドレスが示す実ページ情報2100が、移動先の実ページに対応する実ページ情報2100となる。実ページ情報2100から、記憶装置グループを構成する記憶装置の集合と、それぞれの記憶装置のどの相対アドレスと長さ仮想ブロッになるかを算出する処理は、ステップ11002で説明したので省略する。
ステップ11007:プロセッサ260は、移動先となる実ページが割り当てられている記憶装置グループを構成する各記憶装置に、指定した相対アドレスから指定した長さだけのデータを格納するよう要求する。このとき、各記憶装置に送られる情報は、ステップ1105でキャッシュに格納した移動元になる記憶装置から送られてきた情報である。
ステップ11008:プロセッサ260は、要求を発行したすべての記憶装置からの完了報告をまつ。
ステップ11009:プロセッサ260は、移動元実ページを空き実ページに、移動先実ページにこれまで移動元実ページを割り当てていた仮想ページを割り当てる。これは、移動元の実ページに空き実ページ管理ポインタ2200につなぎ、これまで移動元の実ページ情報を示していた実ページポインタ2004を移動先の実ページ情報を示すことで、実現されてよい。また、プロセッサ260は、移動元の実ページ情報のうち、実ブロック割り当て数2104、追加実ブロック割り当て数2105、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、追加実ブロック割り当て時間2108を、移動先の実ブロック情報2100にコピーする。コピーの後、プロセッサ260は、実ブロック割り当て数2104、追加実ブロック割り当て数2105、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107、追加実ブロック割り当て時間2108、移動元の実ページ情報2100のうち、移動中フラグ2109、移動先実ページ情報2110、移動待ちフラグ2111を、クリアする(所定値にリセットする)。
ステップ11010:プロセッサ260は、移動元となったすべてのフラッシュパッケージグループ情報2300と移動先となったすべてのフラッシュパッケージグループ情報2300の更新を行う。ここでは、プロセッサ260は、移動元実ページと移動先実ページのセット毎に、移動元となったフラッシュパッケージグループ情報2300の実ページ数2303を1減らし、移動先のフラッシュパッケージグループ情報2300の実ページ数2303を1増やす。
ステップ11011:プロセッサ260は、移動元となったすべてのフラッシュパッケージ情報2500と移動先となったすべてのフラッシュパッケージ情報2500の更新を行う。ここでは、プロセッサ260は、移動元となったそれぞれのフラッシュパッケージ情報2500のパッケージ内実ブロック割り当て数2505、パッケージ内累積実ブロック割り当て時間2507、パッケージ内累積実ブロック消去回数2508の値から、移動先となった実ページの実ページ情報2100の中で、それぞれのフラッシュパッケージ230に対応する実ブロック割り当て数2104、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107の値を、減らす。また、プロセッサ260は、移動先となったそれぞれのフラッシュパッケージ情報2500のパッケージ内実ブロック割り当て数2505、パッケージ内累積実ブロック割り当て時間2507、パッケージ内累積実ブロック消去回数2508の値に、移動先となった実ページの実ページ情報2100の中の、それぞれのフラッシュパッケージに対応する実ブロック割り当て数2104、累積実ブロック割り当て時間2106、累積実ブロック消去回数2107の値を、加える。この後、ステップ11000へ戻る。
図26は、記憶装置選択部4700の処理フローである。記憶装置選択部4700は、移動ページスケジュール部4400により、コールされる。
ステップ12000:実施例1では、キャッシング先は、フラッシュパッケージ230である。ここでは、プロセッサ260は、フラッシュパッケージ230対応のヒット率情報2980を選択する。また、プロセッサ260は、選択した記憶装置が、フラッシュパッケージ230であるという情報をセットする。
ステップ12001:プロセッサ260は、キャッシュ容量調整部4600をコールする。
図27は、キャッシュ容量調整部4600の処理フローである。キャッシュ容量調整部4600は、記憶装置選択部4400により、コールされる。
ステップ13000:プロセッサ260は、指定されたヒット率情報2980の、最新ポインタ1601が指す、ヒット数1603とミス数1604から、今回のスケジュール期間のヒット率を算出する。
ステップ13001:プロセッサ260は、ステップ13000で算出されたヒット率と目標ヒット率1600との差を計算し、その差が所定の範囲に入っているかを判断する。入っていれば、ステップ13006へジャンプする。
ステップ13002:入っていない場合、プロセッサ260は、過去のキャッシュ容量1602、ヒット数1602、ミス数1603から、目標ヒット率1600を達成するのに必要なキャッシュ容量を予測する。具体的には、例えば、プロセッサ260は、過去のキャッシュ容量と、過去のヒット数1602及びミス数1603とを基に算出した過去のヒット率から、目標ヒット率1600を達成するためのキャッシュ容量を予測する。より具体的には、例えば、プロセッサ260は、過去のキャッシュ容量と過去のヒット率との関係から、ヒット率=F(X)(Xはキャッシュ容量)となるような関数を近似的に導出して、この関数に、目標ヒット率を入力して、得られた値を、キャッシュ容量と予測値とすることができる。次に、プロセッサ260は、最新ポインタ1601を1つ進める。プロセッサ260は、予測したキャッシュ容量を、最新ポインタ1601が示すキャッシュ容量1602にセットし、ヒット数1603、ミス数1604を0クリアする(0にリセットする)。
ステップ13003: プロセッサ260は、設定したキャッシュ容量1602が、これまでの(最新ポインタ1602より1つ前の)キャッシュ容量1602より大きい場合、ステップ130005へジャンプする。
ステップ13004:この場合、プロセッサ260は、記憶装置に基づくキャッシュ領域を増やす必要がある。ここでは、プロセッサ260は、指定された記憶装置グループから、空き実ページを必要数、確保する。例えば、プロセッサ260は、記憶装置グループから均等に実ページを、空き実ページ管理情報キュー2201から確保し、キャッシュボリューム200の中の実ページを割り当てていない仮想ページに割り当てる。次に、プロセッサ260は、仮想ページあたりのセグメント数と割り当てた仮想ページ数から、有効になったセグメント数を計算し、対応する記憶装置の無効セグメントキュー1302から、その数のセグメント管理情報2500を取り出し、空きセグメントキュー1301につなげる。この際、プロセッサ260は、各セグメント管理情報2850のセグメントアドレス1501に、当該論理ボリュームの識別子と相対アドレスを設定する。
ステップ13005:この場合、プロセッサ260は、記憶装置のキャッシュ領域を減らす必要がある。ここでは、プロセッサ260は、返却する実ページを決め(すなわち、キャッシュボリュームに割り当てられ得る実ページからホストボリュームに割り当てられ得る実ページへとの変更される実ページを決め)、すでに空き状態にあるセグメント管理情報2850を、無効セグメントキューに戻し、データを格納しているセグメント管理情報2500を、LRU位置に達し、セグメント管理情報2850が空き状態になったとき、無効セグメントキューに戻す。したがって、プロセッサ260は、ステップ13002で計算したキャッシュ容量から、減らすべき実ページ数を計算し、仮想ページから解放する実ページを決定する。そして、プロセッサ260は、論理ボリューム情報2000の中で、該当する仮想ページに対応したページ返却フラグ2008をオンにする。さらに、プロセッサ260は、空きセグメント情報キュー1301をサーチして、対応する実ページに含まれるセグメントのセグメント管理情報2850を、無効セグメントキュー1302に戻す。また、このとき、プロセッサ260は、ページあたりに含まれるセグメントの数から、無効セグメントキュー1302に戻したセグメントの数を減算する。減算後の値が0なら、すべてのセグメントを無効にできたので、減算後の値が0でない場合に行う処理は行われない。減算後の値が0でない場合、プロセッサ260は、論理ボリューム情報2000の中で、該当する仮想ページに対応したページ返却フラグ2008をオンにし、減算した値を使用セグメント数2007にセットする。
ステップ13006:プロセッサ260は、最新ポインタ1601を1つ進める。プロセッサ260は、1つ前のキャッシュ容量1602に、最新ポインタ1602が示すキャッシュ容量1602にセットし、ヒット数1603、ミス数1604を0クリアする。
図22は、実施例1における情報システムの別の構成例である。
図1の構成では、ストレージステム100が、ホスト110とSAN120を経由して接続されていた。一方、図22では、ホスト110とストレージシステム100が、1つのIT装置(ITプラットフォーム)130の中に実装され、連絡機構140を経由して、接続されている形態である。連絡機構140は、論理的な機構であっても物理的な機構であってもよい。この構成においても、本発明は有効で、これまで説明してきたストレージシステム100の構成、機能も同様に有効である。
以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する。
図28は、実施例2における情報システムの構成図である。
実施例2では、複数のストレージシステム100によって構成される仮想ストレージシステム150が存在する。本実施例では、仮想ストレージシステム150は、1つであるが、複数存在しても、本発明は有効である。また、それぞれのストレージステム100はSAN120経由で接続されているものとする。さらに、ストレージステム100の中に、WAN160経由で接続されるものがあってもよい。この場合、ストレージシステム100の間の距離はかなり長いものになるが、1つの仮想ストレージシステム150に含まれるものとする。本実施例では、仮想ストレージシステム150を構成するすべてのストレージシステム100は、SAN120、WAN160経由で、お互いに、通信可能であるとする。ただし、本発明は、仮想ストレージシステム150を構成するストレージシステム100の中に、通信ができないものがあっても有効である。また、仮想ストレージシステム150において、複数のストレージシステム100が直列に接続されていても良い。ホスト110は、論理的には、個々のストレージシステム100を認識しているのではなく、仮想ストレージシステム150を認識する。また、ホスト110は、物理的には、仮想ストレージステム150に含まれる少なくとも1つのストレージシステム100と接続される。ホスト110と直接接続されていないストレージシステムには、ホスト110は、仮想ストレージシステム150に含まれるストレージシステム100経由でアクセスする。また、個々のストレージシステム100は、そのストレージシステム100が属する仮想ストレージシステム150の識別子と、そのストレージシステム100の識別子の2種類をもつ。また、ポート170は、ホスト110からの要求(リード要求及びライト要求)を受け取る装置で、ホスト110は、ポート170と仮想論理ボリュームを指定して、リード要求及びライト要求を発行する。仮想論理ボリュームは、仮想ストレージシステム150内に定義された論理ボリュームで、仮想論理ボリュームの識別子は、仮想ストレージシステム150内で、ユニークである。仮想論理ボリュームは、1以上のストレージシステムが有する1以上の論理ボリュームが仮想化された論理ボリュームである。ストレージシステム100内のストレージコントローラ200は、仮想論理ボリュームのアクセス先を指定したアクセス要求(リード要求又はライト要求)を受けた場合、そのアクセス先に対応する論理ボリュームをそのストレージシステム100が有していれば、その論理ボリュームに対するアクセスを行い、そのアクセス先に対応する論理ボリュームを別のストレージシステム100が有していれば、その別のストレージシステム100へ0以上のストレージシステム100を介して上記アクセス要求を転送する。上記アクセス要求を受けた別のストレージシステム100からの応答は、転送されたアクセス要求を経由した0以上のストレージシステム100を介して、転送元のストレージシステム100に受信されて良い。応答を受けたストレージシステム100内のストレージコントローラ200は、その応答をホスト110に送信して良い。管理サーバは、ホスト110、仮想ストレージシステム150を管理するサーバである。図28の構成では、管理サーバ190が存在するが、管理サーバが存在しない場合にも、本実施例は有効である。
実施例2では、ストレージシステム100は、仮想ストレージシステム150を構成する別のストレージシステム100内のデータを、当該ストレージシステム100の記憶装置(キャッシュボリューム)にキャッシングする。
実施例2が実施例1と異なるのは、別のストレージシステム100のデータを、当該ストレージシステム100の記憶装置にキャッシングすることである。以下、リード要求/ライト要求を受けキャッシングを行うストレージシステムを「第1のストレージシステム」と言い、リード対象のデータを格納している又はライト対象のデータの格納先となるストレージシステムを「第2のストレージシステム」と言うことがある。具体的には、例えば、実施例2では、下記の処理が行われる。第1のストレージステム100が、第2のストレージシステム100のデータをキャッシングするためには、第1のストレージシステム100が、ホスト100からのリード要求/ライト要求を受け取れるようにする必要がある。したがって、実施例2では、複数のストレージシステムを1つの仮想ストレージステム150を定義し、リード要求/ライト要求を受け取るために、個々のストレージシステム110がもつポート170については、ホスト110には、仮想的なストレージシステムがすべてもつように見せる。ホスト110は、仮想ストレージシステム150のポート情報180を持つが、リード要求/ライト要求を受け付けるポート170を変更する通知を行うことで、キャッシングを行う第1のストレージシステム100が、データを格納している第2のストレージシステム100へのリード要求/ライト要求を受け取ることができ、キャッシングを行うことができる。
実施例2では、第1のストレージシステム100が第2のストレージシステム100のデータをキャッシングするので、アクセスしたデータが、ヒット(キャッシュに存在)した場合、データを記憶している第2のストレージシステム100から、キャッシングする第1のストレージシステム100に、データを転送する時間を、アクセスするホスト110から見ると短縮することができる。このため、この短縮可能な時間を考慮して、キャシングを行う必要がある。故に、それぞれのストレージシステム100は、仮想ストレージシステム150を構成するどのストレージシステム100のデータを、自分のストレージシステム100のどの記憶装置にキャッシングを行うかを決定する。これは、アクセスするホスト100から、キャッシングを行うことにより得られる効果により決定する。この効果とは、まず、ホストからアクセス時間が短いストレージシステム100にキャッシングを行うのが効率的である。つまり、データが格納されている第2のストレージシステム100がデータにアクセスするホスト110から距離があるような場合、ホスト110に近い第1のストレージシステム100で、キャッシングを行うことで、ホスト110へデータを転送する時間が削減できる。ストレージシステム100間の距離が長くなったり、遅延の大きいネットワークで接続されている場合、キャッシングの効果が大きい。このため、データが恒久的に格納されている記憶装置と同等のアクセス性能の記憶装置にデータがキャッシングされも効果がある。場合によっては、データが恒久的に格納されている記憶装置よりもアクセス性能がある程度落ちる記憶装置にそのデータがキャッシングされても、効果が期待できる。このため、ストレージシステム100間のデータ転送時間を考慮したキャッシングを行う必要がある。
図30は、実施例2におけるストレージシステム100の共有メモリ220に記憶される情報を示している。
実施例2では、更に、仮想ストレージシステム情報4010、外部論理ボリューム情報4110、ホスト情報4210が記憶される。
図31は、仮想ストレージステム情報4000の構成を示す。
仮想ストレージシステム情報4000は、仮想ストレージシステム識別子4001、ストレージシステム数4002、他ストレージシステム識別子4003、転送遅延時間4004を含む。
仮想ストレージシステム識別子4001は、当該ストレージシステム100が属する仮想ストレージシステム150の識別子である。ストレージシステム数4002は、その仮想ストレージシステム150が含むストレージシステム100の数である。ストレージシステム識別子4003、転送遅延時間4004は、ストレージシステム数4102に含まれる数より1小さい数だけ存在する。これらは、当該ストレージシステム100が属する仮想ストレージシステム150に属する他のストレージステム100に関する情報である。他ストレージステム識別子4003は、他のストレージシステム100の識別子で、転送遅延時間4004は、当該ストレージシステム100と他のストレージシステム100の間でデータ転送を行う際の遅延時間である。
図32は、外部論理ボリューム情報4100の構成を示す。
外部論理ボリューム情報4100は、仮想論理ボリュームID4101、外部ストレージシステムID4102、外部論理ボリュームID4103、記憶装置遅延時間4104、キャッシングフラグ2009、初期割り当て記憶装置2010を含む。外部論理ボリューム情報4100は、当該ストレージシステムが属する仮想ストレージシステム150の含まれる他のストレージシステム100の論理ボリュームごとに存在する情報である。
仮想論理ボリュームID4101は、当該外部論理ボリュームの仮想論理ボリューム識別子である。外部ストレージシステムID4102、外部論理ボリュームID4103は、当該仮想論理ボリュームが、どのストレージシステム100のどの論理ボリュームかを識別するための情報である。実施例2では、ホスト110は、リード要求/ライト要求を発行する際、仮想ストレージシステムの識別子、ポート170の識別子、仮想論理ボリュームの識別子を指定する。ストレーシシステム100は、指定されたポート1270からリード要求/ライト要求を受け取る。ストレージシステム100は、要求で指定された仮想論理ボリュームを見て、外部論理ボリューム情報4110、論理ボリューム情報2000を参照して、どのストレージシステム100のどの論理ボリュームに対する要求であるかを判別する。指定された仮想論理ボリュームが、外部論理ボリューム4110情報内の仮想論理ボリュームID4101に含まれれば、指定された論理ボリュームは、外部のストレージシステム100の論理ボリュームということになる。記憶装置遅延時間4104は、他のストレージシステム100内の記憶装置の遅延時間である。したがって、転送遅延時間4104+記憶装置遅延時間4005が実際の遅れになる。また、実施例2では、初期割り当て記憶装置2010は、ヌル状態か、該当なし、フラッシュパッケージ230、高速ディスク装置265,低速ディスク装置295のいずれかになる。ヌル状態は、当該論理ボリュームをキャッシングすべきかどうかを判断していないことになる。この判断を行い、キャッシングする(キャッシングフラグがオン)とした場合、初期割り当て記憶装置2010が、フラッシュパッケージ230、高速ディスク265,低速ディスク290のいずれかを示す。
図33は、実施例2の論理ボリューム情報2000の構成である。
実施例2では、論理ボリューム情報2000は、当該ストレージシステム100の内部の論理ボリュームごとに存在する情報となる。実施例2では、ホスト110は、仮想論理ボリュームを指定する。したがって、実施例2の論理ボリューム情報2000は、仮想論理ボリューム識別子4301を含む。ホスト110から指定された仮想論理ボリュームが、論理ボリューム情報2000内の仮想論理ボリューム識別子4301が示すボリュームであれば、指定された論理ボリュームは、当該ストレージシステム100の論理ボリュームということになる。それ以外は、実施例1と同様である。また、本実施例では、ストレージシステムは、外部ストレージシステム4102、外部論理ボリューム識別子4103で示される外部論理ボリュームのデータのキャッシングを行うが、キャッシング先の記憶装置は、当該ストレージシステム100に含まれる記憶装置である。この際、実施例1と同様、キャッシングボリュームが定義されるが、これは、内部の論理ボリュームなので、図33に示される論理ボリューム情報2000として定義されることになる。キャッシュボリュームは、ホストからのリード要求/ライト要求の指定対象にならないので、仮想論理ボリューム識別子4301はヌル状態でよい。
図40は、ホスト情報4210の構成である。
ホスト情報4210は、当該ストレージシステム100に接続されたホスト110の情報で、接続ホスト数4201、ホストID4202、ホスト遅延時間4203、接続ポート数4204、接続ポートID4205を含む。
接続ホスト数4201は、当該ストレージシステム100に接続されたホスト110の数である。ホストID4202、ホスト遅延時間4203は、接続されたホストごとに存在する情報である。ホストID4202は、対応するホスト110の識別子である。ホスト遅延時間4203は、当該ストレージシステム100と対応するホスト110との間で、データ転送に伴い発生する遅延時間である。接続ポート数4204は、対応するホスト110がアクセス可能な当該ストレージシステム100内のポート170の数である。接続ポートID4205は、対応するホスト110がアクセス可能な当該ストレージシステム100のポート170の識別子であり、接続ポート数4204の数だけ存在する。
実施例2のキャッシュ管理情報2750の構成は、実施例1と同様である。キャッシュドアドレス2707は、当該キャッシュ管理情報2750に対応したスロット21100(あるいは、セグメント)に格納したデータの論理ボリュームとその相対アドレスを示すが、実施例2の場合、当該ストレージシステム100の論理ボリュームと、他のストレージシステムの論理ボリュームのどちらかになる。他のストレージシステム100の場合、そのストレージシステムの識別子が、キャッシュドアドレス2707に含まれることになる。
空きセグメントキュー1301、無効セグメントキュー1302は、実施例1では、フラッシュパッケージ230対応の情報が有効であったが、実施例2では、フラッシュパッケージ230、高速ディスク265、低速ディスク90、いずれの空きセグメントキュー1301、無効セグメントキュー1302も有効となる。また、ヒット率情報2980も、フラッシュパッケージ230、高速ディスク290、低速ディスク265、いずれのヒット率情報2980も有効となる。
以上の点以外は、実施例2において、ストレージシステム100が持つ情報は、実施例1と同様で良い。
実施例2では、ホスト110が、ポート情報180を持つ。
図39は、ポート情報180のフォーマットである。
ポート情報180は、仮想ストレージID181、ポート数182、ポート識別子183、仮想ボリューム数184、仮想ボリューム識別子185を含む。本実施例では、仮想ストテージシステム150は、1つであるが、複数存在しても、本発明は有効である。
仮想ストレージID181は、当該ホスト110に接続した仮想ストレージシステム150の識別子である。ポート数182は、仮想ストレージシステム150が持つポート170の数である。実際には、ポート170は、それぞれのストレージシステム100がもっているが、ホスト110からは、見かけ上、仮想ストレージシステム150が持っているように見える。ポート識別子183は、仮想ストレージシステム150がもつポート170の識別子である。したがって、ポート識別子183は、ポート数182に示された数分存在することになる。仮想ボリューム数184は、それぞれのポート170からアクセス可能な仮想論理ボリュームの数である。仮想ボリュームID185は、対応するポート170からアクセス可能な仮想論理ボリュームの識別子である。したがって、対応するポート170の仮想ボリューム数だけ、仮想ボリュームID185は存在することになる。また、1つの仮想論理ボリュームは、複数のポート170からアクセスしてもよいので、同一の仮想論理ボリュームの識別子が、異なったポート170の仮想ボリュームID185に定義されていてもよい。
次に、上記に説明した管理情報を用いて、実施例2において、ストレージコントローラ200が実行する動作の説明を行う。
図41は、実施例2においてプロセッサ260が実行するメモリ270上のプログラムが示されている。
実施例2においては、図17に示した各プログラムに加えて、キャッシング判別処理部4800、遅延送信部4900が存在する。ただし、リード処理実行部4000、ライト要求受付部4100、スロット確保部4200、セグメント確保部4300、記憶装置選択部4700は、実施例1とは異なる。
まず、キャッシング判別部4800、遅延送信部4900の説明を行う。次に、リード処理実行部4000、ライト要求受付部4100、スロット確保部4200、セグメント確保部4300、記憶装置選択部4700は、実施例1と、異なる部分について、説明を行う。
図34は、キャッシング判別処理部4800の処理フローである。キャッシング判別処理部4800は、適当な周期で、プロセッサ206が処理する。
ステップ14000:ここでは、プロセッサ260は、他のストレージシステム100上の論理ボリュームの中で、初期割り当て記憶装置2010がヌルの外部論理ボリューム情報4100を探す。見つからなかったら処理を終了する。
ステップ14001:ここでは、当該ストレージシステム100でキャッシングを行うべきかを判断するために、まず、プロセッサ260は、見つけた外部論理ボリューム情報411の仮想論理ボリュームID4101から仮想論理ボリュームの識別子を取り出す。
ステップ14002:プロセッサ260は、当該仮想論理ボリュームが当該ストレージシステム100と接続されているホスト110からアクセスされているかを確認するため、接続されているすべてのホスト110に、仮想論理ボリュームの識別子を送る。この送信は、SAN120、WAN160経由でも、管理サーバ190経由どちらでもよい。
ステップ14003:プロセッサ260は、ホスト110からの回答を待つ。
ステップ14004:プロセッサ260は、当該ストレージシステム100から接続されているホスト110の中に、対応する仮想論理ボリュームをアクセスしているホスト110があったかを確認する。アクセスしているホスト110がなければ、ステップ14018へジャンプする。
ステップ14005:プロセッサ260は、当該仮想論理ボリュームをアクセスしているホスト110のホストID4202とホスト遅延時間4203を取り出す。
ステップ14006: プロセッサ260は、取り出したこれらの値と認識している仮想論理ボリュームの識別子を、仮想ストレージシステム150を構成する他のストレージシステム100に送る。
ステップ14007:プロセッサ260は、回答が返ってくるのを待つ。
ステップ14008:ここでは、プロセッサ260は、当該ストレージシステム100で、キャッシングを行うのが効果的かを判断する。まず、プロセッサ260は、この仮想論理ボリュームに対応する論理ボリュームを含むストレージシステム100から送られてきた、ホスト110との間の遅延時間と当該ストレージシステム100のホスト遅延時間4203を比較し、当該ストレージシステム100のホスト遅延時間4203のほうがある範囲より小さければ、当該ストレージシステム100でキャッシングを行う可能性を残す。これは、多少遅延時間が短いくらいでは、その論理ボリュームを含むストレージシステム100に、ホスト110が直接アクセスしたほうがよいと考えられるためである。その論理ボリュームを含むストレージシステム100かどうかは、ステップ14000で認識した外部論理ボリューム情報4110に含まれる外部ストレージシステムID4102を用いて判別することができる。つぎに、プロセッサ260は、残りのストレージシステム100から返ってきた遅延時間と当該ストレージシステム100のホスト遅延時間4203を比較し、当該ストレージシステム100のホスト遅延時間4203が、最も短いとき、当該ストレージシステム100でキャッシングを行うのが効果的と判断する。そうでなければ、ステップ14017へジャンプする。
ステップ14009:プロセッサ260は、対応する仮想論理ボリュームへのアクセスを当該ストレージステムに発行させるため、仮想論理ボリュームの識別子と対応するホスト100に接続されたポート170の識別子を、対応するホストに送る。この送信は、SAN120、WAN160経由でも、管理サーバ190経由どちらでもよい。この要求を受け取ったホスト110は、それまで当該仮想論理ボリュームにアクセスしていたポート170を、当該ステップで送ったポート170に切り換えることになる。この場合、ホスト110は、仮想ストレージシステムと仮想論理ボリュームは変化なく、当該仮想論理ボリュームをアクセスする(同一の仮想ストレージシステム150内の)ポート170をかえるよう要求しているだけであるため、ホスト110からは、矛盾ないように見えるので、切り換えがうまくいく。仮想ストレージシステム150がないと、アクセスするポート170を別のストレージシステム100に移すと、アクセスするストレージシステム100と論理ボリュームが変更になってしまう。この変更は、ホスト11上のアプリケーションプログラムに影響があるので、本実施例では、仮想ストレージシステム150を導入することで、うまくポート170を変更して、リードライト要求を受け取るストレージシステム100を変更できる。
ステップ14010プロセッサ260は、:完了報告を待つ。
ステップ14011:プロセッサ260は、転送遅延時間4104と記憶装置遅延時間4005とを合計する。
ステップ14012:プロセッサ260は、ステップ14011の合計値が、低速ディスクのアクセスタイムより十分大きいか(例えば所定値以上に大きいか)を判別する。そうでなければ、ステップ14004へジャンプする。
ステップ14013:プロセッサ260は、初期割り当て記憶装置2010に、低速ディスクを設定し、キャッシングフラグをオンにして、ステップ14000へジャンプする。
ステップ14014:プロセッサ260は、ステップ14011の合計値が、高速ディスクのアクセスタイムより十分大きいか(例えば所定値以上に大きいか)を判別する。そうでなければ、ステップ14006へジャンプする。
ステップ14015:プロセッサ260は、初期キャッシング記憶装置2010に、高速ディスクを設定し、キャッシングフラグ2009をオンにして、ステップ14000へジャンプする。
ステップ14016:プロセッサ260は、ステップ14011の合計値が、フラッシュパッケージのアクセスタイムより十分大きいか(例えば所定値以上に大きいか)を判別する。そうでなければ、ステップ14008へジャンプする。
ステップ14017:プロセッサ260は、初期キャッシング記憶装置2010に、フラッシュパッケージ230を設定し、キャッシングフラグ2009をオンにして、ステップ14000へジャンプする。
ステップ14018:プロセッサ260は、初期キャッシング記憶装置2010に、該当なしを設定し、キャッシングフラグをオフにする。この後、ステップ14000へ戻る。
ストレージシステム100から送られてきた仮想論理ボリュームの識別子を含む問合せ(ステップ14002で送信された問合せ)を受け取ったホスト110は、ホスト110のポート情報180の仮想ボリュームID185を参照し、受け取った仮想論理ボリュームの識別子が1つでも存在すれば、当該ホスト110から、その仮想論理ボリュームにアクセスしている旨を、ステップ14002の問合せ元のストレージシステムに通知する。この通知は、SAN120、WAN160経由でも、管理サーバ190経由どちらでもよい。
ストレージシステムから送られてきた情報(仮想論理ボリュームとポート170の識別子を含んだ情報)(ステップ14009で送信された情報)を受け取ったとき、ホスト110は、下記の処理、
(1)受け取った仮想論理ボリュームとそれまで接続していたポート170(複数存在する場合もある)を認識し、認識した各ポート170の仮想論理ボリューム数184を1つ減算し、対応する仮想論理ボリューム識別子185を削除する、
(2)受け取った各ポート170の識別子(複数存在する場合もある)の仮想論理ボリューム数184を認識し、対応する仮想論理ボリューム数184を1つ増加し、対応する仮想論理ボリューム識別子185を追加する、
を行う。
(1)受け取った仮想論理ボリュームとそれまで接続していたポート170(複数存在する場合もある)を認識し、認識した各ポート170の仮想論理ボリューム数184を1つ減算し、対応する仮想論理ボリューム識別子185を削除する、
(2)受け取った各ポート170の識別子(複数存在する場合もある)の仮想論理ボリューム数184を認識し、対応する仮想論理ボリューム数184を1つ増加し、対応する仮想論理ボリューム識別子185を追加する、
を行う。
図42は、遅延時間送信部4900の処理フローである。転送時間遅延部は、仮想ストレージシステム150を構成する他のストレージシステムから、情報を送られてきたときに実行される。
ステップ19000:プロセッサ260は、指定されたホスト110のホスト遅延時間4203を、要求の送信元のストレージシステム100に送る。
ステップ19001:プロセッサ260は、送られてきた情報を参照して、指定された仮想論理ボリュームを、当該ストレージシステム100でキャッシングするのがよいかを判別する。まず、プロセッサ260は、論理ボリューム情報2000を参照して、この仮想論理ボリュームに対応する論理ボリュームが当該ストレージシステム100に含まれるかそうでないかを判別する。含まれる場合、プロセッサ260は、要求元のストレージシステム100から送られてきた、ホスト110との間の遅延時間と当該ストレージシステム100のホスト遅延時間4203を比較し、当該ストレージシステム100のホスト遅延時間4203を比較し、要求元のストレージシステム100のホスト遅延時間4203のほうがある範囲より小さければ、当該ストレージシステム100でキャッシングを行うべきでないと判断する。この「ある範囲」は、図34のステップ14008の「ある範囲」と同じ値にして、矛盾が起きないようにする。その仮想論理ボリュームが当該ストレージシステムに含まれない場合、プロセッサ260は、送られてきた遅延時間と当該ストレージシステム100のホスト遅延時間4203を比較し、当該ストレージシステム100のホスト遅延時間4203が大きい場合、当該ストレージシステム100でキャッシングを行うべきでないと判断する。当該ストレージシステム100で、「キャッシングを行うべきでない」と判断していなければ、処理を終了する。
ステップ19002:プロセッサ260は、受け取った仮想論理ボリュームの識別子に対応するキャッシングオフフラグをオンにし、初期割り当て記憶装置を該当なしにする。
図35は、実施例2におけるリード処理実行部4000の処理フローである。リード処理実行部4000は、ホスト120から、ストレージコントローラ200が、リード要求を受け付けたときに実行される。以下、実施例1との相違について述べる。
ステップ15000:プロセッサ260は、まず、受け取ったリード要求で指定されたリード対象とする仮想論理ボリュームから、論理ボリュームを認識する。この後、ステップ5000へ移る。
実施例2の場合、ステップ5003の後に、ステップ15001以降の処理が入る。
ステップ15001:ここでは、プロセッサ260は、論理ボリュームが、当該ストレージシステム100の論理ボリュームか、それ以外のストレージステム100の論理ボリュームかを識別する。当該ストレージシステム100の場合、ステップ5004へジャンプする。
ステップ15002: プロセッサ260は、指定された論理ボリュームをもつストレージステム100に、指定された論理ボリュームの指定アドレスから要求されたデータを読み出す要求を発行する。
ステップ15003: プロセッサ260は、指定したストレージシステム100から、データが送られてくるのを待つ。この後、ステップ5009へジャンプする。
以上が、実施例1に対して、実施例2のリード処理実行部4000の異なる部分である。
図36は、実施例2におけるライト要求受付部4100の処理フローである。ライト要求受付部4100は、ストレージコントローラ200が、ホスト110からライト要求を受け付けたときに実行される。以下、実施例1との相違を述べる。
ステップ16000:プロセッサ260は、最初に、受け取ったライト要求で指定された仮想論理ボリュームから、指定された論理ボリュームを認識する。
ステップ16001:プロセッサ260は、指定された論理ボリュームが、当該ストレージシステムの論理ボリュームであれば、ステップ6000へジャンプする。それ以外のストレージシステム100の論理ボリュームであれば、ステップ6003へジャンプする。
以上が、実施例1に対して、実施例2のライト要求受付部4100の異なる部分である。
図37は、記憶装置選択部4700の処理フローである。記憶装置選択部4700は、移動ページスケジュール部4400により、コールされる。実施例2では、ステップ12001の後に、ステップ17000以下の処理が追加される。
ステップ17000:ここでは、プロセッサ260は、高速ディスク265対応のヒット率情報2980を選択する。また、プロセッサ260は、選択した記憶装置は、高速ディスク265であるという情報をセットする。
ステップ17001:プロセッサ260は、キャッシュ容量調整部4600をコールする。
ステップ17002:ここでは、プロセッサ260は、低速ディスク290対応のヒット率情報2980を選択する。また、プロセッサ260は、選択した記憶装置は、低速ディスク290であるという情報をセットする。
ステップ17003:プロセッサ260は、キャッシュ容量調整部4600をコールする。
図38は、実施例2におけるセグメント確保4300の処理フローである。セグメント確保部4300は、プロセッサ260が、適宜実行する処理である。セグメント確保部4300は、ホスト120からリード要求/ライト要求を受け取ったときに行われる処理において、空きセグメント数2820が一定値以下の場合に、空きセグメント数2820を増加させるために、起動される。以下、実施例1との相違について述べる。
実施例1との相違は、ステップ8002の後、以下のステップを実行する点である。
ステップ18000:ここでは、プロセッサ260は、論理ボリュームが、当該ストレージシステム100の論理ボリュームか、それ以外のストレージステム100の論理ボリュームかを識別する。当該ストレージシステム100の場合、ステップ8003へジャンプする。
ステップ18001: プロセッサ260は、指定された論理ボリュームをもつストレージステム100に、指定された論理ボリュームの指定アドレスに、パリティ生成前ビットマップ2704で示されたデータを書き込む要求を発行する。
ステップ18002:プロセッサ260は、指定したストレージシステム100からの完了報告をまつ。この後、ステップ8008へジャンプする。
図24に示した移動ページスケジュール部4400は、基本的には、実施例1と同様である。
ただし、ここで、ステップ10004の説明を補足する。ステップ10004では、種類の異なる記憶装置グループ間で実ページ内のデータを移動する際に、移動元となる記憶装置グループのページと、移動先の記憶装置グループを決定する。その際、下記の制約の範囲、
(1)キャッシュボリュームに割り当てた実ページ内のデータは、異なった種類の記憶装置グループに基づく実ページへの移動を行わない、
(2)記憶装置グループに基づく実ページへデータがキャッシングされるホストボリュームに割り当てられる実ページ内のデータは、フラッシュパッケージグループ280に基づく実ページへ移動しない移動先が決定される。実施例2では、新たに、該当するストレージシステム100以外の論理ボリュームのキャッシングが行われる。したがって、上記(2)の状況は実施例1と同様である。ストレージシステム100以外の論理ボリュームのキャッシングは、フラッシュパッケージ230、高速ディスク、低速ディスクのいずれかであるが、本実施例では、記憶装置グループ間では実ページ内のデータが移動しないようされる。もちろん、実施例2においても、上記(1)及び(2)の制約がなくとも、本発明は有効である。
(1)キャッシュボリュームに割り当てた実ページ内のデータは、異なった種類の記憶装置グループに基づく実ページへの移動を行わない、
(2)記憶装置グループに基づく実ページへデータがキャッシングされるホストボリュームに割り当てられる実ページ内のデータは、フラッシュパッケージグループ280に基づく実ページへ移動しない移動先が決定される。実施例2では、新たに、該当するストレージシステム100以外の論理ボリュームのキャッシングが行われる。したがって、上記(2)の状況は実施例1と同様である。ストレージシステム100以外の論理ボリュームのキャッシングは、フラッシュパッケージ230、高速ディスク、低速ディスクのいずれかであるが、本実施例では、記憶装置グループ間では実ページ内のデータが移動しないようされる。もちろん、実施例2においても、上記(1)及び(2)の制約がなくとも、本発明は有効である。
図29は、実施例2における情報システムの別の構成である。
ホスト110とストレージシステム100が、1つのIT装置(ITプラットフォーム)130の中に実装され、連絡機構140を経由して、接続されている形態である。連絡機構140は、論理的な機構であっても物理的な機構であってもよい。この構成においても、本発明は有効で、これまで説明してきたストレージシステム100の構成、機能も同様に有効である。
以上、実施例1及び2の少なくとも1つによれば、次の事項が導き出される。
ストレージシステムは、仮想ストレージシステムの基になる複数のストレージシステムのうちの1つであっても良いし、仮想ストレージシステムを提供するストレージシステムとは別のストレージシステムであっても良い。
ストレージシステムは、アクセス性能の異なる2種類以上の記憶装置と、それらの記憶装置に接続された制御装置とを有する。制御装置は、ストレージシステムの外部の装置(例えば、ホスト装置又は別のストレージシステム)と通信するための上位インタフェース装置と、上記2種類以上の記憶装置と通信するための下位インタフェース装置と、キャッシュメモリを含む記憶資源と、それらに接続されプロセッサを含むコントローラとを有する。同種の記憶装置は、2以上設けられていて良い。
制御装置は、複数の記憶階層を管理しており、1つの記憶階層には、アクセス性能が同等の記憶装置が属する。制御装置は、論理ボリューム(例えば、Thin Provisioningに従う論理ボリューム)と、複数の実ページとを管理する。論理ボリュームとして、ホストボリュームと、キャッシュボリュームとがあって良く、いずれも、実ページが割り当てられ得る論理ボリュームであって良い。ホストボリュームは、外部装置からのアクセス要求で指定され得る論理ボリューム(つまり外部装置に提供される論理ボリューム)である。キャッシュボリュームは、ホストボリューム内のデータがキャッシングされる論理ボリュームであって、外部装置からのアクセス要求で指定され得ない論理ボリューム(つまり外部装置に提供されない論理ボリューム)である。キャッシュボリュームは、記憶装置の種類毎に用意されて良い。
実ページは、単一の記憶装置に基づいていても良いが、典型的には、アクセス性能が同等の複数の記憶装置で構成された記憶装置グループ(典型的には、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループ)に基づいていて良い。また、実ページは、別のストレージシステム(外部のストレージシステム)の記憶資源(例えば、別のストレージシステム内の1以上の記憶装置に基づく論理ボリューム)に基づいていても良い。
2種類以上の記憶装置のうち、アクセス性能が最も高い記憶装置は、メモリパッケージであるとする。メモリパッケージは、不揮発性メモリと、不揮発性メモリに接続され上位装置(ここではストレージシステム内の制御装置)からのアクセスを制御するメモリコントローラとを有して良い。不揮発性メモリは、例えばフラッシュメモリであり、そのフラッシュメモリは、ブロック単位でデータが消去され、サブブロック単位でデータが書き込まれるタイプのフラッシュメモリ、例えばNAND型のフラッシュメモリで良い。ブロックは、複数のサブブロック(一般にページと呼ばれるが、論理ボリュームに割り当てられるページとは異なる)で構成されている。
ヒット率として、キャッシュメモリについてのヒット率であるメモリヒット率と、キャッシュボリュームについてのヒット率であるボリュームヒット率とがあって良い。
キャッシュ容量、すなわち、キャッシュ領域として使用される実ページの数の上限が決められていて良い。制御装置は、例えば、キャッシュ容量を増やすとボリュームヒット率があがるが、キャッシュ容量が上限値に達する場合には、キャッシュ容量を増やさない(つまりキャッシュ領域として使用する実ページの数を増やさない)で良い。
或いは、制御装置は、空き実ページの残数に応じて、キャッシュ領域として使用する実ページの数を決定して良い。制御装置は、キャッシュボリュームよりもホストボリュームに対して優先的に空き実ページを割り当てるようにする。例えば、制御装置は、空き容量(空き実ページの総数)に対するホストボリューム未使用容量(実ページが割り当てられていない仮想ページの総数)が所定割合以上であれば、残りの空き実ページをホストボリューム用とし、キャッシュボリュームに割当てないようにして良い。或いは、複数の実ページのうちキャッシュ領域として使用可能な実ページが予め決められていて、その範囲で、空き実ページがキャッシュボリュームに割り当てられて良い。
また、制御装置は、ホストボリュームに格納されるアクセス対象データ(ホストからのアクセス要求に従うデータ)のキャッシング先の実ページとして、アクセス対象データを記憶する記憶装置の性能よりも高いアクセス性能の記憶装置に基づく実ページを選択するようにする。従って、例えば、制御装置は、ホストボリュームに割り当てられている、メモリパッケージに基づく実ページに、アクセス対象データが格納されている場合、そのアクセス対象データのキャッシング先として、メモリパッケージに基づく実ページを選択し無いようにする。すなわち、例えば、この場合には、制御装置は、アクセス対象データのキャッシング先として、キャッシュメモリと実ページの両方を使用せず、キャッシュメモリのみを使用して良い。
しかし、仮想ストレージシステム(複合型ストレージシステム)の場合であれば、制御装置は、ホストとこの制御装置を含む第1のストレージシステムとの間の通信についての遅延時間(転送時間長)と、第1のストレージシステムとアクセス対象のデータを格納している第2のストレージシステムとの間の通信についての遅延時間(転送時間長)とに基づいて、アクセス対象データを記憶する記憶装置(第2のストレージシステム)の性能と同等又はそれよりも低いアクセス性能の記憶装置に基づく実ページを選択しても良い。
制御装置は、リード要求又はライト要求をホスト装置から受信した場合、キャッシュボリュームよりも先にキャッシュメモリについてヒット(領域確保できたか)か否かを判定し、ミスであった場合に、キャッシュボリュームについてヒットか否かを判定する。
なお、例えば、キャッシュ領域として使用する複数の実ページが同一の記憶装置に基づいていると、その記憶装置にアクセスが集中し、その記憶装置がボトルネックになってしまう。そこで、それを回避するべく、制御装置は、記憶装置間(記憶装置グループ間)で実ページ内のデータを移動する。その際、実ページが、フラッシュパッケージグループに基づいていれば、制御装置は、各メモリパッケージから消去回数を受信し、フラッシュパッケージグループの消去回数がなるべく均一になるように、実ページ内のデータを移動する。例えば、制御装置は、消去回数の総数が多い第1のフラッシュパッケージグループと、消去回数の総数が少ない第2のフラッシュパッケージグループとがある場合、第1のフラッシュパッケージグループに基づくキャッシュ領域(実ページ)内のデータを第2のフラッシュパッケージグループに基づく実ページに移動する。これにより、負荷分散と消去回数の均等化の両方を実現することができる。すなわち、書き換え頻度がキャッシュ領域ではない実ページよりも多いと考えられる実ページ(キャッシュ領域)の基になるフラッシュパッケージグループが、第1のフラッシュパッケージから第2のフラッシュパッケージに変わるので、消去回数の均等化が期待できる。なお、その際、移動元は、第1のフラッシュパッケージグループに基づく複数の実ページのうちアクセス頻度が最も高い実ページであって、移動先は、第2のフラッシュパッケージグループに基づく複数の実ページのうちアクセス頻度が最も低い実ページであることが好ましい。
また、制御装置は、キャッシュ領域として使用している実ページ内のデータを、その実ページの基づく記憶装置のアクセス性能と同等の(又はそれより低い)アクセス性能の記憶装置に基づく実ページに移動しないよう制御する。
また、仮想ストレージシステムに関して、ホスト計算機が、そのホスト計算機が発行するアクセス要求で指定可能なアクセス先情報(例えば、ストレージシステムが有するポートの番号)を含んだ情報であるポート情報を有する。管理計算機(例えば実施例2の管理サーバ180)が、ホスト毎に、そのホストが有するポート情報に記述されるアクセス先情報を、仮想ストレージシステムを構成する複数のストレージシステムのうちそのホストからの距離が所定距離未満である(例えばレスポンスタイムが所定時間以内となる)ストレージシステムが有するポートに関する情報に制限する。言い換えれば、管理計算機は、ホストがアクセス先とすることができるストレージシステムとして、そのホストから所定距離以上にあるストレージシステムを選択しないようにする(例えば、ホストが有するポート情報180から、そのホストが選択してはならないポートIDを記載しないでおく(或いは、例えば、仮想ストレージシステムが有する全てのポートのIDを記載しておいて、無効とするポートIDのみ無効化しておく))。
制御装置は、ボリュームヒット率が所定値未満となった場合には、キャッシュボリュームへのキャッシングを中止して良い。その際、制御装置は、キャッシュボリュームに既に割り当たっている実ページ内のデータを、キャッシュメモリに移動して、その実ページを解放しても良いし、キャッシュボリュームに既に割り当たっている実ページ内のデータをキャッシュメモリに移動することなくその実ページを解放しても良い。また、制御装置は、共有メモリ内のキャッシュ管理情報を参照し、メモリヒット率が高くなってきたようであれば、キャッシュボリュームへのキャッシングを再開して良い。
また、ホストからアクセス要求を受けた制御装置は、仮想ストレージシステムにおいて、この制御装置を含むストレージシステムである第1のストレージシステムからアクセス対象データを格納している第2のストレージシステムとの間の第1の遅延時間(転送時間)を基に、キャッシング先の実ページの基になる記憶装置を選択して良い。
また、第1のストレージシステム内の制御装置は、第1の遅延時間に加えて、仮想ストレージシステムの各ストレージシステムに接続されているホストとの間の第2の遅延時間を基に、キャッシング先の実ページの基になる記憶装置を選択して良い。
また、制御装置(又は仮想計算機)が、ホストのアクセス先のストレージシステムを変更させて良い(例えば、そのホストが有するポート情報中のアクセス先情報を書き変えて良い)。
また、制御装置は、ボリュームヒット率に応じて、キャッシュ領域として使用可能な実ページの数を調整(増加又は減少)して良い。ボリュームヒット率は、記憶装置の種類別に計測されて良い。
また、制御手段は、実ページ(或いは実ページの割当先の仮想ページ)のアクセス状況のような混雑度を計測し、実ページの混雑度に基づいて、移動元と移動先の実ページを決定し、同種又は異種の記憶装置間で、移動元実ページから移動先実ページへデータを移動させて良い。
以上、幾つかの実施例を説明したが、本発明は、上記の実施例に限られない。
100…ストレージシステム、110…ホスト、120…ストレージエリアネットワーク(SAN)、140…連絡機構、150…仮想ストレージシステム、160…ワールドエリアネットワーク(WAN)、170…ポート、180…ポート情報、200…ストレージコントローラ、210…キャッシュメモリ、220…共有メモリ、230…フラッシュパッケージ、265…高速ディスク装置、290…低速ディスク装置、240…タイマ、250…接続装置、260…プロセッサ、270…メモリ、280…フラッシュパッケージグループ、285…高速ディスクグループ、295…低速ディスクグループ、2050…ストレージシステム情報、2000…論理ボリューム情報、2100…実ページ情報、2300…記憶装置グループ情報、2500…記憶装置情報、2750…キャッシュ管理情報、2760…スロット管理情報、2850…セグメント管理情報、4010…仮想ストレージシステム情報、4110…外部論理ボリューム情報、4210…ホスト情報、4000…リード処理実行部、4100…ライト処理受付部、4200…スロット確保部、4300…セグメント確保部、4400…移動ページスケジュール部、4500…実ページ移動処理実行部、4600…キャッシュ容量調整部、4700…記憶装置選択部、4800…キャッシング判別処理部、4900…遅延送信部
Claims (15)
- ホストに接続されるストレージシステムであって、
性能の異なる2種類以上の記憶装置と、
前記2種類以上の記憶装置と前記ホストに接続された制御装置と
を有し、
前記制御装置は、
(A)同一種類の1つ以上の記憶装置を複数の実ページに分割して、実ページがそれぞれ割り当てられ得る複数の仮想ページで構成された論理ボリュームであり前記ホストからのアクセス要求で指定されるホストボリュームを前記ホストに提供し、
(B)前記複数の実ページのうちの1以上の実ページを、前記ホストボリュームのキャッシュ領域として使用する、
ストレージシステム。 - 前記制御装置は、
(C)前記記憶装置のキャッシュのヒット率を計測し、
(D)前記計測されたヒット率を基に、前記キャッシュ領域として使用する実ページの数を調整する、
請求項1記載のストレージシステム。 - 前記制御装置は、前記(C)で、前記ヒット率を、記憶装置の種類毎に計測し、
前記制御装置は、前記(D)で、キャッシュ領域として使用する実ページの数を、記憶装置の種類毎に、調整する、
請求項2記載のストレージシステム。 - 前記制御装置は、
(E)実ページのアクセス状況を計測し、
(F)実ページのアクセス状況と、実ページの基になっている記憶装置の性能とを基に、同種又は異種の記憶装置間で、実ページ内のデータを移動させる、
請求項3記載のストレージシステム。 - 前記制御装置は、前記キャッシュ領域として使用されるページの割当先となる論理ボリュームであるキャッシュボリュームを管理する、
請求項1記載のストレージシステム。 - 前記制御装置は、
(E)実ページのアクセス状況を計測し、
(F)実ページのアクセス状況と、実ページの基になっている記憶装置の性能とを基に、同種又は異種の記憶装置間で、実ページ内のデータを移動させる、
請求項5記載のストレージシステム。 - 前記(F)の対象となるページは、前記ホストボリュームに割り当てられているページであって、前記キャッシュボリュームに割り当てられているページではない、
請求項6記載のストレージシステム。 - 前記キャッシュボリュームは、記憶装置の種類毎にある、
請求項5記載のストレージシステム。 - 前記キャッシュ領域として使用されるページは、前記ホストボリュームに割り当てられデータの格納先のページの基になっている記憶装置よりも性能の高い記憶装置に基づくページである、
請求項1記載のストレージシステム。 - 前記2種類以上の記憶装置は、データの消去単位であるブロックを複数個有するフラッシュメモリを有する2以上のフラッシュパッケージを含み、
(G)前記制御装置は、前記各フラッシュパッケージの消去回数を計測し、
前記制御装置は、前記(F)で、前記消去回数を基に、前記フラッシュパッケージ間で、ページ内のデータを移動する、
ストレージシステム。 - 前記制御装置は、複数のストレージシステムによって構成される仮想的なストレージシステムの識別子を前記複数のストレージシステムにおける他のストレージシステムと共有し、
前記ホストボリュームは、仮想的な論理ボリュームの基になっており、
前記制御装置は、
(H)前記仮想的な論理ボリュームがどのストレージシステムの論理ボリュームであるかを認識し、
(I)前記複合型ストレージシステムに属するほかのストレージシステムとの間のデータ転送に伴う遅延を認識し、
(J)前記認識した遅延にしたがって、前記複合型ストレージシステムに属するほかのストレージシステムのデータを前記ページにキャッシュする、
ストレージステム。 - 前記制御装置が、前記認識した遅延にしたがって、前記2種類以上の記憶装置のなかから、キャッシング先の記憶装置を選択する、
請求項11記載のストレージシステム。 - 前記制御装置が、前記(I)で、前記複合型ストレージシステムそれぞれのストレージシステムと接続された前記ホストとの間の転送遅延時間を認識し、
前記制御装置は、前記(J)で、前記認識した遅延にしたがって、前記複合型ストレージシステムに属するほかのストレージシステムのデータをキャッシュする、
請求項11記載のストレージシステム。 - 複数のストレージシステムによって構成される複合型のストレージシステムであって、
前記複数のストレージシステムは、仮想的なストレージシステムの識別子を共有し、仮想的な論理ボリュームを提供し、
各ストレージシステムは、
(A)前記仮想的な論理ボリュームがどのストレージシステムの論理ボリュームであるかを認識し、
(B)前記複合型ストレージシステムに属するほかのストレージシステムとの間のデータ転送に伴う遅延を認識し、
(C)前記認識した遅延にしたがって、前記複合型ストレージシステムに属するほかのストレージシステムのデータをキャッシュする、
複合型ストレージステム。 - 複数のストレージシステムによって構成される複合型のストレージシステムであって、
前記複数のストレージシステムは、仮想的なストレージシステムの識別子を共有し、仮想的な論理ボリュームを提供し、第1のストレージシステムを含み、
各ストレージシステムが、記憶装置を有し、
前記第1のストレージシステムが、
(A)同一種類の1つ以上の記憶装置を複数の実ページに分割して、実ページがそれぞれ割り当てられ得る複数の仮想ページで構成された論理ボリュームであり前記ホストからのアクセス要求で指定されるホストボリュームを前記ホストに提供し、
(B)前記記憶装置の前記ページを、前記複合型ストレージシステムを構成する他のストレージシステムのデータを格納するキャッシュとして使用する、
複合型ストレージシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/003371 WO2013175529A1 (en) | 2012-05-23 | 2012-05-23 | Storage system and storage control method for using storage area based on secondary storage as cache area |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015517697A true JP2015517697A (ja) | 2015-06-22 |
Family
ID=49622455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015509569A Pending JP2015517697A (ja) | 2012-05-23 | 2012-05-23 | 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130318196A1 (ja) |
JP (1) | JP2015517697A (ja) |
WO (1) | WO2013175529A1 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017022002A1 (ja) * | 2015-07-31 | 2017-02-09 | 株式会社日立製作所 | ストレージ装置、ストレージシステム、ストレージシステムの制御方法 |
WO2017175350A1 (ja) * | 2016-04-07 | 2017-10-12 | 株式会社日立製作所 | 計算機システム |
WO2018042608A1 (ja) * | 2016-09-01 | 2018-03-08 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
JP2019174994A (ja) * | 2018-03-27 | 2019-10-10 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
JP2021039771A (ja) * | 2020-11-06 | 2021-03-11 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
US11474750B2 (en) | 2020-01-21 | 2022-10-18 | Fujitsu Limited | Storage control apparatus and storage medium |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9578098B2 (en) * | 2012-11-19 | 2017-02-21 | Hitachi, Ltd. | Management system and management method |
US9405621B2 (en) * | 2012-12-28 | 2016-08-02 | Super Talent Technology, Corp. | Green eMMC device (GeD) controller with DRAM data persistence, data-type splitting, meta-page grouping, and diversion of temp files for enhanced flash endurance |
US10140212B2 (en) * | 2013-09-30 | 2018-11-27 | Vmware, Inc. | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed |
US10223026B2 (en) | 2013-09-30 | 2019-03-05 | Vmware, Inc. | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored |
WO2015116135A1 (en) | 2014-01-31 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Reducing read latency of memory modules |
US10296240B2 (en) | 2014-04-28 | 2019-05-21 | Hewlett Packard Enterprise Development Lp | Cache management |
US11237965B2 (en) * | 2014-12-31 | 2022-02-01 | Arteris, Inc. | Configurable snoop filters for cache coherent systems |
US10572443B2 (en) * | 2015-02-11 | 2020-02-25 | Spectra Logic Corporation | Automated backup of network attached storage |
US9588901B2 (en) | 2015-03-27 | 2017-03-07 | Intel Corporation | Caching and tiering for cloud storage |
JP6464980B2 (ja) * | 2015-10-05 | 2019-02-06 | 富士通株式会社 | プログラム、情報処理装置及び情報処理方法 |
US10061523B2 (en) | 2016-01-15 | 2018-08-28 | Samsung Electronics Co., Ltd. | Versioning storage devices and methods |
TWI571745B (zh) * | 2016-01-26 | 2017-02-21 | 鴻海精密工業股份有限公司 | 緩存管理方法及使用該方法的電子裝置 |
CN108701002B (zh) * | 2016-02-29 | 2021-10-29 | 株式会社日立制作所 | 虚拟存储系统 |
US9984004B1 (en) * | 2016-07-19 | 2018-05-29 | Nutanix, Inc. | Dynamic cache balancing |
US10359960B1 (en) * | 2017-07-14 | 2019-07-23 | EMC IP Holding Company LLC | Allocating storage volumes between compressed and uncompressed storage tiers |
US10852966B1 (en) * | 2017-10-18 | 2020-12-01 | EMC IP Holding Company, LLC | System and method for creating mapped RAID group during expansion of extent pool |
CN112860599B (zh) * | 2019-11-28 | 2024-02-02 | 中国电信股份有限公司 | 数据缓存处理方法、装置以及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003337722A (ja) * | 2002-03-13 | 2003-11-28 | Hitachi Ltd | 計算機システム |
JP2006268486A (ja) * | 2005-03-24 | 2006-10-05 | Fujitsu Ltd | キャッシング制御プログラム、キャッシング制御装置およびキャッシング制御方法 |
JP2007034536A (ja) * | 2005-07-25 | 2007-02-08 | Sony Corp | データ記憶装置及び方法、並びに記録再生システム |
JP2007102762A (ja) * | 2005-10-05 | 2007-04-19 | Hitachi Ltd | 論理パーティション分割ストレージシステムに於けるリソース管理方法 |
WO2009113553A1 (ja) * | 2008-03-11 | 2009-09-17 | シャープ株式会社 | 光ディスクドライブ装置 |
US7856530B1 (en) * | 2007-10-31 | 2010-12-21 | Network Appliance, Inc. | System and method for implementing a dynamic cache for a data storage system |
US20110138246A1 (en) * | 2009-12-08 | 2011-06-09 | James Gardner | Method and System for Network Latency Virtualization in a Cloud Transport Environment |
WO2011077489A1 (ja) * | 2009-12-24 | 2011-06-30 | 株式会社日立製作所 | 仮想ボリュームを提供するストレージシステム |
JP2012043407A (ja) * | 2010-08-20 | 2012-03-01 | Hitachi Ltd | 疎結合複数ストレージ環境のための階層式ストレージプール管理及び制御 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3507132B2 (ja) | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US5754888A (en) * | 1996-01-18 | 1998-05-19 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | System for destaging data during idle time by transferring to destage buffer, marking segment blank , reodering data in buffer, and transferring to beginning of segment |
US7152096B2 (en) | 2001-08-06 | 2006-12-19 | Hitachi, Ltd. | High performance storage access environment |
US7058764B2 (en) * | 2003-04-14 | 2006-06-06 | Hewlett-Packard Development Company, L.P. | Method of adaptive cache partitioning to increase host I/O performance |
JP4863605B2 (ja) | 2004-04-09 | 2012-01-25 | 株式会社日立製作所 | 記憶制御システム及び方法 |
US7613876B2 (en) * | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
JP4963892B2 (ja) | 2006-08-02 | 2012-06-27 | 株式会社日立製作所 | 仮想ストレージシステムの構成要素となることが可能なストレージシステムの制御装置 |
JP2009043030A (ja) | 2007-08-09 | 2009-02-26 | Hitachi Ltd | ストレージシステム |
JP2010097359A (ja) | 2008-10-15 | 2010-04-30 | Hitachi Ltd | ファイル管理方法および階層管理ファイルシステム |
US8321645B2 (en) * | 2009-04-29 | 2012-11-27 | Netapp, Inc. | Mechanisms for moving data in a hybrid aggregate |
US8327076B2 (en) * | 2009-05-13 | 2012-12-04 | Seagate Technology Llc | Systems and methods of tiered caching |
CN102449607B (zh) | 2009-07-22 | 2015-05-27 | 株式会社日立制作所 | 具有多个闪存封装的存储系统 |
US8621145B1 (en) * | 2010-01-29 | 2013-12-31 | Netapp, Inc. | Concurrent content management and wear optimization for a non-volatile solid-state cache |
US9355109B2 (en) * | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
WO2012116369A2 (en) * | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
US8930624B2 (en) * | 2012-03-05 | 2015-01-06 | International Business Machines Corporation | Adaptive cache promotions in a two level caching system |
US20130238851A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Hybrid storage aggregate block tracking |
-
2012
- 2012-05-23 US US13/514,437 patent/US20130318196A1/en not_active Abandoned
- 2012-05-23 WO PCT/JP2012/003371 patent/WO2013175529A1/en active Application Filing
- 2012-05-23 JP JP2015509569A patent/JP2015517697A/ja active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003337722A (ja) * | 2002-03-13 | 2003-11-28 | Hitachi Ltd | 計算機システム |
JP2006268486A (ja) * | 2005-03-24 | 2006-10-05 | Fujitsu Ltd | キャッシング制御プログラム、キャッシング制御装置およびキャッシング制御方法 |
JP2007034536A (ja) * | 2005-07-25 | 2007-02-08 | Sony Corp | データ記憶装置及び方法、並びに記録再生システム |
JP2007102762A (ja) * | 2005-10-05 | 2007-04-19 | Hitachi Ltd | 論理パーティション分割ストレージシステムに於けるリソース管理方法 |
US7856530B1 (en) * | 2007-10-31 | 2010-12-21 | Network Appliance, Inc. | System and method for implementing a dynamic cache for a data storage system |
WO2009113553A1 (ja) * | 2008-03-11 | 2009-09-17 | シャープ株式会社 | 光ディスクドライブ装置 |
US20110138246A1 (en) * | 2009-12-08 | 2011-06-09 | James Gardner | Method and System for Network Latency Virtualization in a Cloud Transport Environment |
WO2011077489A1 (ja) * | 2009-12-24 | 2011-06-30 | 株式会社日立製作所 | 仮想ボリュームを提供するストレージシステム |
JP2012043407A (ja) * | 2010-08-20 | 2012-03-01 | Hitachi Ltd | 疎結合複数ストレージ環境のための階層式ストレージプール管理及び制御 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017022002A1 (ja) * | 2015-07-31 | 2017-02-09 | 株式会社日立製作所 | ストレージ装置、ストレージシステム、ストレージシステムの制御方法 |
JPWO2017022002A1 (ja) * | 2015-07-31 | 2018-04-26 | 株式会社日立製作所 | ストレージ装置、ストレージシステム、ストレージシステムの制御方法 |
US10725878B2 (en) | 2015-07-31 | 2020-07-28 | Hitachi, Ltd. | Storage apparatus, storage system, and control method of storage system for dynamically securing free space when a storage apparatus is disused |
WO2017175350A1 (ja) * | 2016-04-07 | 2017-10-12 | 株式会社日立製作所 | 計算機システム |
WO2018042608A1 (ja) * | 2016-09-01 | 2018-03-08 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
JP2019174994A (ja) * | 2018-03-27 | 2019-10-10 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
US11474750B2 (en) | 2020-01-21 | 2022-10-18 | Fujitsu Limited | Storage control apparatus and storage medium |
JP2021039771A (ja) * | 2020-11-06 | 2021-03-11 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
JP7065928B2 (ja) | 2020-11-06 | 2022-05-12 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2013175529A1 (en) | 2013-11-28 |
US20130318196A1 (en) | 2013-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2015517697A (ja) | 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法 | |
US9569130B2 (en) | Storage system having a plurality of flash packages | |
US20150095555A1 (en) | Method of thin provisioning in a solid state disk array | |
JP5816303B2 (ja) | フラッシュメモリを含むストレージシステム、及び記憶制御方法 | |
JP6114397B2 (ja) | 複合型ストレージシステム及び記憶制御方法 | |
US8976636B1 (en) | Techniques for storing data on disk drives partitioned into two regions | |
US10296255B1 (en) | Data migration techniques | |
US9311207B1 (en) | Data storage system optimizations in a multi-tiered environment | |
JP2009043030A (ja) | ストレージシステム | |
US11740801B1 (en) | Cooperative flash management of storage device subdivisions | |
GB2536514A (en) | Storage device and method for controlling storage device | |
WO2015162758A1 (ja) | ストレージシステム | |
JP2014506688A (ja) | フラッシュメモリを含むストレージシステム、及び記憶制御方法 | |
US20130138884A1 (en) | Load distribution system | |
US20180253252A1 (en) | Storage system | |
JP2012533781A (ja) | 計算機システム及びその負荷均等化制御方法 | |
US20150186063A1 (en) | Compound storage system and storage control method | |
WO2014002126A1 (en) | Computer system and method of controlling i/o with respect to storage apparatus | |
JP5597266B2 (ja) | ストレージシステム | |
JP5768118B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム | |
JP6138318B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム | |
JP5945040B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20151026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20151117 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20160308 |