WO2016181562A1 - ストレージシステム、及び、記憶制御方法 - Google Patents

ストレージシステム、及び、記憶制御方法 Download PDF

Info

Publication number
WO2016181562A1
WO2016181562A1 PCT/JP2015/063950 JP2015063950W WO2016181562A1 WO 2016181562 A1 WO2016181562 A1 WO 2016181562A1 JP 2015063950 W JP2015063950 W JP 2015063950W WO 2016181562 A1 WO2016181562 A1 WO 2016181562A1
Authority
WO
WIPO (PCT)
Prior art keywords
partition
cache memory
processor
segment
data
Prior art date
Application number
PCT/JP2015/063950
Other languages
English (en)
French (fr)
Inventor
良介 達見
晋太郎 伊藤
匡邦 揚妻
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US15/552,512 priority Critical patent/US11080192B2/en
Priority to PCT/JP2015/063950 priority patent/WO2016181562A1/ja
Priority to JP2017517576A priority patent/JP6353981B2/ja
Publication of WO2016181562A1 publication Critical patent/WO2016181562A1/ja

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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0871Allocation or management of cache space
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)

Abstract

ストレージシステムにおいて、第1のホストインタフェースから第1のキャッシュメモリに対するレイテンシが、第1のホストインタフェースから第2のキャッシュメモリに対するレイテンシよりも小さく、第2のホストインタフェースから第2のキャッシュメモリに対するレイテンシが、第2のホストインタフェースから第1のキャッシュメモリに対するレイテンシよりも小さい。第1のプロセッサと対応付けられており第1のプロセッサにより処理されるI/O要求に関するデータが第1のプロセッサにより一時的に格納される第1の区画と、第2のプロセッサと対応付けられており第2のプロセッサにより処理されるI/O要求に関するデータが第2のプロセッサにより一時的に格納される第2の区画とを有する。プロセッサは、第1のキャッシュメモリの第1の区画のサイズと、第2のキャッシュメモリの第1の区画のサイズとを独立に制御し、第1のキャッシュメモリの第2の区画のサイズと、第2のキャッシュメモリの第2の区画のサイズとを独立に制御する。

Description

ストレージシステム、及び、記憶制御方法
 本発明は、概して、記憶制御に関し、例えば、ストレージシステムの技術に関する。
 ローカルメモリ及び複数のMP(Micro Processor)を含むMPPK(MP Package)と、共有メモリ及びキャッシュメモリを含むCMPKとを有し、ホスト計算機から記憶装置に対するデータの入出力を制御する計算機システムに関し、特許文献1には、次の技術が開示されている。MPの制御権限を他のMPに移行し、そして、MPがデータ入出力処理を行う上で必要な制御情報を、共有メモリからMPのローカルメモリに移動させても、複数のMP間で、データの入出力制御に必要な制御機能の割り当てに不均衡が生じないように、MPから必要な制御機能を解放し、解放した制御機能を他のMPに割り当てる。
特表2012―533781号公報
 複数のコントローラのそれぞれがキャッシュメモリを有し、コントローラ同士が接続されているストレージシステムにおいて、或るコントローラがI/O(Input/Output)要求を受領し、そのI/O要求にヒットするキャッシュデータが、或るコントローラとは別のコントローラのキャッシュメモリに存在する場合、別のコントローラから或るコントローラへキャッシュデータを転送する必要がある。この処理は、ストレージシステムのI/O性能の低下の要因となり得る。
 そこで本発明の目的は、複数のコントローラのそれぞれがキャッシュメモリを有し、コントローラ同士が接続されているストレージシステムにおいて、コントローラ間におけるキャッシュデータの転送を減らすことにある。また、本発明の別の目的は、当該ストレージシステムにおいて、キャッシュメモリの利用効率を向上させ、I/O性能を向上させることにある。
 本発明の一実施形態に係るストレージシステムは、第1及び第2のプロセッサと、第1及び第2のキャッシュメモリと、ホスト計算機と双方向通信可能な第1及び第2のホストインタフェースと、記憶ドライブとを備える。
 第1のホストインタフェースから第1のキャッシュメモリに対するレイテンシは、第1のホストインタフェースから前記第2のキャッシュメモリに対するレイテンシよりも小さい。
 第2のホストインタフェースから第2のキャッシュメモリに対するレイテンシは、第2のホストインタフェースから前記第1のキャッシュメモリに対するレイテンシよりも小さい。
 第1及び第2のキャッシュメモリの各々は、第1のプロセッサと対応付けられており第1のプロセッサにより処理されるI/O要求に関するデータが第1のプロセッサにより一時的に格納される第1の区画と、第2のプロセッサと対応付けられており第2のプロセッサにより処理されるI/O要求に関するデータが第2のプロセッサにより一時的に格納される第2の区画とを有する。
 第1及び第2のプロセッサの内の少なくとも1つは、第1のキャッシュメモリの第1の区画のサイズと、第2のキャッシュメモリの第1の区画のサイズとを独立に制御し、第1のキャッシュメモリの第2の区画のサイズと、第2のキャッシュメモリの第2の区画のサイズとを独立に制御する。
 本発明によれば、複数のコントローラのそれぞれがキャッシュメモリを有し、コントローラ同士が接続されているストレージシステムにおいて、コントローラ間におけるキャッシュデータの転送を減らすことができる。また、本発明によれば、当該ストレージシステムにおいて、キャッシュメモリの利用効率を向上させ、I/O性能を向上させることができる。
