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

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

Info

Publication number
JP7011156B2
JP7011156B2 JP2017222513A JP2017222513A JP7011156B2 JP 7011156 B2 JP7011156 B2 JP 7011156B2 JP 2017222513 A JP2017222513 A JP 2017222513A JP 2017222513 A JP2017222513 A JP 2017222513A JP 7011156 B2 JP7011156 B2 JP 7011156B2
Authority
JP
Japan
Prior art keywords
link
storage
processing unit
resource
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017222513A
Other languages
English (en)
Other versions
JP2019095881A (ja
Inventor
拓郎 隈部
基裕 酒井
圭馬 阿部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2017222513A priority Critical patent/JP7011156B2/ja
Priority to US16/136,312 priority patent/US10664393B2/en
Publication of JP2019095881A publication Critical patent/JP2019095881A/ja
Application granted granted Critical
Publication of JP7011156B2 publication Critical patent/JP7011156B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

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)

Description

本発明はストレージ制御装置およびプログラムに関する。
データの保存にストレージ装置が利用されている。ストレージ装置は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶デバイスを複数搭載可能であり、大容量の記憶領域を提供する。ストレージ装置は、記憶デバイスに対するデータの書き込みや読み出しのアクセス制御を行うストレージ制御装置に接続される。ストレージ装置は、ストレージ制御装置を内蔵することもある。
ここで、ストレージ制御装置では、I/O(Input / Output)処理を行うプロセッサを複数設け、複数のI/O処理を複数のプロセッサにより並列に実行することでデータアクセスの高速化を図ることがある。例えば、複数のマイクロプロセッサによりI/O処理を実行する場合に、自マイクロプロセッサの負荷が第一の負荷以上の場合に、当該I/O処理のうちの一部を他のマイクロプロセッサに割り振るストレージシステムの提案がある。また、複数のメインプロセッサのそれぞれの稼働率に応じて、複数のメインプロセッサにI/O処理を振り分けるストレージ装置の提案もある。
なお、1つのデータ処理システム内の複数のプロセスまたはエージェントにメモリ上の共用リソースを区画と呼ばれる分割単位で割り振るシステムの提案もある。提案のシステムは、使用レベルが高い区画に共用リソースを追加し、使用レベルが低い区画から共用リソースを除去することにより、共用リソースの分配を再割り振りする。また、全プロセッサが共用メイン・メモリを介して通信する共用マルチプロセッシングシステムで、第1のプロセッサでアプリケーション・バイナリを実行中に、他プロセッサにより当該実行をモニタし、アプリケーション・バイナリの実行を最適化する提案もある。
ところで、ある記憶デバイスに対し、当該記憶デバイスよりも高速にアクセス可能なキャッシュメモリが利用されることがある。例えば、ストレージ制御装置は、今後アクセスされる可能性の高いデータをキャッシュメモリに保持しておき、該当のデータが要求された際、記憶デバイスではなくキャッシュメモリからデータを読み出して要求元へ送ることで、データアクセスを高速化できる。
特開2007-249729号公報 国際公開第2014/049635号 特開2004-164607号公報 特開2004-110824号公報
キャッシュメモリの記憶容量は有限である。そこで、ストレージ制御装置は、キャッシュメモリ内の使用済の複数の単位領域をリスト構造のデータ(リンクや連結リストなどと呼ぶことがある)により管理し、LRU(Least Recently Used)などのアルゴリズムを用いて、各単位領域を再利用することがある。この場合、リンクに対する操作は、データに対する処理結果の整合性を保つため、複数のプロセスにより同時に操作されないよう、排他資源を獲得したプロセスにより排他的に行われる。このため、キャッシュメモリの各単位領域を単一のリンクで管理すると、他プロセスによる排他資源の獲得待ちが生じ易くなり、ストレージ装置に対するアクセス処理の並列度が低下する可能性がある。
1つの側面では、本発明は、アクセス処理の並列度の向上を目的とする。
1つの態様では、ストレージ制御装置が提供される。ストレージ制御装置は、記憶部と処理部とを有する。記憶部は、キャッシュメモリとして用いられる複数のページを有する。処理部は、複数のページのうちの第1のページ群を示す第1のリンクに第1のストレージ資源を割り当て、複数のページのうちの第2のページ群を示す第2のリンクに第2のストレージ資源を割り当て、第1のリンクおよび第2のリンクを用いて、第1のストレージ資源および第2のストレージ資源に対するアクセス要求を分散して処理する。処理部は、ページに対応するリンク要素を第1のリンクおよび第2のリンクのうちの一方のリンクに追加する際、キャッシュメモリに空きページがない場合に、第1のリンクおよび第2のリンクのうちの他方のリンクに含まれるリンク要素を一方のリンクへ移し替え、移し替えの際に、前回の移し替え先のリンクと今回の移し替え先のリンクとが同じ場合、今回移し替えるリンク要素の数を、前回移し替えたリンク要素の数よりも増やす。
1つの側面では、アクセス処理の並列度を向上できる。
第1の実施の形態のストレージ制御装置を示す図である。 第2の実施の形態のストレージ装置のハードウェア例を示す図である。 CMの機能例を示す図である。 排他資源の分割例を示す図である。 記憶部の記憶領域の例を示す図である。 CBEの例を示す図である。 LRUリンクの例を示す図である。 フリーリンクの例を示す図である。 新規LU割り当て処理の例を示すフローチャートである。 I/O時CBE獲得処理の例を示すフローチャートである。 別資源からのCBE獲得処理の例を示すフローチャートである。 I/O非同期のCBE移し替え処理の例を示すフローチャートである。 ライトバック時のCBE解放処理の例を示すフローチャートである。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージ制御装置を示す図である。ストレージ制御装置1は、ストレージ装置2および情報処理装置3に接続されている。ストレージ装置2は、HDDやSSDなどの記憶デバイスを複数備えている。ストレージ装置2は、ストレージ制御装置1を内蔵してもよい。
情報処理装置3は、ストレージ装置2に記憶されたデータに対するアクセス要求をストレージ制御装置1に送信する。ストレージ制御装置1は、情報処理装置3からアクセス要求を受信し、アクセス要求に応じて、ストレージ装置2に記憶されたデータにアクセスする。ストレージ制御装置1は、キャッシュメモリを有する。ストレージ制御装置1は、キャッシュメモリを用いて情報処理装置3のアクセス要求に対する応答の高速化を図る。ストレージ制御装置1は、記憶部1aおよび処理部1bを有する。
記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置である。記憶部1aは、キャッシュメモリC1として利用される記憶領域を含む。キャッシュメモリC1に対応する記憶領域は、ページまたはキャッシュページと呼ばれる所定サイズ単位の記憶領域(単位領域)に分けて管理される。例えば、キャッシュメモリC1は、ページP1,P2,P3,・・・を含む。すなわち、記憶部1aは、キャッシュメモリC1として用いられる複数のページを有する。ページP1,P2,P3,・・・には、ストレージ装置2から読み出されたデータや、情報処理装置3によりストレージ装置2に書き込まれるデータが格納される(ストレージ装置2へのデータ書き込みにライトバック(Write back)が用いられる)。キャッシュメモリC1上の書き込み対象のデータは、例えば、処理の空き時間の発生時や周期的なタイミングなどで、ストレージ装置2に書き戻される。
処理部1bは、プログラムを実行するプロセッサを複数含むマルチプロセッサ(複数のプロセッサの集合)である。処理部1bは、プログラムを実行するコアを複数含むマルチコアCPU(Central Processing Unit)(あるいはマルチコアのプロセッサ)でもよい。処理部1bは、サブ処理部1b1,1b2を有する。サブ処理部1b1を1つのプロセッサ、または、1つのコアと考えてもよい。同様に、サブ処理部1b2を1つのプロセッサ、または、1つのコアと考えてもよい。サブ処理部1b1,1b2は、記憶部1aを共有する。複数のプロセッサまたは複数のコアによりメモリ資源を共有して処理を実行する技術は、対称型マルチプロセッシング(SMP:Symmetric MultiProcessing)と呼ばれる。以下の説明において、処理部1bにより実行される処理は、サブ処理部1b1またはサブ処理部1b2により実行されると考えてもよい。また、処理部1bは、3以上のサブ処理部を備えてもよい。
処理部1bは、複数のページのうちの第1のページ群を示す第1のリンクL1に第1のストレージ資源2aを割り当てる。また、処理部1bは、複数のページのうちの第2のページ群を示す第2のリンクL2に第2のストレージ資源2bを割り当てる。
ここで、ストレージ資源は、ストレージ装置2における記憶デバイスの記憶領域の集合である。ストレージ資源は、ストレージ装置2における複数の記憶デバイスにより構成される論理的な記憶領域(例えば、LU(Logical Unit))の集合でもよい。各ストレージ資源には、それぞれ異なる記憶領域が属する。第1のストレージ資源2aおよび第2のストレージ資源2bは、ストレージ装置2のストレージ資源である。
また、第1のリンクL1および第2のリンクL2は、キャッシュメモリC1に含まれる使用済(データ格納済)のページの管理、および、ページの再利用の制御に用いられる情報である。処理部1bは、例えば、LRUのアルゴリズムを用いて、第1のリンクL1および第2のリンクL2を操作することで、使用済のページP1,P2,P3,・・・(あるいは、ページP1,P2,P3,・・・に格納されたデータ)の追い出しを制御する。
第1のリンクL1および第2のリンクL2は、例えば、構造体と呼ばれるリンク要素がポインタによって順番に連結されたデータ構造(リスト構造)をもつ。第1のリンクL1および第2のリンクL2は、連結リストやリンクリストなどと呼ばれてもよい。特に、第1のリンクL1および第2のリンクL2は、LRUのアルゴリズムに用いられる場合、LRUリンクやLRUリストなどと呼ばれてもよい。1つのリンク要素は、1つのページに予め対応付けられている。第1のリンクL1により管理されるページと第2のリンクL2により管理されるページとは重複しない。
第1のリンクL1は、ページP1,P2,・・・(第1のページ群)に対応するリンク要素L1a,L1b,L1c,・・・,L1mを含む。例えば、リンク要素L1aはページP1に対応する。また、例えば、リンク要素L1bはページP2に対応する。ある時点において、リンク要素L1a,L1b,L1c,・・・,L1mは、ポインタにより、この順番で連結されている。第2のリンクL2は、ページP3,・・・(第2のページ群)に対応するリンク要素L2a,L2b,L2c,・・・,L2nを含む。例えば、リンク要素L2bは、ページP3に対応する。ある時点において、リンク要素L2a,L2b,L2c,・・・,L2nは、ポインタにより、この順番で連結されている。
例えば、第1のリンクL1の図1における左端のリンク要素がLRU側(第1のリンクL1に属するページのうち、前回のアクセスから最も時間が経過しているページ)に対応する。一方、第1のリンクL1の図1における右端のリンク要素が、MRU(Most Recently Used)側(第1のリンクL1に属するページのうち、最後にアクセスされたページ)に対応する。第2のリンクL2についても同様にLRU側(左端)、MRU側(右端)が定められる。
ここで、第1のリンクL1の操作は、排他的に行われる。そのため、記憶部1aは、第1のリンクL1に対して第1の排他資源を記憶する。第1の排他資源は、例えば、第1の排他資源が何れかのサブ処理部によって獲得済であるか、または、何れのサブ処理部も未獲得であるかを示すフラグである。第1の排他資源を獲得した(すなわち、第1の排他資源を獲得済に設定した)サブ処理部が、第1のリンクL1の操作を行える。当該サブ処理部は、第1のリンクL1を用いた今回の処理を終えると、第1の排他資源を未獲得に戻す。同様に、第2のリンクL2の操作は、排他的に行われる。そのため、記憶部1aは、第2のリンクL2に対して第2の排他資源を記憶する。第2の排他資源は、例えば、第2の排他資源が何れかのサブ処理部によって獲得済であるか、または、何れのサブ処理部も未獲得であるかを示すフラグである。第2の排他資源を獲得したサブ処理部が、第2のリンクL2の操作を行える。
したがって、第1のリンクL1に第1のストレージ資源2aを割り当てることは、第1の排他資源に第1のストレージ資源2aを割り当てることであるともいえる。また、第2のリンクL2に第2のストレージ資源2bを割り当てることは、第2の排他資源に第2のストレージ資源2bを割り当てることであるともいえる。
処理部1bは、第1のリンクL1および第2のリンクL2を用いて、第1のストレージ資源2aおよび第2のストレージ資源2bに対するアクセス要求を分散して処理する。
例えば、サブ処理部1b1は、第1のストレージ資源2aに対する書き込みまたは読み出しのアクセス要求を情報処理装置3から受信する。すると、サブ処理部1b1は、第1の排他資源を獲得して、第1のリンクL1を操作し、情報処理装置3から取得した書き込み対象のデータまたは第1のストレージ資源2aから読み出したデータをキャッシュメモリC1に格納する。
第1のリンクL1および第2のリンクL2の操作方法は、LRUのアルゴリズムに従う。例えば、サブ処理部1b1は、第1のストレージ資源2aに関連する新データをキャッシュメモリC1に格納する際、キャッシュメモリC1に空きページがあれば、第1のリンクL1のMRU側に空きページに対応するリンク要素を追加する。そして、サブ処理部1b1は、新データを当該空きページに格納する。ここで、第1のリンクL1へのリンク要素の追加は、追加されたリンク要素のページが第のストレージ資源2のアクセス処理に利用可能となったことに相当する。したがって、第のストレージ資源2のアクセス処理に利用可能なキャッシュ容量が、追加されたページの分だけ増加したことになる。
一方、キャッシュメモリC1に空きページがなければ、サブ処理部1b1は、第1のリンクL1のLRU側のリンク要素に対応するページに新データを上書きする(該当ページの旧データは上書きにより消去される)。このとき、例えば、第1のストレージ資源2aに未書き込みのデータを格納しているページは再利用の対象外となる(当該ページは未書き込みのデータを第1のストレージ資源2aに書き込み後、再利用可能になる)。そして、サブ処理部1b1は、新データを書き込んだページに対応するリンク要素を第1のリンクL1のMRU側に移動させる。
こうして、サブ処理部1b1は、空きページがなければ、最近アクセスされていないページを優先的に解放して再利用する。サブ処理部1b1は、第2のストレージ資源2bに関連する新データをキャッシュメモリC1に格納する際、第2のリンクL2に対しても同様の操作を行う。また、サブ処理部1b2も、サブ処理部1b1と同様に、第1のリンクL1および第2のリンクL2の操作を行う。
例えば、処理部1bは、サブ処理部1b1およびサブ処理部1b2により、第1のストレージ資源2aおよび第2のストレージ資源2bに対するアクセス要求を分散して処理する。具体的には、サブ処理部1b1が第1の排他資源を獲得し、第1のリンクL1により、第1のストレージ資源2aへのアクセス要求を処理している間にも、サブ処理部1b2は、第2の排他資源を獲得して第2のリンクL2を操作できる。
すなわち、処理部1bは、サブ処理部1b1による第1のリンクL1を用いた第1のストレージ資源2aに対するI/O処理と、サブ処理部1b2による第2のリンクL2を用いた第2のストレージ資源2bに対するI/O処理とを並列に実行できる。あるいは、処理部1bは、サブ処理部1b1による第2のリンクL2を用いた第2のストレージ資源2bに対するI/O処理と、サブ処理部1b2による第1のリンクL1を用いた第1のストレージ資源2aに対するI/O処理とを並列に実行することもできる。
ここで、ストレージ制御装置1は、単一のリンクおよび当該リンクに対応する単一の排他資源により、キャッシュメモリC1における使用済のページを管理することも考えられる。しかし、例えば、SMPのように、キャッシュメモリC1が複数のサブ処理部によって共有される場合、あるサブ処理部が排他資源を獲得してアクセス要求を処理している間は、他のサブ処理部で排他資源の獲得待ちが生じ、アクセス処理の並列度が低下する可能性がある。アクセス処理の並列度の低下を抑制するには、排他資源の獲得待ちの時間を減らすことが好ましい。
そこで、ストレージ制御装置1では、ストレージ装置2の記憶領域を複数のストレージ資源に分け、各ストレージ資源に対してリンクおよび当該リンクに対応する排他資源を設ける。上記の例では、リンクの数(ストレージ資源の数)を2としたが、リンクの数は、サブ処理部の数に応じて決定可能である。サブ処理部の数をM個(Mは2以上の整数)とすると、リンクの数(および排他資源の数)N(Nは2以上の整数)は、2≦N≦Mである。そして、各サブ処理部は、それぞれのストレージ資源をN個のうちの何れか1つの排他資源に割り当て、割り当てた排他資源を獲得して、当該ストレージ資源に関するI/O処理を行う。こうして、ストレージ制御装置1によれば、各サブ処理部における排他資源の獲得待ちの時間を減少させることができ、アクセス処理の並列度を向上させることができる。
なお、第1のリンクL1および第2のリンクL2に対して、空きページに対応するリンク要素を獲得し、追加する方法には次の方法が考えられる。例えば、記憶部1aは、空きページに対応するリンク要素をポインタで連結したフリーリンク(あるいは、フリーリスト)を記憶する。フリーリンクも、リスト構造をもつデータである。そして、処理部1bは、各ストレージ資源に対するアクセス要求に応じた先着順で、フリーリストからリンク要素を取得し、アクセス先のストレージ資源に応じて第1のリンクL1または第2のリンクL2のMRU側に、獲得したリンク要素を追加する。この場合、記憶部1aは、フリーリンクに対応する第3の排他資源を記憶する。
フリーリンクをキャッシュメモリC1に対して1つ用意し、当該フリーリンクから、第1のリンクL1および第2のリンクL2へのリンク要素の獲得を行うことが好ましい。なぜなら、第1のリンクL1用のフリーリンク、および、第2のリンクL2用のフリーリンクというように、複数のフリーリンクを設けると、その分、1つのストレージ資源へのアクセスに利用可能なキャッシュ容量の上限が制限されてしまうからである。例えば、N個のフリーリンクを設けるとすると、あるストレージ資源に対して使用できるキャッシュ容量の上限は、キャッシュメモリC1の全体の容量の1/Nになってしまう。そこで、フリーリンクを1つとすることで、処理部1bは、アクセス状況に応じたキャッシュ容量を(例えば、アクセスが多いほど多い容量を、アクセスが少ないほど少ない容量を)各ストレージ資源に割り振ることができる。アクセスがより多いストレージ資源に、より多くのキャッシュ容量を割くことで、ストレージ装置2へのデータアクセス性能を向上できる。
ただし、当初の各ストレージ資源に対するアクセス状況に応じた負荷が、その後も変わらずに継続するとは限らない。あるストレージ資源では、当初アクセス数が多かったが、その後のアクセス数が少なくなることもある。また、別のストレージ資源では、当初アクセス数が少なかったが、その後のアクセス数が多くなることもある。
そこで、処理部1bは、空きページがない状況で、第1のストレージ資源2aに割り当てられたキャッシュ容量が不足し、かつ、当該キャッシュ容量が閾値以下(第1のリンクL1に属するリンク要素数が閾値以下)の場合、第2のストレージ資源2bに割り当て済のページを、第1のストレージ資源2aに再割り当てしてもよい。
すなわち、処理部1bは、第2のリンクL2のリンク要素(例えば、LRU側にあって第2のストレージ資源2bに未書き込みのデータが存在しないページに対応するもの)を獲得し、第1のリンクL1に移し替えてもよい。リンク要素の移し替えは、当該リンク要素に対応するページを、あるストレージ資源から別のストレージ資源に再割り当てすることに相当する。例えば、上記の移し替えにより、第2のストレージ資源2bのアクセス処理に利用可能なキャッシュ容量は減少し、第1のストレージ資源2aのアクセス処理に利用可能なキャッシュ容量は増加する。
一方、第1のストレージ資源2aに割り当てられたキャッシュ容量が閾値より大きい(第1のリンクL1に属するリンク要素数が閾値より大きい)場合、処理部1bは、第1のリンクL1を用いて、追い出し対象のページを特定し、当該ページを再利用する。ただし、処理部1bは、当該再利用の際に、第1のリンクL1が示す第1のページ群に属する再利用可能なページが不足する場合には、第2のリンクL2に含まれるリンク要素を第1のリンクL1に移し替えてもよい。
例えば、処理部1bは、リンク要素の移し替えを行うか否かをアクセス要求の受け付け時や周期的なタイミングなどで判定し(上記のキャッシュ容量不足かつキャッシュ容量閾値以下の判定)、判定に応じて、リンク要素の移し替えを行うことが考えられる。
ところで、リンク要素の移し替えでは、移し替え元のリンクの排他資源の獲得、移し替え元のリンクにおける移し替え対象ページの解放、移し替え元のリンクの排他資源の解放、移し替え先のリンクの排他資源の獲得、移し替え先のリンクへの該当ページのリンク要素追加といった手順を伴う。したがって、リンク要素の移し替えは、これら手順の実行を要し、アクセス要求に対する処理のオーバーヘッドとなり得る。このため、キャッシュ容量の不足のたびに毎回、リンク要素の移し替えの動作を行っていると、移し替え先のリンクに対応するストレージ資源に対するアクセス負荷が高い場合に、当該ストレージ資源へのアクセスに時間がかかる可能性がある。そこで、処理部1bは、各ストレージ資源への負荷を考慮して、一度に移し替えるリンク要素の数を変更してもよい。
例えば、処理部1bは、あるストレージ資源に対応するリンクが連続してリンク要素の移し替え先となった回数が多いほど、一度に移し替えるリンク要素の数を増加させることが考えられる。該当のストレージ資源には、連続的にアクセスが発生しており、当該ストレージ資源に係るアクセス負荷が高まっていると推定できるからである。
あるいは、処理部1bは、移し替え元のリンクに対応するストレージ資源に対する第1のアクセス数と、移し替え先のリンクに対応するストレージ資源に対する第2のアクセス数との比較に応じて、一度に移し替えるリンク要素の数を増やしてもよい。例えば、処理部1bは、第2のアクセス数が、第1のアクセス数よりも大きい場合に、第2のアクセス数と第1のアクセス数との差に応じて、一度に移し替えるリンク要素の数を増やしてもよい。より具体的には、処理部1bは、第2のアクセス数と第1のアクセス数との差が大きいほど、一度に移し替えるリンク要素の数を増加させることが考えられる。
このようにして、ストレージ制御装置1は、ページの再割り当てに伴うリンク要素の移し替えの回数を低減し、ストレージ装置2に対するアクセスを高速化することもできる。
以下の説明では、より具体的なストレージ装置を例示して、ストレージ制御装置1の機能を更に詳細に説明する。
[第2の実施の形態]
図2は、第2の実施の形態のストレージ装置のハードウェア例を示す図である。ストレージ装置100は、コントローラモジュール(CM:Controller Module)110,110aおよびドライブ収納部120を有する。
CM110,110aは、ドライブ収納部120に収納された複数のHDDに対するアクセスを制御するストレージ制御装置である。例えば、ドライブ収納部120は、HDD121,122,123,・・・を有する。ドライブ収納部120は、HDDに代えて、または、HDDに加えて、SSDなどの他の種類の記憶デバイスを収納してもよい。CM110は、ドライブ収納部120に収納された複数のHDDを組合せて、RAID(Redundant Arrays of Inexpensive Disks)の技術により、論理的な記憶領域を構築し、サーバ200の処理に用いられるデータを当該記憶領域に格納する。CM110,110aは、第1の実施の形態のストレージ制御装置1の一例である。
ここで、ストレージ装置100におけるリソースの一単位にRAID論理ユニット(RLU:RAID group Logical Unit)が挙げられる。RLUは、RAIDグループに相当する論理的な記憶領域である。例えば、CM110,110aは、RLUを更に分割した論理的な記憶領域(論理ユニット(LU)と称する)を作成し、サーバ200に提供することができる。LUは、LUN(Logical Unit Number)と呼ばれる識別番号により識別される。LUもストレージ装置100におけるリソースの一単位である。
CM110は、プロセッサ111、RAM112、フラッシュメモリ113、DI(Drive Interface)114、CA(Channel Adapter)115、NA(Network Adapter)116、媒体リーダ117およびCM間通信IF(InterFace)118を有する。これらのハードウェアは、CM110内のバスに接続されている。CM110aもCM110と同様のハードウェアを有する。
プロセッサ111は、CM110の情報処理を制御するハードウェアである。プロセッサ111は、複数のコアを備えるマルチコアプロセッサである。複数のコアは、コア111a,111b,・・・を含む。
RAM112は、CM110の主記憶装置である。RAM112は、揮発性の半導体メモリである。RAM112として、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などが用いられる。RAM112は、プロセッサ111により実行されるOSやファームウェアのプログラムの少なくとも一部を一時的に記憶する。また、RAM112は、プロセッサ111による処理に用いられる各種データを記憶する。
ここで、コア111a,111b,・・・は、RAM112を共有して処理を実行する。複数のコアで物理メモリ(例えば、RAM112)を共有して処理を実行する手法は、SMPと呼ばれる。
フラッシュメモリ113は、CM110の補助記憶装置である。フラッシュメモリ113は、不揮発性の半導体メモリであり、OSやファームウェアを含むプログラムや各種データなどを記憶する。
DI114は、ドライブ収納部120と通信するためのインタフェースである。例えば、DI114として、SAS(Serial Attached SCSI)(SCSIは、Small Computer System Interfaceの略)などのインタフェースを用いることができる。
CA115は、SAN(Storage Area Network)10に接続される通信インタフェースである。CA115は、SAN10を介して、SAN10に接続されているサーバ200と通信する。CA115として、例えばFC(Fibre Channel)のインタフェースを用いることができる。
NA116は、LAN(Local Area Network)20を介して他のコンピュータと通信する通信インタフェースである。NA116として、例えばイーサネット(登録商標)のインタフェースを用いることができる。
媒体リーダ117は、記録媒体30に記憶されたプログラムやデータを読み取る装置である。記録媒体30として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することができる。媒体リーダ117は、例えば、プロセッサ111からの命令に従って、記録媒体30から読み取ったプログラムやデータを、RAM112やフラッシュメモリ113に格納する。
CM間通信IF118は、CM110aと接続するためのインタフェースである。CM110は、CM間通信IF118を用いて、CM110aと連携してデータアクセスを行える。例えば、CM110を運用系、CM110aを待機系としてもよい。あるいは、CM110,110aの両方を運用系として、データアクセスを分散して行ってもよい。何れの場合も、一方の故障時に他方でデータアクセスを引き継ぐことができ、ユーザの業務が停止されることを防げる。なお、以下の説明では、CM110に関して主に説明するが、CM110aも、CM110と同様の機能を有する。
なお、第1の実施の形態では、ストレージ制御装置1がストレージ装置2に外付けされる例を示したが、図2で例示されるように、CM110(ストレージ制御装置1の一例)がストレージ装置100に内蔵されてもよい。
図3は、CMの機能例を示す図である。CM110は、記憶部130、資源割当部140、アクセス処理部150,160および監視部170を有する。記憶部130は、RAM112の記憶領域を用いて実現される。資源割当部140、アクセス処理部150,160および監視部170は、プロセッサ111により実現される。例えば、プロセッサ111は、RAM112に記憶されたプログラムを実行することで、資源割当部140、アクセス処理部150,160および監視部170の機能を発揮する。ここで、プロセッサ111は、コア111a,コア111b,・・・により、アクセス処理部150,160の機能を並列に実現することができる。
記憶部130は、ストレージ装置100に格納されたデータアクセスに用いられるキャッシュメモリを提供する。ここで、以下の説明では、キャッシュメモリを“キャッシュ”と略記する。キャッシュを形成するメモリ領域の一単位はページと呼ばれる。1ページ当たりのサイズは、例えば、65KB(Kilo Bytes)である。記憶部130は、CBE(Cache Bundle Element)と呼ばれるページ管理用のテーブルを、ページ毎に記憶する。CBEは、第1の実施の形態におけるリンク要素の一例である。空きページに対応するCBEは、CBEに含まれるポインタによって連結される。空きページに対応するCBEによるリスト構造のデータ(連結リスト)を、フリーリンクと称する。フリーリンクは、フリーリストなどと呼ばれてもよい。
また、使用済ページに対応するCBEは、フリーリンクとは別個のリンクを形成する。使用済ページを管理するためのCBEのリンクは、LRUのアルゴリズムによるページ獲得の制御に用いられる。このため、使用済ページを管理するためのCBEのリンクを、LRUリンクと呼ぶ。LRUリンクもリスト構造のデータ(連結リスト)である。LRUリンクは、LRUリストと呼ばれてもよい。記憶部130は、ストレージ装置100における記憶リソースの1つのグループに対して1つのLRUリンクを記憶する。第2の実施の形態の例では、ストレージ装置100における記憶リソースは、2つのグループに分けられる。このため、記憶部130は、2つのLRUリンクを記憶する。
資源割当部140は、LRUリンク(あるいは、LRUリンクの操作のための排他資源)に、各LUを割り当てる。例えば、資源割当部140は、RLUやLUなどの所定の単位のリソースの集合を、1つのLRUリンクに割り当てる。例えば、資源割当部140は、複数のLRUリンクそれぞれに対して、均等な数のリソースを割り当てる。ただし、資源割当部140は、複数のLRUリンクそれぞれに対して、均等な容量のリソースを割り当ててもよい。1つのLRUリンクに割り当てられたリソースの集合は、第1の実施の形態のストレージ資源の一例である。
アクセス処理部150は、ストレージ装置100に格納されたデータに対するアクセス要求(I/O要求と称してもよい)をサーバ200から受信し、記憶部130に設けられたキャッシュを用いて、アクセス要求を処理する。
具体的には、アクセス処理部150は、データの読み出しのアクセス要求を受け付けると、アクセス先のLUから該当のデータを読み出し、キャッシュに格納し、当該データをサーバ200に応答する。以後、同じデータに対する読み出しのアクセス要求を受け付けると、アクセス処理部150は、キャッシュから該当のデータを読み出して、サーバ200に応答する。
また、アクセス処理部150は、データの書き込みのアクセス要求および書き込み対象のデータをサーバ200から受け付けると、書き込み対象のデータをキャッシュに格納し、書き込みの完了をサーバ200に応答する。アクセス処理部150は、処理の空き時間の発生時や周期的なタイミングで、キャッシュに格納されたデータ(あるいは、データが格納されたページ)を、LRUのアルゴリズムに基づいて、キャッシュからLUに書き戻す。このような書き込み制御は、ライトバックと呼ばれる。ただし、以下の説明では、キャッシュからLUへの書き戻しの処理を指して「ライトバック」と呼ぶことがある。ライトバック対象となるデータは、キャッシュ上で更新されたデータあるいはサーバ200から受け付けた新規の書き込みデータである。また、LRUのアルゴリズムにより、最近アクセスされていないページに格納されたデータが書き戻し対象として優先的に選択される。
アクセス処理部150は、新たなデータを格納するためのページ(またはCBE)を獲得する際、ページの獲得を実行する。
アクセス処理部150は、I/Oの実行に応じて、LRUリンクを操作する。例えば、空きページが枯渇し、キャッシュの容量が不足すると、アクセス処理部150は、該当のLRUリンクのページを、LRUのアルゴリズムに基づいて解放する。すなわち、アクセス処理部150は、解放対象とするページを、最近アクセスされていないページから優先的に選択する。そして、アクセス処理部150は、解放したページを再利用する。なお、アクセス処理部150は、書き戻し未実行のデータが格納されているページを再利用の対象外とする。アクセス処理部150は、あるLRUリンクにおいて、フリーリンクから空きページを獲得できないとき、所定の条件に基づき、別のLRUリンクから当該LRUリンクへCBEを移し替えることもある。
アクセス処理部160は、アクセス処理部150と同様の処理を行う。アクセス処理部150,160は、アクセス要求に対する処理を並列に行える。アクセス処理部160は、アクセス処理部160によるI/Oの実行に応じて、アクセス処理部150と同様に、LRUリンクを操作する。アクセス処理部150,160は、それぞれ別個の排他資源を獲得することで、それぞれが獲得した排他資源に対応するLRUリンクを並列に操作可能である。
監視部170は、各ストレージ資源に対するアクセス数(I/O数)を監視し、監視に応じて、アクセス処理部150,160によるI/O処理とは非同期に(例えば、周期的に)、各ストレージ資源に対して割り当てられたCBEの数を調整する。例えば、監視部170は、CBEの数が少ない(すなわち、獲得ページ数が少ない)方のストレージ資源へのアクセス数が、CBEの数が多い(すなわち、獲得ページ数が多い)方のストレージ資源のアクセス数よりも多いことを検出する。すると、監視部170は、CBEの数が多い方のストレージ資源のCBEを、CBEの数が少ない方のストレージ資源のLRUリンクに移す。
次に、2つのLRUに対して設けられる排他資源の例を説明する。
図4は、排他資源の分割例を示す図である。フリーリンク50は、空きページの管理に用いられる。フリーリンク50には、共通排他資源が対応付けられている。フリーリンク50は、キャッシュの全ページに対して1つ設けられる。共通排他資源は、フリーリンク50に対する1つの排他資源である。このため、フリーリンク50に対する操作(例えば、フリーリンク50からのCBEの獲得)は、アクセス処理部150,160のうち、共通排他資源を獲得した方によって排他的に行われる。
LRUリンク60は、ストレージ資源80に対して割り当てられたLRUリンクである。LRUリンク60には、排他資源#0が対応付けられている。LRUリンク70は、ストレージ資源90に対して割り当てられたLRUリンクである。LRUリンク70には、排他資源#1が対応付けられている。LRUリンク60,70には、それぞれ別個に排他資源が設けられている。このため、アクセス処理部150,160は、LRUリンク60,70に対する操作を並列に行える。
例えば、アクセス処理部150が排他資源#0を獲得してLRUリンク60の操作を行っている間、アクセス処理部160は、排他資源#1を獲得し、LRUリンク70の操作を行える。あるいは、アクセス処理部160が排他資源#0を獲得してLRUリンク60を用いた処理を行っている間、アクセス処理部150は、排他資源#1を獲得し、LRUリンク70の操作を行える。
ここで、例えば、ストレージ装置100はRLU#0,#1,#2,#3を含む。また、RLU#0は、LU#0,#1を含む。RLU#1は、LU#2,#3を含む。RLU#2は、LU#4,#5を含む。RLU#3は、LU#6,#7を含む。そして、ストレージ資源80は、RLU#0,#2を含む。ストレージ資源90は、RLU#1,#3を含む。すなわち、ストレージ資源80に属するRLUの数は2であり、LUの数は4である。ストレージ資源90に属するRLUの数は2であり、LUの数は4である。すなわち、LRUリンク60,70には、均等に、RLUまたはLUが割り当てられている。
図5は、記憶部の記憶領域の例を示す図である。記憶部130は、管理領域131、テーブル領域132およびキャッシュ133を含む。例えば、管理領域131、テーブル領域132およびキャッシュ133の順に、記憶部130内の位置を示すアドレスが大きくなる。
管理領域131は、共通排他資源および排他資源#0,#1を記憶する記憶領域である。前述のように、共通排他資源は、フリーリンク50に対応する排他資源(セマフォ)である。排他資源#0は、LRUリンク60に対応する排他資源(セマフォ)である。排他資源#1は、LRUリンク70に対する排他資源(セマフォ)である。共通排他資源および排他資源#0,#1は、当該排他資源がアクセス処理部150,160によって獲得済か、あるいは、アクセス処理部150,160の何れにも獲得されていないか(未獲得)を示す排他制御用のフラグ(排他フラグと称する)である。例えば、共通排他資源および排他資源#0,#1に相当する排他フラグ=“1”であれば獲得済、排他フラグ=“0”であれば未獲得を示す。
テーブル領域132は、複数のCBEを記憶する記憶領域である。1つのCBEは、キャッシュ133における1つのページに対応付けられる。
キャッシュ133は、複数のページが属する記憶領域である。前述のように、例えば、1つのページのサイズは65KBである。
図6は、CBEの例を示す図である。CBE40は、例えば、複数のフィールドをもつ構造体として表される。CBE40は、CBE ID(IDentifier)、Link Type、Prev CBE ID、Next CBE ID、Cache Page Address、LUN、LBA(Logical Block Address)およびDirty Flagのフィールドを含む。
CBE IDのフィールドには、CBEの識別情報が設定される。Link Typeのフィールドには、該当のCBEの所属先のリンクがフリーリンクかLRUリンクかを示す情報が設定される。Prev CBE IDのフィールドには、前のCBEへのポインタが設定される。Next CBE IDのフィールドには、次のCBEへのポインタが設定される。Cache Page Addressのフィールドには、キャッシュ133におけるページのアドレス(当該CBEに対応するページのアドレス)が設定される。LUNのフィールドには、該当のページに格納されたデータの格納先のLUに対応するLUNが設定される。LBAのフィールドには、該当のLUにおける格納先のLBA(論理ブロックアドレス)が設定される。Dirty Flagのフィールドには、ダーティフラグが設定される。例えば、該当のページに格納されたデータのライトバックを未実行であれば、Dirty Flag=“True”である。また、該当のページに格納されたデータのライトバックを実行済、または、当該データがライトバック対象でなければ、Dirty Flag=“False”である。
例えば、ページが空きの場合、当該ページに対応するCBEのLink Typeはフリーリンクを示し、LUNやLBAは設定なし、Dirty Flagは“False”である。
また、例えば、ページが使用済の場合、当該ページに対応するCBEのLink TypeはLRUリンクを示す。また、LUNやLBAは当該ページのデータの格納場所(書き戻し先や読み出し元)を示す。そして、Dirty Flagはライトバックの実行済/未実行に応じた値となる。
図7は、LRUリンクの例を示す図である。LRUリンク60は、例えば、CBE61,62,63を有する。ここで、図7では、図6で例示した複数のフィールドのうちの一部のフィールドの図示が省略されている。
CBE61は、LRUリンク60のうちの最もLRU側にあるリンク要素である。CBE61は、LRUポインタ91によって示される。例えば、CBE61のCBE IDは“1”である。CBE61のPrev CBE IDは“0xff”である。Prev CBE ID=“0xff”は、前のCBEが存在しないことを示す。CBE61のNext CBE IDは“2”である。
CBE62は、CBE61のNext CBE IDによって示されるリンク要素である。CBE62のCBE IDは“2”である。CBE62のPrev CBE IDは“1”である。CBE62のNext CBE IDは“3”である。
CBE63は、CBE62のNext CBE IDによって示されるリンク要素である。また、CBE63は、LRUリンク60のうちの最もMRU側にあるリンク要素である。CBE63は、MRUポインタ92によって示される。例えば、CBE63のCBE IDは“3”である。CBE6のPrev CBE IDは“2”である。CBE63のNext CBE IDは“0xff”である。Next CBE ID=“0xff”は、次のCBEが存在しないことを示す。
LRUリンク60にCBEが追加される場合、MRU側に新たなCBEが追加されることになる。
また、LRUリンク70に関しても同様にしてポインタによりCBEが連結される。LRUリンク70に対するLRUポインタおよびMRUポインタも、LRUポインタ91およびMRUポインタ92とは別個に設けられている。
また、LRUポインタ91やMRUポインタ92は、例えば、テーブル領域132内の排他資源#0に対応する所定の記憶領域に格納される。あるいは、LRUポインタ91やMRUポインタ92は、管理領域131内に、排他資源#0と共に(例えば、排他資源#0に連続する記憶領域に)格納されてもよい。LRUリンク70のLRUポインタやMRUポインタも同様である。
図8は、フリーリンクの例を示す図である。フリーリンク50は、例えば、CBE51,52,53を有する。ここで、図8では、図6で例示した複数のフィールドのうちの一部のフィールドの図示が省略されている。
CBE51は、フリーリンク50のうちの先頭のリンク要素である。CBE51は、フリーリンクポインタ93によって示される。フリーリンクポインタ93は、フリーリンク50の先頭のCBEを示すポインタである。例えば、CBE51のCBE IDは“4”である。CBE51のPrev CBE IDは“0xff”である。CBE51のNext CBE IDは“5”である。
CBE52は、CBE51のNext CBE IDによって示されるリンク要素である。CBE52のCBE IDは“5”である。CBE52のPrev CBE IDは“0xff”である。CBE52のNext CBE IDは“6”である。
CBE53は、CBE52のNext CBE IDによって示されるリンク要素である。CBE53のCBE IDは“6”である。CBE53のPrev CBE IDは“0xff”である。CBE53のNext CBE IDは“0xff”である。
なお、上記のように、フリーリンク50の各CBEのPrev CBE IDは“0xff”でもよい。ただし、具体的な値(例えば、CBE52ではPrev CBE ID=“4”、CBE53ではPrev CBE ID=“5”など)が設定されてもよい。
また、フリーリンクポインタ93は、例えば、テーブル領域132内の共通排他資源に対応する所定の記憶領域に格納される。あるいは、フリーリンクポインタ93は、管理領域131内に、共通排他資源と共に(例えば、共通排他資源に連続する記憶領域に)格納されてもよい。
次に、CM110による処理の手順を説明する。まず、新規LUを作成した際に、LRUリンク60,70に新規LUを割り当てる処理を説明する。
図9は、新規LU割り当て処理の例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
(S11)資源割当部140は、各資源に対応するLU数を参照する。ここで、「各資源」とは、排他資源#0,#1または排他資源#0,#1に対応するLRUリンク60,70を示す。
(S12)資源割当部140は、LU数が最小の資源に新規LUを割り当てる。例えば、対応するLU数が最小のLRUリンクがLRUリンク60の場合、資源割当部140は、LRUリンク60に、新規LUを割り当てる。資源割当部140は、LUと排他資源との対応関係を示す情報を記憶部130に格納する。これにより、アクセス処理部150,160は、アクセス要求に含まれるLUと記憶部130に記憶された当該情報を確認することで、獲得する排他資源や当該排他資源に対応するLRUリンクを識別可能になる。
次に、アクセス処理部150による処理手順を説明する。アクセス処理部150の手順を主に例示するが、アクセス処理部160もアクセス処理部150と同様の手順を実行する。
図10は、I/O時CBE獲得処理の例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。アクセス処理部150は、新たなI/Oを実行し、新たにCBEを獲得する際に、下記の手順を実行する。以下では、一例として、I/O対象のストレージ資源をストレージ資源80とする。ただし、I/O対象がストレージ資源90の場合も同様の手順となる。
(S21)アクセス処理部150は、フリーリンク50にCBEがあるか否かを判定する。フリーリンク50にCBEがある場合、アクセス処理部150は、ステップS22に処理を進める。フリーリンク50にCBEがない場合、アクセス処理部150は、ステップS23に処理を進める。
(S22)アクセス処理部150は、フリーリンク50からCBEを獲得する。具体的には、アクセス処理部150は、共通排他資源を獲得済に設定し、フリーリンク50から(例えば、フリーリンク50の先頭から)CBEを取得し(当該CBEはフリーリンク50から外れる)、共通排他資源を未獲得に設定する。アクセス処理部150は、排他資源#0を獲得済に設定し、取得したCBEをLRUリンク60のMRU側に連結する。アクセス処理部150は、排他資源#0を未獲得に設定する。そして、アクセス処理部150は、I/O時CBE獲得処理を終了する。
(S23)アクセス処理部150は、自資源のCBE数が閾値aよりも大きいか否か(自資源のCBE数>閾値a)を判定する。自資源のCBE数が閾値aよりも大きい場合、アクセス処理部150は、ステップS24に処理を進める。自資源のCBE数が閾値a以下の場合、アクセス処理部150は、ステップS26に処理を進める。ここで、「自資源」とは、アクセス処理部150が現在参照しているLRUリンク60を示す。「自資源のCBE数」とは、アクセス処理部150が現在参照しているLRUリンク60に属するCBEの数である。
ここで、閾値aは、アクセス頻度の比較的大きなストレージ資源のLRUリンクに連結するCBEの数のおおよその目標値であり、LRUリンクの数やデータへのアクセス状況などに応じて予め定められる。例えば、LRUリンクが2つの場合、全CBE数(全ページ数)をPとして、a≧P/2とすることが考えられる。
(S24)アクセス処理部150は、自資源に削除可能なCBEがあるか否かを判定する。自資源に削除可能なCBEがある場合、アクセス処理部150は、ステップS25に処理を進める。自資源に削除可能なCBEがない場合、アクセス処理部150は、ステップS26に処理を進める。「削除可能なCBEがある場合」とは、該当のLRUリンク(LRUリンク60)において、Dirty Flagが“False”のCBEをLRU側から優先的に取得して、今回のデータサイズ分のCBEを確保できる場合を示す。「削除可能なCBEがない場合」とは、該当のLRUリンク(LRUリンク60)において、Dirty Flagが“False”のCBEをLRU側から優先的に取得して、今回のデータサイズ分のCBEを確保できない場合を示す。
(S25)アクセス処理部150は、自資源のCBEを削除し、CBEを獲得する。具体的には、アクセス処理部150は、排他資源#0を獲得済に設定し、LRUリンク60から削除可能なCBEを削除し(当該CBEに対応するページを解放し)、削除したCBEを当該LRUリンク60のMRU側に連結する。アクセス処理部150は、排他資源#0を未獲得に設定する。そして、アクセス処理部150は、I/O時CBE獲得処理を終了する。
(S26)アクセス処理部150は、別資源からのCBE獲得処理を実行する。処理の詳細は後述される。別資源からのCBE獲得処理は、別資源から自資源へのCBEの移し替えということもできる。そして、アクセス処理部150は、I/O時CBE獲得処理を終了する。
なお、アクセス処理部150は、ストレージ資源80に対して上記手順により新たなページを獲得すると、当該ページに対して今回のI/Oに関するデータを格納する。
図11は、別資源からのCBE獲得処理の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
(S31)アクセス処理部150は、相手資源から獲得するCBE数を決定する。ここで、「相手資源」とは、アクセス処理部150が現在獲得している排他資源以外の排他資源に対応するLRUリンクである。例えば、アクセス処理部150は、予め定められた数のCBEを獲得すると決定してもよい。また、アクセス処理部150は、ステップS24で不足分のCBE数を算出し、当該不足分のCBE数(あるいは、当該不足分のCBE数に比例するCBE数)を、獲得するCBE数としてもよい。
更に、後述するように、記憶部130は、前回、他のLRUリンクからCBEを移し替えたLRUリンクを示す情報を記憶部130に記録している。そこで、アクセス処理部150は、当該情報に基づき、前回の移し替え先のLRUリンクが、今回も連続して移し替え先となっている場合に、移し替え元のLRUリンクから一度に獲得するCBE数を増やしてもよい。具体的には、1回目の移し替えでは獲得するCBE数を5とし、2回目の移し替えでも移し替え先が同じであれば、獲得するCBE数を10(例えば、1回目の2倍)とするなどの方法が考えられる。また、移し替え先として選ばれた連続回数に応じて、一度に獲得するCBE数の増分を増やしてもよい(例えば、先の例に続き、3回目の移し替えでも移し替え先が同じであれば、獲得するCBE数を20(1回目の4倍)とするなど)。
(S32)アクセス処理部150は、相手資源からCBEを獲得する。例えば、LRUリンク70からLRUリンク60へCBEを移し替える場合、アクセス処理部150は、排他資源#1を獲得し、LRUリンク70のうち、ステップS31で決定した数のCBEをLRU側から優先的に獲得する。そして、アクセス処理部150は、排他資源#1を未獲得に設定する。このとき、アクセス処理部150は、Dirty Flag=“True”(ライトバック未実行)のCBEを獲得の対象外とする。アクセス処理部150は、排他資源#0を獲得し、獲得したCBEを、LRUリンク60のMRU側に連結する。そして、アクセス処理部150は、排他資源#0を未獲得に設定する。
(S33)アクセス処理部150は、ステップS32において、ステップS31で決定したCBE数のCBEを獲得できたか否かを判定する。獲得できた場合、アクセス処理部150は、ステップS36に処理を進める。獲得できなかった場合、アクセス処理部150は、ステップS34に処理を進める。
(S34)アクセス処理部150は、変数A(グローバル変数とする)にFlagをセットする。ここで、変数Aに相当するFlagをFlagAと称する。変数AにFlagをセットするとは、FlagA=“True”を設定することを示す。FlagA=“True”は、CBE獲得待ちのLRUリンクが存在することを示す。また、FlagA=“False”は、CBE獲得待ちのLRUリンクが存在しないことを示す。
(S35)アクセス処理部150は、ステップS32におけるCBEの獲得数が0であるか否かを判定する。CBEの獲得数が0の場合、アクセス処理部150は、ステップS37に処理を進める。CBEの獲得数が0でない場合、アクセス処理部150は、ステップS36に処理を進める。
(S36)アクセス処理部150は、今回移し替え先となった資源(LRUリンク)を示す情報を記憶部130に記録する。このとき、アクセス処理部150は、連続して移し替え先となった回数も一緒に、記憶部130に記録してもよい。ステップS36で記録された情報は、次に、アクセス処理部150またはアクセス処理部160がステップS31を実行する際に用いられる。そして、アクセス処理部150は、別資源からのCBE獲得処理を終了する。
(S37)アクセス処理部150は、CBE獲得待ちの状態に遷移する。アクセス処理部150は、他のI/O(例えば、アクセス処理部160によるライトバック)完了後に、I/O時CBE獲得処理を再起動する。そして、アクセス処理部150は、I/O時CBE獲得処理を再度実行し、別資源からのCBE獲得処理を終了する。
なお、アクセス処理部150は、ストレージ資源80に対して新たなページが獲得されると、当該ページに対して今回のI/Oに関するデータを格納する。
こうして、CM110は、I/Oにおいて、LRUリンク60にCBEを追加する際、キャッシュ133に空きページがない場合、LRUリンク70に含まれるCBEをLRUリンク60へ移し替える(I/O延長でのCBEの移し替え)。
特に、上記のように、アクセス処理部150は、CBEの移し替えの際に、前回の移し替え先のリンクと今回の移し替え先のリンクとが同じ場合、今回移し替えるCBEの数を、前回移し替えたCBEの数よりも増やす。これにより、現在アクセス頻度が高いと推定されるストレージ資源に対して、多くのキャッシュ容量を予め割り当てることが可能である。その結果、該当のストレージ資源に対する今後のアクセスに対するCBEの移し替えの頻度を低減でき、CBEの移し替えに伴うオーバーヘッドを減らせる。その結果、CM110によるデータアクセスを高速化できる。
また、CM110は、I/Oとは非同期にCBEの移し替えを行う。
図12は、I/O非同期のCBE移し替え処理の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
(S41)監視部170は、各資源のCBE数を比較し、移し替え元/移し替え先の資源を決定する。ここで、「各資源のCBE数」は、各LRUリンクのCBE数(例えば、LRUリンク60のCBE数およびLRUリンク70のCBE数)を示す。例えば、監視部170は、CBE数が多い方(あるいは最大)のLRUリンクを移し替え元とし、CBE数が少ない方(あるいは最小)のLRUリンクを移し替え先と決定する。なお、監視部170は、ステップS41の処理を行うために、所定時間前から現時点までの期間において、排他資源毎に(ストレージ資源毎に)、I/Oが発行された回数をカウントし、記憶部130に記録しておく。ここで、「所定時間前」の時刻は、例えば、I/O非同期のCBE移し替え処理を前回行った時刻である。
(S42)監視部170は、各資源のI/Oの有無から移し替えるCBE数を決定する。ここで、「各資源のI/Oの有無」とは、各LRUリンクに対応するストレージ資源に対するI/Oの有無(例えば、ストレージ資源80に対するI/Oの有無およびストレージ資源90に対するI/Oの有無)を示す。ここで、移し替え先のLRUリンクに対応するストレージ資源を、「移し替え先のストレージ資源」と呼び、移し替え元のLRUリンクに対応するストレージ資源を、「移し替え元のストレージ資源」と呼ぶこととする。
ステップS42でのCBE数の決定方法には種々の方法が考えられる。例えば、監視部170は、移し替え先のストレージ資源への所定時間前から現時点までの期間におけるI/Oがあり、かつ、移し替え元のストレージ資源への同期間におけるI/Oがない場合、所定数xを移し替えるCBE数と決定する。あるいは、監視部170は、移し替え先のストレージ資源への所定時間前から現時点までの期間における第1のI/O数pが、移し替え元のストレージ資源への同期間における第2のI/O数qよりも多い場合に、所定数xを移し替えるCBE数と決定する。ここで、I/O数は、アクセス数と呼ばれてもよい。また、I/O数(アクセス数)は、各ストレージ資源に対する負荷を示す指標といえる。
所定数xは、例えば、予め定められた値(例えば、キャッシュ133のサイズ65MB(Mega Bytes)であり、総ページ数が65MB/65KB=1000の場合に、x=10程度)とすることが考えられる。あるいは、監視部170は、第1のI/O数pと第2のI/O数qとの差d(=p-q)に応じてxの値を決定してもよい。より具体的には、監視部170は、差dが大きいほど、xの値を大きくする(一例では、x=α*d(αは比例定数)とする)ことが考えられる。
(S43)監視部170は、ステップS42で決定した数のCBEの移し替えを実行する。具体的には、監視部170は、移し替え元の排他資源を獲得して当該排他資源に対応するLRUリンクのLRU側からCBEを解放し(ただし、Dirty Flag=“True”のCBEを解放対象から除く)、排他資源を未獲得に戻す。そして、監視部170は、移し替え先の排他資源を獲得して当該排他資源に対応するLRUリンクにCBEを連結する。また、移し替え先の排他資源を未獲得に戻す。このとき、監視部170は、例えば、移し替え先のLRUリンクのLRU側にCBEを連結することで、当該CBE(または、当該CBEに対応するページ)の解放および再利用のタイミングを早めることができる。
このように、監視部170は、所定のタイミング(例えば、周期的なタイミング)で、ストレージ資源80に対する負荷と、ストレージ資源90に対する負荷とを比較する。監視部170は、負荷が小さい方のストレージ資源に対応するLRUリンクから負荷が大きい方のストレージ資源に対応するLRUリンクにCBEを移し替える。特に、監視部170は、負荷の差に応じて、移し替えるCBEの数を決定する。例えば、負荷としてアクセス数を用いることで、アクセス頻度の高いストレージ資源に対して、より多くのキャッシュ容量を割ける。これにより、各ストレージ資源に対するアクセス状況に応じて動的にキャッシュ容量を割り当てることができ、CM110によるデータアクセスを高速化できる。
図13は、ライトバック時のCBE解放処理の例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。以下では、LRUリンク60で管理されるページ群からストレージ資源80へのライトバックが行われる場合を例示する。ただし、LRUリンク70で管理されるページ群からストレージ資源90へのライトバックが行われる場合も同様である。例えば、アクセス処理部150は、以下の手順を周期的に実行する。
(S51)アクセス処理部150は、排他資源#0を獲得し、LRUリンク60に連結されたCBEをLRU側からMRU側へ順に参照して、Dirty Flag=“True”のページをライトバック対象のCBEと決定する。例えば、アクセス処理部150は、参照順に、所定数のCBEをライトバック対象とする。
(S52)アクセス処理部150は、ライトバック対象のCBEに対応するページに格納されたデータをキャッシュ133から読み出し、ディスク(HDD121,122,123,・・・)に書き込む(ライトバック実行)。このとき、アクセス処理部150は、書き込み先のLUやLBAを、該当のCBEのLUやLBAのフィールドから取得する。
(S53)アクセス処理部150は、ライトバックによるディスクへの書き込みを完了する。アクセス処理部150は、ライトバックが完了したCBEのDirty Flagを、“False”に設定する。
(S54)アクセス処理部150は、記憶部130に記憶された変数Aを参照し、Flagがセットされているか否かを判定する。前述のように「Flagがセットされている」ことは、FlagA=“True”であることを示す。FlagA=“True”は、CBE獲得待ちのLRUリンクがあることを示す。変数AにFlagがセットされている場合(FlagA=“True”の場合)、アクセス処理部150は、ステップS56に処理を進める。変数AにFlagがセットされていない場合(FlagA=“False”の場合)、アクセス処理部150は、ステップS55に処理を進める。
(S55)アクセス処理部150は、ライトバック対象のCBEをREAD属性に変更する。アクセス処理部150は、READ属性とすることで、該当のCBEに対応するページを読み出しのアクセス要求に対する応答に利用可能にする。アクセス処理部150は、排他資源#0を未獲得に設定する。そして、アクセス処理部150はライトバック時のCBE解放処理を終了する。
(S56)アクセス処理部150は、共通排他資源を獲得する。アクセス処理部150は、LRUリンク60におけるライトバック対象のCBEを解放し、フリーリンク50に接続する。アクセス処理部150は、共通排他資源および排他資源#0を未獲得に設定する。また、アクセス処理部150は、変数AのFlagを解除(FlagA=“False”に設定)する。そして、アクセス処理部150はライトバック時のCBE解放処理を終了する。
このように、アクセス処理部150は、あるLRUリンクで示されるページ群の一部のCBEに対応するページに格納されたデータを、あるストレージ資源に書き戻した後、他のLRUリンクに対するページの獲得待ちが発生しているか否かを判定する。そして、アクセス処理部150は、獲得待ちが発生している場合、書き戻したデータを格納していたページを解放し、解放したページに対応するCBEを、フリーリンクに追加する。
こうして、アクセス処理部150は、CBEをフリーリンク50に接続することで、CBE獲得待ちの他プロセスにより、フリーリンク50からCBEを獲得可能にする。すなわち、CM110は、一方のLRUリストで示されるページ群に再利用可能なページが不足し、かつ、他のLRUリストで示されるページ群に移し替え可能なページが不足する場合、何れかのLRUリンクに属するCBEを、フリーリンク50に移す。その後、CM110は、フリーリンク50に移したCBEをCBE獲得待ちのLRUリンクに追加する。なお、アクセス処理部150は、CBE獲得待ちの他プロセスがある場合(図11のステップS37)、当該他プロセスにライトバックによるI/O完了を通知してもよい。
ところで、CM110は、単一のリンクおよび当該リンクに対応する単一の排他資源により、キャッシュ133における使用済のページを管理することも考えられる。しかし、例えば、SMPのように、キャッシュ133がコア111a,111b,・・・によって共有される場合、あるコアが排他資源を獲得してアクセス要求を処理している間は、他のコアで排他資源の獲得待ちが生じ、アクセス処理(I/O)の並列度が低下してしまう。
そこで、CM110では、HDD121,122,123,・・・により提供される論理領域を複数のストレージ資源に分け、各ストレージ資源に対してLRUリンクおよび排他資源を設ける。第2の実施の形態の例では、リンクの数(ストレージ資源の数)を2としたが、リンクの数は、コアの数に応じて決定可能である。コアの数をM個(Mは2以上の整数)とすると、LRUリンクの数N(Nは2以上の整数)は、2≦N≦Mである。そして、各コアは、それぞれのストレージ資源をN個のうちの何れか1つの排他資源に割り当て、割り当てた排他資源を獲得して、当該ストレージ資源に関するI/O処理を行う。
こうして、CM110によれば、各コアにおける排他資源の獲得待ちの時間を減少させることができる。その結果、ストレージ装置100におけるアクセス処理の並列度を向上させることができる。あるいは、CM110がストレージ装置100の外部に設けられる場合には、ストレージ装置100に対するアクセス処理の並列度を向上させることができる。排他資源の獲得待ちの時間の減少の度合いは、各排他資源(各LRUリンク)に割り当てられたLUの数が均等で、かつ、各LUに対するI/O負荷が同程度である場合に特に大きい。
また、フリーリンク50は、キャッシュ133に対して1つ設けられる。そして、CM110は、1つのフリーリンク50から、LRUリンク60およびLRUリンク70へのCBEの獲得を行う。なぜなら、LRUリンク60用のフリーリンク、および、LRUリンク70用のフリーリンクというように、複数のフリーリンクを設けると、その分、1つのストレージ資源へのアクセスに利用可能なキャッシュ容量の上限が制限されてしまうからである。例えば、N個のフリーリンクを設けるとすると、あるストレージ資源に対して使用できるキャッシュ容量の上限は、キャッシュ全体の容量の1/Nになってしまう。そこで、フリーリンク50を1つとすることで、CM110は、アクセス状況に応じたキャッシュ容量を(例えば、アクセスが多いほど多い容量を、アクセスが少ないほど少ない容量を)各ストレージ資源に割り振ることができる。アクセスがより多いストレージ資源に、より多くのキャッシュ容量を割くことで、ストレージ装置100におけるデータアクセス性能を向上できる。
ただし、当初の各ストレージ資源に対するアクセス状況が、その後も変わらずに継続するとは限らない。あるストレージ資源では、当初アクセス数が多かったが、その後のアクセス数が少なくなることもある。また、別のストレージ資源では、当初アクセス数が少なかったが、その後のアクセス数が多くなることもある。フリーリンク50から早いもの勝ちでCBEを獲得していくのみでは、当初アクセス数の多いストレージ資源に対して多くのキャッシュ容量が割かれてしまい、その後のアクセス状況の変化に応じたキャッシュ容量の割り振りを行えない。
そこで、CM110は、空きページがない状況で、例えば、ストレージ資源80に割り当てられたキャッシュ容量(CBE数)が不足し、かつ、当該キャッシュ容量が閾値以下(あるいは、LRUリンク60に属するリンク要素数が閾値a以下)の場合、ストレージ資源90に割り当て済のページを、ストレージ資源80に再割り当てする。
すなわち、CM110は、LRUリンク70からCBE(例えば、LRU側にあってライトバック未実行でないもの)を獲得し、LRUリンク60に追加する(CBEの移し替え)。なお、ストレージ資源80に割り当てられたキャッシュ容量が閾値より大きい(あるいは、LRUリンク60に属するCBE数が閾値aより大きい)場合、CM110は、LRUリンク60の中から、追い出し対象のページを特定し、当該ページを再利用する。例えば、CM110は、CBEの移し替えを行うか否かをI/Oに同期して、あるいは、I/Oに非同期で判定し、判定に応じてCBEの移し替えを行う。
CBEの移し替えでは、移し替え元のLRUリンクの排他資源の獲得、移し替え元のLRUリンクにおける移し替え対象ページの解放、移し替え元のLRUリンクの排他資源の解放、移し替え先のLRUリンクの排他資源の獲得、移し替え先のLRUリンクへの該当ページのCBE追加といった手順を伴う。このため、キャッシュ容量の不足のたびに毎回、CBEの移し替えの動作を行っていると、移し替え先のLRUリンクに対応するストレージ資源に対するアクセス負荷が高い場合に、当該ストレージ資源へのアクセスに時間がかかる可能性がある。そこで、CM110は、各ストレージ資源への負荷を考慮して、一度に移し替えるリンク要素の数を変更する。
例えば、CM110は、移し替え先のLRUリンクに対応するストレージ資源に対して連続してアクセスが発生している場合、連続したアクセス回数に応じて、一度に移し替えるリンク要素の数を増やす。より具体的には、CM110は、前回移し替え先となったLRUリンクに対応するストレージ資源に対して、今回も連続してアクセスが発生した場合に、当該LRUリンクに対して一度に移し替えるリンク要素の数を増加させる。
あるいは、CM110は、移し替え元のリンクに対応するストレージ資源に対する第1のアクセス数と、移し替え先のリンクに対応するストレージ資源に対する第2のアクセス数との比較に応じて、一度に移し替えるリンク要素の数を増やす。例えば、CM110は、第2のアクセス数が、第1のアクセス数よりも大きい場合に、第2のアクセス数と第1のアクセス数との差に応じて、一度に移し替えるCBEの数を増やす。より具体的には、CM110は、第2のアクセス数と第1のアクセス数との差が大きいほど、一度に移し替えるリンク要素の数を増加させる。
このようにして、CM110は、負荷が高まっていると推定されるストレージ資源のLRUリンクに対して一度に移し替えるCBEの数を増やすことで、キャッシュ容量不足の発生回数を低減する。その結果、ページの再割り当てに伴うCBEの移し替えの回数を低減し、CM110によるデータアクセスを高速化することができる。
なお、第1の実施の形態の情報処理は、処理部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ111にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体30に記録できる。
例えば、プログラムを記録した記録媒体30を配布することで、プログラムを流通させることができる。記録媒体30として、フレキシブルディスク(FD:Flexible Disk)、CD(Compact Disc)、DVD(Digital Versatile Disc)およびBlu-ray(登録商標)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)などを使用してもよい。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体30に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM112やフラッシュメモリ113などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
以上の第1,第2の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
(付記1) キャッシュメモリとして用いられる複数のページを有する記憶部と、
前記複数のページのうちの第1のページ群を示す第1のリンクに第1のストレージ資源を割り当て、前記複数のページのうちの第2のページ群を示す第2のリンクに第2のストレージ資源を割り当て、前記第1のリンクおよび前記第2のリンクを用いて、前記第1のストレージ資源および前記第2のストレージ資源に対するアクセス要求を分散して処理する処理部と、
を有するストレージ制御装置。
(付記2) 前記処理部は、ページに対応するリンク要素を前記第1のリンクに追加する際、前記キャッシュメモリに空きページがない場合に、前記第2のリンクに含まれる前記リンク要素を前記第1のリンクへ移し替える、付記1記載のストレージ制御装置。
(付記3) 前記処理部は、前記第1のリンクに含まれる前記リンク要素の数が閾値以下の場合に、前記第2のリンクに含まれる前記リンク要素を前記第1のリンクへ移し替え、前記第1のリンクに含まれる前記リンク要素の数が前記閾値よりも大きい場合に、前記第1のリンクに含まれる一部のリンク要素に対応するページを再利用する、付記2記載のストレージ制御装置。
(付記4) 前記処理部は、前記再利用の際、前記第1のページ群に属する再利用可能なページが不足する場合、前記第2のリンクに含まれる前記リンク要素を前記第1のリンクへ移し替える、付記3記載のストレージ制御装置。
(付記5) 前記処理部は、前記移し替えの際に、前回の移し替え先のリンクと今回の移し替え先のリンクとが同じ場合、今回移し替える前記リンク要素の数を、前回移し替えた前記リンク要素の数よりも増やす、付記2乃至4の何れか1つに記載のストレージ制御装置。
(付記6) 前記処理部は、前記空きページに対応する前記リンク要素を複数含む1つのフリーリンクを参照して、前記フリーリンクに属する前記リンク要素を前記第1のリンクに追加し、前記フリーリンクに属する他のリンク要素を前記第2のリンクに追加する、付記2乃至5の何れか1つ記載のストレージ制御装置。
(付記7) 前記処理部は、前記第1のストレージ資源へ書き込むデータまたは前記第1のストレージ資源から読み出したデータを前記キャッシュメモリに格納する際に、前記リンク要素を前記第1のリンクに追加する、付記2乃至6の何れか1つに記載のストレージ制御装置。
(付記8) 前記処理部は、前記第1のページ群に属する再利用可能なページが不足し、かつ、前記第2のページ群に移し替え可能なページが不足する場合、何れかのリンクに属する前記リンク要素を、空きページを示す前記リンク要素を含むフリーリンクに移した後に、前記フリーリンクの前記リンク要素を前記第1のリンクに追加する、付記4記載のストレージ制御装置。
(付記9) 前記処理部は、前記第2のページ群の一部のリンク要素に対応するページに格納されたデータを前記第2のストレージ資源に書き戻した後、前記第1のリンクに対するページの獲得待ちが発生しているか否かを判定し、前記獲得待ちが発生している場合、書き戻したデータを格納していたページを解放し、解放したページに対応する前記リンク要素を、空きページを示す前記リンク要素を含むフリーリンクに追加する、付記1記載のストレージ制御装置。
(付記10) 前記処理部は、前記第1のストレージ資源の第1の負荷と、前記第2のストレージ資源の第2の負荷とを比較し、負荷が小さい方のストレージ資源に対応するリンクから負荷が大きい方のストレージ資源に対応するリンクに、ページに対応するリンク要素を移し替える、付記1記載のストレージ制御装置。
(付記11) 前記処理部は、前記第1の負荷と前記第2の負荷との差に応じて、移し替える前記リンク要素の数を決定する、付記10記載のストレージ制御装置。
(付記12) 前記第1の負荷は、前記第1のストレージ資源に対するアクセス数であり、
前記第2の負荷は、前記第2のストレージ資源に対するアクセス数である、付記11記載のストレージ制御装置。
(付記13) 前記処理部は、所定の周期で、前記第1の負荷と前記第2の負荷とを比較し、比較に応じて前記リンク要素の移し替えを行う、付記10乃至12の何れか1つに記載のストレージ制御装置。
(付記14) 前記処理部は、前記第1のストレージ資源に属する論理ユニットの数と前記第2のストレージ資源に属する論理ユニットの数とを均等にする、付記1乃至13の何れか1つに記載のストレージ制御装置。
(付記15) 前記処理部は、前記キャッシュメモリを共有する複数のサブ処理部を有し、前記複数のサブ処理部により、前記第1のリンクに対する排他処理と、前記第2のリンクに対する排他処理とを並列に実行する、付記1乃至14の何れか1つに記載のストレージ制御装置。
(付記16) 前記第1のリンクおよび前記第2のリンクは、ページに対応するリンク要素をポインタによって連結したデータである、付記1記載のストレージ制御装置。
(付記17) 前記処理部は、LRUのアルゴリズムにより、移し替え対象の前記リンク要素を決定する、付記2乃至13の何れか1つに記載のストレージ制御装置。
(付記18) キャッシュメモリとして用いられる複数のページのうちの第1のページ群を示す第1のリンクに第1のストレージ資源を割り当て、前記複数のページのうちの第2のページ群を示す第2のリンクに第2のストレージ資源を割り当て、
前記第1のリンクおよび前記第2のリンクを用いて、前記第1のストレージ資源および前記第2のストレージ資源に対するアクセス要求を分散して処理する、
処理をコンピュータに実行させるプログラム。
1 ストレージ制御装置
1a 記憶部
1b 処理部
1b1,1b2 サブ処理部
2 ストレージ装置
2a 第1のストレージ資源
2b 第2のストレージ資源
3 情報処理装置
C1 キャッシュメモリ
P1,P2,P3 ページ
L1 第1のリンク
L2 第2のリンク
L1a,L1b,L1c,L1m,L2a,L2b,L2c,L2m リンク要素

