JP6337902B2 - ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム - Google Patents

ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム Download PDF

Info

Publication number
JP6337902B2
JP6337902B2 JP2015539446A JP2015539446A JP6337902B2 JP 6337902 B2 JP6337902 B2 JP 6337902B2 JP 2015539446 A JP2015539446 A JP 2015539446A JP 2015539446 A JP2015539446 A JP 2015539446A JP 6337902 B2 JP6337902 B2 JP 6337902B2
Authority
JP
Japan
Prior art keywords
node
data
cache
time
access
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
JP2015539446A
Other languages
English (en)
Other versions
JPWO2015046552A1 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2015046552A1 publication Critical patent/JPWO2015046552A1/ja
Application granted granted Critical
Publication of JP6337902B2 publication Critical patent/JP6337902B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • 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

Description

(関連出願についての記載)
本発明は、日本国特許出願:特願2013−204914号(2013年9月30日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ストレージシステムとノード装置とキャッシュ制御方法並びにプログラムに関する。
近時、情報通信技術の進展とその適用分野の拡大等に伴い、情報処理システムの適用先、及び、該システムで扱う処理量が増大している。扱う処理量やデータ量の増大に対処すべく、例えば情報処理システムを、バスや通信網を介して相互接続される複数の計算機で構成し、システム性能を向上させる設計方式が用いられている。
<処理又はVMのノード間のマイグレーション>
計算機の負荷は、処理内容、時間に応じて変動することから、複数の計算機(ノード)からなる情報処理システムにおいて、負荷に応じて、計算機間で処理を移動(migrate)させることで負荷分散を図り、各計算機の利用効率やシステム全体の性能を高める手法が用いられている。例えば、ある計算機での性能の限界近くまで処理負荷が増大した場合、該処理を実行する計算機を、負荷の軽い別の計算機に変更させ、計算機資源の利用効率や性能の向上を図る。処理の移動は、仮想化システムでも行われる。例えば、サーバ上にハイパーバイザ等の仮想化機能を実装して、CPU(Central Processing Unit)、メモリ等のハードウェア資源を仮想化し、この仮想化機能の上に仮想OS(Operating System)を走らせ、アプリケーションを実行することで実現される仮想マシン(VM:Virtual Machine)を備えた仮想化環境等においても、VMを移動させることで、計算機資源の利用効率や性能の向上を図る場合がある。処理を実行するVMを一のVMから別のVMへ変更する等、VM単位で移動を行う場合、移動対象となるVMに関するシステム・ディスクのイメージ(VMイメージ)を、移動後のVMを実行する計算機側からアクセスし、例えばVMのホットマイグレーション等を実現する。VMを一の計算機(ノード)から別の計算機(ノード)へ移動する場合(VMのノード間マイグレーション)、移動対象のVMの状態情報は、例えばVMの移動先の計算機にコピーされる。このVMの状態情報は、例えば、ネットワーク接続情報を含む全メモリ情報と、VMのレジスタのダンプ情報等、プロセッサ(CPU)にかかわる全情報が含まれる。VMの状態情報やVMイメージ等、処理が参照するデータは、例えば、複数の計算機間で共有される共有ストレージに格納される。
<ストレージキャッシュ>
また、複数の計算機(ノード)を備えた情報処理システムにおいて、複数のノードがストレージを共有するシステム構成においては、共有ストレージに対するアクセスがシステムの性能を律速する要因(ボトルネック)となる、ことが知られている。なお、特に制限されないが、複数のノードは共有ストレージにネットワーク(あるいはバス)を介して接続されているものとする。代表的なボトルネックとして、
・共有ストレージにおけるアクセス要求による負荷、及び、
・アクセス要求の増大に伴い増大するネットワーク負荷等、
が挙げられる。よく知られているように、ストレージへのアクセス要求を削減し、アクセス性能を向上させるための技術として、ストレージに格納されるデータの一部の写し及び更新を一時的に保持するキャッシュ(ストレージキャッシュ)が用いられる。ストレージのキャッシュは、例えばDRAM(Dynamic Random Access Memory)や、SSD(Solid State Device:例えばNAND型不揮発性メモリ(フラッシュメモリ)等からなる)で構成され、計算機(ノード)からストレージへのアクセスと比較して、高速アクセスが可能である。キャッシュ上にアクセス頻度の高いデータの写し(コピー)を格納することで、ストレージへのアクセスを行わずにアクセス可能とするか、あるいはストレージへのアクセス回数を減少させる。キャッシュ上のデータのうちアクセスが少ないデータはキャッシュから追い出され、アクセス頻度の高いデータの写しがキャッシュに格納される。リードアクセスでは、アクセス要求に対する該データがヒットした場合、ヒットしたデータが、アクセス要求元に応答として返送される。ライトアクセスの場合、キャッシュでヒットしたデータの更新が行われ、アクセス要求元にライトの完了応答が返送され、例えばライトバック方式では、その後、キャッシュ上でのデータの更新がストレージに反映される。
<キャッシュ・コヒーレンシ>
複数のノード間で共通のストレージを共有するシステムにおいても、キャッシュへの複数ノードからのアクセスによる性能の低下、及び、複数のノードからのアクセスの増大によるネットワーク負荷の増大等により、キャッシュのアクセス性能が低下する。このため、複数ノードにそれぞれ個別のキャッシュ(ローカルキャッシュ/プライベートキャッシュ)を備えた構成が用いられる(例えば非特許文献1)。この場合、複数のノードのそれぞれのキャッシュに対してキャッシュの一貫性(cache coherency)の維持機構が実装される。「キャッシュ・コヒーレンシ」(cache coherency)とは、複数のノードの各々がデータ更新を行った場合でも、最新の正しいデータにアクセスできるように保つべきデータの一貫性のことをいう。共有ストレージに格納されたデータは、一般に、複数のノードから参照可能とされている。そのため、一のノードと他のノードのそれぞれのキャッシュに、共有ストレージの同一のデータが格納され、前記一のノードで実行される処理により、前記一のノードのキャッシュに格納されている前記データが更新された場合、前記他のノードのキャッシュに格納されている前記データに対して、前記一のノードで実行された前記更新を反映させるか、若しくは、前記他のノードのキャッシュに格納されている前記データを無効化する必要がある。
ノード間で共有される共有ストレージを備え、各ノードが共有ストレージのデータの写し又は更新を一時的に保持するキャッシュを備えた関連技術の典型的なシステムの動作例について、図18を参照して説明する。ノード101−1のCPUは、更新データをノード101−1のキャッシュ(ローカルキャッシュ)に書き込む(1:更新)。
ノード101−1のCPUは、ノード101−2のCPUに対して、更新したデータの格納先アドレス(キャッシュライン)を通知することで、データの更新を通知する(2:アドレスによる更新通知)。なお、2:アドレスによる更新通知は、ノード101−1のキャッシュのデータ更新(書き込み)と同時、あるいはその直前に行ってもよい。
ノード101−2では、ノード101−1からの更新通知を受けると、ノード101−2のキャッシュで当該アドレスのデータ(更新前のデータ)を保持している場合、これを無効化する(3:無効化)。
ノード101−1のCPUは、ノード101−1のキャッシュの更新データを、共有ストレージ3に書き戻す(write back)(4:書戻(反映))。
ノード101−2のCPUが当該データを参照する場合、ノード101−2のキャッシュの該データは無効化されているため(不図示の無効フラグがオン等)、ノード101−2のキャッシュはヒットせず(5:ミス)、共有ストレージ3から、第1のノード101−1による更新を反映したデータを読み込み、ノード101−2のキャッシュに登録する(6:更新データ読込)。なお、ノード101−2において、共有ストレージ3から更新データをノード101−2のキャッシュに格納する場合、ノード101−2のキャッシュに十分な空き容量がない場合、例えば無効化されたデータや参照頻度が最も少ないデータがキャッシュから追い出され、空き領域が確保される。
ノード101−2において、当該データを参照する場合、ノード101−2のCPUは、ノード101−2のキャッシュに登録された更新データを参照する(7:アクセス)。
<ストレージキャッシュの管理情報の一例>
図19は、図18のキャッシュの管理情報の一例を模式的に示す図である。キャッシュの管理情報は、例えばキャッシュ制御装置(図18では不図示)によって管理され、キャッシュ内においてキャッシュメモリとは別の記憶領域に設けられるか、あるいは、キャッシュ制御装置内に設けられる。特に制限されないが、キャッシュの管理情報は、例えば無効フラグ(Invalid flag)、ページアドレス、格納先アドレス、更新済フラグ、置換優先度等を含む。無効フラグ(Invalid flag)は、各ページのデータが無効である(Yes)か、無効でない(No)を表すフラグである。無効フラグがYesのエントリのキャッシュデータの読み出し、書き込み(更新)は行われず、例えば、キャッシュデータの入れ替え時に、当該キャッシュデータはキャッシュから優先的に追い出される。ページアドレスは、キャッシュに格納されたページについて、ストレージ全体での対応するページアドレス(論理アドレス)である。なお、ストレージのキャッシュの記憶領域は、通常、例えば4KB(KiloByte)、8KB等の固定ページサイズのページ単位で管理される。格納先アドレスは、当該ページ(キャッシュレコード)のキャッシュにおける格納先を表すアドレスである。更新済フラグは、当該ページのデータ(キャッシュレコード)が、キャッシュに格納された後に、更新済であるか否かを表すフラグである。更新済フラグは、例えば、キャッシュ上の当該ページのデータが更新されたが、ストレージへ該更新内容が反映されていない(write backされていない)場合に、Noとされ、キャッシュ上の当該ページにデータが格納された後に、該ページのデータが未更新状態であるか、ストレージへ更新内容が反映されている場合に、Yesに設定される。置換優先度は、キャッシュ上での当該ページの置換の優先度を表す情報である(値の設定としては、例えば正値に関して、大きいほど、当該ページは優先的に置換される。あるいは、値が小さいほど、当該ページは優先的に置換されようにしてもよい)。なお、図19のキャッシュの管理情報において、ページアドレスは、ストレージに実現されたファイルシステムにおけるパス名(ファイル名)等であってもよい。
<MESI−protocol>
複数のノードが記憶領域を共有する場合に、各ノードに分散したキャッシュに対して、キャッシュの一貫性の維持を図るプロトコルが用いられる(例えばMESI−protocol等)。よく知られているように、MESIにおいては、以下の状態をとる。
(1)Modified(変更):当該キャッシュだけに存在し、共有ストレージのデータから変更されている(dirty)。他のCPUがこのキャッシュライン(データ)に相当する共有ストレージをリード(Read)することを許可する前に、キャッシュ機構はこのキャッシュライン(データ)をいずれかの時点で共有ストレージに書き戻さなければならない。
(2)Exclusive(排他):当該キャッシュだけに存在するが共有ストレージ上の値と一致している(clean)。
(3)Shared(共有):システム内の他のキャッシュにも同じキャッシュライン(データ)が存在している(共有ストレージとも内容が一致)。
(4)Invalid(無効):このキャッシュライン(データ)は無効。
なお、上記では、主記憶のデータを保持するCPUのキャッシュを、共有ストレージのキャッシュに読み替えている。例えばInvalid(無効)状態のライン(データ)に対してリードアクセス要求が発行された場合、共用ストレージから、データを読み込む必要があり、Shared又はExclusive状態に遷移する。またキャッシュへのライトアクセスを実行できるのは、Modified状態かExclusive状態の場合のみである。Shared状態の場合、キャッシュへの書き込みを行う前にシステム内の他のキャッシュ(の該当するキャッシュライン(データ))をInvalid状態(無効化状態)にしなければならない。これは、通常、ブロードキャスト操作で実行され、その操作を、「Read For Ownership(RFO)」と呼ぶ。キャッシュにおいて、Modified状態以外のキャッシュライン(データ)をいつでも捨ててInvalid状態にすることができる。なお、Modified状態のキャッシュライン(データ)は必ず共用ストレージに書き戻さなければならない。
Papamarcos, M. S.; Patel, J. H. (1984). "A low-overhead coherence solution for multiprocessors with private cache memories". Proceedings of the 11th annual international symposium on Computer architecture - ISCA '84. p.348.
以下に関連技術の分析を与える。
<共有ストレージのアドレス空間のマッピングとキャッシュ・コヒーレンシ>
図18を参照して説明したように、複数のノード間でストレージを共有し、各ノードがキャッシュを備えた、関連技術の情報処理システムにおいて、該ノードのキャッシュ上で更新が行われたデータを特定するために、キャッシュ上の更新されたデータに対応する共有ストレージ上での格納先のアドレスを、他のノードに通知することで、キャッシュの一貫性の維持のための無効化が行われる。この場合、複数のノード間で、データのアドレス(論理アドレス)が指し示す共有ストレージ上の領域(物理アドレス)が一意的であることが必要である、すなわち、共有ストレージ上でのデータ格納先の論理アドレスに関して、複数のノードの間で同一のアドレス空間を用いることが前提とある。
複数のノード間で、共有ストレージ上の記憶領域に対してアドレス空間上で異なるマッピングを行っている場合(例えば、共有ストレージ上でのデータの格納先の論理アドレスと物理アドレスの対応がノード間で異なる場合)、キャッシュのデータを更新した一のノードが、例えば図18の2)の「アドレスによる更新通知」を用いて、他のノードにデータの更新の通知を行っても、他のノードにおいて、通知された共有ストレージの格納先のアドレスから、前記一のノードのキャッシュで更新されたデータを特定することはできない。このため、他のノードのキャッシュにおいて、当該一のノードで更新されたデータに対応するキャッシュレコード(エントリ)を選択的に無効化することはできない。また、当該一のノードによって、共有ストレージのデータに、当該一のノードのキャッシュで更新された内容が反映(書き戻し)されても、論理アドレスのマッピングが当該一のノードと異なる他のノードでは、共有ストレージから該更新が反映されたデータを、該他のノードのキャッシュに読み込むことはできない。このため、キャッシュの一貫性を維持することができない。
よく知られているシンプロビジョニング(thin provisioning)は、アプリケーションやサーバに割り当てられているストレージを、実際に割り当てられている物理ストレージの物理容量よりも、多くの領域を使えるように見せる技術(仮想化技術)である。シンプロビジョニングでは、ストレージにおいて、ノード(サーバ)が要求した容量を、仮想ボリュームとして割り当てる。ノード(サーバ)は、この仮想ボリュームを論理ボリュームとして認識する。仮想ボリュームに例えば必要最低限の物理容量を初期容量として割り当てておき、運用開始後、仮想ボリュームに対して、書き込まれたデータ量に応じて動的に物理容量を割り当てる。このように、ストレージにおいて、論理ボリュームの空き容量に割り当てられる物理容量を減らすことで(初期段階で大きな論理ボリュームの割り当てを行わないため、論理ボリュームの空き容量に物理容量が割り当てられているという事態を回避する)、ストレージの使用効率を上げる。
シンプロビジョニング等により、各ノードのストレージの記憶領域を確保する場合、あるノードによるデータの書き込み量が増大した場合に、当該ノードに対してストレージプールから新たに物理記憶が割り当てられ、当該ノードの仮想ボリュームの記憶領域を初期設定値(例えば10TB(TeraByte))から増やす(例えば30TBに増やす)ことになる。記憶領域の割り当ての際に、ノードで実行する処理のアクセスパターンの相違等によって記憶領域(物理ページ)のアドレス空間(論理アドレス空間)へのマッピングが変化することになる。そのため、ノード間で共有される共有ストレージ及びノードのキャッシュに、例えばVMのイメージ等を格納し、VMを実行するノードが変更可能とされる仮想システムにおいて、シンプロビジョニング等を用いて各ノードの記憶領域を確保する場合、ノードによって共有ストレージのアドレス空間のマッピングが異なることから、一般的なキャッシュ一貫性維持のプロトコルを利用することはできない。このことは、VMを備えた仮想化システムに制限されない。共有ストレージ上の記憶領域のアドレス空間のマッピングがノードによって異なる場合、あるノードのキャッシュにおいてデータの書き込み(更新)が発生する毎に、他のノードのキャッシュ全体を無効化する必要がある。
<キャッシュ無効化による性能低下>
例えば、あるノードのキャッシュのデータが更新され、該データの共用ストレージのアドレスを他のノードに通知しても(図18の「アドレスによる更新通知」)、他のノードでは、アドレスマッピング(仮想アドレス空間又は論理アドレス空間から物理アドレス空間へのマッピング)が相違しているため、通知された更新データ格納先のページアドレスから当該データを特定することができない。このため、他のノードでは、他のノードのキャッシュに保持されているデータを全て無効化する。キャッシュに保持されているデータ全体を無効化することは、キャッシュレコード全てを削除することに対応する。キャッシュ全体の無効化は、無効化のための処理負荷が必要とされるほか、無効化が完了したキャッシュにはデータが何も保持されていない状態となり、キャッシュに頻繁に参照されるデータが格納されるまで、ほとんどアクセスはキャッシュミスとなり、アクセス性能の低下を伴う。
また、共有ストレージ上のデータに対して、書き込み(Write)が行われる頻度は、共有ストレージを共有するノードの数に比例する。このため、多数のノードを持つ大規模なシステムでは、キャッシュの一貫性を維持するために各ノードのキャッシュにおいて、他ノードによって更新された可能性を持つデータを全て無効化する場合、各ノードでのキャッシュ全体の無効化による、システムの性能の大幅な低下が懸念される。
したがって、本発明は、上記問題点に鑑みて創案されたものであって、その目的は、複数のノードが、該複数のノード間で共有するストレージに対するキャッシュをそれぞれ有するシステムにおいて、キャッシュの一貫性を維持するために行われる無効化対象のデータ量を削減し性能低下を抑制可能とする装置と方法とプログラムを提供することにある。
本発明の関連するいくつかの側面の1つによれば、複数のノードと、前記複数のノードで共有されるストレージと、を備え、前記複数のノードは、前記ストレージのデータを一時的に保持するキャッシュをそれぞれ備え、データをアクセスする処理が前記複数のノードのうちの一のノードから他のノードに移動したときの時刻情報を記録しておき、前記処理が前記他のノードに移動した後の前記一のノードでは、前記一のノードの前記キャッシュに保持されているデータのうち、前記他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータを選択的に無効化するストレージシステムが提供される。
本発明の関連する別の側面の1つによれば、複数のノード装置間で共有するストレージのデータを一時的に保持するキャッシュを備えたノード装置であって、前記キャッシュに保持されるデータに対するアクセスが行われる毎に、アクセス時刻を記録するアクセス時刻記録部と、
前記キャッシュに保持されているデータのうち、前記アクセス時刻記録部で記録されたデータの最終アクセス時刻と、入力した無効化の基準時刻とを比較し、前記最終アクセス時刻が、前記無効化の基準時刻以前であるデータの無効化を、前記データがアクセスされる前の所定のタイミング又は契機で行うキャッシュ無効化部と、を備えたノード装置が提供される。
本発明の関連する別の側面の1つによれば、複数ノード間で共有するストレージのデータを一時的に保持するキャッシュを備えた各ノードに接続され、データのアクセス処理の実行開始の通知を前記ノードから受ける管理装置であって、
データをアクセスする処理の実行するノードの変更を検出する実行ノード変更検出部と、
前記処理を実行するノードの情報を記録する実行ノード記録部と、
前記処理を実行するノードで、最後に前記データのアクセス処理が実行された時刻を記録する時刻記録部と、
データを共有する複数のアクセス処理が、同一のノードで順次実行されるように処理を配置する処理配置部と、
前記ノードに対して前記ノードのキャッシュに格納されたデータの無効を通知する無効通知部と、
を備え、前記無効通知部は、前記処理を実行するノードが変更された時刻を、前記ノ−ドに通知する、管理装置が提供される。
本発明の関連するさらに別の側面の1つによれば、
複数のノードで共有されるストレージのデータを一時的に保持するキャッシュをそれぞれ有する複数のノードのうち、データをアクセスする処理が一のノードから他のノードに移動したときの時刻情報を記録しておき、
前記処理が前記他のノードに移動した後の前記一のノードでは、前記一のノードの前記キャッシュに保持されているデータのうち、前記他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータを選択的に無効化するキャッシュの制御方法が提供される。
本発明の関連するさらに別の側面の1つによれば、複数のノード装置間で共有するストレージのデータを一時的に保持するキャッシュを備えたノード装置を構成するコンピュータに、
前記キャッシュに保持されるデータに対するアクセスが行われる毎にアクセス時刻を記録するアクセス時刻記録処理と、
前記キャッシュに保持されているデータのうち、前記アクセス時刻記録部で記録されたデータの最終アクセス時刻と、入力した無効化の基準時刻とを比較し、前記最終アクセス時刻が、前記基準時刻以前であるデータの無効化を、前記データがアクセスされる前の所定のタイミング又は契機で行うキャッシュ無効化処理と、
を実行させるプログラムが提供される。本発明によれば、該プログラムを記録したコンピュータ読み出し可能な媒体(半導体メモリ、磁気/光ディスク等の記録媒体)が提供される。
本発明によれば、複数のノードが共有ストレージのキャッシュをそれぞれ有するシステムにおいて、キャッシュの一貫性を維持するための無効化対象のデータ量を削減可能とし性能低下を抑制可能としている。
本発明の一実施形態における、全体のシステム構成を示す図である。 本発明の一実施形態のノードの構成を例示する図である。 本発明の一実施形態における最終アクセス時刻テーブルを例示する図である。 本発明の一実施形態における管理ノードの構成を例示する図である。 本発明の一実施形態における実行ノードテーブルを例示する図である。 本発明の一実施形態におけるノード実行終了時刻テーブルを例示する図である。 本発明の一実施形態の動作手順を説明するフローチャートである。 図7のS13の詳細手順を説明するフローチャートである。 本発明の一実施例における、全体のシステム構成を示す図である。 本発明の一実施例における実行ノードテーブルの初期状態を示す図である。 本発明の一実施例におけるノード実行終了時刻テーブルの初期状態を示す図である。 本発明の一実施例における実行ノードテーブル(VMの実行ノードを一度変更した後の状態)を示す図である。 本発明の一実施例におけるノード実行終了時刻テーブル(VMの実行ノードを一度変更した後の状態)を示す図である。 本発明の一実施例における最終アクセス時刻テーブルを示す図である。 本発明の基本概念を説明する図である。 本発明の基本概念を説明する図である。 本発明の基本概念を説明する図である。 キャッシュ一貫性維持を説明する図である。 ストレージのキャッシュ管理情報の一例を例示する図である。
本発明のいくつかの実施形態について説明する。本発明の一つの側面によれば、図15を参照すると、情報処理システムは、複数のノード(ノード1−1、1−2)と、複数のノードで共有されるストレージ(共用ストレージ3)を少なくとも備えている。複数のノード(1−1、1−2)は、共有ストレージ3のデータを一時的に保持するキャッシュ13−1、13−2をそれぞれ備えている。なお、図15では、単に説明の簡単のため、2つのノード1−1、1−2が示されているが、ノードは3個以上であってもよいことは勿論である。本発明の一つの側面によれば、キャッシのデータ、又はキャッシュとストレージのデータをアクセスする処理(該処理は、仮想マシン(VM)による実装も含む)はノード間で移動(migration)可能とされる。
本発明の一つの側面によれば、一のノード(例えばノード1−1)で実行されていた、データをアクセスするアクセス処理(キャッシュデータの更新処理等、例えば処理A)が、前記一のノード(1−1)から他のノード(例えばノード1−2)に移動したときの時刻(移動時刻)情報を記録しておき、前記アクセス処理(処理A)が前記他のノード(1−2)へ移動した後の前記一のノード(1−1)では、前記一のノード(1−1)の前記キャッシュ(13−1)に保持されているデータのうち、前記アクセス処理(処理A)が前記一のノード(1−1)から前記他のノード(1−2)へ移動する前に、前記アクセス処理(処理A)が前記一のノード(1−1)上で、最後にアクセスした時刻が、前記アクセス処理(処理A)が前記一のノード(1−1)から前記他のノード(1−2)へ移動した時刻(移動時刻)よりも古いデータを選択的に無効化する。前記一のノード(1−1)において、前記無効化は、前記アクセス処理(処理A)が前記他のノード(1−2)へ移動した後、前記一のノード(1−1)の前記キャッシュ(13−1)上の当該データが再びアクセス(参照又は更新等のアクセス)される前の所定のタイミング又は契機で行う。上記したキャッシュ無効化の制御は、前記一のノード(1−1)に備えられるキャッシュ制御部(図15では不図示)で行ってもよいし、前記キャッシュ(13−1)内の制御部(不図示)で行うようにしてもよいし、あるいは、前記一のノード(1−1)に接続される不図示の管理装置(制御装置)と連携して行うようにしてもよい。特に制限されないが、以下では、移動元であるノード1−1で実行されていたアクセス処理(処理A)を、ノード1−2へ移動してノード1−2上で実行した後、該処理Aをノード1−2から直接、元のノード1−1に戻す場合について説明する(処理Aをノード1−2から不図示の他のノードへの移動を経由して元のノード1−1に戻す場合についても同様である)。
ノード1−1では、例えば、処理Aがノード1−2からノード1−1に移動した時刻(T1)以降に、キャッシュ13−1において一貫性を維持するための無効化を行う。処理Aが過去にノード1−1からノード1−2に移動した時刻(T0)(特に制限されないが、例えば、西暦年月日時分秒のタイムスタンプ)と、キャッシュ13−1に保持されているデータの最終アクセス時刻(処理Aがノード1−1からノード1−2への移動する前にノード1−1上でキャッシュ13−1にアクセスしたデータの最終アクセス時刻、特に制限されないが、例えば西暦年月日時分秒のタイムスタンプ)とを比較し、キャッシュ13−1に保持されているデータのうち、最終アクセス時刻の方が、処理Aが過去にノード1−2へ移動した時刻(T0)よりも古いデータ(キャッシュページ)を無効化する。ノード1−1において、この無効化は一括して行ってもよい。あるいは、処理Aがノード1−2からノード1−1に移動した時刻(T1)以降に、処理Aにより、ノード1−1において、キャッシュ13−1に保持されているデータのうち、ノード1−2へ移動する前の処理Aがノード1−1上で最後にアクセスした時刻が、処理Aがノード1−1から前記ノード1−2へ移動した時刻(T0)よりも古いデータへのアクセス要求が行われることを契機として、該アクセスの実行直前に、前記データ(処理Aがノード1−1で最後にアクセスした時刻が、該T0よりも古いデータ)の無効化を、個別に(当該データへのアクセス要求実行のたびに)行うようにしてもよい。処理がノード間を移動した時刻は、図示されない管理装置(管理ノード)等において、その都度、記録するようにしてもよい。なお、処理Aが、ノード1−1からノード1−2に移動後、移動先のノード1−2からさらに不図示のいくつかの他のノードに移動されたのち、ノード1−1に戻る場合にも、ノード1−1では、上記と同様、処理Aがノード1−1に戻った時刻以降に、ノード1−1のキャッシュ13−1に保持されているデータの最終アクセス時刻が、処理Aが過去にノード1−2へ移動した時刻(T0)よりも古いデータ(ページ)を無効化する。また、処理Aがノード1−2からさらに不図示の他のノードに移動された場合にも、処理Aが再びノード1−2に戻った場合、ノード1−2のキャッシュ13−2に保持されているデータのうち、処理Aが不図示の他のノードへの移動前に、ノード1−2上で最後にアクセスした時刻が、前記処理Aがノード1−2からさらに他のノードへ移動した時刻よりも古いデータを無効化する。
<アクセス処理のノード間移動(inter-node migration)と、キャッシュの無効化制御>
図16、図17は、図15におけるアクセス処理の移動とノードでのキャッシュ制御を模式的に説明する図である。図17は、図16の処理Aの移動時刻及び各処理によるデータ参照・更新と、各データの無効化の有無を時系列で模式的に説明する図である。図16において、データのアクセス処理A、B、Cはノード1−1、1−2のいずれかで実行可能であり、初期状態では、全ての処理がノード1−1で実行されるものとする。図16(A)に示すように、時刻T0で処理Aはノード1−1からノード1−2に移動し、その後、図16(B)に示すように、時刻T1で処理Aはノード1−2からノード1−1に移動している。
時刻T0に、処理Aがノード1−1からノード1−2に移動した場合、処理Aがノード1−1でキャッシュ(図15の13−1)に格納したデータ(図17のA1、A2)は、ノード1−1で実行中のいずれの処理からもアクセスされない。よって、これらのデータの最終アクセス時刻は、必ず、処理Aがノード1−1からノード1−2に移動した時刻T0よりも以前となる。一方、ノード1−1上で実行される他の処理B、Cが、キャッシュ(図1の13−1)に格納したデータは、処理Aがノード1−1からノード1−2へ移動した後も、他の処理(図16の処理B、C)によってアクセスされる。したがって、その最終アクセス時刻が更新され、処理Aの移動時刻T0よりも、後の時刻となる。すなわち、時刻T1に再び処理Aがノード1−1に戻った際に、ノード1−1のキャッシュ(図15の13−1)において、最終アクセス時刻が処理Aの移動時刻T0以降のデータ(図17のB2、C1、C2、B3)は、ノード1−1において処理Aによってアクセスされたデータではない。ノード1−1のキャッシュ(図15の13−1)に格納された、これらのデータ(図17のB2、C1、C2、B3)は、期間T0と期間T1の間、ノード1−1以外では更新されない。このため、ノード1−1のキャッシュ(図15の13−1)において、最終アクセス時刻が処理Aの移動時刻T0以降のデータ(図17のB2、C1、C2、B3)の無効化は不要である。
ノード1−1のキャッシュ(図15の13−1)に格納されているデータに関して、最終アクセス時刻がT0以前のデータは、処理Aがノード1−2に移動する前にノード1−1のキャッシュ(図15の13−1)に格納されたデータであり、ノード1−2に移動する前の処理Aによって更新された可能性がある。このため、一貫性維持のための無効化が必要である。このように、あるノード(例えば1−1)において、キャッシュ(図15の13−1)上のデータの最終アクセス時刻と、処理Aが過去に他のノード(例えば1−2)に移動した移動時刻(T0)とを比較し、最終アクセス時刻が移動時刻(T0)以前のデータを無効化対象とすることで、当該あるノード(1−1)のキャッシュ(図15の13−1)上で無効化対象となるデータ量を削減し、キャッシュの性能(アクセス性能)の低下を抑制する。図16(A)の処理Aがノード1−1からノード1−2へ移動する移動時刻T0、図16(B)の処理Aがノード1−2からノード1−1へ移動する移動時刻T1等、各処理がノード間で移動する毎に、その移動時刻の記録が行われる。
ノード1−1のキャッシュ(図15の13−1)において、処理A以外の処理(例えば処理B)がアクセスするデータ(例えば図17のB1)についても、最終アクセス時刻がT0以前であるという条件を満たせば、無効化の対象とされる。この場合、ノード1−1のキャッシュ(図15の13−1)において、処理A以外の処理Bがアクセスするデータ(図17のB1)の無効化によって、キャッシュ(図15の13−1)において本来ヒットするはずのデータが無効化され、ヒット率の低下等、キャッシュ性能の低下(アクセス性能の低下)の原因となる可能性も考えられる。しかしながら、この場合、ノード1−1のキャッシュ(図15の13−1)において無効化されるデータは、最終アクセス時刻がT0以前のデータ、つまり、処理Aが他のノード1−2で実行されている間(時刻T0からT1の間)に一度も参照されない、アクセス頻度の低いデータであるといえる。処理のノード間の移動の頻度等にもよるが、無効化対象となるデータは、参照頻度が低いデータであるため、アクセス性能の低下の影響は十分に抑えることができる。
図17を参照すると、時刻T0以前には、ノード1−1において、例えば処理AによりアクセスされたデータA1、A2がキャッシュ(図15の13−1)に格納されている(B1は処理Bによってキャッシュ(13−1)に格納されたデータである)。なお、キャッシュに格納されたデータA1、A2が、処理Aの書き込みアクセスにより更新されたものである場合、更新データA1、A2は、共有ストレージ(図15、図16の3)に書き戻され(Write Back)、更新内容が反映される。
時刻T0で、処理Aはノード1−2に移動する。図示されない管理ノード等で、この移動時刻T0が記録される。時刻T0の後、ノード1−2では、移動してきた処理AによりデータA1、A2が更新され、キャッシュ(図15の13−2)に更新データA1’、A2’が格納される。更新データA1’、A2’は、共有ストレージ(図15、図16の3)に書き戻され(Write Back)、更新内容が反映される。一方、ノード1−1では、キャッシュ(図15の13−1)において、データB2、C1、C2、B3が格納されるが、処理Aの影響を受けず、ノード1−2でキャッシュ(図15の13−2)が更新されても、ノード1−1において、キャッシュ(図15の13−1)の一貫性維持のための無効化は不要である。
時刻T1で処理Aがノード1−2からノード1−1に戻る。処理Aが移動した移動先のノード1−1では、前記ノード1−1の前記キャッシュ(図15の13−1)に保持されているデータのうち、ノード1−1から過去に他のノード1−2へ移動する前の前記処理Aが前記ノード1−1上で最後にアクセスした時刻が、前記処理Aがノード1−1から他のノード1−2へ移動した時刻T0よりも古いデータを無効化する。すなわち、処理Aがノード1−2からノード1−1に移動した時刻(T1)以降、ノード1−1のキャッシュ(図15の13−1)において、最終アクセス時刻がT0以前のデータは、T0以降ノード1−2の処理Aによって更新されている可能性があるため、無効化する。その際、ノード1−1の前記キャッシュ(図15の13−1)において、処理AでアクセスされたものでないキャッシュデータB1も、その最終アクセス時刻がT0以前であるため、無効化される。なお、ノード1−1のキャッシュ(図15の13−1)において、データA1(データA1を格納したキャッシュのページ)が無効化されている場合、データA1へのアクセスはミスヒットとなり、共有ストレージ(図15の3)から更新データA1’(処理Aがノード1−2で実行されているときに更新されたデータ)が読み出され、キャッシュ(図15の13−1)に格納される。
本発明の一形態によれば、キャッシュに格納されたデータについて、ノード間で、共有ストレージのアドレス空間のマッピング等が異なり、他のノードで更新されたデータを、共有ストレージの格納先アドレスを用いて特定することが不可能な場合でも、キャッシュの一貫性を維持するために、キャッシュ全体を無効化することはしない。キャッシュに格納されたデータを選択的に無効化することで、無効化するデータ量を削減し、キャッシュ無効化による性能低下の影響を低減する。すなわち、データをアクセスする処理のノード間移動が行われた場合、移動元のノードのキャッシュに保持されるデータの最終アクセス時刻と、処理が過去に当該移動元のノードから他のノードに移動した移動時刻(無効化の基準時刻)とを比較し、最終アクセス時刻が当該基準時刻よりも古いデータを、選択的に無効化することで、例えばノード間において、共有ストレージの論理アドレス空間(仮想アドレス空間)の、記憶媒体の物理アドレスへのマッピングが異なる場合であっても、キャッシュ全体を無効化することを要しなくし、無効化対象のデータ量を削減している。
<単一ノードでの処理の実行>
本発明の一形態によれば、好ましくは、データのアクセス処理を、常に、単一のノード上で実行するように設定する。例えば複数のノードが同時に同一データへアクセスすることはない。この場合、共有ストレージのデータは、常に、単一のノードからアクセスされ、データは単一のノード上のキャッシュにのみ格納される(データへのアクセスを行う単一のノードは、固定ノードである必要はなく、あるノードから別のノードに変わってもよい)。この場合、単一のノード上のキャッシュに格納されたデータに対する書き込みアクセスに対して、他のノードでキャッシュの無効化を行うことは不要である。図15の例では、前記キャッシュ又は前記ストレージのデータのアクセス処理を実行するノードを、第1のノード1−1から第2のノード1−2へ変更すると、共有ストレージ3上のデータは、常に、第2のノード1−2からアクセスされ、共有ストレージ3上のデータの写し又は更新内容は、第2のノード1−2上のキャッシュ13−2にのみ格納される。
ノード間でデータを共有するキャッシュ構成では、あるノードのキャッシュに格納されたデータが更新されるごとに、他のノードのキャッシュに格納されたデータの無効化が必要とされる。これに対して、本発明の一形態によれば、データは単一のノードからアクセスされ、単一のキャッシュにのみ格納される構成としたことで、あるノードでのキャッシュに格納されたデータの更新毎に発生する他のノードのキャッシュの無効化は不要である。
再び図15を参照すると、処理Aを実行するノードが、ノード1−1からノード1−2に変更された場合、ノード1−1とノード1−2がそれぞれ保有するキャッシュ13−1、13−2には、該処理Aが、移動元のノード1−1と、移動先のノード1−2上で、それぞれアクセスしたデータが格納されるが、共有ストレージ3の格納先アドレスのマッピング(論理アドレス空間と物理アドレスの対応)が、ノード1−1、1−2間で同一である場合、共有ストレージ3の格納先アドレスが同一のデータを、前記処理Aが、移動前のノード1−1と、移動後のノード1−2でそれぞれアクセスした場合、該同一のデータが、ノード1−1とノード1−2のキャッシュ13−1、13−2に格納される。処理Aの移動先のノード1−2のキャッシュ13−2において、データが更新された場合には、ノード1−2のキャッシュ13−2においてのみデータの更新が反映され、移動元ノードであるノード1−1のキャッシュ13−1には、該処理Aが移動先のノード1−2へ移動する前(ノード変更前)のデータが格納された状態のままとされる。この状態を解消し、ノード1−1、1−2のキャッシュ13−1、13−2間でキャッシュの一貫性を維持するために、ノード1−1においてキャッシュ13−1に格納されている、更新前のデータ(更新が反映されていない状態のデータ)に対する無効化が行われる。このように、あるノードのキャッシュに格納されたデータの無効化は、処理(例えば仮想マシン)が、当該ノードから他のノードに移動し、該他のノードのキャッシュのデータが更新された場合に必要である。
関連技術の問題点として前述したように、共有ストレージの格納先アドレスのマッピングがノード間で異なり、アクセス処理の移動先のノードで更新されたデータを、移動元のノードで一意に特定することが不可能である場合、移動先のノード以外の他のノード(移動元のノード)では、キャッシュの一貫性を維持するために、キャッシュに保持されている全てのデータに対する無効化が行われる(移動先のノードで更新された可能性があるためである)。しかし、このようなキャッシュデータ全体の無効化は、性能の低下を招く。
キャッシュの一貫性の維持を図るための無効化による性能低下を抑えるためには、キャッシュに格納されたデータを無効化する頻度、及び、キャッシュ上で無効化の対象となるデータの量、を削減する必要がある。
<キャッシュ無効化を行うノードの選択:移動元ノード>
本発明の一形態によれば、キャッシュの一貫性が失われた可能性の存在するノードのみに限定して、キャッシュの無効化が行われる。すなわち、アクセス処理を実行するノードが他のノードに移動された場合に、アクセス処理の移動元となるノードに対してのみキャッシュに格納されたデータの無効化を行う。
<キャッシュ無効化のデータ量の削減>
本発明の一形態によれば、アクセス処理のノード間の移動において、移動元のノードのキャッシュに格納されたデータの無効化の際に、無効化の対象となるデータ量を削減するために、アクセス処理が移動元のノードから他のノードへ移動する移動時刻を記録する。この移動時刻は、例えば、移動元のノードに通信接続される管理ノード等の記憶装置に記憶される。また、アクセス処理を実行するノードにおいて、キャッシュに保持されるデータに対する前記アクセス処理による最終アクセス時刻を保持する。すなわち、該ノードで実行されるアクセス処理により該ノードのキャッシュに保持されるデータがアクセスされる毎に、該データのアクセス時刻を更新する(アクセスがなくなった場合、最後に更新されたアクセス時刻が最終アクセス時刻となる)。ノードにおいて、前記アクセス処理によるキャッシュに保持されるデータの最終アクセス時刻は、データに関連付けてキャッシュに記憶保持するようにしてもよい。キャッシュの一貫性維持のための無効化を行う移動元ノードでは、当該ノードのキャッシュに保持されたデータの最終アクセス時刻と、アクセス処理が当該移動元ノードから他のノードに移動した移動時刻とを比較することで、キャッシュの一貫性が維持された状態のデータを除いた、残りのデータ(キャッシュの一貫性が維持されないデータ)に対してのみ、選択的に無効化を行う。
例えば、図15において、処理A(アクセス処理)がノード1−1から他のノード1−2に移動した場合、移動元のノード1−1のキャッシュ13−1において、移動前の前記処理Aがノード1−1でアクセスしたデータの最終アクセス時刻は、処理Aのノード1−1からノード1−2への移動時刻よりも、必ず、時間的に前である(古い)。
<キャッシュの無効化の頻度削減>
本発明の一形態によれば、キャッシュの一貫性を維持し、キャッシュに格納されたデータの無効化を行う頻度を最小化するために、第1のアクセス処理を実行するノードがノード1−1からノード1−2に変更された場合、前記第1のアクセス処理とデータを共有する第2のアクセス処理についても、実行するノードがノード1−2以外のノードである場合、前記第1のアクセス処理の移動先であるノード1−2に変更する。例えば、ノード1−2に第2のアクセス処理を移動せず、ノード1−2以外のノード上で第2のアクセス処理を実行してデータに更新が行われた場合、第1のアクセス処理の移動元のノード1−1のほかに、第1のアクセス処理を実行するノード1−2でも、キャッシュの一貫性維持のため無効化を行うことが必要となる場合がある。これに対して、ノード1−2以外のノードでは、第2のアクセス処理を実行せずに、ノード1−2に第2のアクセス処理を移動してノード1−2上で第1、第2のアクセス処理を実行し前記共有するデータを更新するようにすることで、当該データに関してキャッシュの一貫性維持のための無効化は、移動元のノード1−1でのみ行われる。すなわち、キャッシュの一貫性維持のための無効化の頻度を削減している。
<キャッシュ無効化対象データ量の削減:移動元ノードでのキャッシュ制御>
図15において、移動元であるノード1−1は、処理A(アクセス処理)がノード1−1からノード1−2に移動した後に、ノード1−1のキャッシュ13−1でアクセスされたデータ(図17のB2、C1、C2、B3)を無効化の対象から外す。つまり、キャッシュに格納されたデータの無効化を行う場合、処理Aがノード1−1からノード1−2に移動した後に、移動元のノード1−1のキャッシュ13−1でアクセスされるデータは、移動先のノード1−2の前記処理Aからはアクセスされない。このため、移動元のノード1−1のキャッシュ13−1上の当該データは、無効化の対象から除外することができる。
アクセス頻度の高いデータであるほど、処理A(アクセス処理)を実行するノードを、ノード1−1からノード1−2へ変更した後に、移動先のノード1−2で実行される処理Aによって、キャッシュ13−2上でアクセスが行われる可能性も高くなる。このため、移動元のノード1−1のキャッシュ13−1上の当該データを無効化の対象から除外することは、キャッシュ無効化によるアクセス性能の低下の影響の低減に、効果的である。
<キャッシュ無効化の遅延制御>
また、キャッシュ無効化の対象となるデータ量を更に削減するために、キャッシュの一貫性維持のためのキャッシュ無効化を行う時期を、例えば可能な限り、遅らせるようにしてもよい。データのアクセス処理(処理A)を実行するノードがノード1−1からノード1−2に変更されて、前記アクセス処理の移動先のノード1−2のキャッシュ13−2のデータの更新が行われ、移動元のノード1−1のキャッシュ13−1には、更新前のデータがそのまま残されている場合、前記更新前のデータが参照されない限り、キャッシュの一貫性は維持された状態にある。つまり、前記アクセス処理(処理A)がノード1−1に戻って実行されるまでの間に、ノード1−1のキャッシュ13−1に保持された前記更新前のデータを無効化すれば、キャッシュの一貫性を維持することができる。そのため、アクセス処理(処理A)がノード1−1に戻り、ノード1−1上で当該アクセス処理(処理A)により、キャッシュ13−1上の当該データ(当該アクセス処理(処理A)がノード1−2への移動前にキャッシュ13−1上で最後にアクセスした時刻が、処理Aがノード1−1からノード1−2へ移動した時刻(T0)よりも古いデータ)へのアクセスが行われるときに(当該データへのアクセスの実行直前に)、その都度、キャッシュ13−1上の当該データの無効化を行うようにしてもよい。アクセス処理を実行するノードの変更は、オーバーヘッドを伴う場合が多いことから、一般に、アクセス処理を実行するノードの変更が頻繁には行われることはない。そのため、他のノード(図15のノード1−2)で、前記アクセス処理が実行されている間に、キャッシュに格納された、アクセス頻度の高いデータに対するアクセスが行われることで、最終アクセス時刻が更新される。
なお、前記アクセス処理(処理A)が移動した後の移動元のノード1−1のキャッシュ13−1に格納されたデータの無効化は、無効となったデータが誤ってアクセスされる可能性が発生した、任意の時点で行うようにしてもよい。あるいは、前記アクセス処理(処理A)が時刻T0に他のノード1−2に移動し、ノード1−2のキャッシュ13−2のデータに対するアクセスを実行するようになった後に、ノード1−1のキャッシュ13−1に格納されたデータの無効化を行うようにしてもよい。この場合、移動元のノード1−1のキャッシュ13−1において、例えば一度もアクセスされていないアクセス頻度の低いデータに対してのみ、行うようにしてもよい。
<システムの一形態>
本発明の一形態によれば、キャッシュの一貫性維持に関連した構成として、
・ノードのキャッシュに格納されたデータに対する最終アクセス時刻を記録する手段(図2のアクセス時刻記録部14)と、
・ノードにおけるキャッシュのデータのアクセス処理の実行開始を通知する手段(図2の処理開始通知部15)と、
・データのアクセス処理を実行中のノードの変更を検出する手段(図4の実行ノード変更検出部24)と、
・データのアクセス処理を実行中のノードの情報を記録する手段(図4の実行ノード記録部21)と、
・データのアクセス処理がノードにおいて最後に実行されていた時刻を記録する手段(図4の処理移動時刻記録部22)と、
・データを共有する複数のアクセス処理が同一のノードで実行されるように、処理の配置を行う手段(図4の処理配置部23)と、
・ノードに対して該ノードのキャッシュに格納されたデータの無効を通知する手段(図4のデータ無効通知部25)と、
・データの無効を通知する手段からの無効の通知を受け、ノードのキャッシュ内の最終アクセス時刻が古いデータを無効化する手段(図2のキャッシュ無効化部16)と、を備える。
ノードのキャッシュに格納されたデータ毎に最終アクセス時刻を記録する手段(アクセス時刻記録部14)は、ノードのキャッシュに格納されたデータに対して、ノード内の処理からのアクセス毎に、当該アクセスの対象となったデータの最終アクセス時刻の情報を記録するか、あるいは、更新する。
ノードにおける処理の実行開始を通知する手段(処理開始通知部15)は、ノードで行われる新たなアクセス処理の実行開始を検出する。また、処理開始通知部15は、検出されたアクセス処理の実行開始について、アクセス処理の実行中のノードを記録する手段、アクセス処理がノードにおいて最後に実行されていた時刻を記録する手段に通知する。
データをアクセスする処理(アクセス処理)について、該アクセス処理を実行中のノードの変更を検出する手段(実行ノード変更検出部24)は、前記ノードにおける処理の実行開始を通知する手段(処理開始通知部15)から送られる通知を受けて、前記通知の生成元である処理を実行するノード(実行ノード)が変更されているか否か判定する。また実行ノード変更検出部24は、前記判定の結果、実行ノードが変更されている場合に、実行ノードの情報、及び、以前の実行ノードにおいて最後に実行されていた時刻の情報について、更新を指示する。
アクセス処理の実行中のノードを記録する手段(実行ノード記録部21)は、情報処理システムで実行される、アクセス処理の実行ノードの情報を記録する。また、実行ノード記録部21は、前記実行ノード変更検出部24からの問い合わせに対して、アクセス処理の実行ノードを応答する。さらに、実行ノード記録部21は、前記実行ノード変更検出部24が検出した、アクセス処理に対する新たな実行ノード(新規実行ノード)の情報に基づき、記録された実行ノードの情報を更新する。
アクセス処理、がノードにおいて最後に実行されていた時刻を記録する手段(処理移動時刻記録部22)は、情報処理システムで実行される、処理について、ノードにおける実行が終了した時刻(ノード実行終了時刻)を記録する。
また、アクセス処理がノードにおいて最後に実行されていた時刻を記録する手段(処理移動時刻記録部22)は、前記アクセス処理を実行中のノードの変更を検出する手段(実行ノード変更検出部24)からの問い合わせに対して、記録されたアクセス処理のノードにおけるノード実行終了時刻を応答する。
さらに、アクセス処理がノードにおいて最後に実行されていた時刻を記録する手段(処理移動時刻記録部22)は、前記アクセス処理を実行中のノードの変更を検出する手段(実行ノード変更検出部24)が、実行ノードの変更を検出した処理について、実行ノード変更検出部24から指示された、以前の実行ノードについてノード実行終了時刻を更新する。
データを共有する複数の処理が同一ノードで実行されるように配置する手段(処理配置部23)は、前記実行ノード変更検出部24が、実行ノードの変更を検出したアクセス処理について、前記アクセス処理とデータを共有する他のアクセス処理について実行ノードを変更して、実行ノードが前記アクセス処理と同一ノードとなるようにする。
ノードに、該ノードのキャッシュに格納されたデータの無効を通知する手段(データ無効通知部25)は、前記実行ノード変更検出部24からの指示により、指定されたノードに対して、指定された時刻より前にアクセスされたデータが無効であることを通知する。
キャッシュ内の最終アクセス時刻が古いデータを無効化する手段(キャッシュ無効化部16)は、前記データ無効通知部25から送られた通知を受けて、当該ノードのキャッシュにおいて、前記アクセス時刻記録部14によって記録された最終アクセス時刻が、前記通知で指定された時刻以前であるデータを無効化して、キャッシュに格納されていない状態となるようにする。
本発明によれば、複数のノードと、各ノードが共有するストレージから構成され、前記各ノードは前記共有ストレージに対する個別のキャッシュを有する情報処理システムにおいて、キャッシュに格納されたデータから、他のノードで更新されたデータを特定することが不可能な場合であっても、本発明を適用しない場合(比較例)と比べて、キャッシュを無効化する頻度、及び、無効化の対象となるデータ量を削減することができる。その結果、キャッシュの無効化によるアクセス性能の低下の影響を低減することができる。
<実施形態>
次に、本発明の実施形態のシステム構成について図面を参照して説明する。図1は、実施形態1の構成を示す図である。図1を参照すると、実施形態1において、システム全体の構成は、単体または複数の処理を実行し、共有ストレージのデータにアクセスを行う2台以上のノード1、ノード1において実行中の処理を管理するための管理ノード2、単体または複数の記憶媒体から構成される共有ストレージ3、及び、ノード1、管理ノード2、及び共有ストレージ3を接続するネットワーク4を含む。共有ストレージ3は、ハードディスク(HDD: Hard Disk Drive)装置から構成される。共有ストレージ3は、ネットワーク4によって接続された複数の装置あるいはシステム(分散ストレージシステム)によって構成されてもよい。また、図1は、ノード1と管理ノード2が分離したシステム構成であるが、管理ノード2の全てまたは一部がノード1と同一の装置上で動作してもよい。
図2は、ノード1の構成を示す図である。図2を参照すると、ノード1は、処理11と、新規処理12と、キャッシュ13と、アクセス時刻記録部14と、処理開始通知部15と、キャッシュ無効化部16を備えている。アクセス時刻記録部14と、処理開始通知部15と、キャッシュ無効化部16は制御部17を構成している。なお、制御部17とキャッシュ13を一体に構成してもよいことは勿論である。
処理11は、ノード1において実行中の単体または複数の処理である。処理11は、例えばオペレーティングシステム(不図示)上で実行されるプロセス、スレッド等の実行単位、あるいは、ハイパーバイザ(不図示)上で実行される仮想マシン(VM)を表す。ノード1で実行されるそれぞれの処理11は、共有ストレージ3に格納されたデータに対してアクセスを行う。
新規処理12は、ノード1において、新たに実行を開始した直後の処理を表す。また、新規処理12は、キャッシュ無効化部16から、実行開始が許可されるまで待機する。前記待機の終了後、新規処理12は処理11に変化する。例えば新規処理12は、図16(A)の例では、時刻T0でノード1−1から他のノード1−2に移動した処理Aに対応する。図16(B)の例では、時刻T1でノード1−2から元のノード1−1に戻った処理Aに対応する。
キャッシュ13は、例えばクロック同期型の高速DRAMあるいはSSD等から構成される。キャッシュ13は、ノード1で実行される処理11によって、Read又はWriteされる、共有ストレージ3に格納されたデータを一時的に格納する。
アクセス時刻記録部14は、処理11からのReadアクセス又はWriteアクセスによって、キャッシュ13に格納されたデータのアクセスが行われる毎に、当該アクセスが行われた時点の時刻(最終アクセス時刻)を記録する。アクセス時刻記録部14は、キャッシュ13に格納された各データに対するアクセス時刻を記録するための最終アクセス時刻テーブル141を備えている。最終アクセス時刻テーブル141に記録されているアクセス時刻は、当該データが再びアクセスされるまでの間、最終アクセス時刻とされる。また、処理の他ノードヘの移動等により、移動元ノードで当該データへのアクセスが行われなくなると、最終アクセス時刻として確定する。
図3(A)は、最終アクセス時刻テーブル141の一形態を表す。最終アクセス時刻テーブル141は、キャッシュ3内の管理単位となるデータを一意に識別するためのデータ識別子1411と、データ識別子1411に対応したデータの最終アクセス時刻1412と、を備えている。
データ識別子1411は、キャッシュ13に格納されるデータの管理単位によって形式が異なる。例えば、キャッシュ13において、記憶領域を一定の容量(ページサイズ)で区切ったページ単位でデータを管理する場合、データ識別子1411は、データを含むページを指し示すページアドレスである(図17参照)。キャッシュ13において、共有ストレージ3のデータを、ファイル単位で管理する場合、データ識別子1411は、データを含むファイル名(ファイルシステムのパス名)などの、ファイルを一意に指し示す識別子である。図3(A)の例では、データ識別子1411において、文字列先頭の“0x”はヘキサデシマル表示を表し、ページアドレスは10Hexデジット(40ビット)からなる。なお、データ識別子1411をページ単位で管理する場合、最終アクセス時刻テーブル141の最終アクセス時刻1412の欄を、例えばキャッシュ管理テーブル(図17参照)に含ませ、図3(B)に示す構成としてもよい。
図2の処理開始通知部15は、新規処理12の起動を検出し、管理ノード2(図1)に対して、新規処理12が起動したことを通知する。この通知は、新規処理12を一意に表す識別子を含む。
キャッシュ無効化部16は、管理ノード2(図1)からのキャッシュ無効に関する通知を受け取る。管理ノード2(図1)は、例えば新規処理12(図2)の実行ノードがノード1に変更された場合、それ以前に、当該ノード1で新規処理12が実行されたことを検出すると、ノード1のキャッシュ無効化部16に対してキャッシュ無効を通知する。キャッシュ無効化部16は、管理ノード2(図1)から受け取った通知に含まれる時刻情報(例えば新規処理12(図2)の実行ノードがノード1から他のノードに変更された時刻情報)と、アクセス時刻記録部14に格納された最終アクセス時刻テーブル141から得られた、キャッシュ13に保持される各データの最終アクセス時刻1412と、を比較し、最終アクセス時刻1412が、管理ノード2(図1)から受け取った通知に含まれる時刻以前であるデータについて、キャッシュ13に対して無効化を指示する。キャッシュ13は、キャッシュ無効化部16からの無効化の指示に従って、キャッシュ13に格納されたデータを無効化する。キャッシュ管理テーブル(例えば図3(B))の無効フラグをオンに設定する。
図4乃至図6を参照して、管理ノード2の構成について説明する。図4は、管理ノード2の構成を例示する図である。図4を参照すると、管理ノード2は、実行ノード記録部21と、処理移動時刻記録部22と、処理配置部23と、実行ノード変更検出部24と、データ無効通知部25を備えている。
実行ノード記録部21は、ノード1で実行中の処理11(図2参照)について、現在実行中のノード1を一意に表す情報を記録する。実行ノード記録部21は、処理11(図2参照)を実行するノード1を記録するための実行ノードテーブル211を備えている。
図5は、図4の実行ノードテーブル211の一形態を例示する図である。実行ノードテーブル211は、システムに含まれる全てのノードで実行される処理11(図2参照)を一意に識別するための処理識別子2111と、処理識別子2111に対応した処理を実行中のノードを一意に識別する、実行ノード識別子2112と、を備えている。
図4の処理移動時刻記録部22は、システム全体で実行されている処理11(図2参照)について、各ノード1での実行が終了した時刻(ノード実行終了時刻)を記録する。処理移動時刻記録部22は、処理11(図2参照)について、各ノード1におけるノード実行終了時刻を記録するためのノード実行終了時刻テーブル221を持つ。
図6は、図4のノード実行終了時刻テーブル221の一形態を表す図である。ノード実行終了時刻テーブル221は、システムに含まれる全てのノード1で実行される処理11(図2参照)を一意に識別するための処理識別子2211と、処理識別子2211に対応した、ノード1におけるノード実行終了時刻2212を備えている。ノード実行終了時刻テーブル221は、処理識別子2211に対して、ノード1(図1参照)の数に等しいノード実行終了時刻2212を管理する。図6の例では、処理識別子2211に対して複数(ノード1(図1参照)の数:Node001、Node002)でのノード実行終了時刻2212を記憶する。
ノード実行終了時刻2212は、ノード1において新規処理12(図2参照)の実行が開始された場合に、ノード実行終了時刻テーブル221に格納される。
新規処理12(図2参照)が、実行ノードが変更された直後の処理11(図2参照)である場合に、処理11を過去に実行したことがないノード1に対するノード実行終了時刻2212は、ノード実行終了時刻テーブル221に格納されない。
処理11に対するノード実行終了時刻2212が存在しない場合には、ノード実行終了時刻2212が存在しないことを表す時刻情報を、ノード実行終了時刻2212(図6参照)として格納する。例えば、図6では、処理識別子2211が「1002」である処理11に対して、ノード実行終了時刻2212として、システムの動作開始時刻より前の時刻(1970/01/01 00:00:00.000)を格納することで、識別子Node002で表されるノード1において、処理11(図2)を過去に実行したことがないことを表す。あるいは、ノード実行終了時刻テーブル221において、処理11(図2)がノード1において過去に実行されたことがないことを表すフラグ情報を新規に持たせてもよい。
処理配置部23は、実行ノード変更検出部24において起動された新規処理12(図2)について、該処理とデータを共有する処理11(図2)の実行ノードを変更し、実行ノードが、前記処理と同一のノード1となるようにする。処理配置部23は、新規処理12(図2)に対して、互いに、データを共有する組み合わせとなる処理11(図2)の情報が事前に与えられ、その情報を基に、実行ノードの変更が必要な処理11(図2)を特定する。
処理配置部23において、実行ノードの変更が必要な処理11(図2)に対する実行ノードの変更処理は、処理11(図2)を実行する機能に対する指示として行う。この機能は、複数のノードで構成される情報処理システムにおける一般的な機能として実装されていることを想定している。
実行ノード変更検出部24は、ノード1の処理開始通知部15(図2)からの通知を受け取る。同時に、実行ノード変更検出部24は、ノード1の処理開始通知部15(図2参照)からの通知を受け取った時点の時刻を取得する。実行ノード変更検出部24は、ノード1の処理開始通知部15(図2)からの通知から、送信元となった新規処理12(図2)を一意に指し示す識別子の情報、及び、該通知の送信元(新規処理12の新規実行ノードとなるノード1)の情報を取得する。前記情報の取得後に、実行ノード変更検出部24は、実行ノード記録部21に対して、新規実行ノードで実行が開始された新規処理12(図2)が以前実行されていたノード1の情報を問い合わせる。実行ノード変更検出部24は、新規処理12(図2)が以前に実行されていたノードと、前記通知の送信元のノード1と比較し、該比較結果から、新規処理12が、同一ノードで実行が再開されたものであるか、若しくは、実行ノードが変更されたのかを判定する。
また、実行ノード変更検出部24は、新規処理12(図2)について、実行ノードが変更されていた場合には、処理移動時刻記録部22に対して、新規処理12(図2)を指し示す識別子の情報、及び、実行ノード記録部21に問い合わせた、実行ノードの情報を用いて、新規処理12(図2)に対する、これまでの実行ノード(これまで新規処理12を実行していたノード)について、ノード実行終了時刻テーブル221(図4)のノード実行終了時刻2212(図6)を更新する。更新後のノード実行終了時刻2212は、処理開始通知部15(図2)から前記通知を受け取った時点の時刻となる。
実行ノード変更検出部24は、処理移動時刻記録部22に対して、新規処理12(図2)を指し示す識別子の情報、及び新規実行ノードの情報を用いて、新規実行ノードにおけるノード実行終了時刻2212(図6)を取得する。
さらに、実行ノード変更検出部24は、新規処理12(図2)について、実行ノードが変更されていた場合に、処理配置部23に対して、新規処理12(図2)とデータを共有する処理11(図2)について、新規処理12(図2)の新規実行ノードで、同時に実行されるように指示する。
実行ノード変更検出部24は、データ無効通知部25に対して、新規実行ノードを指し示す識別子、及び、処理移動時刻記録部22から取得したノード実行終了時刻2212の情報を用いて、ノード1のキャッシュ13に格納されたデータを無効化するための通知を送るように指示する。実行ノード変更検出部24では、例えば、一旦、ノード1から別のノードに実行ノードの変更が行われた処理が、当該処理を実行していた移動元のノード1に、再び、実行ノードが変更されたことを検出した際に、ノード1のキャッシュ13に格納されたデータを無効化するための通知を送るようにデータ無効通知部25に対して指示するようにしてもよい。
データ無効通知部25は、実行ノード変更検出部24から指定されたノード1に対して、キャッシュ13(図2)に格納されたデータを無効化するように、ノード1のキャッシュ無効化部16に通知を送る。
また、データ無効通知部25は、実行ノード変更検出部24から指定された時刻情報を格納して、ノード1のキャッシュ無効化部16に送信する。ノード1は、キャッシュ13に保持されるデータのうち、前記通知に格納された時刻以前の最終アクセス時刻を持つデータを選択的に無効化する。
次に、図1乃至図8を参照して、本実施形態の動作について説明する。
図1、図2、図3、図7を参照して、ノード1で新規処理12(図2)の実行を検出し、処理実行開始の通知が管理ノード2に送られ、その後、管理ノード2からキャッシュ無効化通知を受け取り、キャッシュ13(図2)におけるデータの無効化が完了した後に、新規処理12の実行を開始するための手順を説明する。
ノード1(例えば図16(B)のノード1−1)の処理開始通知部15(図2)は、ノード1における新規処理12(図16(B)のノード1−1に戻った処理Aに対応する)の実行開始を検出する。新規処理12は実行を一時的に停止する(ステップS11)。
ノード1の処理開始通知部15は、管理ノード2(図1)に対して、新規処理12の実行開始に関する通知を送信する。この通知には、新規処理12を一意に指し示す識別子が含まれる(ステップS12)。
管理ノード2(図1、図4)は、ステップS12の処理開始通知部15(図2)からの通知を受け取り、新規処理12(図2)の実行がノード1で開始されたことに伴い、ノード1のキャッシュ13(図2)に格納されたデータから、無効化が必要になるキャッシュデータの最終アクセス時間を決定する。なお、新規処理12が移動してきたノード1では、過去、新規処理12がノード1から他のノードに移動する前に、新規処理12を実行している(図16(A)のノード1−1における処理Aの実行に対応)。管理ノード2(図1、図4)は、前記無効化が必要になるキャッシュデータの最終アクセス時刻を、キャッシュ無効の通知として、ノード1のキャッシュ無効化部16(図2)に送る(ステップS13)。
キャッシュ無効化部16(図2)は、ステップS13で受け取った通知(キャッシュ無効の通知)から無効化が必要なデータの最終アクセス時刻を取り出し、同時に、アクセス時刻記録部14(図2)から最終アクセス時刻テーブル141(図2)を参照して、キャッシュ13(図2)に格納された各データの最終アクセス時刻と比較する。
その結果、キャッシュ無効化部16(図2)は、キャッシュ13(図2)に格納されたデータのうち最終アクセス時間について前記無効化が必要なデータの最終アクセス時刻以前であるものを無効化する(ステップS14)。
キャッシュ無効化部16(図2)は、ステップS14の無効化処理が完了すると、一時的に停止していた新規処理12(図2)の実行を開始する。新規処理12は実行が開始されることで、処理11に変化する。
以上のステップS11からS15までの処理を行い、ノード1で新規処理12の実行を検出し、ノード1から、処理実行開始の通知が、管理ノード2に送られる。その後、管理ノード2からのキャッシュ無効化通知を受け取り、キャッシュ13(図2)におけるデータの無効化が完了した後に、新規処理12(図2)の実行を開始するための動作が完了する。
次に、図1、図4、図5、図6、図8を参照して、図7のステップS13における、管理ノード2の更に詳細な手順について説明する。
管理ノード2の実行ノード変更検出部24(図4)は、ノード1の処理開始通知部15(図2)から、新規処理12の実行開始の通知を受け取る(ステップS201)。
管理ノード2の実行ノード変更検出部24(図4)は、ステップS201で受け取った通知の送信元となった新規処理12(図2)に対応した実行ノードの情報を、実行ノード記録部21(図4)に対して、問い合わせる。
管理ノード2の実行ノード記録部21(図4)は、実行ノードテーブル211(図4)に格納された、新規処理12の実行ノード識別子2112(図5)を返す。
管理ノード2の実行ノード変更検出部24(図4)は、実行ノード記録部21(図4)から返されたノード識別子と、ノード1の処理開始通知部15(図2)から通知された新規処理12(図2)の新規実行ノードを比較する(ステップS202)。
ノード1の処理開始通知部15(図2)から通知された新規処理12の新規実行ノードが、前回起動した時の実行ノードと同一である場合(ステップS203のYes判定)、新規実行ノードであるノード1のキャッシュ13(図2)の無効化は不要であるため、管理ノード2の実行ノード変更検出部24(図4)は、新規実行ノードのキャッシュ無効化部16(図2)に対して、キャッシュ無効化が不要であることを表す通知を送信し、処理を終了する(ステップS204)。
新規処理12の新規実行ノードが、前回起動時の実行ノードと異なる場合(ステップS203のNo判定)、管理ノード2の実行ノード変更検出部24(図4)は、処理移動時刻記録部22に格納されたノード実行終了時刻テーブル221(図4)の更新を指示する。具体的には、管理ノード2の実行ノード変更検出部24(図4)は、ステップS202で取得した、新規処理の実行ノード識別子2112(図5)を用いて、新規処理12(図2)に対する、それまでの実行ノードのノード実行終了時刻2212(図6)を、ステップS201で通知を受け取った時点の時刻、または現在の時刻で更新する(ステップS205)。
管理ノード2の実行ノード変更検出部24(図4)は、実行ノード記録部21(図4)に対して、新規処理12の実行ノードを、新規実行ノードに更新するように指示する。管理ノード2の実行ノード記録部21は、実行ノードテーブル211(図4)における、新規処理12に対応した実行ノード識別子2112(図5)について、新規実行ノードを指し示す識別子で更新する(ステップS206)。
管理ノード2の実行ノード変更検出部24(図4)は、処理配置部23(図4)に対して、新規処理12(図2)とデータを共有する処理11(図2)について、実行ノードを新規処理12の新規実行ノードに変更するように指示する(ステップS207)。
ステップS207では、新規処理12(図2)とデータを共有する処理11(図2)に関する処理を行うが、新規処理12とデータを共有する処理11が存在しない場合は、ステップS207の処理は不要である。
管理ノード2の実行ノード変更検出部24(図4)は、処理移動時刻記録部22(図4)に対して新規処理12(図2)について、新規実行ノードにおけるノード実行終了時刻2212(図6)の取得を要求する。
管理ノード2の処理移動時刻記録部22(図4)は、実行ノード変更検出部24(図4)に対して、ノード実行終了時刻テーブル221(図4)に格納された前記ノード実行終了時刻2212(図6)を返す(S208)。
新規処理12の新規実行ノードにおけるノード実行終了時刻2212(図6)を調べた結果、新規実行ノードでの実行履歴が存在しない場合(S209のYes判定)、新規実行ノードであるノード1のキャッシュ13の無効化は不要である。このため、実行ノード変更検出部24(図4)は、新規実行ノードのキャッシュ無効化部16(図2)に対してキャッシュ無効化が不要であることを表す通知を送信して処理を終了する(ステップS210)。
新規処理12の新規実行ノードにおけるノード実行終了時刻2212(図6)が通常の時刻であり、新規実行ノードでの実行履歴が存在する場合(S209のNo判定)、管理ノード2の実行ノード変更検出部24(図4)は、新規実行ノードのキャッシュ無効化部16(図2)に対して、ステップS208で取得したノード実行終了時刻2212(図6)以前の最終アクセス時刻を持つキャッシュ13(図2)のデータが無効であることを通知して、処理を終了する(ステップS211)。なお、ステップS209において、新規処理12が新規実行ノードで初めて実行するものでない(実行履歴が存在する)場合の新規実行ノードは、図16(B)及び図17において、時刻T1で処理Aがノード1−2から戻ったノード1−1に対応する。
以上のステップS201からS211までの処理を行い、図7のステップS13における、管理ノード2の更に詳細な動作が完了する。ステップS205からS208までの動作は、任意の順序で行ってよい。また、ステップS204、及びS210では、新規実行ノードに対して、キャッシュ13(図2)のデータの無効化が不要であることを通知しているが、前記通知の代わりに、ステップS211と同様に、指定時刻以前の最終アクセス時刻を持つデータの無効を通知し、前記指定時刻として、キャッシュ13(図2)に格納されたデータの最終アクセス時刻よりも前の時刻を指定することで、データが無効化されないようにしてもよい。
<実施形態の作用効果>
上記実施形態によれば、一のノードで実行されていた処理が前記一のノードから他のノードに移動したときの時刻情報を記録しておき、移動元の一のノードは、前記一のノードのキャッシュに保持されているデータのうち、前記処理が、他のノードへ移動する前に、前記一のノード上で最後にアクセスした時刻(最終アクセス時刻)が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータを選択的に無効化する構成としたことで、キャッシュに対して一貫性維持のために行われる無効化のデータ量を、削減し、キャッシュ無効化の影響によるキャッシュ性能、アクセス性能の低下を程度を低減可能としている。また上記実施形態によれば、ノード間でストレージの論理アドレスのマッピングが異なる場合であっても、キャッシュに対して一貫性維持のために行われる無効化を、キャッシュ全体に対して行うことを要しなくし、無効化対象のデータ量を削減し、キャッシュ無効化の影響によるキャッシュ性能、アクセス性能の低下の程度を低減可能としている。
本実施形態によれば、共有ストレージへのアクセスを行うノードを、一時には一つ(単一ノード)とすることで、あるノードでキャッシュの書き込み(更新)を行う毎に他のノードでキャッシュの無効化を行うことは不要とされる。
さらに、本実施形態によれば、移動元の一のノードにおいてキャッシュの一貫性維持のための無効化を実行するタイミングを可能なかぎり遅らせるようにしてもよい。例えば前記移動元の一のノードから他のノードに移動した処理が、再び前記移動元の一のノードに戻り、前記移動元の一のノードで実行されるまで、前記移動元の一のノードのキャッシュの一貫性維持のための無効化を遅延させるようにしてもよい。この場合、前記移動元の一のノードのキャッシュにおいて無効化の対象となるデータは、前記処理が前記移動元の一のノードから他のノードに移動後もアクセスされなかった参照頻度が相対的に低いデータとなる。このように、キャッシュの一貫性維持のための無効化を実行するタイミングを可能なかぎり遅らせることで、無効化の対象となるデータを絞り込み、無効化の対象のデータ量をさらに削減することができる。
そして、上記実施形態によれば、データを共有する複数の処理が同一のノードで実行されるように、処理を当該ノードに移動させることで、キャッシュの一貫性維持のための無効化の頻度を削減している。
<実施例>
上記した実施形態の一具体例(実施例)として、図2、図4、図7乃至図14を参照して、データをアクセスする処理を実行するノードの変更に伴うキャッシュの無効化動作の例を説明する。本実施例では、前記した処理(図2の処理11)を、仮想マシン(VM)とし、VMのノード間マイグレーションを例に説明する。共有ストレージ33にはVMのイメージ(仮想マシンの仮想環境のディスクイメージ)を格納する。
図9は、本実施例における、全体のシステム構成を模式的に表した図である。VMを実行するノードは、ノードA311、ノードB312の2つであり、VM−A351、VM−B352、及びVM−C353の3つのVMを実行する。なお、VMはサーバ等の計算機(ノード)に実装されたハイパーバイザ等の仮想化機構の上に実装されるが、図9では図面作成の都合で、各VMは、ノードA又はノードBの外部に配置されている。
図9において、これら3つのVMは、初期状態では、過去にノードB312では、一度も実行されたことがないものとする。共有ストレージ33には、VM−A351、VM−B352、及びVM−C353の3つのVMのイメージが格納されている。共有ストレージ33において、VM−A351とVM−C353が一部のデータを共有する以外は、3つのVMが共有ストレージ33に格納するデータ(VMのイメージ)は非共有であるものとする。ノードA311、ノードB312は、図2に示した構成とされ、キャッシュ13、アクセス時刻記録部14、処理開始通知部15、キャッシュ無効化部16を備えている。管理ノード32は、図4の管理ノード2の構成と同様に、実行ノード変更検出部24、実行ノード記録部21、処理移動時刻記録部22、処理配置部23、データ無効通知部25を備えている。
初期状態から、VM−A351について、2013/04/01の日付変更時に、実行ノードを、ノードA311からノードB312に変更する(VM−A351はノードA311からノードB312に移動)。このとき、ノードB312において、新たに起動されたVM−A351が、図2の新規処理12に相当し、ノードB312の処理開始通知部15(図2)によって、ノードB312における、VM−A351の起動が、管理ノード32に通知される。
管理ノード32の実行ノード変更検出部24(図4)では、前記通知(ノードB312におけるVM−A351の起動)を受け取り、ノードB312のキャッシュ13に格納されたデータについて、無効化の必要性を判定する。
図10は、本実施例の初期状態における実行ノードテーブル41(図5の実行ノードテーブル211に対応)を表している。図11は、本実施例の初期状態におけるノード実行終了時刻テーブル51(図6のノード実行終了時刻テーブル221に対応する)を表している。
ノード実行終了時刻テーブル51のノードB実行終了時刻513において、VM−A351、VM−B352、及びVM−C353の3つのVMのノード実行終了時刻の値(1970/01/01 00:00:00.000)は、これら3つのVMが過去に一度も、ノードB312で実行されたことがないことを表す値である。
VM−A351は、ノードB312で起動されるため、図10の実行ノードテーブル41に格納されたVM−A351の実行ノードと異なる。そのため、管理ノード32の実行ノード変更検出部24(図4)は、図8に示された手順に従い、図11のノード実行終了時刻テーブル51における、VM−A351のノードA311での実行終了時刻を更新する。
さらに、管理ノード32の実行ノード変更検出部24(図4)は、実行ノード記録部21の実行ノードテーブル41(図10)における、VM−A351の実行ノードを、ノードB312に更新する。同時に、VM−A351とデータを共有するVM−C353について、管理ノード32の処理配置部23(図4)によって、実行ノードが、ノードB312に更新される。
VM−A351、及びVM−C353について、ノード実行終了時刻テーブル51(図11)における、ノードB実行終了時刻513を参照すると、いずれのVMについても、過去にノードB312で実行されたことがないため、管理ノード32は、データ無効通知部25(図4)を通して、ノードB312に対して、キャッシュのデータの無効化が不要であることを通知する。ノードB312のキャッシュ無効化部16(図2)は、キャッシュ無効化を行わず、実行を待機していた新規処理であるVM−A351、及びVM−C353の実行を開始する。
さらに、実施例では、2013/04/02の日付変更時に、VM−A351について、再び実行ノードを、ノードA311に変更する。
このとき、ノードA311において、新たに起動されたVM−A351が、図2の新規処理12に相当し、ノードA311の処理開始通知部15(図2)によって、ノードA311におけるVM−A351の起動が管理ノード32に通知される。
管理ノード32の実行ノード変更検出部24では、ノードA311からの通知(ノードA311における新規処理12(VM−A351)の起動)を受け取り、ノードA311のキャッシュ13(図2)に格納されたデータについて、キャッシュ無効化の要否を判定する。
図12は、管理ノード32の実行ノードテーブル41(図5の211に対応)に対して、VM−A351がノードB312で起動された際に更新を行った後、つまり、VM−A351が、2013/04/02の日付変更時に、再び、ノードA311で起動された時点での実行ノードテーブル61の内容を表している。
図13は、ノード実行終了時刻テーブル51(図11)に対して、VM−A351がノードB312で起動された際に、更新を行った後のノード実行終了時刻テーブル71の内容を表している。
VM−A351は、ノードA311で起動されるため、実行ノードテーブル61(図12)に格納されているVM−A351の実行ノードと異なる。このため、管理ノード32の実行ノード変更検出部24は、図8に示された手順に従い、ノード実行終了時刻テーブル71(図13)における、VM−A351のノードB312における実行終了時刻を更新する。
さらに、管理ノード32は、実行ノードテーブル61における、VM−A351の実行ノードをノードA311に更新する。同時に、VM−A351とデータを共有するVM−C353について、管理ノード32の処理配置部23(図4)によって、実行ノードがノードA311に、更新される。
VM−A351、及びVM−C353について、ノード実行終了時刻テーブル71(図13)におけるノードA実行終了時刻712を参照すると、VM−A351、及びVM−C353とも、2013/04/01の日付変更時まで、ノードA311で実行されている。このため、ノードA311のキャッシュ13(図2)において、前記ノードA実行終了時刻(2013/04/01の日付変更時)以前の最終アクセス時刻を持つデータの無効化が必要である。
管理ノード32の実行ノード変更検出部24は、データ無効通知部25(図4)を通して、ノードA311に対して、前記ノードA実行終了時刻(2013/04/01 00:00:00.000)以前の最終アクセス時刻を持つキャッシュデータについて、無効を通知する。
図14は、ノードA311のアクセス時刻記録部14(図2)に格納された、最終アクセス時刻テーブル81の内容を表している(図3(A)の141に対応)。最終アクセス時刻テーブル81には、キャッシュ13(図2)に格納されたデータ(データ識別子811で指定される)の最終アクセス時刻が格納される。なお、データ識別子811はデータを含むページを指し示すページアドレスである(0xはヘキサデシマル表示を表し、8Hexデジット(32ビット)からなる)。ノードA311のキャッシュ無効化部16(図2)は、管理ノード32のデータ無効通知部25(図4)からキャッシュ無効通知を受け取ると、前記通知に格納されたノードA実行終了時刻(2013/04/01 00:00:00.000)と、キャッシュ13(図2)に格納された各データの最終アクセス時刻を比較する。
前記通知に格納されたノードA実行終了時刻は、最初にVM−A351の実行ノードがノードA311からノードB312に変更された時刻(2013/04/01 0:00:00.000)である。ノードA311のキャッシュ13の各データの最終アクセス時刻は、最終アクセス時刻テーブル81(図14)に格納された通りである。最終アクセス時刻812が、前記通知に格納された時刻(2013/04/01 0:00:00.000)以前であるデータ識別子811は、最終アクセス時刻が2013/03/31 23:45:12.876の0x10000000のみである。
つまり、データ識別子811が0x10000000のデータは、VM−A351、及びVM−C353が、以前、ノードA311で実行されていた際に、アクセスされた時点(時期)でのデータであり、それ以降、ノードA311以外のノードで、VM−A351、VM−C353が実行された際に、更新されている可能性を持つ。
ノードA311のキャッシュ無効化部16(図2)は、ノードA311のキャッシュ13(図2)に対して、データ識別子811が0x10000000であるデータのみが無効化されるように指示する。この結果、VMのノード間の移動(inter-VM migration)に伴う、キャッシュ13(図2)において、無効化されるデータ量を削減することができる。
最後に、ノードA311のキャッシュ無効化部16は、新規処理であるVM−A351、及びVM−C353の実行を開始する。
上記実施例では、仮想マシン(VM)のノード間マイグレーションにおけるノードのキャッシュの無効化を説明したが、データのアクセスする処理(図2の処理11)をサーバ等の計算機(例えば同一ノード)に実装されるハイパーバイザ等の仮想化機構上の第1のVMから第2のVMへ移動させる実施例も可能である。この場合、各VM(ノード)に対して、共有ストレージ、キャッシュ、CPU、メモリ、ネットワーク等のリソースはハイパーバイザを介して仮想化される。データのアクセス処理を実行するVMが、第1のVMから第2のVMに変更されると、変更先の第2のVMでは、前記第2のVMの仮想化されたキャッシュに保持されているデータのうち、前記第2のVMで最後にアクセスした時刻が、前記アクセス処理を実行するVMを前記第1のVMから前記第2のVMに変更した時刻(無効化の基準時刻)よりも、古いデータを無効化する。すなわち、仮想マシン(VM)をノードとみなし、VMが備える仮想化されたキャッシュをノードのキャッシュ(図2の13)とみなすことで、前記実施形態がそのまま適用される。なお、図2の管理ノード2をVMとして実装してもよいことは勿論である。
上記実施例によれば、共有ストレージのデータを一時的に保持するキャッシュをそれぞれ有する複数のノードのうち、データをアクセスする処理を実行するVM(仮想マシン)が一のノードから他のノードに移動したときの時刻情報を記録しておき、移動元の一のノードのキャッシュに保持されているデータのうち、他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータを、選択的に無効化するようにしたことで、VMのノード間移動による、一貫性維持のためにキャッシュを無効化する頻度、及び、無効化の対象となるデータ量を削減することができ、キャッシュ無効化によるアクセス性能の低下の影響を低減することができる。
なお、上記非特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
1、1−1、1−2、101−1、101−2 ノード
2 管理ノード
3 共有ストレージ
4 ネットワーク
11 処理
12 新規処理
13、13−1、13−2 キャッシュ
14 アクセス時刻記録部
141 最終アクセス時刻テーブル
1411 データ識別子
1412 最終アクセス時刻
15 処理開始通知部
16 キャッシュ無効化部
17 制御部
21 実行ノード記録部
211 実行ノードテーブル
2111 処理識別子
2112 実行ノード識別子
22 処理移動時刻記録部
221 ノード実行終了時刻テーブル
2211 処理識別子
2212 ノード実行終了時刻
23 処理配置部
24 実行ノード変更検出部
25 データ無効通知部
311 ノードA
312 ノードB
32 管理ノード
33 共有ストレージ
34 ネットワーク
351 VM−A
352 VM−B
353 VM−C
41 実行ノードテーブル(初期状態)
411 処理識別子
412 実行ノード識別子
51 ノード実行終了時刻テーブル(初期状態)
511 処理識別子
512 ノードA実行終了時刻
513 ノードB実行終了時刻
61 実行ノードテーブル(実行ノード変更後)
611 処理識別子
612 実行ノード識別子
71 ノード実行終了時刻テーブル(実行ノード変更後)
711 処理識別子
712 ノードA実行終了時刻
713 ノードB実行終了時刻
81 最終アクセス時刻テーブル
811 データ識別子
812 最終アクセス時刻