第1の実施形態に係る計算機システムの構成例を示す。 第1の実施形態の概要を示す。 メモリの有する各領域の例を示す。 プログラム領域に格納されるプログラムの例を示す。 共有メモリ領域及びローカルメモリ領域に格納される情報の例を示す。 ドライブテーブルの構成例を示す。 論理VOL(Volume)テーブルの構成例を示す。 セグメントテーブルの構成例を示す。 連結キューの構成例を示す。 属性テーブルの構成例を示す。 キャッシュディレクトリの構成例を示す。 区画テーブルの構成例を示す。 状況管理テーブルの構成例を示す。 共有フリーテーブルの構成例を示す。 I/Oコマンド管理テーブルの構成例を示す。 I/Oコマンド振り分けプログラムの処理例を示すフローチャートである。 I/O処理プログラムの処理例を示すフローチャートである。 リード処理例を示すフローチャートである。 ライト処理例を示すフローチャートである。 セグメント管理プログラムの処理例を示すフローチャートである。 目標区画決定プログラムの処理例を示すフローチャートである。 区画変更プログラムの処理例を示すフローチャートである。 区画縮小プログラムの処理例を示すフローチャートである。 区画拡大プログラムの処理例を示すフローチャートである。 第2の実施形態に係る計算機システムの構成例を示す。
 以下、一実施例を説明する。以下の説明では、「xxxテーブル」、「xxxキュー」又は「xxxリスト」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」、「xxxキュー」又は「xxxリスト」を「xxx情報」と呼ぶことができる。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び通信インターフェイスデバイスのうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路で行われてもよい。コンピュータプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
 また、以下の説明では、計算機システムに含まれる少なくとも1つの装置を管理する1以上の計算機の集合を「管理システム」と呼ぶことがある。管理計算機が表示用情報を表示する場合は管理計算機が管理システムでよい。また、管理計算機と表示用計算機の組み合わせも管理システムでよい。また、管理処理の高速化や高信頼化のために複数の計算機で管理計算機と同等の処理を実現してもよく、この場合はそれら複数の計算機(表示を表示用計算機が行う場合は表示用計算機も含んでよい)が管理システムでよい。本実施例では、管理計算機が管理システムである。また、管理計算機が情報を表示するとは、管理計算機が有する表示デバイスに情報を表示することであってもよいし、管理計算機(例えばサーバ)に接続された表示用計算機(例えばクライアント)に表示用情報を送信することであってもよい。後者の場合、表示用計算機が有する表示デバイスに表示用情報が表す情報が表示用計算機によって表示される。
 また、以下の説明では、同種の要素を区別して説明する場合には、「xxx11a」、「xxx11b」、「xxx172―1」、「xxx172―2」のように、参照符号を使用し、同種の要素を区別しないで説明する場合には、「xxx11」、「xxx172」のように参照符号のうちの共通番号のみを使用することがある。
 (第1の実施形態)
 図1は、第1の実施形態に係る計算機システム1aの構成例を示す。
 計算機システム1aは、ストレージシステム2aと、ホスト計算機4と、管理計算機30とを備える。ホスト計算機4とストレージシステム2は、外部ネットワーク40を介して双方向通信可能に接続されている。管理計算機30とストレージシステム2aは、管理ネットワーク50を介して双方向通信可能に接続されている。ストレージシステム2a、ホスト計算機4、管理計算機30は、それぞれ複数あってもよい。管理計算機30は、管理システムと呼ばれてもよい。
 ストレージシステム2aは、複数のストレージコントローラ(以下「コントローラ」という)11a、11bを有する。コントローラ11は、マイクロプロセッサ(以下「プロセッサ」という)12と、メモリ13と、ホストI/F14と、ドライブI/F15と、管理I/F16とを有する。これらの要素11乃至16は、内部バス31を介して双方向通信可能に接続されている。これらの要素11乃至16は、それぞれ複数であってよい。
 コントローラ11aと11bとは、コントローラ間パス32を介して双方向通信可能に接続されている。すなわち、コントローラ11aの有するプロセッサ12a、12b又はDMA(Direct Memory Access)回路(不図示)は、コントローラ11aの有するメモリ13aだけでなく、コントローラ間パス32を介して、コントローラ11bの有するメモリ13bにもアクセス可能である。反対に、コントローラ11bの有するプロセッサ12c、12d又はDMA回路(不図示)は、コントローラ11bの有するメモリ13bだけでなく、コントローラ間パス32を介して、コントローラ11aの有するメモリ13aにもアクセス可能である。
 ホストI/F14a(ドライブI/F15a)からメモリ13aに対するレイテンシは、ホストI/F14a(ドライブI/F15a)からメモリ13bに対するレイテンシよりも小さい。また、ホストI/F14b(ドライブI/F15b)からメモリ13bに対するレイテンシは、ホストI/F14b(ドライブI/F15b)からメモリ13aに対するレイテンシよりも小さい。すなわち、ホストI/F14(ドライブI/F15)から同じコントローラ11内のメモリ13に対するレイテンシの方が、そのホストI/F14(ドライブI/F15)からコントローラ間パス32を介して他のコントローラ11内のメモリ13に対するレイテンシよりも小さい。なぜなら、ホストI/F14(ドライブI/F15)からメモリ13までの物理的な距離が短い方が、レイテンシが小さくなるからである。また、他のコントローラ11のメモリ13に対するアクセス速度は、コントローラ間パス32の最大通信速度(最大通信帯域)に制限されるからである。
 プロセッサ12がマルチコアプロセッサの場合、プロセッサ12内の幾つかのコアをグループ化してよい。そして、コントローラ11は、論理的な複数のプロセッサを有してよい。
 ホストI/F14は、コントローラ11を、外部ネットワーク40へ接続するためのI/Fデバイスである。内部パス31がPCIe(PCI-Express)、外部ネットワーク40がSAN(Storage Area Network)の場合、ホストI/F14は、PCIeプロトコルとFibreChannelプロトコルとを変換するアダプタであってよい。
 管理I/F16は、コントローラ11を、管理ネットワーク50へ接続するためのI/Fデバイスである。内部パス31がPCIe、管理ネットワーク50がLAN(Local Area Network)の場合、管理I/F16は、PCIeプロトコルとIPプロトコルとを変換するアダプタであってよい。
 ドライブI/F15は、コントローラ11と、記憶デバイスの一種であるドライブ18とを接続するためのI/Fデバイスである。内部パス31がPCIe、ドライブ18のI/FがFibreChannelプロトコルの場合、ドライブI/F15は、PCIeプロトコルとFibreChannelプロトコルとを変換するアダプタであってよい。
 ストレージシステム2は、ドライブ格納部17を有する。ドライブ格納部17には、複数のドライブ18が格納されてよい。ドライブ18の例は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、テープ型の記憶デバイスである。
 コントローラ11は、1つ以上のドライブ18の記憶領域を用いて、論理VOLを構成してよい。コントローラ11は、複数のドライブ18を用いてRAID(Redundant Array of Independent Disks)グループを構成し、そのRAIDグループを用いて論理VOLを構成してもよい。コントローラ11は、論理VOLを、LU(Logical Unit)として、ホスト計算機4へ提供してよい。コントローラ11は、ホスト計算機4からライト要求を受領すると、そのライト要求によって指定された論理VOLのアドレスに、データをライトする。コントローラ11は、ホスト計算機4からリード要求を受領すると、そのリード要求によって指定された論理VOLのアドレスからデータをリードして、ホスト計算機4へ返す。論理VOL毎に、その論理VOLに対するI/O処理を担当するプロセッサ12が決められてよい。
 図2は、第1の実施形態の概要を示す。
 コントローラ11aは、メモリ13aにキャッシュメモリ領域170―1を有し、コントローラ11bは、メモリ13bにキャッシュメモリ領域170―2を有する。
 キャッシュメモリ領域170は、複数のセグメントから構成される。セグメントは、所定サイズの領域であってよい。キャッシュメモリ領域170は、セグメントの単位で管理及び制御(リード、ライト、消去等)されてよい。
 コントローラ11aにおけるキャッシュメモリ領域170―1は、プロセッサ12aのために確保された区画172―1aと、プロセッサ12bのために確保された区画172―1bと、プロセッサ12cのために確保された区画172―1cと、プロセッサ12dのために確保された区画172―1dと、何れのプロセッサ12のためにも確保されていない区画175―1と、を有してよい。コントローラ11bにおけるキャッシュメモリ領域170―2は、プロセッサ12aのために確保された区画172―2aと、プロセッサ12bのために確保された区画172―2bと、プロセッサ12cのために確保された区画172―2cと、プロセッサ12dのために確保された区画172―2dと、何れのプロセッサのためにも確保されていない区画175―2と、を有してよい。何れのプロセッサ12のためにも確保されていない区画175は「共有フリー区画」と呼ばれてもよい。各区画は、複数のセグメントから構成されてよい。共有フリー区画175のセグメントは「共有フリーセグメント」と呼ばれてもよい。
 ホスト計算機4からリード要求を受領したコントローラ11は、そのリード要求に係るキャッシュデータを、自分のコントローラ11側のメモリ13のキャッシュメモリ領域170に格納する。コントローラ11aが、プロセッサ11a及びプロセッサ11cがI/O処理担当である論理VOLに対するリード要求を、集中的に受領したとする。この場合、コントローラ11a(ホストI/F14a又はドライブI/F15a)は、自分のコントローラ11a側のキャッシュメモリ領域170―1の区画172-1a及び172-1cに、キャッシュデータを格納する。また、コントローラ11bが、プロセッサ11b及びプロセッサ11dがI/O処理担当である論理VOLに対するリード要求を、集中的に受領したとする。この場合、コントローラ11b(ホストI/F14b又はドライブI/F15b)は、自分のコントローラ11b側のキャッシュメモリ領域170―2の区画172―2b及び172―2dに、キャッシュデータを格納する。仮に、各区画172のサイズが固定的であったとすると、コントローラ11aに対する集中的なリード要求に対して区画172-1b及び172―1dのキャッシュデータは全く貢献せず、コントローラ11bに対する集中的なリード要求に対して区画172-2a及び172―2cのキャッシュデータは全く貢献しない。すなわち、各コントローラ11のキャッシュメモリ領域170の利用効率が悪い。
 そこで本実施形態では、各コントローラ11は、それぞれのキャッシュメモリ領域170における各区画172のサイズを独立に制御及び管理する。また、各コントローラ11は、それぞれのキャッシュメモリ領域170における各区画172のサイズを動的に変更可能にする。例えば、上述のコントローラ11aに対する集中的なリード要求に対して、コントローラ11aのキャッシュメモリ領域170―1において、区画172―1b及び172―1dのサイズを縮小し、区画172-1a及び172―1cのサイズを拡大する。そして、上述のコントローラ11bに対する集中的なリード要求に対して、コントローラ11bのキャッシュメモリ領域170―2において、区画172-2a及び172―2cのサイズを縮小し、区画172―2b及び172―2dのサイズを拡大する。
 これにより、各コントローラ11のキャッシュメモリ領域170の利用効率が向上する。そして、キャッシュメモリ領域170の利用効率の向上により、リード要求を受領したコントローラ11におけるキャッシュヒット率も向上し得る。また、コントローラ11は、自分のコントローラ11側のキャッシュメモリ領域170にキャッシュデータを格納するので、コントローラ間パス32aを介するキャッシュデータの転送が発生しない(又は減少する)。コントローラ間パス32aを介するデータ転送は、ストレージシステム2aの応答性能及びスループット性能の低下の要因の一つである。したがって、本実施形態によれば、ストレージシステム2aにおけるコントローラ間パス32aを介するデータ転送が減少し得るので、ストレージシステム2aの応答性能及びスループット性能が向上し得る。
 図3は、メモリ13の有する各領域の例を示す。
 メモリ13は、プログラム領域130と、共有メモリ領域140と、ローカルメモリ領域150と、バッファ領域160と、キャッシュメモリ領域170とを有してよい。
 プログラム領域130には、プロセッサ12によって実行されるプログラムが格納される。プログラム領域130に格納されるプログラムの例は、後述する(図4参照)。
 共有メモリ領域140には、各コントローラ11のプロセッサ12から共通に利用される情報が格納される。共有メモリ領域140に格納される情報の例は、後述する(図5参照)。
 ローカルメモリ領域150には、当該メモリ13を有するコントローラ11内のプロセッサ12のみから利用される情報が格納されてよい。ローカルメモリ領域150に格納される情報の例は、後述する(図5参照)。
 バッファ領域160には、コントローラ11内の各要素12乃至16間、又は、コントローラ11間において転送されるキャッシュデータが一時的に格納されてよい。
 キャッシュメモリ領域170には、論理VOLからのリードデータ、及び/又は、論理VOLに対するライトデータが、キャッシュデータとして格納されてよい。ホスト計算機4に対するストレージシステム2aの応答時間を短縮するためである。
 図4は、プログラム領域130に格納されるプログラムの例を示す。
 プログラム領域130は、I/Oコマンド振り分けブログラム200と、I/O処理プログラム202と、RAID処理プログラム204と、セグメント管理プログラム206と、区画変更プログラム207と、区画拡大プログラム208と、区画縮小プログラム210と、目標区画決定プログラム212と、コントローラ間転送プログラム216とを有してよい。これらのプログラムは、何れかのプロセッサ12で実行されてよい。
 I/Oコマンド振り分けプログラム200は、ホスト計算機4から送信されたリード要求(又はライト要求)を、その要求先の論理VOLのI/O処理担当のプロセッサ12に振り分ける。I/Oコマンド振り分けプログラム200は、ホスト計算機4から送信されたリード要求(又はライト要求)を受領したホストI/F14と同じコントローラ11内のプロセッサ12で実行されてよい。I/Oコマンド振り分けプログラム200の実行例については後述する(図16参照)。
 I/O処理プログラム202は、I/Oコマンド振り分けプログラム200によって振り分けられたリード要求から論理VOLのリード先を特定し、その特定したリード先からデータをリードする。そして、I/O処理プログラム202は、リードデータを、リード要求の発行元のホスト計算機4へ返してよい。また、I/O処理プログラム202は、振り分けられたライト要求から論理VOLのライト先を特定し、その特定したライト先にデータをライトする。そして、I/O処理プログラム202は、ライト処理の結果を、ライト要求の発行元のホスト計算機4へ返してよい。I/O処理プログラム202は、ホスト計算機4から送信されたリード要求(又はライト要求)を受領したホストI/F14と同じコントローラ11内のプロセッサ12で実行されてもよいし、別のコントローラ11内のプロセッサ12で実行されてもよい。I/O処理プログラム202の実行例については後述する(図17、18、19参照)。
 RAID処理プログラム204は、リード及び/又はライト時に、必要に応じて、ドライブ18のデータをキャッシュメモリ領域170へコピー(ステージング)したり、キャッシュメモリ領域170のデータをドライブ18へ格納(デステージ)したりする。
 セグメント管理プログラム206は、キャッシュメモリ領域170におけるセグメントを制御及び管理する。セグメント管理プログラム206は、共有フリーセグメントを或る区画のセグメントに変更したり、或る区画のセグメントを共有フリーセグメントに変更したりしてよい。セグメント管理プログラム206の実行例については後述する(図20参照)。
 目標区画決定プログラム212は、キャッシュ領域170における各区画172の目標サイズを決定する。各区画172のサイズは、この目標区画決定プログラム212によって決定された目標サイズに適合するように変更されてよい。目標サイズは、セグメント数として表現されてもよい。各区画172の目標サイズは、ストレージシステム2の状況によって決定されてもよいし、管理者から予め設定されてもよい。例えば、各区画172の目標サイズは、クリーンセグメント(図8の説明を参照)の滞在時間、リードヒットIOPS、管理者が定義するポリシー、又は、それらの組み合わせ等によって決定されてよい。目標区画決定プログラム212は、同一のキャッシュメモリ領域170内における、各区画172に対応するセグメント割当頻度363(図14参照)を比較し、セグメント割当頻度363の大きい方の区画172を拡大し、セグメント割当頻度363の小さい方の区画172を縮小するように、各区画172の目標サイズを決定してもよい。
 区画変更プログラム207は、目標区画決定プログラム212によって決定された各区画172の目標サイズに適合するように、各メモリ13のキャッシュメモリ領域170における各区画172のサイズを変更(拡大又は縮小)する。区画変更プログラム207の実行例については後述する(図22参照)。区画変更プログラム207は、同一のキャッシュメモリ領域170内において、或る区画のサイズを縮小させてから、別の区画のサイズを拡大させてよい。
 区画拡大プログラム208は、区画172のサイズが、目標区画決定プログラム212によって決定された目標サイズよりも小さい場合、その区画172のサイズを、目標サイズに近づくように拡大する。区画拡大プログラム208は、区画変更プログラム207から呼び出されてよい。区画拡大プログラム208の実行例については後述する(図24参照)。
 区画縮小プログラム210は、区画172のサイズが目標区画決定プログラム212によって決定された目標サイズよりも大きい場合、その区画172のサイズを、目標サイズに近づくように縮小する。区画縮小プログラム210は、区画変更プログラム207から呼び出されてよい。区画縮小プログラム208の実行例については後述する(図23参照)。
 コントローラ間転送プログラム216は、コントローラ間パス32を介するコントローラ11間におけるキャッシュデータの転送を制御する。
 図5は、共有メモリ領域140及びローカルメモリ領域150に格納される情報の例を示す。
 共有メモリ領域140は、ドライブテーブル300と、論理VOLテーブル310と、属性テーブル320と、セグメントテーブル330と、キャッシュディレクトリ340と、区画テーブル350と、状況管理テーブル360と、共有フリーテーブル370とを有してよい。
 ドライブテーブル300は、各ドライブ18に関する情報を有する。ドライブテーブル300の詳細は、後述する(図6参照)。
 論理VOLテーブル310は、各論理VOLに関する情報を有する。論理VOLテーブル310の詳細は、後述する(図7参照)。
 属性テーブル320は、セグメントの属性に関する情報を有する。属性テーブル320の詳細は、後述する(図10参照)。
 セグメントテーブル330は、各セグメントに関する情報を有する。セグメントテーブル330の詳細は、後述する(図8参照)。
 キャッシュディレクトリ340は、キャッシュに関する情報を有する。キャッシュディレクトリ340の詳細は、後述する(図11参照)。
 区画テーブル350は、各区画のサイズに関する情報を有する。区画テーブル350の詳細は、後述する(図12参照)。
 状況管理テーブル360は、各プロセッサ12の稼働状況に関する情報を有する。状況管理テーブル360の詳細は、後述する(図13参照)。
 共有フリーテーブル370は、共有フリーセグメントに関する情報を有する。共有フリーテーブル370の詳細は、後述する(図14参照)。
 ローカルメモリ領域150は、ローカルの属性テーブル400と、ローカルのセグメントテーブル410と、ローカルのキャッシュディレクトリ420と、I/Oコマンド管理テーブル430とを有してよい。
 ローカルの属性テーブル400は、共有メモリ領域140の属性テーブル320内の少なくとも一部の情報を有する。
 ローカルのセグメントテーブル410は、共有メモリ領域140のセグメントテーブル330内の少なくとも一部の情報を有する。
 ローカルのキャッシュディレクトリ420は、共有メモリ領域140のキャッシュディレクトリ340内の少なくとも一部の情報を有する。
 プロセッサ12は、共有メモリ領域140に格納されている情報320、330、340にアクセスする前に、同じコントローラ11内のローカルメモリ領域150に格納されているこれらの情報400、410、420にアクセスしてもよい。複数のプロセッサ12が共有メモリ領域140にアクセスした場合に発生し得る競合を回避するためである。なお、本実施形態において、共有メモリ領域140のテーブル320、330、340に対するアクセスは、ローカルメモリ領域150のテーブル400、410、420に対するアクセスであってもよいし、又は、その反対であってもよい。
 図6は、ドライブテーブル300の構成例を示す。
 ドライブテーブル300は、ストレージシステム2の有するドライブ18を管理するためのテーブルである。ドライブテーブル300のレコードは、フィールド値として、ドライブ番号301、パリティグループ番号302、RAIDレベル303、ドライブ容量304、ドライブ種別305を有してよい。
 ドライブ番号301は、ドライブ18を識別するための番号である。
 パリティグループ番号302は、パリティグループを識別するための番号である。パリティグループ番号302が同じドライブ番号301のドライブによって、当該パリティグループ番号302のパリティグループが形成されてよい。
 RAIDレベル303は、パリティグループ番号302のパリティグループのRAIDレベルを示す。RAIDレベル303の例は、RAID1(2D2D)、RAID5(3D1P)である。
 ドライブ容量304は、ドライブ番号301のドライブ18の最大容量である。ドライブ容量304の単位の例は、GB(Giga Byte)、TB(Tera Byte)である。
 ドライブ種別305は、ドライブ番号301のドライブ18の種類である。ドライブ種別305の例は、SSD、SAS(Serial Attached SCSI)、NL-SAS(Near-onLine SAS)である。
 ドライブテーブル300を参照することにより、パリティグループへのアクセス先(アドレス)に対応する、ドライブ番号301と当該ドライブ番号301のドライブ18内のアクセス先(アドレス)を特定することができる。
 図7は、論理VOLテーブル310の構成例を示す。
 論理VOLテーブル310は、ストレージシステム2の有する論理VOLを管理するためのテーブルである。論理VOLテーブル310のレコードは、フィールド値として、論理VOL番号311、パリティグループ番号312、パリティグループ内開始アドレス313、論理VOL容量314、担当プロセッサ番号315を有する。
 論理VOL番号310は、論理VOLを識別するための番号である。
 パリティグループ番号312は、論理VOL番号311の論理VOLが属するパリティグループの番号である。
 パリティグループ内開始アドレス313は、パリティグループ番号312のパリティグループにおける、論理VOL番号311の論理VOLの先頭アドレスを示す。
 論理VOL容量314は、論理VOL番号311の論理VOLの最大容量である。論理VOL容量314の単位の例は、GBである。
 担当プロセッサ番号315は、論理VOL番号311の論理VOLのI/O処理を担当するプロセッサ12の番号である。
 論理VOLテーブル310を参照することにより、論理VOLへのアクセス先(アドレス)に対応する、パリティグループ番号312及び当該パリティグループ番号312のパリティグループ内のアクセス先(アドレス)を特定することができる。
 したがって、ドライブテーブル300及び論理VOLテーブル310を参照することにより、論理VOLのアクセス先(アドレス)に対応する、ドライブ番号301と当該ドライブ番号301内のアクセス先(アドレス)を特定することができる。
 本実施形態では、論理VOLが1つのパリティグループに属する場合を説明する。しかし、論理VOLは、シンプロビジョニングに係る論理VOLであってもよい。すなわち、複数のパリティグループから構成されるプールを有し、論理VOL(仮想VOL)に対するアクセス時に、プールの一部の領域がその論理VOL(仮想VOL)に動的に割り当てられる構成であってもよい。
 図8は、セグメントテーブル330の構成例を示す。
 セグメントテーブル330は、ストレージシステム2の有するセグメントを管理するためのテーブルである。セグメントテーブル330のレコードは、フィールド値として、セグメント番号331、論理VOL番号332、ブロック番号333、ノード番号334、順ノード番号335、逆ノード番号336、セグメント属性337、ダーティビットマップ338、コントローラ番号339を有する。
 セグメント番号331は、キャッシュメモリ領域170内のセグメントを識別するための番号である。
 論理VOL番号332は、上述の論理VOL番号310と同様である。
 ブロック番号333は、論理VOL番号332の論理VOLを構成する複数のブロックのそれぞれを識別するための番号である。ブロックとセグメントは、1対1に対応してよい。例えば、セグメント番号331のセグメントに格納されているキャッシュデータは、論理VOL番号332の論理VOLにおけるブロック番号333のブロックに格納されているデータと同じであってよい。
 ノード番号334は、セグメントテーブル300のレコードを識別するための番号である。
 順ノード番号335は、属性毎の連結キューにおいて、ノード番号334からLRU(Least Recently Used)へ向かう次のノードの番号である。ノード番号334が、連結キューのLRU方向の端である場合、順ノード番号335は「LRU」と表現されてよい。
 逆ノード番号336は、属性毎の連結キューにおいて、ノード番号334からMRU(Most Recently Used)へ向かう次のノードの番号である。ノード番号334が、連結キューのMRU方向の端である場合、逆ノード番号336は「MRU」と表現されてよい。
 セグメント属性337は、セグメント番号331のセグメントの属性を示す。セグメント属性337の例は、「クリーン」、「ダーティ」、「フリー」、「共有フリー」である。
 セグメント属性337「クリーン」のレコードにおけるセグメント番号331のセグメントは、或るプロセッサ12のための区画172に割当済みであり、且つ、ドライブ18に格納済みのキャッシュデータが格納されているセグメントである。このセグメントを「クリーンセグメント」と呼び、クリーンセグメントに格納されているキャッシュデータを、「クリーンデータ」と呼んでよい。
 セグメント属性337「ダーティ」のレコードにおけるセグメント番号331のセグメントは、或るプロセッサ12のための区画172に割当済みであり、且つ、ドライブ18に未格納のキャッシュデータが格納されているセグメントである。このセグメントを「ダーティセグメント」と呼び、ダーティセグメントに格納されているキャッシュデータを、「ダーティデータ」と呼んでよい。
 セグメント属性337「クリーン」のレコードにおけるセグメント番号331のセグメントは、或るプロセッサ12のための区画172に割当済みであり、且つ、キャッシュデータが格納されていない(空の)セグメントである。このセグメントを「フリーセグメント」と呼んでよい。フリーセグメントには、新たにキャッシュデータを格納することができる。フリーセグメントに新たにキャッシュデータが格納された場合、そのセグメントは、ダーティセグメント又はクリーンセグメントに変更されてよい。
 セグメント属性337「共有フリー」のレコードにおけるセグメント番号331のセグメントは、何れのプロセッサ12のための区画172にも割り当てられていないセグメントである。このセグメントを「共有フリーセグメント」と呼んでよい。共有フリーセグメントは、或るプロセッサ12のための区画172に割り当てることができる。共有フリーセグメントが或るプロセッサ12のための区画172に割り当てられた場合、そのセグメントは、フリーセグメントに変更されてよい。
 ダーティビットマップ338は、セグメント番号331のダーティセグメントの中で、どの部分のデータがドライブ18に未格納であるかを示す。ダーティビットマップ338を用いることで、コントローラ11は、セグメントのサイズよりも小さなライトデータをホスト計算機4から受領した場合、そのライトデータの未格納の部分だけドライブ18へ格納すればよい。
 コントローラ番号339は、セグメント番号331のセグメントを有するメモリ13を備えるコントローラ11の番号である。
 図9は、連結キューの構成例を示す。
 コントローラ11は、自分のコントローラ11が備えるメモリ13のキャッシュメモリ領域170において、区画172毎に、クリーンセグメント、ダーティセグメント、及び、フリーセグメントに関する連結キューを管理してよい。コントローラ11は、自分のコントローラ11が備えるメモリ13のキャッシュメモリ領域170において、共有クリーンセグメントの連結キューを管理してよい。
 連結キューは、最近最も使われたセグメントに対応するノード番号334を先頭に、最近最も使われていないセグメントのノード番号334を最後尾に有する双方向型の連結キューであってよい。なお、フリーセグメントの連結キューは、LRUを管理しなくてもよい。フリーセグメントは、アクセスされるとクリーンセグメント又はダーティセグメントに変更されるため、LRUを管理する必要が無いからである。また、共有フリーセグメントの連結キューも、LRUを管理しなくてもよい。共有フリーセグメントは、直接アクセスされることはないため、LRUを管理する必要が無いからである。
 図10は、属性テーブル320の構成例を示す。
 属性テーブル320は、区画毎の各属性の連結キューを管理するためのテーブルである。属性テーブル320のレコードは、フィールド値として、プロセッサ番号321、コントローラ番号322、セグメント属性323、MRUノード番号324、LRUノード番号325を有してよい。
 プロセッサ番号321は、プロセッサ12を識別するための番号である。
 コントローラ番号322は、コントローラ11を識別するための番号である。
 セグメント属性323は、上述のセグメント属性337と同様である。
 MRUノード番号324は、コントローラ番号322のコントローラ11内のメモリ13のキャッシュメモリ領域170に構成された、プロセッサ番号321のプロセッサ12のための区画172において、セグメント属性323の連結キューのMRUのノード番号334である。
 LRUノード番号325は、コントローラ番号322のコントローラ11内のメモリ13のキャッシュメモリ領域170に構成された、プロセッサ番号321のプロセッサ12のための区画172において、セグメント属性323の連結キューのLRUのノード番号334である。
 例えば、図10において、コントローラ番号322「1」のコントローラ11内のメモリ13のキャッシュメモリ領域170に構成された、プロセッサ番号321「1」のプロセッサ12のための区画172において、最近最も使われた順にクリーンセグメントを検索したい場合は、MRUノード番号324「2」を先頭に、セグメントテーブル330の順ノード番号335を順に追っていけばよい。反対に、最近最も使われていない順にクリーンセグメントを検索したい場合は、LRUノード番号325「121」を先頭に、セグメントテーブル330の逆ノード番号336を順に追っていけばよい。ダーティセグメント、フリーセグメントについても同様である。
 なお、セグメント属性323「共有フリー」のレコードのプロセッサ番号321は、「NULL」であってよい。共有フリーセグメントは、プロセッサ12毎に管理する必要が無いからである。
 図11は、キャッシュディレクトリ340の構成例を示す。
 キャッシュディレクトリ340は、キャッシュ済みのデータを管理するためのテーブルである。キャッシュディレクトリ340のレコードは、フィールド値として、論理VOL番号341、ブロック番号342、第1ノード番号343、第2ノード番号344を有してよい。
 論理VOL番号341及びブロック番号342は、上述の論理VOL番号332及びブロック番号333と同様である。
 第1ノード番号343及び第2ノード番号344は、上述のノード番号334と対応する。
 例えば、図11のキャッシュディレクトリ340は、論理VOL番号340「1」の論理VOLにおけるブロック番号342「3」のブロックのデータが、第1ノード番号343「20」に対応するセグメント番号331のセグメントと、第2ノード番号344「15」に対応するセグメント番号331のセグメントとにキャッシュされていることを示す。
 同一のデータを2つのセグメントにキャッシュしているのは、主にライトデータの冗長化のためである。したがって、第1ノード番号343に対応するセグメントと、第2ノード番号344に対応するセグメントとは、別々のコントローラ11のメモリ13に属していることが望ましい。
 キャッシュディレクトリ340を参照することにより、キャッシュヒット又はキャッシュミスを判定することができる。アクセス先の論理VOL番号341のブロック番号342に対応する第1ノード番号343及び第2ノード番号344の何れかが「NULL」でない場合、キャッシュヒットと判定できる。アクセス先の論理VOL番号341のブロック番号342に対応する第1ノード番号343及び第2ノード番号344の何れもが「NULL」である場合、キャッシュミスと判定できる。
 図12は、区画テーブル350の構成例を示す。
 区画テーブル350は、キャッシュメモリ領域170における各プロセッサ12のための区画172を管理するためのテーブルである。区画テーブル350のレコードは、フィールド値として、プロセッサ番号351、コントローラ番号352、目標セグメント数353、割当セグメント数354を有してよい。
 プロセッサ番号351及びコントローラ番号352は、上述のプロセッサ番号321及びコントローラ番号322と同様である。
 割当セグメント数354は、コントローラ番号352のコントローラ11内のメモリ13のキャッシュメモリ領域170において、プロセッサ番号352のプロセッサ12のための区画172に割り当てられたセグメントの数である。
 目標セグメント数353は、コントローラ番号352のコントローラ11内のメモリ13のキャッシュメモリ領域170において、プロセッサ番号352のプロセッサ12のための区画172に割り当てられることが望ましいセグメントの数である。すなわち、割当セグメント数354と目標セグメント数353との差分は、できるだけ小さい方が望ましい。目標セグメント数353は、ストレージシステム2の状況に応じて、適宜変更されてよい。
 図13は、状況管理テーブル360の構成例を示す。
 状況管理テーブル360は、ストレージシステム2の稼働状況に関する情報を有する。状況管理テーブル360の情報は、目標セグメント数353を決定するために用いられてよい。状況管理テーブル360のレコードは、フィールド値として、プロセッサ番号361、コントローラ番号362、セグメント割当頻度363を有してよい。
 プロセッサ番号361及びコントローラ番号362は、上述のプロセッサ番号321及びコントローラ番号322と同様である。
 セグメント割当頻度363は、コントローラ番号362のコントローラ11内のメモリ13のキャッシュメモリ領域170において、プロセッサ番号361のプロセッサ12のための区画172に対して、単位時間当たりに新規に割り当てられたセグメントの数である。なお、本実施形態におけるセグメント割当頻度363は一例であり、目標セグメント数353を決定するための指標であれば何でもよい。例えば、連結キューにおけるクリーンセグメントの滞在時間、キャッシュヒット率、又は、単位I/O当たりに新規に割り当てられたセグメント数などであってもよい。又は、管理者が、管理計算機30を通じて、目標セグメント数353を決定するための指標を入力できてもよい。
 図14は、共有フリーテーブル370の構成例を示す。
 共有フリーテーブル370は、共有フリーセグメントを管理するためのテーブルである。共有フリーテーブル370のレコードは、フィールド値として、コントローラ番号371、共有フリーセグメント数372、共有フリーセグメント閾値373を有してよい。
 コントローラ番号371は、上述のコントローラ番号322と同様である。
 共有フリーセグメント数372は、コントローラ番号371のコントローラ11内のメモリ13に存在する共有フリーセグメントの数である。
 共有フリーセグメントの閾値373は、共有フリーセグメント数372に対する下限の閾値である。共有フリーセグメント数372が枯渇すると、コントローラ番号371のコントローラ11内のメモリ13において、区画172に対する割当セグメント数354を調整することができなくなってしまう。そこで、コントローラ11は、共有フリーセグメント数372が共有フリーセグメントの閾値373以下にならないように調整してよい。
 図15は、I/Oコマンド管理テーブル430の構成例を示す。
 I/Oコマンド管理テーブル430は、コントローラ11が受領したI/Oコマンドを管理するためのテーブルである。I/Oコマンド管理テーブル430のレコードは、フィールド値として、I/Oコマンド管理番号431、I/O処理中フラグ432、I/Oコマンド受領コントローラ番号433、I/Oコマンド種別434を有してよい。
 I/Oコマンド管理番号431は、ストレージシステム2内でI/Oコマンドを識別するための番号である。
 I/O処理中フラグ432は、I/Oコマンド管理番号431のI/Oコマンドが、未処理であるか、それとも処理中であるかを示すフラグである。例えば、I/O処理中フラグ432は、未処理の場合に「OFF」、処理中の場合に「ON」であってよい。
 I/Oコマンド受領コントローラ番号433は、I/Oコマンド管理番号431のI/Oコマンドを受領したコントローラ11の番号である。
 I/Oコマンド種別434は、I/Oコマンド管理番号431のI/Oコマンドの種別である。I/Oコマンド種別434の例は、リードコマンド、ライトコマンドである。
 図16は、I/Oコマンド振り分けプログラム200の処理例を示すフローチャートである。
 このプログラム200は、I/O要求を受領したコントローラ11の何れかのプロセッサ12で実行されてよい。プログラム200は、ホスト計算機4からI/O要求の受領を検知すると、次の処理を実行する。
 プログラム200は、論理VOLテーブル310から、アクセス先の論理VOL番号311に対応する担当プロセッサ番号315を特定する(ステップS102)。以下の説明において、この特定された担当プロセッサ番号315のプロセッサ12を、「担当プロセッサ」という。
 プログラム200は、担当プロセッサのローカルメモリ領域150内のI/Oコマンド管理テーブル430から、未使用のI/Oコマンド管理番号431を取得する。そして、プログラム200は、その取得したI/Oコマンド管理番号431に対応するI/O処理中フラグ432を「ON」に変更する。そして、プログラム200は、I/O受領コントローラ番号433とI/Oコマンドパラメータ434を更新する(ステップS104)。
 プログラム200は、担当プロセッサに対して、ステップS104で取得したI/Oコマンド管理番号431を含むI/Oコマンド処理要求を送信する。そして、プログラム200は、本処理を終了する。
 図17は、I/O処理プログラム202の処理例を示すフローチャートである。
 このプログラム202は、担当プロセッサで実行されてよい。プログラム202は、I/Oコマンド処理要求の受領を検知すると、次の処理を実行する。
 プログラム202は、その受領したI/Oコマンド処理要求からI/Oコマンド管理番号431を抽出し、I/Oコマンド管理テーブル430から、その抽出したI/Oコマンド管理番号431に対応するI/Oコマンド種別434を特定する(ステップS120)。
 プログラム202は、その特定したI/Oコマンド種別434に基づいて、I/Oコマンドが、リードコマンド又はライトコマンドの何れであるかを判定する(ステップS122)。
 ステップS122の判定結果が「リードコマンド」の場合(ステップS122:リード)、プログラム202は、リード処理(ステップS200)を行う。リード処理の詳細は、図18に示す。
 ステップS122の判定結果が「ライトコマンド」の場合(ステップS122:ライト)、プログラム202は、ライト処理(ステップS300)を行う。ライト処理の詳細は、図19に示す。
 図18は、リード処理例を示すフローチャートである。
 I/O処理プログラム202は、キャッシュディレクトリ340(又はローカルのキャッシュディレクトリ420)を参照し、リード先の論理VOL番号341のブロック番号342に対応する第1ノード番号343及び第2ノード番号344の何れもが「NULL」であるか否かを判定する(ステップS202)。すなわち、プログラム202は、リード先の論理VOLのブロックのデータについて、キャッシュヒット又はキャッシュミスの何れであるかを判定する。
 キャッシュミスの場合(ステップS202:NO)、プログラム202は、次の処理を行う。
 プログラム202は、I/Oコマンド管理テーブル430から、ステップS120で抽出したI/Oコマンド管理番号431に対応するI/O受領コントローラ番号433を特定する(ステップS204)。
 そして、セグメント管理プログラム206が、その特定したI/O受領コントローラ番号433のコントローラ11のメモリ13の区画172について、セグメント割当処理を行う(ステップS206)。セグメント割当処理の詳細については後述する(図20参照)。
 そして、RAID処理プログラム204が、セグメント割当処理によって区画172に割り当てられたフリーセグメントに、リード先の論理VOLのブロックのデータをステージングする(ステップS208)。そして、プログラム202は、ステップS202に戻る。
 キャッシュヒットの場合(ステップS202:YES)、プログラム202は、次の処理を行う。
 プログラム202は、セグメント管理テーブル330から、第1ノード番号343又は第2ノード番号344の内のヒットしたノード番号334を含むレコードを抽出する。そして、プログラム202は、その抽出したレコードから、コントローラ番号339を特定する。そして、プログラム202は、その特定したコントローラ番号339と、ステップS120で抽出したI/Oコマンド管理番号431に対応するI/O受領コントローラ番号433と、が一致するか否かを判定する(ステップS210)。
 ステップS210の判定結果が肯定的な場合(ステップS210:YES)、プログラム202は、ステップS230へ進む。
 ステップS210の判定結果が否定的な場合(ステップS210:NO)、コントローラ間転送プログラム216が、キャッシュヒットしたセグメントのデータを、ホスト計算機4からのリード要求を受領したコントローラ11のメモリ13のバッファ領域160へ転送する(ステップS212)。そして、プログラム202は、ステップS230へ進む。
 ステップS230において、プログラム202は、ホスト計算機4からリード要求を受領したコントローラ11のメモリ13のキャッシュ領域170又はバッファ領域160のデータを、そのリード要求の応答として、ホスト計算機4へ返す(ステップS230)。そして、プログラム202は、本処理を終了する。
 ステップS212におけるコントローラ11間のデータ転送は、メモリ13の帯域、コントローラ間パス32の帯域、及び、プロセッサ12における処理のオーバーヘッドとなり得る。そのため、プログラム202は、リードデータに対応するキャッシュデータを、ホスト計算機4からのI/O要求を受領したコントローラ11側のメモリ13に優先的に格納する。すなわち、ステップS206において、ホスト計算機3からのI/O要求を受領したコントローラ11側のメモリ13の区画に、新規セグメントが割り当てられる。これにより、コントローラ11間のデータ転送の発生を減らすことができる。
 図19は、ライト処理例を示すフローチャートである。
 I/O処理プログラム202は、上記のステップS202と同様に、ライト先の論理VOLのブロックのデータについて、キャッシュヒット又はキャッシュミスの何れであるかを判定する(ステップS302)。
 キャッシュミスの場合(ステップS302:NO)、セグメント管理プログラム206が、セグメント割当処理を行う(ステップS304)。セグメント割当処理の詳細については後述する(図20参照)。そして、プログラム202は、ステップS302へ戻る。戻った後のステップS302の判定は「YES」となる。
 キャッシュヒットの場合(ステップS302:YES)、プログラム202は、他方のコントローラ11のメモリ13の区画172に、ライトデータを格納するためのフリーセグメントが存在するか否かを判定する(ステップS310)。
 ステップS310の判定結果が否定的な場合(ステップS310:NO)、セグメント管理プログラム206が、他方のコントローラ11のメモリ13の区画172について、セグメント割当処理を行う(ステップS312)。そして、プログラム202は、ステップS310へ戻る。戻った後のステップS310の判定は「YES」となる。
 ステップS310の判定結果が肯定的な場合(ステップS310:YES)、RAID処理プログラム204が、ライトデータに対応するキャッシュデータを格納するためのフリーセグメントのダーティビットマップ338を、ライト先の論理VOLのブロックに適合するように変更する。そして、プログラム202は、そのフリーセグメントのセグメント属性337を「ダーティ」に変更する。すなわち、プログラム202は、そのフリーセグメントを、ダーティセグメントに変更する。
 プログラム202は、ホスト計算機4から受領したライトデータを、ステップS304及びステップS312で割り当てられた2つのセグメントに格納する(ステップS322)。すなわち、プログラム202は、ライトデータに対応するキャッシュデータを、2つのコントローラ11のそれぞれのメモリ13に格納する(二重化する)。なお、セグメントに格納されたダーティデータは、RAIDプログラム204によって、I/O処理とは非同期にドライブ18へデステージされてよい。
 プログラム202は、ホスト計算機4からのライト要求の応答として、そのホスト計算機4へ「Goodステータス」を返す。そして、プログラム202は、本処理を終了する。
 図20は、セグメント管理プログラム206の処理例を示すフローチャートである。
 本処理は、図18のステップS206及び図19のステップS304、S312の詳細に相当する。本処理は、コントローラ11毎に実行されてよい。
 セグメント管理プログラム206は、属性テーブル320から、当該プログラム206を実行しているプロセッサ番号321と、ステップS204で特定したI/O受領コントローラ番号433と一致するコントローラ番号322とを含むレコード群を抽出する。そして、プログラム206は、その抽出したレコード群から、セグメント属性323が「フリー」のレコードのLRUノード番号325を特定する。そして、プログラム206は、この特定したLRUノード番号325をLRUとするフリーキューから、フリー属性のノード番号を検索する(ステップS402)。すなわち、プログラム206は、フリーセグメントを検索する。
 ステップS402においてフリー属性のノード番号を発見できた場合(ステップS404:YES)、プログラム206は次の処理を行う。
 プログラム206は、その発見したフリー属性のノード番号を、キャッシュディレクトリ340の第1ノード番号343(又は第2ノード番号344)に登録する(ステップS406)。
 そして、プログラム206は、その発見したフリー属性のノード番号を、フリーキューから切り離し(デキューし)、クリーンキューのMRUに連結する(エンキューする)。すなわち、フリーセグメントを、クリーンセグメントに変更する。そして、プログラム206は、セグメントテーブル330において、このノード番号334を有するレコードの論理VOL番号332、ブロック番号333、ダーティビットマップ338、及び、コントローラ番号339を更新する(ステップS408)。
 そして、プログラム206は、状況管理テーブル360のセグメント割当頻度363を更新(インクリメント)する。そして、本処理の呼び出し元の処理へ戻る。
 ステップS402においてフリー属性のノード番号を発見できなかった場合(ステップS404:NO)、プログラム206は次の処理を行う。
 プログラム206は、ステップS402で抽出したレコード群から、セグメント属性323が「クリーン」のレコードのLRUノード番号325を特定する。そして、プログラム206は、この特定したLRUノード番号325をLRUとするクリーンキューから、クリーン属性のノード番号を検索する(ステップS410)。すなわち、プログラム206は、クリーンセグメントを検索する。
 ステップS410においてクリーン属性のノード番号を発見できた場合(ステップS412:YES)、プログラム206は次の処理を行う。
 プログラム206は、その発見したクリーン属性のノード番号を、クリーンキューから切り離し(デキューし)、フリーキューのMRUに連結する(エンキューする)。すなわち、プログラム206は、クリーンセグメントを、フリーセグメントに変更する。そして、プログラム206は、セグメントテーブル330において、このノード番号334を有するレコードのセグメント属性337を「フリー」に変更する。また、プログラム206は、キャッシュディレクトリ340において、その発見したノード番号を有する第1ノード番号343及び第2ノード番号344を「NULL」に変更する(ステップS414)。そして、プログラム206は、ステップS402へ戻る。これにより、区画172にフリーセグメントが確保される。
 ステップS410においてクリーン属性のノード番号を発見できなかった場合(ステップS412:NO)、プログラム206は次の処理を行う。
 プログラム206は、ステップS402で抽出したレコード群から、セグメント属性323が「ダーティ」のレコードのLRUノード番号325を特定する。そして、プログラム206は、この特定したLRUノード番号325をLRUとするダーティキューから、ダーティ属性のノード番号を検索する(ステップS420)。すなわち、プログラム206は、ダーティセグメントを検索する。この処理は、フリーセグメントもクリーンセグメントも見つからない時に実行されるため、ダーティセグメントは発見される。
 そして、RAID処理プログラム204が、発見したダーティセグメントのデータを、論理VOLにデステージする。そして、プログラム206は、そのダーティ属性のノード番号を、ダーティキューから切り離し(デキューし)、フリーキューのMRUに連結する(エンキューする)。すなわち、プログラム206は、ダーティセグメントを、フリーセグメントに変更する(ステップS422)。そして、プログラム206は、ステップS402へ戻る。これにより、区画172にフリーセグメントが確保される。
 図21は、目標区画決定プログラム212の処理例を示すフローチャートである。
 本処理は、所定の周期で実行されてもよいし、管理計算機30からの指示によって実行されてもよい。本処理は、I/O処理に影響を与えないように、I/O処理とは非同期に実行されてもよい。
 目標区画決定プログラム212は、区画テーブル350から、処理対象のコントローラ番号352を有し、且つ、割当セグメント数354が所定の閾値以上であるプロセッサ番号351を特定する。割当セグメント数354の少ない区画172から、更にセグメントの割当数が減らされないようにするためである(ステップS702)。
 次に、プログラム212は、状況管理テーブル360から、処理対象のコントローラ番号352、且つ、ステップS702で特定したプロセッサ番号351を有するレコード群を抽出する。そして、プログラム212は、その抽出したレコード群の中から、セグメント割当頻度363の最大値のレコードと最小値のレコードとを特定する(ステップS704)。
 次に、プログラム212は、ステップS704で特定したセグメント割当頻度363の最大値と最小値の差分が、所定の閾値よりも大きいか否かを判定する(ステップS706)。誤差又は一時的な変動等によって、目標セグメント数353が、頻繁に変更されてしまうことを防ぐためである。
 ステップS704の判定結果が否定的な場合(ステップS706:NO)、プログラム212は、本処理を終了する。ステップS706の判定結果が肯定的な場合(ステップS706:YES)、プログラム212は、次の処理を行う。
 プログラム212は、セグメント割当頻度363が最小値のプロセッサ番号351に対応する目標セグメント数353を減らす(ステップS708)。そして、プログラム212は、セグメント割当頻度363が最大値のプロセッサ番号351に対応する目標セグメント数353を増やす(ステップS710)。そして、プログラム212は、本処理を終了する。
 目標セグメント数353の減少数及び増加数は、ステップS706で算出された差分の大きさに基づいて決定されてよい。例えば、差分が大きくなる程、目標セグメント数353の減少数及び増加数も大きくなってよい。反対に、差分が小さくなる程、目標セグメント数353の減少数及び増加数も小さくなってよい。
 目標セグメント数353の減算数と増加数は同じであってもよい。すなわち、同じコントローラ11のキャッシュメモリ領域170における目標セグメント数353の合計は、変化しないとしてもよい。
 又は、次のように、全てのプロセッサ12の目標セグメント数353を変更してもよい。プログラム212は、処理対象のコントローラ番号362の各プロセッサ番号361に対応するセグメント割当頻度363の平均値を算出する。そして、プログラム212は、状況管理テーブル360から、処理対象のコントローラ番号317のレコード群を抽出し、その抽出したレコード群を、セグメント割当頻度363が平均値以上であるレコード群と、セグメント割当頻度363が平均値未満であるレコード群とに分ける。そして、プログラム212は、セグメント割当頻度363が平均値以上であるレコード群に係る目標セグメント数353を増やし、セグメント割当頻度363が平均値未満であるレコード群に係る目標セグメント数353を減らす。増加数及び減少数は、平均値とセグメント割当頻度363との差分の大きさに基づいて決定されてもよい。
 図22は、区画変更プログラム207の処理例を示すフローチャートである。
 本処理は、所定の周期で実行されてもよいし、管理計算機30からの指示によって実行されてもよい。本処理は、I/O処理に影響を与えないように、I/O処理とは非同期に実行されてもよい。
 区画変更プログラム207は、コントローラ11aのメモリ13aの各区画170―1について、区画サイズ縮小処理を実行する(ステップS500―1)。そして、区画変更プログラム207は、コントローラ11bのメモリ13bの各区画170―1について、区画サイズ拡大処理を実行する(ステップS600―1)。
 また、区画変更プログラム207は、コントローラ11bのメモリ13bの各区画170―2について、区画サイズ縮小処理を実行する(ステップS500―2)。そして、区画変更プログラム207は、コントローラ11bのメモリ13bの各区画170―2について、区画サイズ拡大処理を実行する(ステップS600―2)。
 区画サイズ縮小処理の詳細は後述する(図23参照)。区画サイズ拡大処理の詳細は後述する(図24参照)。
 図23は、区画縮小プログラム210の処理例を示すフローチャートである。本処理は、図22のステップS500―1、S500―2の詳細に相当する。
 区画縮小プログラム210は、区画テーブル350から、処理対象のコントローラ番号352及びプロセッサ番号351に対応する目標セグメント数353及び割当セグメント数354を取得する(ステップS502)。
 次に、プログラム210は、割当セグメント数354が、目標セグメント数353よりも大きいか否かを判定する(ステップS504)。
 ステップS504の判定結果が否定的な場合(ステップS504:NO)、プログラム210は、本処理を終了する。ステップS504の判定結果が肯定的な場合(ステップS504:YES)、プログラム210は、次の処理を行う。
 プログラム210は、属性テーブル320から、処理対象のコントローラ番号322及びプロセッサ番号321に対応する(つまり、処理対象の区画172の)セグメント属性323「フリー」のLRUノード番号325を検索する(ステップS506)。すなわち、プログラム210は、処理対象の区画172から、フリーセグメントを検索する。
 以下、ステップS506の検索において処理対象の区画172からフリーセグメントを発見できた場合(ステップS508:YES)について述べる。
 プログラム210は、ステップS506で発見したセグメント属性323「フリー」のLRUノード番号325を、フリーキューから切り離し(デキューし)、共有フリーキューに連結する(エンキューする)(ステップS510)。すなわち、プログラム210は、区画172に割り当てられていたフリーセグメントの割当を解除し、共有フリーセグメントに変更する。共有フリーキューへの連結は、排他処理後に行われてよい。処理の途中で他のプロセッサ12から共有フリーキューが更新されることを防ぐためである。
 そして、プログラム210は、属性テーブル320(ローカルの属性テーブル400)、セグメントテーブル330(ローカルのセグメントテーブル410)、キャッシュディレクトリ340(ローカルのキャッシュディレクトリ420)において、フリーキューから切り離されたセグメントの情報を無効化する(ステップS512)。
 そして、プログラム210は、区画テーブル350において、処理対象のコントローラ番号352及びプロセッサ番号351に対応する(つまり、処理対象の区画172の)割当セグメント数354を「1」減らす。そして、プログラム210は、共有フリーテーブル370において、処理対象のコントローラ番号371の共有フリーセグメント数312を「1」増やす(ステップS514)。そして、プログラム210は、ステップS504に戻る。
 以下、ステップS506の検索において処理対象の区画172からフリーセグメントを発見できなかった場合(ステップS508:NO)について述べる。
 プログラム210は、属性テーブル320から、処理対象のコントローラ番号322及びプロセッサ番号321に対応する(つまり、処理対象の区画172の)セグメント属性323「クリーン」のLRUノード番号325を検索する(ステップS520)。すなわち、プログラム210は、処理対象の区画172から、クリーンセグメントを検索する。
 以下、ステップS520の検索において処理対象の区画172からクリーンセグメントを発見できた場合(ステップS522:YES)について述べる。
 プログラム210は、ステップS520で発見したセグメント属性323「クリーン」のLRUノード番号325を、クリーンキューから切り離し(デキューし)、フリーキューに連結する(エンキューする)。すなわち、プログラム210は、処理対象の区画172のクリーンセグメントを、フリーセグメントに変更する。そして、プログラム210は、ステップS506へ戻る。戻った後のステップS510の処理において、このフリーセグメントは、共有フリーセグメントに変更される。
 以下、ステップS520の検索において処理対象の区画172からクリーンセグメントを発見できなかった場合(ステップS522:NO)について述べる。
 プログラム210は、属性テーブル320から、処理対象のコントローラ番号322及びプロセッサ番号321に対応する(つまり、処理対象の区画172の)セグメント属性323「ダーティ」のLRUノード番号325を検索する(ステップS530)。すなわち、プログラム210は、処理対象の区画172から、ダーティセグメントを検索する。そして、RAID処理プログラム204が、ステップS530で発見したダーティセグメントを、論理VOLへデステージする。そして、プログラム210は、ステップS520で発見したセグメント属性323「ダーティ」のLRUノード番号325を、ダーティキューから切り離し(デキューし)、フリーキューに連結する(エンキューする)。すなわち、プログラム210は、処理対象の区画172のダーティセグメントを、フリーセグメントに変更する。そして、プログラム210は、ステップS510へ戻る。戻った後のステップS510の処理において、このフリーセグメントは、共有フリーセグメントに変更される。
 以上の処理により、処理対象の区画172に割り当てられていたフリーセグメントの割当が解除される。すなわち、その区画172のサイズが縮小される。
 図24は、区画拡大プログラム208の処理例を示すフローチャートである。本処理は、図22のステップS600―1、S600―2の詳細に相当する。
 区画拡大プログラム208は、共有フリーテーブル370から、処理対象のコントローラ番号371に対応する共有フリーセグメント数372及び共有フリーセグメントの閾値373を取得する。そして、プログラム208は、その取得した共有フリーセグメント数372が、共有フリーセグメントの閾値373よりも大きいか否かを判定する(ステップS602)。
 ステップS602の判定結果が否定的な場合(ステップS602:NO)、プログラム208は、本処理を終了する。ステップS602の判定結果が肯定的な場合(ステップS602:YES)、プログラム208は、次の処理を行う。
 プログラム208は、セグメントテーブル350から、処理対象のコントローラ番号352及びプロセッサ番号310に対応する(つまり、処理対象の区画172の)、目標セグメント数353及び割当セグメント数354を取得する(ステップS604)。
 そして、プログラム208は、目標セグメント数353が、割当セグメント数354よりも大きいか否かを判定する(ステップS606)。
 ステップS606の判定結果が否定的な場合(ステップS606:NO)、プログラム208は、本処理を終了する。ステップS606の判定結果が肯定的な場合(ステップS606:YES)、プログラム208は、次の処理を行う。
 プログラム208は、属性テーブル320から、処理対象のコントローラ番号371に対応するセグメント属性323「共有フリー」のLRUノード番号325(MRUノード番号324でもよい)を検索する。そして、プログラム208は、そのセグメント属性323「共有フリー」のLRUノード番号325を、共有フリーキューから切り離し(デキューし)、処理対象のコントローラ番号及びプロセッサ番号に対応する(つまり、処理対象の区画172の)フリーキューに連結する(エンキューする)(ステップS608)。
 プログラム208は、共有メモリ領域140の属性テーブル320、セグメントテーブル330、キャッシュディレクトリ340において、フリーキューに連結されたセグメントの情報を更新する。そして、プログラム208は、区画テーブル350において、処理対象のコントローラ番号352及びプロセッサ番号351に対応する(つまり、処理対象の区画172の)割当セグメント数354を「1」増やす。そして、プログラム210は、共有フリーテーブル370において、処理対象のコントローラ番号371の共有フリーセグメント数372を「1」減らす(ステップS610)。
 プログラム208は、共有メモリ領域140の属性テーブル320、セグメントテーブル330、キャッシュディレクトリ340における、処理対象の区画172に新規に割り当てられたセグメントに対応するレコードを、ローカルメモリ領域10のローカルの属性テーブル400、ローカルのセグメントテーブル410、ローカルのキャッシュテーブル420にコピーする(ステップS612)。そして、プログラム208は、ステップS602へ戻る。なお、ステップS608、S610及びS612は、何れの順番に実行されてもよい。
 第1の実施形態によれば、コントローラ11毎のメモリ13のキャッシュ領域170において、各区画172のサイズが適切に変更される。例えば、セグメント割当頻度の小さい区画172のサイズは縮小され、セグメント割当頻度の大きい区画172のサイズは拡大される。これにより、各区画172のキャッシュヒット率が高まる。よって、コントローラ11間におけるキャッシュデータの転送も減少し得る。
 (第2の実施形態)
 図25は、第2の実施形態に係る計算機システム1bの構成例を示す。
 図25に示す計算機システム1bは、図1に示す計算機システム1aと比較して、1つのコントローラ11内に、ホストI/F14、プロセッサ12及びメモリ13のセットを、2つ以上有する点において相違する。さらに、同一コントローラ11内のプロセッサ12同士は、コントローラ内プロセッサ間パス19によって、双方向通信可能に接続されている。
 例えば、同一コントローラ11c内において、一方のセットのプロセッサ12eは、当該セット内のメモリ13c(例えば、プロセッサ12eに直結されているメモリ13c)だけでなく、プロセッサ間パス19aを介して、他方のセットのメモリ13dにもアクセス可能である。典型的には、一方のセットのプロセッサ12eの、そのプロセッサ12eと同じセット内のメモリ13cに対するレイテンシの方が、コントローラ内プロセッサ間パス19aを介する他方のセットのメモリ13dに対するレイテンシよりも、小さい。なぜなら、他方のセットのメモリ13dに対するアクセス速度は、プロセッサ間パス19の最大通信速度(最大通信帯域)に制限されるからである。このようなアーキテクチャは、NUMA(Non-Uniform Memory Access)と呼ばれる。
 以下、プロセッサ12eが、同一セット内のメモリ13c(そのプロセッサ12eに直結されているメモリ13c)へアクセスすることを「ローカルアクセス」と呼び、コントローラ内プロセッサ間パス19aを介して、他方のセットのメモリ13dへアクセスすることを「リモートアクセス」と呼ぶ。プロセッサ12f、12g、12hについても同様である。
 典型的には、アクセス速度は、ローカルアクセスの方が、リモートアクセスよりも高速である。すなわち、ローカルアクセスのレイテンシの方が、リモートアクセスのレイテンシよりも小さい。同様に、一方のセットのホストI/F14cも、同一セット内のメモリ13cにアクセスする方が、プロセッサ間パス19aを介して他方のセットのメモリ13dにアクセスするよりも、高速である。
 第1の実施形態では、コントローラ11aの有するメモリ13aのキャッシュ領域170―1と、コントローラ11bの有するメモリ13bのキャッシュ領域170―2と、のセグメント割当数を管理している。これに対して、第2の実施形態では、プロセッサ12eと同一セット内のメモリ13cのキャッシュ領域と、他方のセットのメモリ13dのキャッシュ領域と、のセグメント割当数を管理する。管理方法は、第1の実施形態と同様であってよい。
 ストレージシステム2bは、ホスト計算機4からのリード要求を受領した場合、そのリード要求を受領したホストI/F14cと同一のセット内のメモリ13cに、優先的にリードデータ(キャッシュデータ)を格納する。すなわち、リード要求を受領したホストI/F14cと同一のセット内のメモリ13cのキャッシュメモリ領域に、優先的にセグメントを割り当てる。
 ストレージシステム2bは、ホスト計算機4からのライト要求を受領した場合、そのライト要求を受領したホストI/F14cと同一のセット内のメモリ13cと、そのセット内のプロセッサ12eとコントローラ間パス32cによって接続されているプロセッサ12hを含むセット内のメモリ13fと、に優先的にライトデータ(キャッシュデータ)を格納する。すなわち、ライト要求を受領したホストI/F14cと同一セット内のメモリ13cのキャッシュメモリ領域と、そのセット内のプロセッサ12eとコントローラ間パス32cによって接続されているプロセッサ12hを含むセット内のメモリ13fと、に優先的にセグメントを割り当てる。
 これにより、同一コントローラ11c内におけるメモリ13c、13d及びホストI/F14c、14d間のデータ転送、並びに、コントローラ11cのメモリ13c、13d及びコントローラ11dのメモリ13e、13f間のデータ転送、を最適化することができる。すなわち、コントローラ11c、11d内のプロセッサ間パス19a、19bにおけるデータ転送、及び/又は、コントローラ11c、11dの間のコントローラ間パス32c、32dにおけるデータ転送を減少させることができる。
 プロセッサ間パス19a、19bを介するデータ転送、及び、コントローラ間パス32c、32dを介するデータ転送は、ストレージシステム2bの応答性能及びスループット性能の低下の要因の一つである。したがって、本実施形態によれば、プロセッサ間パス19a、19bを介するデータ転送、及び/又は、コントローラ間パス32c、32dを介するデータ転送が減少し得るので、ストレージシステム2bの応答性能及びスループット性能が向上し得る。
 以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
 第1の実施形態において、プロセッサ12a、12bは、第1のプロセッサの例であってよい。プロセッサ12c、12dは、第2のプロセッサの例であってよい。ホストI/F14aは、第1のホストインタフェースの例であってよい。ホストI/F14bは、第2のホストインタフェースの例であってよい。メモリ13aは、第1のメモリの例であってよい。メモリ13bは、第2のメモリの例であってよい。割当セグメント数354は、区画のサイズの例であってよい。目標セグメント数353は、区画の目標のサイズの例であってよい。セグメント割当頻度363は、区画に対するデータの格納頻度の例であってよい。
 第2の実施形態において、プロセッサ12e、12gは、第1のプロセッサの例であってよい。プロセッサ12f、12hは、第2のプロセッサの例であってよい。ホストI/F14c、14eは、第1のホストインタフェースの例であってよい。ホストI/F14d、14fは、第2のホストインタフェースの例であってよい。メモリ13c、13eは、第1のメモリの例であってよい。メモリ13d、13fは、第2のメモリの例であってよい。
 実施形態に係る内容は、以下のように表現することもできる。