Claims (7)

  1. キャッシュメモリとして用いられる複数のページを有する記憶部と、
    前記複数のページのうちの第1のページ群を示す第1のリンクに第1のストレージ資源を割り当て、前記複数のページのうちの第2のページ群を示す第2のリンクに第2のストレージ資源を割り当て、前記第1のリンクおよび前記第2のリンクを用いて、前記第1のストレージ資源および前記第2のストレージ資源に対するアクセス要求を分散して処理する処理部と、を有し、
    前記処理部は、ページに対応するリンク要素を前記第1のリンクおよび前記第2のリンクのうちの一方のリンクに追加する際、前記キャッシュメモリに空きページがない場合に、前記第1のリンクおよび前記第2のリンクのうちの他方のリンクに含まれる前記リンク要素を前記一方のリンクへ移し替え、前記移し替えの際に、前回の移し替え先のリンクと今回の移し替え先のリンクとが同じ場合、今回移し替える前記リンク要素の数を、前回移し替えた前記リンク要素の数よりも増やす、
    トレージ制御装置。
  2. 前記処理部は、前記一方のリンクに含まれる前記リンク要素の数が閾値以下の場合に、前記他方のリンクに含まれる前記リンク要素を前記一方のリンクへ移し替え、前記一方のリンクに含まれる前記リンク要素の数が前記閾値よりも大きい場合に、前記一方のリンクに含まれる一部のリンク要素に対応するページを再利用する、請求項記載のストレージ制御装置。
  3. 前記処理部は、前記再利用の際、前記第1のページ群に属する再利用可能なページが不足する場合、前記他方のリンクに含まれる前記リンク要素を前記一方のリンクへ移し替える、請求項記載のストレージ制御装置。
  4. 前記処理部は、前記空きページに対応する前記リンク要素を複数含む1つのフリーリンクを参照して、前記フリーリンクに属する前記リンク要素を前記第1のリンクに追加し、前記フリーリンクに属する他のリンク要素を前記第2のリンクに追加する、請求項乃至の何れか1項に記載のストレージ制御装置。
  5. 前記処理部は、前記第1のストレージ資源へ書き込むデータまたは前記第1のストレージ資源から読み出したデータを前記キャッシュメモリに格納する際に、前記リンク要素を前記第1のリンクに追加する、請求項乃至の何れか1項に記載のストレージ制御装置。
  6. 前記処理部は、所定のタイミングで、前記第1のストレージ資源の第1の負荷と、前記第2のストレージ資源の第2の負荷とを比較し、負荷が小さい方のストレージ資源に対応するリンクから負荷が大きい方のストレージ資源に対応するリンクに、ページに対応するリンク要素を移し替える、請求項1記載のストレージ制御装置。
  7. キャッシュメモリとして用いられる複数のページのうちの第1のページ群を示す第1のリンクに第1のストレージ資源を割り当て、前記複数のページのうちの第2のページ群を示す第2のリンクに第2のストレージ資源を割り当て、
    前記第1のリンクおよび前記第2のリンクを用いて、前記第1のストレージ資源および前記第2のストレージ資源に対するアクセス要求を分散して処理し、
    ページに対応するリンク要素を前記第1のリンクおよび前記第2のリンクのうちの一方のリンクに追加する際、前記キャッシュメモリに空きページがない場合に、前記第1のリンクおよび前記第2のリンクのうちの他方のリンクに含まれる前記リンク要素を前記一方のリンクへ移し替え、前記移し替えの際に、前回の移し替え先のリンクと今回の移し替え先のリンクとが同じ場合、今回移し替える前記リンク要素の数を、前回移し替えた前記リンク要素の数よりも増やす、
    処理をコンピュータに実行させるプログラム。