Claims (26)

  1. 複数のノードと、
    前記複数のノードで共有されるストレージと、
    を備え、
    前記各ノードは、前記ストレージのデータを一時的に保持するキャッシュを備え、
    データをアクセスする処理が一のノードから他のノードに移動したときの時刻情報を記録しておき、
    前記処理が前記他のノードへ移動した後の前記一のノードでは、前記一のノードの前記キャッシュに保持されているデータのうち、前記他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータを選択的に無効化する、ことを特徴とするストレージシステム。
  2. 前記一のノードは、前記無効化を、前記一のノードから前記他のノードに移動した前記処理が、再び、前記一のノードに戻る時刻以降の所定のタイミングで行う、ことを特徴とする請求項1に記載のストレージシステム。
  3. 再び前記一のノードに戻った前記処理により、前記一のノードにおいて、前記キャッシュに保持されているデータのうち、前記他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータへのアクセス要求が行われることを契機として、前記無効化を行う、ことを特徴とする請求項1又は2に記載のストレージシステム。
  4. 前記一のノードにおいて、前記処理が前記一のノードから前記他のノードに移動した後に、前記他のノードへ移動した前記処理以外の処理によってアクセスされた前記一のノードの前記キャッシュ上のデータは、前記一のノードの前記キャッシュの前記無効化の対象から外す、ことを特徴とする請求項1乃至3のいずれか1項に記載のストレージシステム。
  5. 前記一のノードにおいて、前記一のノードの前記キャッシュに保持されているデータのうち、前記他のノードへ移動した前記処理以外の処理によって最後にアクセスされた時刻が、前記他のノードへ移動した前記処理の移動時刻よりも古いデータも併せて無効化する、ことを特徴とする請求項1乃至4のいずれか1項に記載のストレージシステム。
  6. 前記ストレージのデータへのアクセスは、一時には、単一のノードから行われ、前記単一のノードにおけるキャッシュへの書き込みに対して、他のノードでのキャッシュの無効化を不要としている、ことを特徴とする請求項1乃至5のいずれか1項に記載のストレージシステム。
  7. データを共有する第1の処理と第2の処理に関して、前記第1の処理を実行するノードが前記第2の処理を実行するノードと異なる場合に、前記第1又は第2の処理の一方をノード間で移動させ、前記第1及び第2の処理が同一のノードで実行されるようにする、ことを特徴とする請求項1乃至6のいずれか1項に記載のストレージシステム。
  8. 前記ノードにおいて、データのアクセス処理の実行開始を管理部に通知する通知部を備え、
    前記管理部は、
    データをアクセスする処理を実行するノードの変更を検出する実行ノード変更検出部と、
    前記処理を実行するノードの情報を記録する実行ノード記録部と、
    前記処理を実行するノード上で前記データをアクセスする前記処理が最後に実行された時刻を記録する時刻記録部と、
    データを共有する複数のアクセス処理が、同一のノードで順次実行されるように処理を配置する処理配置部と、
    前記ノードに対してキャッシュに格納されたデータの無効を通知する無効通知部と、
    を備え、
    前記無効通知部は、前記アクセス処理を実行するノードが変更された時刻を、前記ノ−ドに通知する、ことを特徴とする請求項1乃至7のいずれか1項に記載のストレージシステム。
  9. 前記ノードが仮想化機構を備え、前記アクセス処理を前記仮想化機構上の仮想マシンで実行し、
    データのアクセス処理を実行するノードの変更は、前記仮想マシンのノード間の移動で実現される、ことを特徴とする請求項1乃至8のいずれか1項に記載のストレージシステム。
  10. 複数のノード装置間で共有するストレージのデータを一時的に保持するキャッシュを備えたノード装置であって、
    前記キャッシュに保持されるデータに対するアクセスが行われる毎に、アクセス時刻を記録するアクセス時刻記録部と、
    前記キャッシュに保持されているデータのうち、前記アクセス時刻記録部で記録されたデータの最終アクセス時刻と、入力した無効化の基準時刻と、を比較し、前記最終アクセス時刻が前記無効化の基準時刻以前であるデータを選択的に無効化するキャッシュ無効化部と、
    を備えた、ことを特徴とするノード装置。
  11. 前記無効化の基準時刻が、前記ノード装置を移動元として、データをアクセスする処理が、前記ノード装置から他のノード装置に移動したときの時刻である、ことを特徴とする請求項10記載のノード装置。
  12. 前記キャッシュ無効化部は、前記一のノードから前記他のノードに移動した前記処理が、再び、前記一のノードに戻る時刻以降のタイミングで、前記最終アクセス時刻が前記無効化の基準時刻以前であるデータを選択的に無効化する、ことを特徴とする請求項11に記載のノード装置。
  13. 前記キャッシュ無効化部は、再び前記一のノードに戻った前記処理により、前記一のノードにおいて、前記キャッシュに保持されているデータのうち、前記他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータへのアクセス要求が行われることを契機として、前記データの選択的な無効化を行う、ことを特徴とする請求項11又は12に記載のノード装置。
  14. 複数ノード間で共有するストレージのデータを一時的に保持するキャッシュを備えた各ノードに接続され、データのアクセス処理の実行開始の通知を前記ノードから受ける管理装置であって、
    データをアクセスする処理の実行するノードの変更を検出する実行ノード変更検出部と、
    前記処理を実行するノードの情報を記録する実行ノード記録部と、
    前記処理を実行するノードで、前記データをアクセスする前記処理が最後に実行された時刻を記録する時刻記録部と、
    データを共有する複数のアクセス処理が、同一のノードで順次実行されるように処理を配置する処理配置部と、
    前記ノードに対して前記ノードのキャッシュに格納されたデータの無効を通知する無効通知部と、
    を備え、
    前記無効通知部は、前記アクセス処理を実行するノードが変更された時刻を、前記ノ−ドに通知する、ことを特徴とする管理装置。
  15. 複数のノードで共有されるストレージのデータを一時的に保持するキャッシュをそれぞれ有する複数のノードのうち、データをアクセスする処理が一のノードから他のノードに移動したときの時刻情報を記録しておき、
    前記処理が移動した後の移動元の前記一のノードでは、前記一のノードの前記キャッシュに保持されているデータのうち、前記他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータの選択的な無効化を所定のタイミング又は契機で行う、ことを特徴とするキャッシュの制御方法。
  16. 前記一のノードから前記他のノードに移動した前記処理が、再び、前記一のノードに戻る時刻以降のタイミングで前記無効化を行う、ことを特徴とする請求項15に記載のキャッシュの制御方法。
  17. 再び前記一のノードに戻った前記処理により、前記一のノードにおいて、前記キャッシュに保持されているデータのうち、前記他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータへのアクセス要求が行われることを契機として、前記無効化を行う、ことを特徴とする請求項15又は16に記載のキャッシュの制御方法。
  18. 前記一のノードにおいて、前記処理が前記一のノードから前記他のノードに移動した後に、前記他のノードへ移動した前記処理以外の処理によってアクセスされた前記一のノードの前記キャッシュ上のデータを、前記一のノードの前記キャッシュの前記無効化の対象から外す、ことを特徴とする請求項15乃至17のいずれか1項に記載のキャッシュの制御方法。
  19. 前記一のノードにおいて、前記一のノードの前記キャッシュに保持されているデータのうち、前記他のノードへ移動した前記処理以外の処理によって最後にアクセスされた時刻が、前記他のノードへ移動した前記処理の移動時刻よりも古いデータも併せて無効化する、ことを特徴とする請求項15乃至18のいずれか1項に記載のキャッシュの制御方法。
  20. 前記ストレージのデータへのアクセスは、一時には、単一のノードから行われ、前記単一のノードにおけるキャッシュへの書き込みに対して、他のノードでのキャッシュの無効化を不要としている、ことを特徴とする請求項15乃至19のいずれか1項に記載のキャッシュの制御方法。
  21. データを共有する第1の処理と第2の処理に関して、前記第1の処理を実行するノードが前記第2の処理を実行するノードと異なる場合に、前記第1又は第2の処理の一方をノード間で移動させ、前記第1及び第2の処理が同一のノードで実行されるようにする、ことを特徴とする請求項15乃至20のいずれか1項に記載のキャッシュの制御方法。
  22. 前記ノードが仮想化機構を備え、前記アクセス処理を前記仮想化機構上の仮想マシンで実行し、
    前記処理の移動は、前記仮想マシンのノード間の移動で実現される、ことを特徴とする請求項15乃至21のいずれか1項に記載のキャッシュの制御方法。
  23. 複数のノード装置間で共有するストレージのデータを一時的に保持するキャッシュを備えたノード装置を構成するコンピュータに、
    前記キャッシュに保持されるデータに対するアクセスが行われる毎にアクセス時刻を記録するアクセス時刻記録処理と、
    前記キャッシュに保持されているデータのうち、前記アクセス時刻記録部で記録されたデータの最終アクセス時刻と、入力した無効化の基準時刻とを比較し、前記最終アクセス時刻が、前記基準時刻以前であるデータの無効化を、前記データがアクセスされる前の所定のタイミング又は契機で行うキャッシュ無効化処理と、
    を実行させるプログラム。
  24. 前記無効化の基準時刻が、前記ノード装置を移動元として、データをアクセスする処理が前記ノード装置から他のノード装置に移動した時刻である、ことを特徴とする請求項23記載のプログラム。
  25. 前記キャッシュ無効化処理は、前記一のノードから前記他のノードに移動した前記処理が、再び、前記一のノードに戻る時刻以降のタイミングで、前記無効化を行う、ことを特徴とする請求項24に記載のプログラム。
  26. 前記キャッシュ無効化処理は、再び前記一のノードに戻った前記処理により、前記一のノードにおいて、前記キャッシュに保持されているデータのうち、前記他のノードへ移動する前の前記処理が前記一のノード上で最後にアクセスした時刻が、前記処理が前記一のノードから前記他のノードへ移動した時刻よりも古いデータへのアクセス要求が行われることを契機として、前記無効化を行う、ことを特徴とする請求項24又は25に記載のプログラム。