(表現1)
 第1及び第2のプロセッサと、
 第1及び第2のキャッシュメモリと、
 ホスト計算機と双方向通信可能な第1及び第2のホストインタフェースと、
 記憶ドライブと
を備えるストレージステムであって、
 前記第1のホストインタフェースから第1のキャッシュメモリに対するレイテンシが、前記第1のホストインタフェースから前記第2のキャッシュメモリに対するレイテンシよりも小さく、
 前記第2のホストインタフェースから第2のキャッシュメモリに対するレイテンシが、前記第2のホストインタフェースから前記第1のキャッシュメモリに対するレイテンシよりも小さく、
 前記第1及び第2のキャッシュメモリの各々は、前記第1のプロセッサと対応付けられており前記第1のプロセッサにより処理されるI/O要求に関するデータが前記第1のプロセッサにより一時的に格納される第1の区画と、前記第2のプロセッサと対応付けられており前記第2のプロセッサにより処理されるI/O要求に関するデータが前記第2のプロセッサにより一時的に格納される第2の区画とを有し、
 前記第1及び第2のプロセッサの内の少なくとも1つは、前記第1のキャッシュメモリの第1の区画のサイズと、前記第2のキャッシュメモリの第1の区画のサイズとを独立に制御し、前記第1のキャッシュメモリの第2の区画のサイズと、前記第2のキャッシュメモリの第2の区画のサイズとを独立に制御する