JP2017222513A 2017-11-20 2017-11-20 ストレージ制御装置およびプログラム Active JP7011156B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017222513A JP7011156B2 (ja) 2017-11-20 2017-11-20 ストレージ制御装置およびプログラム
US16/136,312 US10664393B2 (en) 2017-11-20 2018-09-20 Storage control apparatus for managing pages of cache and computer-readable storage medium storing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017222513A JP7011156B2 (ja) 2017-11-20 2017-11-20 ストレージ制御装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2019095881A JP2019095881A (ja) 2019-06-20
JP7011156B2 true JP7011156B2 (ja) 2022-01-26

Family

ID=66534442

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017222513A Active JP7011156B2 (ja) 2017-11-20 2017-11-20 ストレージ制御装置およびプログラム

Country Status (2)

Country Link
US (1) US10664393B2 (ja)
JP (1) JP7011156B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10757597B1 (en) * 2019-07-08 2020-08-25 Bank Of America Corporation Resource stability indicator determination based on downstream network node-based resource health indicators
US11580023B2 (en) 2020-03-11 2023-02-14 Fujitsu Limited Information processing apparatus, computer-readable recording medium having stored therein memory control program, and computer-readable recording medium having stored therein information processing program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139349A (ja) 2002-10-17 2004-05-13 Nec Corp ディスクアレイ装置におけるキャッシュメモリ分割管理方式
JP2012022532A (ja) 2010-07-14 2012-02-02 Nec Corp ストレージシステム及びストレージシステムのメモリキャッシュ領域制御方法
JP2017117179A (ja) 2015-12-24 2017-06-29 富士通株式会社 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4490782A (en) * 1981-06-05 1984-12-25 International Business Machines Corporation I/O Storage controller cache system with prefetch determined by requested record's position within data block
US7146607B2 (en) 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US6851030B2 (en) 2002-10-16 2005-02-01 International Business Machines Corporation System and method for dynamically allocating associative resources
JP5089896B2 (ja) 2006-03-17 2012-12-05 株式会社日立製作所 マイクロプロセッサの負荷分散機能を備えたストレージシステム
WO2014049635A1 (en) 2012-09-25 2014-04-03 Hitachi, Ltd. Storage system and method thereof for i/o load distribution with data stored in ckd format
JP2015191604A (ja) 2014-03-28 2015-11-02 富士通株式会社 制御装置、制御プログラム、および制御方法
US10089033B2 (en) * 2014-04-24 2018-10-02 Hitachi, Ltd. Storage system
US10261697B2 (en) * 2015-06-08 2019-04-16 Samsung Electronics Co., Ltd. Storage device and operating method of storage device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139349A (ja) 2002-10-17 2004-05-13 Nec Corp ディスクアレイ装置におけるキャッシュメモリ分割管理方式
JP2012022532A (ja) 2010-07-14 2012-02-02 Nec Corp ストレージシステム及びストレージシステムのメモリキャッシュ領域制御方法
JP2017117179A (ja) 2015-12-24 2017-06-29 富士通株式会社 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法