JP2015539446A 2013-09-30 2014-09-30 ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム Active JP6337902B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013204914 2013-09-30
JP2013204914 2013-09-30
PCT/JP2014/075990 WO2015046552A1 (ja) 2013-09-30 2014-09-30 ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム

Publications (2)

Publication Number Publication Date
JPWO2015046552A1 JPWO2015046552A1 (ja) 2017-03-09
JP6337902B2 true JP6337902B2 (ja) 2018-06-06

Family

ID=52743673

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015539446A Active JP6337902B2 (ja) 2013-09-30 2014-09-30 ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム

Country Status (3)

Country Link
US (1) US10452300B2 (ja)
JP (1) JP6337902B2 (ja)
WO (1) WO2015046552A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10102147B1 (en) * 2016-06-21 2018-10-16 EMC IP Holding Company LLC Phased based distributed LRU for shared cache systems
US10606625B1 (en) 2016-09-16 2020-03-31 Google Llc Hot growing a cloud hosted block device
US10452544B1 (en) * 2017-09-27 2019-10-22 EMC IP Holding Company LLC Using persistent memory technology as a host-side storage tier for clustered/distributed file systems, managed by host-side tier
US11210263B1 (en) * 2017-09-27 2021-12-28 EMC IP Holding Company LLC Using persistent memory technology as a host-side storage tier for clustered/distributed file systems, managed by cluster file system
CN109725825B (zh) 2017-10-27 2022-03-11 伊姆西Ip控股有限责任公司 用于管理缓存的方法、设备和计算机程序产品
US10503543B1 (en) 2019-02-04 2019-12-10 Cohesity, Inc. Hosting virtual machines on a secondary storage system
US11169927B2 (en) * 2019-11-22 2021-11-09 EMC IP Holding Company LLC Efficient cache management
US11656982B2 (en) * 2021-01-15 2023-05-23 Nutanix, Inc. Just-in-time virtual per-VM swap space
US20220269522A1 (en) * 2021-02-25 2022-08-25 Red Hat, Inc. Memory over-commit support for live migration of virtual machines

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01197858A (ja) 1988-02-02 1989-08-09 Matsushita Electric Ind Co Ltd 情報処理制御装置
US6601144B1 (en) * 2000-10-26 2003-07-29 International Business Machines Corporation Dynamic cache management in a symmetric multiprocessor system via snoop operation sequence analysis
JP2010015446A (ja) * 2008-07-04 2010-01-21 Hitachi Ltd ストレージ装置及び電源の制御方法
GB2481232A (en) * 2010-06-16 2011-12-21 Advanced Risc Mach Ltd Cache for a multiprocessor system which can treat a local access operation as a shared access operation
US9055119B2 (en) * 2013-03-26 2015-06-09 Vmware, Inc. Method and system for VM-granular SSD/FLASH cache live migration

Also Published As

Publication number Publication date
WO2015046552A1 (ja) 2015-04-02
US20160266844A1 (en) 2016-09-15
US10452300B2 (en) 2019-10-22
JPWO2015046552A1 (ja) 2017-03-09

Similar Documents

Publication Publication Date Title
JP6337902B2 (ja) ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム
US10649853B2 (en) Tracking modifications to a virtual machine image that occur during backup of the virtual machine
US9058195B2 (en) Virtual machines failover
US10223026B2 (en) 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
US10698829B2 (en) Direct host-to-host transfer for local cache in virtualized systems wherein hosting history stores previous hosts that serve as currently-designated host for said data object prior to migration of said data object, and said hosting history is checked during said migration
US20080235477A1 (en) Coherent data mover
US11698868B2 (en) Logging pages accessed from I/O devices
US10140212B2 (en) 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
WO2019061352A1 (zh) 数据加载方法及装置
US9519502B2 (en) Virtual machine backup
US10339009B2 (en) System for flagging data modification during a virtual machine backup
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
EP3053040B1 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
US20230409472A1 (en) Snapshotting Pending Memory Writes Using Non-Volatile Memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170801

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: 20180410

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180423

R150 Certificate of patent or registration of utility model

Ref document number: 6337902

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150