ストレージシステム。
(表現2)
 前記第1のホストインタフェースがホスト計算機からリード要求を受領した場合、前記第1及び第2のプロセッサの内の当該リード要求を処理するリード実行プロセッサは、当該リード要求に係るデータが、前記第1及び第2のキャッシュメモリの当該リード実行プロセッサと対応付けられている何れの区画にも存在しない場合、当該リード要求に係るデータを前記記憶ドライブからリードし、そのリードしたデータを前記第1のキャッシュメモリ内の当該リード実行プロセッサと対応付けられている区画に一時的に格納し、
 前記第2のホストインタフェースがホスト計算機からリード要求を受領した場合、前記第1及び第2のプロセッサの内の当該リード要求を処理するリード実行プロセッサは、当該リード要求に係るデータが、前記第1及び第2のキャッシュメモリの当該リード実行プロセッサと対応付けられている何れの区画にも存在しない場合、当該リード要求に係るデータを前記記憶ドライブからリードし、そのリードしたデータを前記第2のキャッシュメモリ内の当該リード実行プロセッサと対応付けられている区画に一時的に格納し、
 前記第1及び第2のプロセッサの内の少なくとも1つは、
  前記第1のキャッシュメモリの第1の区画に対するデータの格納頻度に応じて、前記第1のキャッシュメモリの第1の区画のサイズを変更し、
  前記第2のキャッシュメモリの第2の区画に対するデータの格納頻度に応じて、前記第2のキャッシュメモリの第2の区画のサイズを変更する