Also Published As

Publication number Publication date
JP2019095881A (ja) 2019-06-20
US10664393B2 (en) 2020-05-26
US20190155730A1 (en) 2019-05-23

Similar Documents

Publication Publication Date Title
JP4813843B2 (ja) ストレージ装置、ディスクキャッシュ制御方法及びディスクキャッシュの容量割当方法
KR102093523B1 (ko) 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법
JP5944587B2 (ja) 計算機システム及び制御方法
JP5931196B2 (ja) I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法
JP2009043030A (ja) ストレージシステム
US20110283046A1 (en) Storage device
US20100100680A1 (en) Storage apparatus and cache control method
US8745150B2 (en) Storage control apparatus and storage control method
US10176098B2 (en) Method and apparatus for data cache in converged system
JP2008090657A (ja) ストレージシステム及び制御方法
US9727247B2 (en) Storage device and method, and storage medium
JP2020161014A (ja) 情報処理装置および実行制御プログラム
US20170031605A1 (en) Control device and control method
JP7011156B2 (ja) ストレージ制御装置およびプログラム
US9699254B2 (en) Computer system, cache management method, and computer
US10133517B2 (en) Storage control device
KR102220468B1 (ko) 트랜잭션 지원을 가진 선점형 캐시 후기록
US11080192B2 (en) Storage system and storage control method
JP2021114264A (ja) ストレージ制御装置およびストレージ制御プログラム
WO2010119478A1 (en) Storage system and control method therefor
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
US11755249B2 (en) Storage system including storage nodes to determine cache allocations to implement cache control
EP4033346B1 (en) Affinity-based cache operation for a persistent storage device
JP5900063B2 (ja) ストレージ装置およびストレージ装置における初期化方法
JP6273678B2 (ja) ストレージ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200807

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200825

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200825

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210708

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211227

R150 Certificate of patent or registration of utility model

Ref document number: 7011156

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150