表現1に記載のストレージシステム。
(表現3)
 前記第1及び第2のプロセッサの内の少なくとも1つは、
  前記第1又は第2のキャッシュメモリ内の第1の区画のサイズを拡大する場合、同一キャッシュメモリ内の第2の区画のサイズを縮小し、
  前記第1又は第2のキャッシュメモリ内の第2の区画のサイズを拡大する場合、同一キャッシュメモリ内の第1の区画のサイズを縮小する
表現2に記載のストレージシステム。
(表現4)
 前記第1及び第2のプロセッサの内の少なくとも1つは、
  同一キャッシュメモリ内における前記第1の区画に対するデータの格納頻度と前記第2の区画に対するデータの格納頻度とを比較し、格納頻度の大きい方の区画のサイズを拡大する
表現2又は3に記載のストレージシステム。
(表現5)
 前記第1及び第2のプロセッサの内の少なくとも1つは、
  同一キャッシュメモリ内における第1の区画に対するデータの格納頻度と第2の区画に対するデータの格納頻度とに基づいて、当該キャッシュメモリ内における第1及び第2の区画の目標のサイズを決定し、
  当該キャッシュメモリ内における第1及び第2の区画のサイズを、それぞれ、その決定した第1及び第2の区画の目標のサイズに近づくように変更する
表現2乃至4の何れか1つに記載のストレージシステム。
(表現6)
 前記第1及び第2のプロセッサの内の少なくとも1つは、
  同一キャッシュメモリ内における第1の区画に対するデータの格納頻度と第2の区画に対するデータの格納頻度との差分が所定の閾値以上の場合、格納頻度の大きい方の区画のサイズが拡大され、格納頻度の小さい方の区画のサイズが縮小されるように、当該キャッシュメモリ内における第1及び第2の区画の目標のサイズを決定する
表現5に記載のストレージシステム。
(表現7)
 各区画には、前記キャッシュメモリのアクセス単位であるセグメントが複数割り当てられており、
 各キャッシュメモリは、何れの区画にも割り当てられてないセグメントである共有フリーセグメントを複数有し、
 前記キャッシュメモリ内の区画のサイズを拡大することは、同一キャッシュメモリ内の共有フリーセグメントを当該区画に割り当てることであり、
 前記キャッシュメモリ内の区画のサイズを縮小することは、当該区画に割り当てられているセグメントの割当を解除し、同一キャッシュメモリ内の共有フリーセグメントに変更することである
表現2乃至6の何れか1つに記載のストレージシステム。
(表現8)
 前記第1のホストインタフェースがホスト計算機からライト要求を受領した場合、前記第1及び第2のプロセッサの内の当該ライト要求を処理するライト実行プロセッサは、当該ライト要求に係るデータを、前記第1及び第2のキャッシュメモリの当該ライト実行プロセッサと対応付けられている区画に一時的に格納し、
 前記第2のホストインタフェースがホスト計算機からライト要求を受領した場合、前記第1及び第2のプロセッサの内の当該ライト要求を処理するライト実行プロセッサは、当該ライト要求に係るデータを、前記第1及び第2のキャッシュメモリの当該ライト実行プロセッサと対応付けられている区画に一時的に格納し、
 前記第1及び第2のプロセッサの少なくとも1つは、
  各キャッシュメモリの区画毎に、前記記憶ドライブに未格納なデータを有するダーティセグメントと、前記記憶ドライブに格納済みのデータを有するクリーンセグメントと、新規データを格納可能なフリーセグメントと、を管理し、
  キャッシュメモリ毎に、共有フリーセグメントを管理する
表現7に記載のストレージシステム。
(表現9)
 前記第1及び第2のプロセッサの内の少なくとも1つは、
  前記キャッシュメモリにおける共有フリーセグメントの数が閾値以下の場合、当該キャッシュメモリ内におけるサイズの縮小対象の区画のフリーセグメントを、共有フリーセグメントに変更する
表現8に記載のストレージシステム。
(表現10)
 前記第1及び第2のプロセッサの内の少なくとも1つは、
  前記キャッシュメモリ内におけるサイズの縮小対象の区画にフリーセグメントが存在しない場合、当該区画のダーティセグメント又はクリーンセグメントを、フリーセグメントに変更する
表現9に記載のストレージシステム。
(表現11)
 各区画には、前記キャッシュメモリのアクセス単位であるセグメントが複数割り当てられており、
 各キャッシュメモリは、何れの区画にも割り当てられてないセグメントである共有フリーセグメントを複数有し、
 前記第1及び第2のプロセッサの少なくとも1つは、
  各キャッシュメモリの区画毎に、前記記憶ドライブに未格納なデータを有するダーティセグメントと、前記記憶ドライブに格納済みのデータを有するクリーンセグメントと、新規データを格納可能なフリーセグメントと、を管理し、
  キャッシュメモリ毎に、共有フリーセグメントを管理する
 前記キャッシュメモリ内の区画のサイズを拡大することは、同一キャッシュメモリ内の共有フリーセグメントを、当該区画にフリーセグメントとして割り当てることであり、
 前記キャッシュメモリ内の区画のサイズを縮小することは、当該区画に割り当てられているクリーンセグメント又はフリーセグメントを、同一キャッシュメモリ内の共有フリーセグメントに変更することである
表現1乃至6の何れか1つに記載のストレージシステム。
(表現12)
 第1及び第2のプロセッサと、
 第1及び第2のキャッシュメモリと、
 ホスト計算機と双方向通信可能に接続されている第1及び第2のホストインタフェースと、
 記憶ドライブと
を備える計算機における記憶制御方法であって、
 前記第1のホストインタフェースから第1のキャッシュメモリに対するレイテンシが、前記第1のホストインタフェースから前記第2のキャッシュメモリに対するレイテンシよりも小さく、
 前記第2のホストインタフェースから第2のキャッシュメモリに対するレイテンシが、前記第2のホストインタフェースから前記第1のキャッシュメモリに対するレイテンシよりも小さく、
 前記第1及び第2のキャッシュメモリの各々は、前記第1のプロセッサと対応付けられており前記第1のプロセッサにより処理されるI/O要求に関するデータが前記第1のプロセッサにより一時的に格納される第1の区画と、前記第2のプロセッサと対応付けられており前記第2のプロセッサにより処理されるI/O要求に関するデータが前記第2のプロセッサにより一時的に格納される第2の区画とを有し、
 前記第1及び第2のプロセッサの内の少なくとも1つは、前記第1のキャッシュメモリの第1の区画のサイズと、前記第2のキャッシュメモリの第1の区画のサイズとを独立に制御し、前記第1のキャッシュメモリの第2の区画のサイズと、前記第2のキャッシュメモリの第2の区画のサイズとを独立に制御する
記憶制御方法。
(表現13)
 前記第1のホストインタフェースがホスト計算機からリード要求を受領した場合、前記第1及び第2のプロセッサの内の当該リード要求を処理するリード実行プロセッサは、当該リード要求に係るデータが、前記第1及び第2のキャッシュメモリの当該リード実行プロセッサと対応付けられている何れかの区画に存在するか否かを判定し、何れの区画にも存在しないと判定した場合、当該リード要求に係るデータを前記記憶ドライブからリードし、そのリードしたデータを前記第1のキャッシュメモリ内の当該リード実行プロセッサと対応付けられている区画に一時的に格納し、
 前記第2のホストインタフェースがホスト計算機からリード要求を受領した場合、前記第1及び第2のプロセッサの内の当該リード要求を処理するリード実行プロセッサは、当該リード要求に係るデータが、前記第1及び第2のキャッシュメモリの当該リード実行プロセッサと対応付けられている何れかの区画に存在するか否かを判定し、何れの区画にも存在しないと判定した場合、当該リード要求に係るデータを前記記憶ドライブからリードし、そのリードしたデータを前記第2のキャッシュメモリ内の当該リード実行プロセッサと対応付けられている区画に一時的に格納し、
 前記第1及び第2のプロセッサの内の少なくとも1つは、
  前記第1のキャッシュメモリの第1の区画に対するデータの格納頻度に応じて、前記第1のキャッシュメモリの第1の区画のサイズを変更し、
  前記第2のキャッシュメモリの第2の区画に対するデータの格納頻度に応じて、前記第2のキャッシュメモリの第2の区画のサイズを変更する
表現12に記載の記憶制御方法。
 2:ストレージシステム 4:ホスト計算機 11:ストレージコントローラ 12:プロセッサ 13:メモリ 18:ドライブ 19:プロセッサ間パス 32:コントローラ間パス
 
 

 

Claims (13)

  1.  第1及び第2のプロセッサと、
     第1及び第2のキャッシュメモリと、
     ホスト計算機と双方向通信可能な第1及び第2のホストインタフェースと、
     記憶ドライブと
    を備えるストレージステムであって、
     前記第1のホストインタフェースから第1のキャッシュメモリに対するレイテンシが、前記第1のホストインタフェースから前記第2のキャッシュメモリに対するレイテンシよりも小さく、
     前記第2のホストインタフェースから第2のキャッシュメモリに対するレイテンシが、前記第2のホストインタフェースから前記第1のキャッシュメモリに対するレイテンシよりも小さく、
     前記第1及び第2のキャッシュメモリの各々は、前記第1のプロセッサと対応付けられており前記第1のプロセッサにより処理されるI/O要求に関するデータが前記第1のプロセッサにより一時的に格納される第1の区画と、前記第2のプロセッサと対応付けられており前記第2のプロセッサにより処理されるI/O要求に関するデータが前記第2のプロセッサにより一時的に格納される第2の区画とを有し、
     前記第1及び第2のプロセッサの内の少なくとも1つは、前記第1のキャッシュメモリの第1の区画のサイズと、前記第2のキャッシュメモリの第1の区画のサイズとを独立に制御し、前記第1のキャッシュメモリの第2の区画のサイズと、前記第2のキャッシュメモリの第2の区画のサイズとを独立に制御する
    ストレージシステム。
  2.  前記第1のホストインタフェースがホスト計算機からリード要求を受領した場合、前記第1及び第2のプロセッサの内の当該リード要求を処理するリード実行プロセッサは、当該リード要求に係るデータが、前記第1及び第2のキャッシュメモリの当該リード実行プロセッサと対応付けられている何れの区画にも存在しない場合、当該リード要求に係るデータを前記記憶ドライブからリードし、そのリードしたデータを前記第1のキャッシュメモリ内の当該リード実行プロセッサと対応付けられている区画に一時的に格納し、
     前記第2のホストインタフェースがホスト計算機からリード要求を受領した場合、前記第1及び第2のプロセッサの内の当該リード要求を処理するリード実行プロセッサは、当該リード要求に係るデータが、前記第1及び第2のキャッシュメモリの当該リード実行プロセッサと対応付けられている何れの区画にも存在しない場合、当該リード要求に係るデータを前記記憶ドライブからリードし、そのリードしたデータを前記第2のキャッシュメモリ内の当該リード実行プロセッサと対応付けられている区画に一時的に格納し、
     前記第1及び第2のプロセッサの内の少なくとも1つは、
      前記第1のキャッシュメモリの第1の区画に対するデータの格納頻度に応じて、前記第1のキャッシュメモリの第1の区画のサイズを変更し、
      前記第2のキャッシュメモリの第2の区画に対するデータの格納頻度に応じて、前記第2のキャッシュメモリの第2の区画のサイズを変更する
    請求項1に記載のストレージシステム。
  3.  前記第1及び第2のプロセッサの内の少なくとも1つは、
      前記第1又は第2のキャッシュメモリ内の第1の区画のサイズを拡大する場合、同一キャッシュメモリ内の第2の区画のサイズを縮小し、
      前記第1又は第2のキャッシュメモリ内の第2の区画のサイズを拡大する場合、同一キャッシュメモリ内の第1の区画のサイズを縮小する
    請求項2に記載のストレージシステム。
  4.  前記第1及び第2のプロセッサの内の少なくとも1つは、
      同一キャッシュメモリ内における前記第1の区画に対するデータの格納頻度と前記第2の区画に対するデータの格納頻度とを比較し、格納頻度の大きい方の区画のサイズを拡大する
    請求項2に記載のストレージシステム。
  5.  前記第1及び第2のプロセッサの内の少なくとも1つは、
      同一キャッシュメモリ内における第1の区画に対するデータの格納頻度と第2の区画に対するデータの格納頻度とに基づいて、当該キャッシュメモリ内における第1及び第2の区画の目標のサイズを決定し、
      当該キャッシュメモリ内における第1及び第2の区画のサイズを、それぞれ、その決定した第1及び第2の区画の目標のサイズに近づくように変更する
    請求項4に記載のストレージシステム。
  6.  前記第1及び第2のプロセッサの内の少なくとも1つは、
      同一キャッシュメモリ内における第1の区画に対するデータの格納頻度と第2の区画に対するデータの格納頻度との差分が所定の閾値以上の場合、格納頻度の大きい方の区画のサイズが拡大され、格納頻度の小さい方の区画のサイズが縮小されるように、当該キャッシュメモリ内における第1及び第2の区画の目標のサイズを決定する
    請求項5に記載のストレージシステム。
  7.  各区画には、前記キャッシュメモリのアクセス単位であるセグメントが複数割り当てられており、
     各キャッシュメモリは、何れの区画にも割り当てられてないセグメントである共有フリーセグメントを複数有し、
     前記キャッシュメモリ内の区画のサイズを拡大することは、同一キャッシュメモリ内の共有フリーセグメントを当該区画に割り当てることであり、
     前記キャッシュメモリ内の区画のサイズを縮小することは、当該区画に割り当てられているセグメントの割当を解除し、同一キャッシュメモリ内の共有フリーセグメントに変更することである
    請求項2に記載のストレージシステム。
  8.  前記第1のホストインタフェースがホスト計算機からライト要求を受領した場合、前記第1及び第2のプロセッサの内の当該ライト要求を処理するライト実行プロセッサは、当該ライト要求に係るデータを、前記第1及び第2のキャッシュメモリの当該ライト実行プロセッサと対応付けられている区画に一時的に格納し、
     前記第2のホストインタフェースがホスト計算機からライト要求を受領した場合、前記第1及び第2のプロセッサの内の当該ライト要求を処理するライト実行プロセッサは、当該ライト要求に係るデータを、前記第1及び第2のキャッシュメモリの当該ライト実行プロセッサと対応付けられている区画に一時的に格納し、
     前記第1及び第2のプロセッサの少なくとも1つは、
      各キャッシュメモリの区画毎に、前記記憶ドライブに未格納なデータを有するダーティセグメントと、前記記憶ドライブに格納済みのデータを有するクリーンセグメントと、新規データを格納可能なフリーセグメントと、を管理し、
      キャッシュメモリ毎に、共有フリーセグメントを管理する
    請求項7に記載のストレージシステム。
  9.  前記第1及び第2のプロセッサの内の少なくとも1つは、
      前記キャッシュメモリにおける共有フリーセグメントの数が閾値以下の場合、当該キャッシュメモリ内におけるサイズの縮小対象の区画のフリーセグメントを、共有フリーセグメントに変更する
    請求項8に記載のストレージシステム。
  10.  前記第1及び第2のプロセッサの内の少なくとも1つは、
      前記キャッシュメモリ内におけるサイズの縮小対象の区画にフリーセグメントが存在しない場合、当該区画のダーティセグメント又はクリーンセグメントを、フリーセグメントに変更する
    請求項9に記載のストレージシステム。
  11.  各区画には、前記キャッシュメモリのアクセス単位であるセグメントが複数割り当てられており、
     各キャッシュメモリは、何れの区画にも割り当てられてないセグメントである共有フリーセグメントを複数有し、
     前記第1及び第2のプロセッサの少なくとも1つは、
      各キャッシュメモリの区画毎に、前記記憶ドライブに未格納なデータを有するダーティセグメントと、前記記憶ドライブに格納済みのデータを有するクリーンセグメントと、新規データを格納可能なフリーセグメントと、を管理し、
      キャッシュメモリ毎に、共有フリーセグメントを管理する
     前記キャッシュメモリ内の区画のサイズを拡大することは、同一キャッシュメモリ内の共有フリーセグメントを、当該区画にフリーセグメントとして割り当てることであり、
     前記キャッシュメモリ内の区画のサイズを縮小することは、当該区画に割り当てられているクリーンセグメント又はフリーセグメントを、同一キャッシュメモリ内の共有フリーセグメントに変更することである
    請求項2に記載のストレージシステム。
  12.  第1及び第2のプロセッサと、
     第1及び第2のキャッシュメモリと、
     ホスト計算機と双方向通信可能に接続されている第1及び第2のホストインタフェースと、
     記憶ドライブと
    を備える計算機における記憶制御方法であって、
     前記第1のホストインタフェースから第1のキャッシュメモリに対するレイテンシが、前記第1のホストインタフェースから前記第2のキャッシュメモリに対するレイテンシよりも小さく、
     前記第2のホストインタフェースから第2のキャッシュメモリに対するレイテンシが、前記第2のホストインタフェースから前記第1のキャッシュメモリに対するレイテンシよりも小さく、
     前記第1及び第2のキャッシュメモリの各々は、前記第1のプロセッサと対応付けられており前記第1のプロセッサにより処理されるI/O要求に関するデータが前記第1のプロセッサにより一時的に格納される第1の区画と、前記第2のプロセッサと対応付けられており前記第2のプロセッサにより処理されるI/O要求に関するデータが前記第2のプロセッサにより一時的に格納される第2の区画とを有し、
     前記第1及び第2のプロセッサの内の少なくとも1つは、前記第1のキャッシュメモリの第1の区画のサイズと、前記第2のキャッシュメモリの第1の区画のサイズとを独立に制御し、前記第1のキャッシュメモリの第2の区画のサイズと、前記第2のキャッシュメモリの第2の区画のサイズとを独立に制御する
    記憶制御方法。
  13.  前記第1のホストインタフェースがホスト計算機からリード要求を受領した場合、前記第1及び第2のプロセッサの内の当該リード要求を処理するリード実行プロセッサは、当該リード要求に係るデータが、前記第1及び第2のキャッシュメモリの当該リード実行プロセッサと対応付けられている何れかの区画に存在するか否かを判定し、何れの区画にも存在しないと判定した場合、当該リード要求に係るデータを前記記憶ドライブからリードし、そのリードしたデータを前記第1のキャッシュメモリ内の当該リード実行プロセッサと対応付けられている区画に一時的に格納し、
     前記第2のホストインタフェースがホスト計算機からリード要求を受領した場合、前記第1及び第2のプロセッサの内の当該リード要求を処理するリード実行プロセッサは、当該リード要求に係るデータが、前記第1及び第2のキャッシュメモリの当該リード実行プロセッサと対応付けられている何れかの区画に存在するか否かを判定し、何れの区画にも存在しないと判定した場合、当該リード要求に係るデータを前記記憶ドライブからリードし、そのリードしたデータを前記第2のキャッシュメモリ内の当該リード実行プロセッサと対応付けられている区画に一時的に格納し、
     前記第1及び第2のプロセッサの内の少なくとも1つは、
      前記第1のキャッシュメモリの第1の区画に対するデータの格納頻度に応じて、前記第1のキャッシュメモリの第1の区画のサイズを変更し、
      前記第2のキャッシュメモリの第2の区画に対するデータの格納頻度に応じて、前記第2のキャッシュメモリの第2の区画のサイズを変更する
    請求項12に記載の記憶制御方法。

     
PCT/JP2015/063950 2015-05-14 2015-05-14 ストレージシステム、及び、記憶制御方法 WO2016181562A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/552,512 US11080192B2 (en) 2015-05-14 2015-05-14 Storage system and storage control method
PCT/JP2015/063950 WO2016181562A1 (ja) 2015-05-14 2015-05-14 ストレージシステム、及び、記憶制御方法
JP2017517576A JP6353981B2 (ja) 2015-05-14 2015-05-14 ストレージシステム、及び、記憶制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/063950 WO2016181562A1 (ja) 2015-05-14 2015-05-14 ストレージシステム、及び、記憶制御方法

Publications (1)

Publication Number Publication Date
WO2016181562A1 true WO2016181562A1 (ja) 2016-11-17

Family

ID=57249598

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/063950 WO2016181562A1 (ja) 2015-05-14 2015-05-14 ストレージシステム、及び、記憶制御方法

Country Status (3)

Country Link
US (1) US11080192B2 (ja)
JP (1) JP6353981B2 (ja)
WO (1) WO2016181562A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6565360B2 (ja) * 2015-06-17 2019-08-28 富士通株式会社 接続装置およびストレージ装置
US9984004B1 (en) * 2016-07-19 2018-05-29 Nutanix, Inc. Dynamic cache balancing
US11196733B2 (en) * 2018-02-08 2021-12-07 Dell Products L.P. System and method for group of groups single sign-on demarcation based on first user login

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146842A (ja) * 1995-11-20 1997-06-06 Hitachi Ltd 記憶サブシステム
JP2004139349A (ja) * 2002-10-17 2004-05-13 Nec Corp ディスクアレイ装置におけるキャッシュメモリ分割管理方式
JP2006221513A (ja) * 2005-02-14 2006-08-24 Hitachi Ltd 計算機システムにおけるデータ配置設定
JP2012533781A (ja) * 2009-11-19 2012-12-27 株式会社日立製作所 計算機システム及びその負荷均等化制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3757306A (en) * 1971-08-31 1973-09-04 Texas Instruments Inc Computing systems cpu
US7484043B2 (en) * 2003-06-25 2009-01-27 International Business Machines Corporation Multiprocessor system with dynamic cache coherency regions
US7444541B2 (en) * 2006-06-30 2008-10-28 Seagate Technology Llc Failover and failback of write cache data in dual active controllers
JP2008097527A (ja) * 2006-10-16 2008-04-24 Hitachi Ltd ストレージシステム及びその制御方法
US8769201B2 (en) * 2008-12-02 2014-07-01 Intel Corporation Technique for controlling computing resources
US8230176B2 (en) * 2009-06-26 2012-07-24 International Business Machines Corporation Reconfigurable cache
WO2013160939A1 (en) * 2012-04-24 2013-10-31 Hitachi, Ltd. Backup system and backup method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146842A (ja) * 1995-11-20 1997-06-06 Hitachi Ltd 記憶サブシステム
JP2004139349A (ja) * 2002-10-17 2004-05-13 Nec Corp ディスクアレイ装置におけるキャッシュメモリ分割管理方式
JP2006221513A (ja) * 2005-02-14 2006-08-24 Hitachi Ltd 計算機システムにおけるデータ配置設定
JP2012533781A (ja) * 2009-11-19 2012-12-27 株式会社日立製作所 計算機システム及びその負荷均等化制御方法

Also Published As

Publication number Publication date
US11080192B2 (en) 2021-08-03
US20180052772A1 (en) 2018-02-22
JP6353981B2 (ja) 2018-07-04
JPWO2016181562A1 (ja) 2017-11-24

Similar Documents

Publication Publication Date Title
JP5531091B2 (ja) 計算機システム及びその負荷均等化制御方法
US20130318196A1 (en) Storage system and storage control method for using storage area based on secondary storage as cache area
JP6101170B2 (ja) 計算機システム、キャッシュ管理方法、及び計算機
JP6068676B2 (ja) 計算機システム及び計算機システムの制御方法
US9003087B2 (en) Compound storage system and storage control method
US8656119B2 (en) Storage system, control program and storage system control method
US9329999B2 (en) Storage system improving read performance by controlling data caching
US8954666B2 (en) Storage subsystem
JP2021128802A (ja) 情報処理システム、ストレージシステム及びデータ転送方法
JP2010102413A (ja) ストレージ装置およびキャッシュ制御方法
JP2021515298A (ja) データ・ストレージ・システムにおける仮想ストレージ・ドライブ管理
US10176098B2 (en) Method and apparatus for data cache in converged system
JP6353981B2 (ja) ストレージシステム、及び、記憶制御方法
WO2022050998A1 (en) Pooled memory controller for thin-provisioning disaggregated memory
JP5987498B2 (ja) ストレージ仮想化装置、ストレージ仮想化方法及びストレージ仮想化プログラム
US8799573B2 (en) Storage system and its logical unit management method
US9798661B2 (en) Storage system and cache control method
JP2015191604A (ja) 制御装置、制御プログラム、および制御方法
JP7011156B2 (ja) ストレージ制御装置およびプログラム
JP5597266B2 (ja) ストレージシステム
JP7067256B2 (ja) データ転送装置およびデータ転送方法
US11809315B2 (en) Fabricless allocation of cache slots of local shared caches with cache slot recycling in a fabric environment
US11698865B1 (en) Active data placement on cache eviction
WO2017168690A1 (ja) ストレージ装置、及び方法
US20220121571A1 (en) Cross-blade cache slot donation

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15891886

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017517576

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15552512

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15891886

Country of ref document: EP

Kind code of ref document: A1