JP4437489B2 - 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム - Google Patents

揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム Download PDF

Info

Publication number
JP4437489B2
JP4437489B2 JP2006289538A JP2006289538A JP4437489B2 JP 4437489 B2 JP4437489 B2 JP 4437489B2 JP 2006289538 A JP2006289538 A JP 2006289538A JP 2006289538 A JP2006289538 A JP 2006289538A JP 4437489 B2 JP4437489 B2 JP 4437489B2
Authority
JP
Japan
Prior art keywords
data
volatile
sub
area
memory
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.)
Expired - Fee Related
Application number
JP2006289538A
Other languages
English (en)
Other versions
JP2008108026A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006289538A priority Critical patent/JP4437489B2/ja
Priority to US11/610,072 priority patent/US7613877B2/en
Publication of JP2008108026A publication Critical patent/JP2008108026A/ja
Application granted granted Critical
Publication of JP4437489B2 publication Critical patent/JP4437489B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0673Single storage device

Description

本発明は、ストレージシステムに関する。
ストレージシステムには、一般に、キャッシュメモリが備えられている。キャッシュメモリは、上位装置から受信したライトコマンドに従ってストレージシステム内の複数の記憶装置のうちの少なくとも一つに書込まれるデータ、或いは、リードコマンドに従って複数の記憶装置のうちの少なくとも一つから読み出されたデータを、一時的に記憶するのに利用される。
ストレージシステムの電源に障害が生じた等の理由により、キャッシュメモリへの給電が無くなる場合がある。この場合、キャッシュメモリが揮発性メモリである場合、キャッシュメモリに記憶されているデータが失われてしまう。
例えば、文献1(米国特許5586291号)及び文献2(特開平6−222988号公報)のそれぞれには、揮発性のキャッシュメモリの他に、不揮発性のメモリを備え、不揮発性メモリにデータを保持することの開示がある。また、文献3(米国特許6539456号)及び文献4(米国公開特許2004/64647号)のそれぞれには、不揮発性メモリをキャッシュメモリとして利用することの開示がある。
米国特許5586291号 特開平6−222988号公報 米国特許6539456号 米国公開特許2004/64647号
文献1及び文献2のそれぞれに開示の不揮発性メモリは、不揮発性とは言っても、バッテリーからの給電を受けることによりデータを保持することができるメモリである。そのため、いずれの文献の開示の技術でも、例えば、ストレージシステムに電源障害が生じても不揮発性メモリにデータを保持し続けさせるためには、バッテリーが必要である。
また、文献2では、冗長化構成において、一方の系に障害が生じると、他系の電源で、不揮発性メモリに記憶されているデータを、テープ或いはディスクドライブ装置のような直接アクセス記憶装置にコピーすることが開示されている。そのデータコピー中に、他系の電源に障害が発生すると、データが消滅してしまうおそれがある。このため、バッテリーからの給電により不揮発性メモリから直接アクセス記憶装置にデータをコピーすることが考えられる。しかし、直接アクセス記憶装置はアクセス速度が遅いため、長時間給電し続けることが可能な大容量のバッテリーが必要になってしまう。
そこで、文献3及び文献4に開示の技術を、ストレージシステムに適用することが考えられる。すなわち、ストレージシステムのキャッシュメモリを、揮発性のメモリではなく、バッテリーからの給電が無くてもデータを記憶し続けることが可能なタイプの不揮発性メモリにする方法が考えられる。
しかし、そのタイプの不揮発性メモリは、一般に、更新回数(消去回数)に応じて劣化していく。パーソナルコンピュータのような小規模な装置で、不揮発性メモリをキャッシュメモリとして使用しても、不揮発性メモリに対する更新による寿命の劣化はあまり問題とならないかもしれない。しかし、ストレージシステムのような大規模な装置では、キャッシュメモリへの更新が上記のような小規模な装置に比して頻発するので、更新回数に応じた寿命の劣化が問題になると考えられる。
従って、本発明の目的は、揮発性のキャッシュメモリのバックアップに必要なバッテリーの容量を削減することにある。
本発明の別の目的は、ストレージシステムに備えた不揮発性メモリの劣化を抑えることにある。
本発明の更なる目的は、後の記載から明らかになるであろう。
ストレージシステムに、揮発性のキャッシュメモリの他に、給電の有無に関わらずデータを記憶し続けることが可能なタイプのメモリである不揮発性メモリを備える。揮発性キャッシュメモリを主に使用し、不揮発性メモリを補助的に使用する。
具体的には、ストレージシステムのアクセス制御部は、ストレージシステムが上位装置から受信したアクセスコマンドを処理する場合、該アクセスコマンドに従うデータを一時記憶させるメモリとして、揮発性キャッシュメモリの方を使用する。すなわち、アクセス制御部は、アクセスコマンドがライトコマンドの場合、該ライトコマンドに従うデータを揮発性キャッシュメモリに一時記憶させ、該記憶させたデータを前記揮発性キャッシュメモリから読み出し、複数の記憶装置の少なくとも一つに格納する。アクセスコマンドがリードコマンドの場合、アクセス制御部は、該リードコマンドに従うデータを複数の記憶装置の少なくとも一つから読み出して揮発性キャッシュメモリに一時記憶させ、該記憶させたデータを、揮発性キャッシュメモリから読み出して上位装置に送信する。
そして、ストレージシステムには、二次電源であるバッテリーと、キャッシュデータコピー部とを備える。キャッシュデータコピー部は、一次電源から揮発性キャッシュメモリへの給電が無くなった場合に、バッテリーからの給電により、揮発性キャッシュメモリに記憶されているデータを不揮発性メモリにコピーする。
ここで言う“コピー”とは、第一の記憶域にあるデータと同じデータを第二の記憶域に書くことであり、第一の記憶域にあるデータがそのまま残されるか削除されるかは関係無い。
上位装置は、ストレージシステムの上位にある装置であり、例えば、ホスト計算機、他のストレージシステムとすることができる。
ストレージシステムに、複数の記憶装置に接続されるコントローラ部を備え、該コントローラ部に、アクセス制御部、キャッシュデータコピー部及び揮発性キャッシュメモリを搭載することができる。コントローラ部は、一又は複数の回路基盤で構成することができる。コントローラ部には、例えば、上位装置と接続される通信インタフェース装置である第一I/Fや、複数の記憶装置に接続される通信インタフェース装置である第二I/Fとを備えることができる。第一I/F及び第二I/Fの少なくとも一方は、例えば、通信ポートであり、専用線或いは通信ネットワークを介して、相手に接続される。
不揮発性メモリとしては、例えば、フラッシュメモリ(具体的には、例えば、NAND型フラッシュメモリ)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Parameter
Random Access Memory)など、種々の不揮発性メモリを採用することができる。不揮発性メモリは、コントローラ部に備えても良いし、コントローラ部と接続される記憶装置部に備えても良い。記憶装置部には、前述した複数の記憶装置が備えられる。
アクセス制御部及びキャッシュデータコピー部は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ(例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること)により構築することができる。コンピュータプログラムは、マイクロプロセッサに読み込まれて実行される。また、コンピュータプログラムがマイクロプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、CD−ROM等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
本発明によれば、揮発性のキャッシュメモリのバックアップに必要なバッテリーの容量を削減することができる。また、本発明によれば、ストレージシステムに備えた不揮発性メモリの劣化を抑えることができる。
以下、本発明の幾つかの実施形態を説明する。
<実施形態1>。
図19は、本発明の第一実施形態に係る計算機システムの概要、並びに、ホスト計算機からリードコマンドが発行された場合に実行される処理の流れの概要を示す。
ストレージシステム101は、コントローラ部301と、記憶装置部351と、バッテリー315とを備える。
記憶装置部351は、複数の記憶装置353を含む。複数の記憶装置353は、全てが同じ種類の記憶装置であっても良いし、異なる種類の記憶装置が混在しても良い。記憶装置353としては、例えば、ディスク型記憶装置(例えば、ハードディスクドライブ(HDD)、DVD(Digital Versatile Disk)ドライブ)、テープ型記憶装置(例えば、磁気テープドライブ)、或いは、フラッシュメモリデバイスとすることができる。複数の記憶装置353の記憶空間を基に一又は複数の論理ボリュームを提供することができる。複数の記憶装置353のうちの二以上の記憶装置353で、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループを構成することができ、該RAIDグループの記憶空間を基に論理ボリュームが提供されてもよい。複数の論理ボリュームの各々には、ボリューム識別子、例えば、LUN(Logical Unit Number)が対応付けられている。
コントローラ部301は、フロントエンドI/F(以下、FE
I/F)307と、バックエンドI/F(以下、BE I/F)317と、キャッシュメモリ(以下、CM)311と、不揮発性メモリ(以下、NM)313と、スイッチ(以下、SW)309と、マイクロプロセッサ(以下、MP)303とを備える。
FE I/F307は、ホスト計算機(以下、ホスト)200と通信可能に接続される通信インタフェース装置であり、例えば、通信ポートである。BE
I/F317は、複数の記憶装置353と通信可能に接続される通信インタフェース装置であり、例えば、通信ポートである。
CM311は、揮発性のメモリ、例えばDRAM(Dynamic Random Access Memory)である。CM311には、例えば、複数のサブ領域(以下、CMサブ領域)が含まれる。一方、NM313は、例えば、FM(Flash Memory)であり、複数のサブ領域(以下、NMサブ領域)が含まれる。
CM311には、ランダム領域375、シーケンシャル領域373及びキャッシュ制御領域377を用意することができる。ランダム領域375とは、少なくとも一つのCMサブ領域で構成される記憶域であり、ランダムアクセスにより記憶装置353に書込まれる或いは記憶装置353から読み出されたデータ(以下、ランダムアクセスデータ)が記憶される。シーケンシャル領域373とは、少なくとも一つのCMサブ領域で構成される記憶域であり、シーケンシャルアクセスにより記憶装置353に書込まれる或いは記憶装置353から読み出されたデータ(以下、シーケンシャルアクセスデータ)が記憶される。キャッシュ制御領域377とは、少なくとも一つのCMサブ領域で構成された記憶域、或いは、前述した複数のCMサブ領域とは別に用意された所定の記憶域であり、キャッシュ制御情報が記憶される。キャッシュ制御情報とは、CM311やNM313に対するデータ格納を制御するための情報であり、例えば、各アクセス先情報毎に、サブ領域アドレス情報(どこのサブ領域に対応しているか)、サブ領域種別(例えば、CMサブ領域であるか、NMサブ領域であるか)、サブ領域属性(例えば、クリーン、ダーティ、或いは、フリー)、及び、LRU(Least Recently Used)からの距離、を含む。前述したアクセス先情報は、ホスト200からのアクセスコマンドで指定されている第一種のアクセス先情報(例えば、LUN(Logical Unit Number)とLBA(Logical Brock
Address)との組み合わせ)であっても良いし、該アクセスコマンドで指定されているアクセス先情報を変換することにより取得される第二種のアクセス先情報(例えば、記憶装置353の識別子とLBAとの組み合わせ)であっても良い。サブ領域属性“クリーン”とは、記憶装置353に格納済みのデータ(クリーンのデータ)を記憶しているサブ領域であることを意味する。サブ領域属性“ダーティ”とは、記憶装置353に未だ格納されていないデータ(ダーティのデータ)を記憶しているサブ領域であることを意味する。サブ領域属性“フリー”とは、データの格納先の候補となるサブ領域であることを意味する。すなわち、本実施形態では、CM311にデータを格納する場合にも、NM313にデータを格納する場合でも、MP303により、複数のサブ領域の中から、サブ領域属性が“フリー”であるサブ領域が選択されてデータが一時格納され、その格納されたデータの種類により、そのサブ領域のサブ領域属性が、“フリー”から“クリーン”或いは“ダーティ”に変更される。また、本実施形態では、MP303により、サブ領域属性が“クリーン”である複数のサブ領域から、フリー化しても良いサブ領域が選択され、選択されたサブ領域のサブ領域属性が、“クリーン”から“フリー”に変更される。また、前述した「LRUからの距離」とは、例えば、LRUポインタに対し、サブ領域に対応したエントリをカスケードに接続し、LRUポイントから何番目のエントリであるかにより、特定することができる。LRUの距離が最短であれば、LRUであることを意味し、LRUからの距離が最長であれば、MRU(Most Recently Used)であることを意味する。
NM313には、NMキャッシュ領域391と、キャッシュ制御退避領域393とを用意することができる。NMキャッシュ領域391とは、少なくとも一つのNMサブ領域で構成され、CM311に記憶されているデータ(前述したキャッシュ制御情報とは異なる)のコピー先とされる記憶域である。キャッシュ制御退避領域393とは、少なくとも一つのNMサブ領域で構成された記憶域、或いは、前述した複数のNMサブ領域とは別に用意された所定の記憶域であり、キャッシュ制御情報の退避先(コピー先)とされる記憶域である。
SW309には、FE I/F307、CM311、NM313、MP303及びBE
I/F317が接続されている。SW309は、自分に接続されている複数の要素のうちのどの要素とどの要素とを接続するかの切り替えを行う。SW309は、例えば、LSI(Large Scale Integration)で実現することができる。SW309に代えて、バスなど他種の接続機構が採用されても良い。
MP303は、所定のコンピュータプログラムを実行することにより、ホスト200からFE
I/F307で受信したリードコマンドやライトコマンドを処理することができる。
以下、リードコマンドを受信した場合に実行される処理の流れの概要を、この図19を参照しながら説明する。図19では、点線矢印が、CMヒットした場合のデータの流れを示し、実線矢印が、NMヒットした場合のデータの流れを示し、一点鎖線矢印が、CM311からNMへのデータコピーを示す。
MP303は、リードコマンドからアクセス先情報を特定し、該アクセス先情報を用いてキャッシュ制御情報を参照することで、該アクセス先情報に対応したCMサブ領域を探す。そのCMサブ領域が見つかった場合(CMヒットした場合)、MP303は、見つかったCMサブ領域からデータを読み出してホスト200に送信する。MP303は、そのCMサブ領域が見つからなかった場合(CMミスの場合)には、該アクセス先情報を用いてキャッシュ制御情報を参照することで、該アクセス先情報に対応したNMサブ領域を探す。NMサブ領域が見つかった場合(NMヒットした場合)、MP303は、見つかったNMサブ領域からデータを読み出してホスト200に送信する。CMサブ領域もNMサブ領域も見つからなかった場合(CMミス且つNMミスの場合)、MP303は、該アクセス先情報に対応する、複数の記憶装置353における場所から、データを読出し、読み出したデータを、“フリー”のCMサブ領域に一時格納する。MP303は、そのCMサブ領域のサブ領域属性を“クリーン”にし、格納したデータを、該CMサブ領域から読み出してホスト200に送信する。
また、MP303は、上記のリードコマンドに従う読み出しがシーケンシャルアクセスかランダムアクセスかを判断する。MP303は、シーケンシャルアクセスと判断したならば、データの一時格納先の上記CMサブ領域を、シーケンシャル領域373に属させ、ランダムアクセスと判断したならば、そのCMサブ領域を、ランダム領域375に属させる。
また、MP303は、所定のコンピュータプログラムを適宜に実行することにより、CM311上のデータを、NM313にコピーすることができる。具体的には、例えば、MP303は、キャッシュ制御情報を参照することにより、ランダム領域375に属しサブ領域属性が“クリーン”でLRUであるCMサブ領域と、サブ領域属性が“フリー”のNMサブ領域とを特定する(無ければ、例えば、サブ領域属性が“クリーン”のNMサブ領域を“フリー”にする)。MP303は、特定したCMサブ領域内のクリーンのデータを、特定したNMサブ領域にコピーする。このデータコピーは、MP303によって実行されても良いし、DMA(Direct Memory Access)により実行されても良い。
次に、FE I/F307でライトコマンドを受信した場合に実行される処理の流れの概要を、図20を参照しながら説明する。図20では、点線矢印が、CMヒットした場合のデータの流れを示し、実線矢印が、NMヒットした場合のデータの流れを示し、一点鎖線矢印が、CM311が過負荷の場合のデータの流れを示す。
MP303は、ライトコマンドからアクセス先情報を特定し、該アクセス先情報を用いてキャッシュ制御情報を参照することで、該アクセス先情報に対応したCMサブ領域を探す。そのCMサブ領域が見つかった場合(CMヒットした場合)、MP303は、見つかったCMサブ領域に、ライトコマンドに従うデータを格納する。MP303は、そのCMサブ領域が見つからなかった場合(CMミスの場合)には、該アクセス先情報を用いてキャッシュ制御情報を参照することで、該アクセス先情報に対応したNMサブ領域を探す。NMサブ領域が見つかった場合(NMヒットした場合)、MP303は、キャッシュ制御情報を参照することにより、サブ領域属性が“フリー”のCMサブ領域を特定し、見つかったNMサブ領域から、特定されたCMサブ領域にデータをコピーする。そして、MP303は、そのCMサブ領域に、該ライトコマンドに従うデータを格納する。
また、MP303は、上記のライトコマンドに従う書込みがシーケンシャルアクセスかランダムアクセスかを判断する。MP303は、シーケンシャルアクセスと判断したならば、データの一時格納先の上記CMサブ領域を、シーケンシャル領域373に属させ、ランダムアクセスと判断したならば、そのCMサブ領域を、ランダム領域375に属させる。
MP303は、原則として、ランダム領域375に属し且つサブ領域属性が“クリーン”のCMサブ領域内のデータを、NM391のNMキャッシュ領域391にコピーするが、例外として、CM311が過負荷の場合には、ランダム領域375に属しサブ領域属性が“ダーティ”のCMサブ領域内のデータを、NM391のNMキャッシュ領域391にコピーする。CM311が過負荷の場合とは、例えば、サブ領域属性が“クリーン”或いは“フリー”のCMサブ領域が無くサブ領域属性が“ダーティ”のCMサブ領域しか存在しない場合である。このような場合には、例えば、MP303は、キャッシュ制御情報を参照することにより、ランダム領域375に属しサブ領域属性が“ダーティ”でありLRUのCMサブ領域と、サブ領域属性が“フリー”のNMサブ領域とを特定する(無ければ、“クリーン”のNMサブ領域を“フリー”にする)。MP303は、特定したCMサブ領域内のダーティのデータを、特定したNMサブ領域にコピーする。このデータコピーは、MP303によって実行されても良いし、DMA(Direct Memory Access)により実行されても良い。MP303は、NM313のダーティのデータを、記憶装置353にコピーすることができる。以下、CM311或いはNM313に記憶されているデータを記憶装置353に格納することを、本実施形態の説明において、「デステージ」と呼ぶ。
次に、コントローラ部301に一次電源201からの給電が無くなりバッテリー315からの給電でしか動作できなくなってしまった場合に実行される処理の流れの概要を、図21を参照しながら説明する。
この場合、CM311上のデータが、NMキャッシュ領域391に退避される。また、キャッシュ制御領域377上のキャッシュ制御情報が、キャッシュ制御退避領域393に退避される。これらの退避は、MP303により実行されても良いし、DMAにより行われても良い。
なお、データの退避では、クリーンのデータの退避は不要である。なぜなら、CM311上のクリーンのデータが消失しても、記憶装置353で保持されているからである。
そこで、一次電源201からの給電が無くなった場合、MP303が、バッテリー315からの給電により、以下のように動作することができる。具体的には、例えば、MP303が、キャッシュ制御情報を参照することにより、サブ領域属性“ダーティ”のCMサブ領域を特定し、特定したCMサブ領域内のダーティのデータを、NMキャッシュ領域391に退避する。ダーティのデータであれば、ランダムアクセスのデータであるかシーケンシャルアクセスのデータであるかに関わらず、退避される。また、キャッシュ制御情報については、キャッシュ制御情報の全てが、MP303によりキャッシュ制御退避領域393に退避されても良いし、MP303により、サブ領域属性“ダーティ”のCMサブ領域及びNMサブ領域を管理する部分が選択され、選択された部分が、キャッシュ制御退避領域393に退避されても良い。
以下、この第一実施形態について詳細に説明する。
図1は、本発明の第一実施形態に係る計算機システムの構成例を示す。
この計算機システムでは、1台以上のストレージシステム101、1台以上のホスト計算機200、及びSAN(Storage Area Network)管理計算機(以下、便宜上、「管理サーバ」と呼ぶ)400がある。
ストレージシステム101及びホスト200は、1個以上のSANポート88を有する。各SANポート88が、SAN300(具体的には、例えば、SAN300の構成要素であるSANスイッチ)に接続される。ストレージシステム101及びホスト200は、例えば、FCP(Fibre Channel Protocol)と呼ばれるプロトコルを用いて、コマンドやデータの送受信を行うことができる。
また、LAN(Local Area Network)500に、ストレージシステム101、ホスト200及び管理サーバ400が接続される。管理サーバ400は、LAN500を介して、ホスト200やストレージシステム1010と通信することができる。
なお、本実施の形態では、ストレージシステム101及びホスト200間で用いるSANのインタフェース及びプロトコルの種類を特に限定しない。例えば、インタフェース及びプロトコルの組合せとして、イーサネット(登録商標)(Ethernet(登録商標))とiSCSI(Internet Small Computer
System Interface)など他の組み合わせを用いても良い。また、ストレージシステム101及び管理サーバ400間をLANで接続することとしたがこれも例示に過ぎず、別のインタフェースを用いても良い。
ホスト200は、データベースなど何らかのアプリケーションを実行し、それらの処理に必要となるデータの入出力をストレージシステム101に対して行うコンピュータである。
ストレージシステム101は、ホスト200に1個以上の論理記憶領域(以下、論理ボリューム又はLVOLともいう)61を提供するシステムである。ホスト200がストレージシステム101へSCSIコマンドを送信すると、ストレージシステム101は、当該コマンドに従い、ホスト200との間でデータ転送を行う。ホスト200から転送されたデータは、前述した複数の記憶装置353のうちの少なくとも一つに格納される。具体的には、例えば、その転送されたデータは、各論理ボリューム61に対応付けられた物理記憶領域である、4つの記憶装置(例えばハードディスクドライブ)353により構成されたパリティグループ(以下、PGともいう)に格納される。パリティグループは、RAIDグループ、或いはアレイグループと呼ばれることもある。
なお、論理ボリューム61は、種々の論理ボリュームのいずれであってもよい。具体的には、例えば、論理ボリューム61は、パリティグループから固定的に物理記憶領域が割り当てられた論理ボリュームであっても良いし、パリティグループから動的に記憶領域が割り当てられる仮想的な論理ボリューム(以下、自動容量拡張ボリューム)であっても良いし、ホスト200からのコマンドによる制御指示や自動容量拡張ボリュームのモード変更指示等を格納する論理ボリュームであっても良いし、図示しない他のストレージシステム内の論理ボリュームが対応付けられた論理ボリューム(以下、外部接続ボリューム)であっても良い。自動容量拡張に関しては、例えば、特開2003−15915号公報(US特許番号6725328号、US特許番号6836819号、US出願番号10/991421号)に開示の技術を援用することができる。外部接続に関しては、例えば、特開2005−107645号公報(US出願番号10/769805号、US出願番号11/471556号)に開示の技術を援用することができる。
ホスト200は、例えば、FCPを用いる場合、ストレージシステム101のSANポート88を指定するためのポートアドレスと、LUN(Logical Unit Number)番号とをコマンドヘッダに付加してストレージシステム101へ発行することで、論理ボリューム61を指定することができる。コマンドには、他に、例えば、読み出しや書き込みといったコマンド種別を示すコマンドコード、論理ボリューム61内での転送開始位置を示すアドレスや転送長といった情報が含まれる。
ストレージシステム101は、SCSIコマンドを受信した場合、例えば、該SCSIコマンドに設定されている情報に基づき、SANポート88及びLUNから論理ボリューム61を特定し、データ転送を行う。本実施形態では、必ずしも各SANポート88に論理ボリューム61を1個以上設定する必要は無く、初期設定時において論理ボリューム61を設定しない未使用のSANポート88を1個以上用意するようにしても良い。図1では、S1d,S1vのSANポート88が未使用であることを示している。
なお、SANの信頼性を高めるため、図示するように、ストレージシステム101及びホスト200間を、複数のSANポート88及びSAN300で接続し、複数のSANポート88とLUNとの組み合わせを同一の論理ボリューム61へ対応付けることで、ホスト200から論理ボリューム61へのアクセス経路が冗長化されてもよい。
ホスト200は、冗長化した論理ボリューム61へのアクセス経路(例えば、ポートアドレスとLUNの組み合わせ)を仮想化するため、記憶領域をホストボリューム71(以下、HVOLともいう)という単位で管理することができる。ホスト200は、アプリケーションがホストボリューム71へアクセスすると、対応する論理ボリューム61へのSCSIコマンドをストレージシステム101に送信することができる。
図2は、ストレージシステム101の構成例を示す。
ストレージシステム101は、コントローラ部301と記憶装置部351とに大別することができる。また、ストレージシステム101には、このストレージシステム101の保守或いは管理を行うためのサービスプロセッサ(SVP)363を備えることができる。サービスプロセッサ363は、例えば、計算機(具体的には、例えば、ノート型のパーソナルコンピュータ)であり、各MP303A及び303Bの構成情報を設定したり、管理サーバ400と通信するためのプロセッサに対して情報を設定したりするなど、種々の処理を実行することができる。
コントローラ部301は、二重化されたクラスタで構成されている(二重化に限らない多重化であっても良い)。一方のクラスタに障害が生じた場合には、他方のクラスタで縮退運転することができる。両クラスタのハードウェア構成は、実質的に同じにすることができる。そのため、以下、一方のクラスタ(図2では、クラスタ#1と示すクラスタ)を例に採り説明する。
一方のクラスタには、ホストI/F307A、MP303A、DMAコントローラ304A、CM311A、NM313A、ディスクI/F317A、相互結合網316A及び電源部314Aが備えられる。ホストI/F307A、307B、ディスクI/F317A、317Bは、例えば、相互結合網のコネクティビティが許す範囲内で、必要なポート数に応じて増設及び/又は減設が可能であっても良い。また、MP303A、303B、CM311A、311B、NM313A、313B、及び、DMAコントローラ304A、304Bのうちの少なくとも一つの部位が、必要とされる性能に応じて増設及び/又は減設が可能であっても良い。
ホストI/F307Aは、例えば前述したFE I/F307に相当し、ディスクI/F317Aは、例えば前述したBE I/F317に相当する。DMAコントローラ304Aは、CM311AとNM313Aとの間のデータ転送を行う。
相互結合網316Aは、例えば前述したSW309に相当する。相互結合網316Aは、バスなどの他種の接続部であっても良い。相互結合網316Aには、一方のクラスタにおけるホストI/F307A、MP303A、DMAコントローラ304A、CM311A、NM313A及びディスクI/F317Aの他に、他方のクラスタにおけるホストI/F307B、MP303B、DMAコントローラ304B、CM311B、NM313B、ディスクI/F317Bも接続されている。このため、例えば、MP301Aは、一方の相互結合網316Aを介して一方のCM311AやNM313Aにアクセスすることもできるし、他方の相互結合網316Bを介して他方のCM311BやNM313Bにアクセスすることもできる。また、両方のディスクI/F317A及び317Bには、各記憶装置353が接続されており、故に、どちらのディスクI/F317A又は317Bを経由しても、どの記憶装置353にもアクセスできるようになっている。すなわち、このストレージシステム101では、各部位や、記憶装置353へのアクセス経路が、信頼性を高めるため二重化構成になっている。
電源部314Aは、一方のクラスタにおける各部位に給電する。電源部314Aは、例えば、商用電源からの電力を各部位に供給する電源回路と、電源回路に障害が生じた場合に所定部位(例えば、MP303A、CM311A)に給電するバッテリーとを含む。バッテリーは、例えば停電などの一次電源障害が生じた場合に、二次電源として、例えばCM311Aに給電することにより、CM311Aからのデータの消失を防ぐことができる。なお、図2において、コントローラ部301の中央に引かれた点線は、電源境界を意味する。すなわち、一方のMP303Aは、一方のCM311A及びNM313Aや他方のCM311B及びNM313Bにアクセスできるが、一方の電源部314Aからの給電は、一方のクラスタにおける各部位に対して行われ、他方のクラスタにおける各部位には行われないことを意味する。
記憶装置部351には、前述したように、複数の記憶装置353が含まれ、各記憶装置353は、両方のディスクI/F317A及び317Bと通信可能に接続されている。また、記憶装置部351には、各記憶装置353に給電する電源部357A及び357Bがある。電源部357A及び357Bは、二重化構成になっており、一方の電源部357Aに障害あった場合には、他方の電源部357Bから各記憶装置353に給電することができる。
このストレージシステム101では、例えば、以下のようになっている。
記憶装置部351の電源部357A、357Bは、例えば故障に備えて二重化(或いは三重化以上の多重化)されているが、各電源部には、バッテリーが含まれなくて良い。
NM313A、313Bは、前述したように、バッテリー等からの給電がなくてもデータを保持し続けることが可能なタイプのメモリである。一次電源障害が無い場合(例えば正常時の場合)は、CM311A、311Bと同様にキャッシュとして使用することが可能である。一方のCM311Aに障害が生じた場合(例えば、CM311Aそれ自体が壊れた或いは一方で一次電源障害が生じた場合)、NM313Aは、一次電源障害時のダーティデータの退避先として使用することができる。
NM313A、313Bは、寿命がある。具体的には、例えば、NMの更新回数が或る閾値(例えば、NMのメーカが規定する保証回数)を超えた場合、NMのデータが失われる可能性がある。NM313A、313Bのアクセス速度は、CM311A、311Bより低速だが、記憶装置353よりは高速である。NM313A、313Bのアクセス速度において、書込み速度に比して読出し速度の方が高速なものもある。
また、CM311AからNM311A(及び/又はNM311B)へのデータコピーや、NM311A(及び/又はNM311B)からCM311Bへのデータコピーは、MP303A(及び/又はMP303B)が行っても良いが、DMAコントローラ304A(及び/又はDMA304B)により行うことができる。
また、NM313A及び313Bは、相互結合網316A及び316Bに接続されているが、それに限らない。例えば、ディスクI/F317A、317Bと通信するためのインタフェースを持つNMデバイス(例えばフラッシュメモリデバイス)を記憶装置部351に搭載され、ディスクI/F317A、317Bを通じてMP303A、303Bと通信されても良い。その場合は電源部357A、357Bもバッテリーを持つ必要がある。
図3は、コントローラ部301の論理的な構成例を示す。この図3には、一方のクラスタでの構成を代表的に示している。
MP303Aでは、コントローラ部301上の記憶域から読み出されたコンピュータプログラムが実行される。また、MP303Aは、該記憶域から構成情報452を取得することができる。コンピュータプログラムとしては、例えば、コマンド処理プログラム451、RAID制御プログラム453、キャッシュ制御プログラム454、SVP通信プログラム455、初期化プログラム456、障害処理プログラム457、データ退避プログラム458及びNMリプレースプログラム459がある。以下、各プログラム及び構成情報452について説明する。その際、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するMPによって処理が行われるものとする。
コマンド処理プログラム451は、ホストI/F307Aが受信するSCSIコマンドを処理する。
構成情報452は、ホスト200に見せている論理ボリューム61と、パリティグループとの対応関係を表す情報である。構成情報452には、例えば、LU構成テーブルと、LVOL構成テーブルとを含む。各テーブルについては後述する。
RAID制御プログラム453は、パリティグループからCM311Aへのステージング(記憶装置353からCM311Aへのデータ読出し)や、CM311A或いはNM313Aのダーティのデータをパリティグループへデステージする。
キャッシュ制御プログラム454は、キャッシュ制御情報461を操作し、CMセグメント(CM311Aのサブ領域)の状態を制御する処理を実行する。このプログラム454は、例えば、コマンド処理プログラム451やRAID制御プログラム453から呼び出される。
SVP通信プログラム455は、SVP363と通信する。このプログラム455は、例えば、SVP363から入力された構成情報452を設定する処理を行う。SVP363は、スタンドアロンで動作可能(例えば、ディスプレイ装置や入力装置(例えばキーボード)を装備した装置)であっても良いし、管理サーバ400からの指示に従って構成情報452を入力可能であっても良い。SVP通信プログラム455は、障害処理プログラム457によって検出された障害を表す情報(障害情報)などをSVP363に通知することができる。SVP363は、その通知された障害情報を、管理サーバ400に通知することができる。
初期化処理プログラム456は、所定の初期化処理、例えば、後述する各種キューの初期化を行う。
障害処理プログラム457は、定期的、又は、他のコンピュータプログラムでエラーが発生した契機で、呼び出される。障害処理プログラム457は、各部位をチェックすることで、障害発生を検出し、適した障害処理を実施する。このプログラム457は、例えば、一次電源障害を検出した場合、データ退避プログラム458を呼び出すことができる。
データ退避プログラム458は、一次電源障害が生じた場合に(例えば障害処理プログラム457から呼び出された場合に)、CM311A上のダーティのデータをNM313Aに退避する。
NMリプレースプログラム459は、CM311AからNM313Aへのデータコピーのための処理を行う。
CM311Aには、前述したように、キャッシュ制御情報461が格納されるキャッシュ制御領域377がある。また、CM311Aには、複数のCMセグメント462がある。
キャッシュ制御情報461は、キャッシュ制御処理を行うための情報である。例えば、この情報461には、スロット制御ブロック、キャッシュディレクトリ、クリーンキュー、ダーティキュー、フリーキューが含まれる。
CMセグメント462とは、前述したCMサブ領域の一種である。言い換えれば、CM311Aを固定長のセグメントに分割して管理することができる。CMセグメントサイズは、任意のサイズでもよい(例えば4kB(キロバイト)とする)。
NM313Aには、前述したように、キャッシュ制御退避領域393がある。また、NM313Aには、複数のNMセグメント463がある。NMセグメント463とは、前述したNMサブ領域の一種である。言い換えれば、NM313Aを固定長のセグメントに分割して管理することができる。NMセグメント463には、CMセグメント462に格納されるデータを格納することができる。そのため、NMセグメントサイズをCMセグメントサイズと同じにすることができる。なお、それに代えて、例えば、NMセグメントには、データの他に、所定種類の制御情報が格納されても良い。この場合、NMセグメントサイズを、CMセグメントサイズに、格納される制御情報のサイズを加算した値とすることができる(それとは異なる値であっても良い)。
図4Aは、LU構成テーブルの構成例を示す。以下、識別子を「ID」と略記する
LU構成テーブル452−1は、各SANポートのLUNに対応するLVOL IDを決めるためのテーブルである。具体的には、例えば、LU構成テーブル452では、ホストI/F307A、307Bにおける各SANポート88毎に、ポートID、LUN(論理ユニット番号)、LVOL IDが対応付けられる。ここで、LUとは、ホスト200から認識される論理ボリュームを意味し、それに対しLVOLとは、ストレージシステム101内で認識される論理ボリュームを意味する。例えば、LUとLVOLが1対1で対応することもあれば、複数のLVOLで一つのLUとされる場合もある。
このテーブル452−1が複数個あっても良い。この場合、ホスト200によって同一LUNが別のLVOL IDにマッピングされても良い。
図4Bは、LVOL構成テーブルの構成例を示す。
LVOL構成テーブル452−2は、LVOLの実体(データ格納先)を決めるためのテーブルである。具体的には、例えば、LVOL構成テーブル452−2では、各LVOL毎に、LVOL ID、PG ID、及び先頭スロット番号が対応付けられる。この他に、他種の情報要素、例えばLVOLの容量が書かれても良い。PG IDとは、パリティグループのIDである。
パリティグループは、スロットという容量単位で、LVOLに割当てることが可能である。そのため、LVOLの容量は、例えば、スロットの数で表されても良い。スロットサイズは、4kB(キロバイト)とすることができるが、それに限らず、他のサイズが採用されても良い。
図5は、キャッシュ制御情報461の構成例を示す。
具体的には、図5Aは、キャッシュディレクトリ管理構造の一例を示す。
図5Aに示すキャッシュディレクトリ管理構造は、PG IDとスロット番号との組み合わせ(以下、PG ID/スロット番号)からディレクトリエントリ553を探すためのデータ構造である。
ハッシュテーブル551がある。ハッシュテーブル551には、複数のディレクトリエントリポインタが含まれる。このテーブル551に記録されるディレクトリエントリポインタは、ディレクトリエントリ553を特定する情報であり、例えばCM上でのアドレス値などである。ハッシュテーブル551の各ディレクトリエントリポインタは、PG ID/スロット番号のハッシュ値が互いに等しいディレクトリエントリ553からなる単方向リストの先頭を指し示す。PG ID/スロット番号は、他の方式で圧縮されても良い。
この実施形態では、ホスト200からのSCSIコマンドで指定されているアドレス情報(例えばLUNとLBAとの組み合わせ)を用いて、構成情報452を参照することにより、LVOL IDが特定され、該特定されたLVOL IDとLBAとから、PG ID/スロット番号を特定することできる。そして、PG ID/スロット番号をハッシュ化することにより、ディレクトリエントリポイントが求まり、ディレクトリエントリポインタから、ディレクトリエントリ553を特定することができる。
ディレクトリエントリ553は、CMセグメント462またはNMセグメント463に対応した情報である。ディレクトリエントリ553には、複数種類の情報要素が記述される。例えば、ディレクトリエントリポインタ、双方向キューポインタ、PG ID/スロット番号、セグメント種別、セグメントアドレス、スロット属性、ダーティビットマップ及び時刻を含めることができる。双方向キューポインタとは、LRU管理構造において、どの他のディレクトリエントリ553と論理的に繋がるかを表す値であり、双方向に対応するため2つのポインタを有する。この双方向キューポインタから、このディレクトリエントリ553に論理的に繋がっている2つの他のディレクトリエントリ553のうち、どちらがLRU側に近い方でどちらがMRU側に近い方であるかを特定することができる。セグメント種別とは、例えば、CMセグメントであるかNMセグメントであるかを表す。セグメントアドレスとは、セグメントの場所を表す。スロット属性とは、スロットに対応したセグメントの属性(ダーティ、クリーン、フリー)を表す。ダーティビットマップは、例えば、スロットに対応したセグメントを複数の領域に分割した場合に各領域に対応したビットの集合である。ダーティのデータが存在する領域に対応したビットは、有効(例えば1)とされ、そうでない領域に対応したビットは、無効(例えば0)とされる。ディレクトリエントリ553に記録される時刻は、後述するキュー遷移時の時刻を表す。
本実施形態では、説明を分かり易くするため、スロットサイズとCMセグメントサイズとを同じとする。しかし、それに限らず、例えば、もし、スロットサイズが、CMセグメントサイズのN倍(Nは2以上の整数)であれば、ディレクトリエントリ553にPG
ID/スロット番号に加えてスロット内で何番目のセグメントであるかを記録し、ヒットミス判定でPG ID/スロット番号とそのセグメント番号が一致した場合にヒットと判断してもよい。
また、前述したダーティビットマップは、例えば、ホスト200からライトコマンドでの書込み単位サイズがセグメントサイズと一致しない場合に有用である。具体的には、例えば、セグメントサイズが、書込み単位サイズのM倍(Mは2以上の整数)の場合には、一つのセグメントにつきM個のビットの集合でダーティビットマップを構成することができる。SCSIでは、例えば、ホスト200からのアクセス(I/O)最小単位は、512バイトのため、セグメントサイズが4kbであれば、4kB/512B=8bitあれば良い。
図5Bは、LRU管理構造の一例を示す。
この図5Bは、CMランダムクリーンのLRUの管理構造を示す。LRU管理は、キューで行うことができる。すなわち、CM311Aに存在し、ランダムデータ(ランダムアクセスされるデータ)且つクリーンのデータのLRUを管理するための構造である。CMランダムクリーンキューのLRUポインタ557に繋がっているディレクトリエントリ553から特定されるCMセグメント内のデータが、LRU、すなわち、CM311Aに存在するランダムデータ且つクリーンのデータのうち、最も過去に使われたデータであることを示す。逆に、CMランダムクリーンキューのMRUポインタ555に繋がっているディレクトリエントリ553から特定されるCMセグメント内のデータが、MRU、すなわち、最近使われたデータであることを示す。新たにCM311Aのデータが使用される(アクセスされる)都度に、その使用に対応したディレクトリエントリ553が、MRUポインタ555と、それに繋がっているディレクトリエントリ553との間に挿入される。
この図5Bは、CMランダムクリーンのLRU管理のための構造であるが、これと同様の構造で、CMシーケンシャルクリーン(CM311Aに存在しシーケンシャルデータ且つクリーンのデータ)、CMランダムダーティ(CM311Aに存在しランダムデータ且つダーティのデータ)、CMシーケンシャルダーティ(CM311Aに存在しシーケンシャルデータ且つダーティのデータ)、NMクリーン(NM313Aに存在するクリーンのデータ)、NMダーティ(NM313Aに存在するダーティのデータ)のそれぞれのLRU管理も行うことができる。なお、NMダーティのLRU管理構造は、障害が生じた場合(例えば、CM311Aが過負荷の場合、或いは、一次電源障害が生じてダーティのデータがCM311AからNM313Aに退避された場合)に用いられる。
図5Cは、フリー管理構造を示す。
この図5Cは、CMフリー(スロット属性“フリー”に属するディレクトリエントリ)の管理のための構造を示す。この管理は、キューで行うことができる。CMフリーの管理では、スロット属性“フリー”に属するディレクトリエントリ(すなわち、“フリー”のCMセグメント)が管理できれば良く、LRUの管理は不要なので、双方向キューポインタに含まれる2つのポインタのうち片方しか使用しない(もう片方のポインタとしては、例えば、無効を意味する値が設定される)。CMフリーキューポインタ559から、CMフリーの一以上のディレクトリエントリ553が連結される。この連結構造の末尾のディレクトリエントリ553には、末尾を意味する値(例えばNULL)が関連付けられる。
NMフリーについても、同様のフリー管理構造を適用することができる。
なお、以上のキャッシュ制御情報461において、例えば、初期状態では、全てのディレクトリエントリ553は、CMセグメント462に対応するものはCMフリー、NMセグメント463に対応するものはNMフリーキューに入れられる。具体的には、例えば、初期化プログラム456により、初期化処理の一つとして、各ディレクトリエントリ553に、セグメント種別とセグメントアドレスを設定し、セグメント種別に対応するフリーキューへ登録する処理が実行される。
以下、この第一実施形態で行われる幾つかの処理の流れを説明する。
図6は、ホストI/Fでリードコマンドを受信した場合に実行される処理の流れの一例を示す。なお、図では、ステップを「S」と略記している。
ステップ101では、コマンド処理プログラム451が、リードコマンドで指定されているアクセス先情報(例えばLUN及びLBA)から、PG
ID/スロット番号を算出する。
ステップ102では、コマンド処理プログラム451が、キャッシュヒット/ミスの判定を行う。具体的には、例えば、コマンド処理プログラム451は、算出されたPG
ID/スロット番号に対応したディレクトリエントリ553の有無の判定を行う。この判定では、例えば、コマンド処理プログラム451は、CMに関するキューを先に参照し、CMミスとなった場合に、NMに関するキューを参照する。CMを主に使用するためである。これにより、この判定(ステップ102)を短時間で終えることが期待できる。
ステップ102の判定で、対応したディレクトリエントリ553が有り、そのディレクトリエントリ553のセグメント種別がCMの場合、CMヒットとなるため、ステップ103でYとなり、ステップ108に進む。対応したディレクトリエントリ553が有り、そのディレクトリエントリ553のセグメント種別が、NMの場合、CMミス且つNMヒットとなるため、ステップ103でN、ステップ104でYとなり、ステップ108に進む。対応したディレクトリエントリ553が無い場合、CMミス且つNMミスのため、ステップ103でN、ステップ104でNとなり、ステップ105にすすむ。
ステップ105では、コマンド処理プログラム451によりキャッシュ制御プログラム454が呼び出される。そして、キャッシュ制御プログラム454により、CMセグメント割り当て処理が実行される。この処理については、後に図9を参照して説明する。
ステップ106では、コマンド処理プログラム451によりRAID制御プログラム453が呼び出される。そして、RAID制御プログラム453は、ステップ101で算出されたPG ID及びスロット番号から特定される場所(パリティグループにおける場所)から、ステップ105で割当てられたCMセグメントへの、ステージングを行う。
ステップ107では、RAID制御プログラム453によりキャッシュ制御プログラム454が呼びされる。キャッシュ制御プログラム454により、クリーン属性設定が行われる。具体的には、例えば、キャッシュ制御プログラム454が、ステージング先のCMセグメントに対応したディレクトリエントリ553に、スロット属性“クリーン”を設定する。
ステップ108では、コマンド処理プログラム451が、対応するディレクトリエントリ553に記録されているセグメントアドレスから、CMセグメント462或いはNMセグメント463を特定する。そして、コマンド処理プログラム451は、特定したCMセグメント462或いはNMセグメント463から、リードコマンドの送信元のホスト200へ、データを転送する。NMセグメント463からは、CM311Aを介すことなく、直接ホスト200へデータが転送されても良いし、CM311Aを介して(例えばCMセグメントを割り当て一旦そこにNMセグメントからデータをコピーした上で)、ホスト200へデータが転送されても良い。CM311Aを介するケースとしては、例えば、NM313Aが、相互結合網316Aに接続されておらず、記憶装置部351に備えられているケースが考えられる。
ステップ109では、コマンド処理プログラム451が、レスポンス(例えば読出し完了)を送信する。
ステップ110では、コマンド処理プログラム451が、シーケンシャル学習を実行する。すなわち、コマンド処理プログラム451が、転送したデータが、シーケンシャルアクセスで読み出されたか否かを判別する。
ステップ111では、コマンド処理プログラム451によりキャッシュ制御プログラム454が呼び出される。キャッシュ制御プログラム454が、キュー遷移を実行する。具体的には、例えば、上記対応するディレクトリエントリ553のセグメント種別がCMであるかNMであるかと、ステップ110での学習結果がシーケンシャルであるか否かとに応じて、キャッシュ制御プログラム454が、上記対応するディレクトリエントリ553を、現在のLRU管理構造から外し、CMランダムクリーンキューMRUポインタ、CMシーケンシャルクリーンキューMRUポインタ、或いはNMクリーンキューMRUポインタに繋げる(例えば直接繋げる)。
以上のように、この処理では、CMミス且つNMミスとなった場合、ステージング先として、CMセグメントが割当てられる。このため、NMセグメントの更新回数の増加を防ぐことができ、以って、NMの劣化を抑えることができる。
図7は、ホストI/Fでライトコマンドを受信した場合に実行される処理の流れの一例を示す。なお、以下の説明では、図6を参照した説明と重複する部分については、説明を省略或いは簡略する。
ステップ121では、コマンド処理プログラム451が、ライトコマンドで指定されているアクセス先情報から、PG
ID/スロット番号を算出する。
ステップ122では、ステップ102と同様に、コマンド処理プログラム451が、キャッシュヒット/ミスの判定を行う。このステップ122の判定で、CMヒットの場合、ステップ123でYとなり、ステップ131に進む。CMミスの場合、CM311Aにダーティのデータが過多であること(例えば、スロット属性“ダーティ”のディレクトリエントリの数が所定値に達していること)が、CMランダムに属するキューを構成するディレクトリエントリの数から検出された場合、ステップ123でN、ステップ124でYのため、ステップ125にすすみ、一定時間待つ。CMミスで、CM311Aにダーティのデータが過多ではなく、NMヒットの場合、ステップ123でN、ステップ124でN、ステップ126でYのため、ステップ128にすすむ。CMミスで、CM311Aにダーティのデータが過多ではなく、NMミスの場合、ステップ123でN、ステップ124でN、ステップ126でNのため、ステップ127にすすむ。
ステップ127、ステップ128では、ステップ105と同様に、CMセグメント割り当て処理が実行される。この際、単一故障によるダーティデータ喪失を防ぐため、両方のCMにおいてセグメントを割り当てる。
ステップ129では、コマンド処理プログラム451によりキャッシュ制御プログラム454が呼び出される。キャッシュ制御プログラム454が、NMヒットしたNMセグメントから、ステップ128で割当てられたCMセグメントに、データをコピーする。
ステップ130では、キャッシュ制御プログラム454により、コピー元のNMセグメントを“フリー”とするために、NMセグメントフリー化処理が行われる。この処理については、後に、図22を参照して説明する。
ステップ131では、コマンド処理プログラム451が、ステップ127で割当てられたCMセグメント、或いは、ステップ129のコピー先のCMセグメントに、ホスト200からのライトコマンドに従うデータを転送する。つまり、CMセグメントにデータが書込まれる。
ステップ132では、コマンド処理プログラム451によりキャッシュ制御プログラム454が呼びされる。キャッシュ制御プログラム454により、ダーティ属性設定及びダーティビット設定が行われる。具体的には、例えば、キャッシュ制御プログラム454が、データ転送先のCMセグメントに対応したディレクトリエントリ553に、スロット属性“ダーティ”を設定し、且つ、そのディレクトリエントリ553におけるダーティビットマップにおいて、そのCMセグメントに対応するビットを有効にする。なお、この段階で、ダーティとするのは、CMセグメントに書かれたデータが、未だ記憶装置353にデステージされていないためである。
ステップ133では、コマンド処理プログラム451が、レスポンス(例えば書込み完了)を送信する。
ステップ134では、コマンド処理プログラム451が、シーケンシャル学習を実行する。
ステップ135では、コマンド処理プログラム451によりキャッシュ制御プログラム454が呼び出される。キャッシュ制御プログラム454が、キュー遷移を実行する。具体的には、例えば、ステップ134での学習結果がシーケンシャルであるか否かに応じて、キャッシュ制御プログラム454が、上記対応するディレクトリエントリ553を、現在のLRU管理構造から外し、CMランダムダーティキューMRUポインタ、或いはCMシーケンシャルダーティキューMRUポインタに繋げる(例えば直接繋げる)。
以上のように、この処理では、CMミス且つNMミスとなった場合、データ転送先として、CMセグメントが割当てられる。このため、NMセグメントの更新回数の増加を防ぐことができ、以って、NMの劣化を抑えることができる。
また、以上の処理では、NMヒットとなった場合に、NMヒットしたNMセグメント上にデータを更新(上書き)するのではなく、そのNMセグメントからCMセグメントにデータをコピーし、コピー先のCMセグメント上で、データを更新する。これにより、NMセグメントの更新回数が増えることを抑えることができる。また、NM313Aの種類が、読出し速度に比して書込み速度が遅い場合(例えばNM313Aがフラッシュメモリの場合)、ライトコマンドの処理に要する時間が長くなってしまうことを抑えることができる。また、NM313Aの空き容量の消費を抑えることができる。
なお、CM311A上のダーティのデータは、定期的に或いは不定期的に、RAID制御プログラム453により、デステージされる。その場合、RAID制御プログラム453は、LRUのダーティデータから優先的にデステージすることができる。
また、上記の図7の処理において、例えば、図24に例示するように、ステップ124でYの場合、キャッシュ制御プログラム454は、性能優先かNM保護優先かを判断しても良い(ステップ141)。性能優先とは、ライトコマンドの処理速度を速めることをNM保護に比して優先であることを意味する。一方、NM保護優先とは、ライトコマンドの処理速度を速めることに比してNM保護を優先とすることを意味する。性能優先であるかNM保護優先であるかは、ライトコマンドを送信するホスト200から指定しても良いし、SVP363から予め各MP303A、303Bに対して設定されても良い。キャッシュ制御プログラム454は、NM保護優先であれば、図7のステップ125にすすむことができる。一方、性能優先であれば、はじめにNMダーティ量がCMからNMへダーティ退避不可能となるほど多くないかどうかチェックする(ステップ350)。NMダーティ量が過多で無いならばNMセグメント確保処理を実行し、NMセグメントを割当てる。そして、キャッシュ制御プログラム454は、CM311A上のダーティのデータをNM313Aにコピーする(ステップ142)。その際、LRUのダーティのデータから優先的にコピーすることができる。そして、キャッシュ制御プログラム454は、コピー元のCMセグメントを“フリー”とするためのCMセグメントフリー化処理を行い(ステップ143)、図7のステップ127にすすむことができる。以上のように、CM311Aにダーティのデータが過多の場合には、例外的な処理として、ダーティのデータをCM311AからNM313Aにコピーすることで、CMに空きを作り、その作られた空きに、新たにデータを格納することができる。また、そのような処理を行うか、或いは、一定時間待つかを、性能優先かNM保護優先かに応じて選択して行うことができる。なお、CM311AからNM313Aにダーティのデータをコピーした場合には、キャッシュ制御情報461中に、キャッシュ制御プログラム454により、NMダーティのLRU管理のためのキューが作成される。
また、図6において、ステップ103と104との間に、図7でのステップ124と同様のダーティ過多判断が行われても良い。CM311Aに、クリーンやフリーのCMセグメントが無くダーティのCMセグメントが満杯の場合もあり得るためである。この場合にも、図7と同様に、単に一定時間待っても良いし、或いは、図24を参照して説明した処理が適用されても良い。
図8は、NMリプレース処理の流れの一例を示す。
この図8に示すNMリプレース処理は、例えば、NMリプレースプログラム459によって定期的に開始される。このNMリプレース処理は、例えば、NMクリーンMRU時刻(NMクリーンでMRUのディレクトリエントリ553に記録されている時刻)とCMクリーンLRU時刻(CMクリーンでLRUのディレクトリエントリ553に記録されている時刻)との差をなるべく無くすことと、NMクリーンLRU時刻(NMクリーンでLRUのディレクトリエントリ553に記録されている時刻)とCMクリーンLRU時刻との差が大きすぎないようにすることとを目的として実行される処理である。なお、CMについてもNMについてもクリーンとしているのは、原則として、CMからNMにコピーされるのはクリーンのデータのためである。
ステップ151では、NMリプレースプログラム459は、NMクリーンMRU時刻と、CMクリーンLRU時刻とを比較し、それらの時刻の差の有無(乖離有りか無しか)を判断する。乖離有りの場合(すなわち、NMクリーンMRUがCMクリーンLRUより古い場合)、ステップ152でYとなり、ステップ155に進む。一方、乖離無しの場合、ステップ152でNとなり、ステップ153に進む。
ステップ153では、NMリプレースプログラム459は、NMクリーンLRU時刻と、CMクリーンLRU時刻とを比較し、それらの時刻の差が大(乖離大)か否かを判断する。乖離大としては、例えば、その差が所定の値を越えた場合、或いは、予め設定されている容量比(例えば、CMクリーンセグメント群の容量を1とした場合のNMクリーンセグメント群の容量)を基にした所定の条件に合致する場合がある。その条件としては、例えば、“NMクリーンLRU時刻が、CMクリーンLRU時刻×(容量比+1)より古い”という条件とすることができる。乖離大の場合、ステップ154でYなので、ステップ155に進み、乖離大ではない場合、ステップ154でNなので、今回のNMリプレース処理が終了となる。なお、前述した容量比は、例えば2である。すなわち、例えば、CMクリーンセグメント群の容量を1とした場合、NMクリーンセグメント群の容量は2である。
ステップ155では、NMリプレースプログラム459は、CMランダムクリーンLRUセグメント(ランダム且つクリーンのデータを格納しLRUであるCMセグメント)を選択する。これは、CMランダムクリーンキューLRUポインタ557に繋がっているディレクトリエントリ553を参照することにより、実行することができる。
ステップ156では、NMリプレースプログラム459は、NM313Aについて、キャッシュヒット/ミス判定を行う。具体的には、選択されたCMランダムクリーンLRUセグメント内のデータを有するNMセグメントがあるか否かの判定が行われる。より具体的には、例えば、CMランダムクリーンLRUセグメントに対応したディレクトリエントリ553中のPG
ID/スロット番号と同じPG ID/スロット番号を有する、NMクリーンのディレクトリエントリ553があるか否かが判定される。そのようなディレクトリエントリ553がある場合(ステップ157でY)、ステップ158に進み、そのようなディレクトリエントリ553が無い場合(ステップ157でN)、ステップ159に進む。
ステップ158では、NMリプレースプログラム459がキャッシュ制御プログラム454を呼び出す。キャッシュ制御プログラム454は、ステップ155で選択されたCMランダムクリーンLRUセグメントを“フリー”にするためのCMセグメントフリー化処理を実行する。
ステップ159では、NMリプレースプログラム459がキャッシュ制御プログラム454を呼び出す。キャッシュ制御プログラム454は、ステップ155で選択されたCMランダムクリーンLRUセグメント上のデータのコピー先とするNMセグメントを確保するためのNMセグメント確保処理を実行する。
ステップ160では、NMリプレースプログラム459が、例えばDMAコントローラ304Aを操作して、DMAにより、CMランダムクリーンLRUセグメントから、確保されたNMセグメントへのデータコピーを行わせる。
ステップ161では、NMリプレースプログラム459によりキャッシュ制御プログラム454が呼びされる。キャッシュ制御プログラム454により、クリーン属性設定が行われる。具体的には、例えば、キャッシュ制御プログラム454が、コピー先のNMセグメントに対応したディレクトリエントリ553に、スロット属性“クリーン”を設定する。
ステップ162では、キャッシュ制御プログラム454が、キュー遷移を実行する。具体的には、例えば、ステップ161でスロット属性“クリーン”が設定されたディレクトリエントリ553を、現在のLRU管理構造から外し、NMクリーンキューMRUポインタに繋げる(例えば直接繋げる)。
ステップ163では、キャッシュ制御プログラム454が、CMランダムクリーンLRUセグメントを“フリー”にするためのCMセグメントフリー化処理を実行する。
ステップ164では、NMリプレースプログラム459が、NM313Aの更新頻度が過剰かを判断する。具体的には、例えば、MP303Aが所定のコンピュータプログラム(以下、NM更新カウントプログラム)を実行することにより、NM313Aにデータを更新する都度に、更新回数をカウントし、単位時間(例えば1分)毎に、カウント値をリセットすることで、単位時間毎の更新回数、つまり更新頻度を算出することができる。カウント値である更新回数は、NMリプレース処理に限らず、他種の処理でNM313Aが更新される場合にも更新される。更新回数は、NMセグメント単位、スロット単位、或いは一NM単位など、種々の単位で算出することができる。
NMリプレースプログラム459は、ステップ160でのデータコピーにより、更新頻度が所定の閾値を超えた場合には(ステップ164でY)、今回のNMリプレース処理を終了し、超えていない場合には(ステップ164でN)、再度ステップ151を実行する。
以上のNMリプレース処理によれば、(1)CMクリーンLRUをNM313Aへ退避する、(2)但しシーケンシャル属性のクリーンは退避しない、及び(3)退避頻度を制御する、ことが実行される。このため、NM313Aの更新頻度を抑えることができる。
図9は、セグメント割当て処理の流れの一例を示す。以下、CMセグメントの割り当て処理として、説明をする。
ステップ171では、キャッシュ制御プログラム454は、CMフリーキューに、ディレクトリエントリがあるかどうかを判断する。有れば、ステップ172に進み、無ければ、ステップ173に進む。
ステップ172では、キャッシュ制御プログラム454は、CMフリーキューからディレクトリエントリ553(例えば、CMフリーキューポインタに繋がっているディレクトリエントリ553)をデキューする(つまりフリーキューから外す)。そして、ステップ177に進む。
ステップ173では、キャッシュ制御プログラム454は、CMシーケンシャルクリーンキューに、ディレクトリエントリがあるかどうかを判断する。有れば、ステップ174に進み、無ければ、ステップ175に進む。
ステップ174では、キャッシュ制御プログラム454は、CMシーケンシャルクリーンキューから、LRUポインタに繋がっているディレクトリエントリ553をデキューする。そして、ステップ176に進む。
ステップ175では、キャッシュ制御プログラム454は、CMランダムクリーンキューから、LRUポインタに繋がっているディレクトリエントリ553をデキューする。そして、ステップ176に進む。
ステップ176では、キャッシュ制御プログラム454は、ディレクトリ接続解除を行う。具体的には、キャッシュ制御プログラム454は、ハッシュテーブル551と、デキューされたディレクトリエントリ553との関連付けを解除する。
ステップ177では、キャッシュ制御プログラム454は、ディレクトリ接続を行う。具体的には、キャッシュ制御プログラム454は、今回の格納先となるPG
ID及びスロット番号をディレクトリエントリ553に記録し、PG ID及びスロット番号のハッシュ値に対応したハッシュテーブル551のディレクトリエントリポインタへディレクトリエントリ553を接続することで、ハッシュテーブル551と、そのディレクトリエントリ553とを関連付ける。
以上のセグメント割り当て処理は、NMセグメントについても実質的に同様である。相違点としては、NMセグメントについては、シーケンシャルかランダムかで区別されていないため、ステップ171でNの場合、NMクリーンキューからディレクトリエントリをデキューして、ステップ176に進むことになる。
図22は、セグメントフリー化処理の流れの一例を示す。
このセグメントフリー化処理は、CMセグメント及びNMセグメントのいずれのフリー化処理でも実行される。
ステップ181では、キャッシュ制御プログラム454は、フリー化対象のセグメントに対応したディレクトリエントリ553を、接続中キュー(そのディレクトリエントリ553が構成要素となっているキュー)からデキューする。
ステップ182では、キャッシュ制御プログラム454は、デキューしたディレクトリエントリ553についてディレクトリ接続解除を行う。
ステップ183では、キャッシュ制御プログラム454は、デキューしたディレクトリエントリ553を、フリーキューへエンキューする(例えば、フリーキューのキューポインタに、そのディレクトリエントリ553を繋げる(例えば直接繋げる)。
図10は、障害が発生した場合に実行される処理の流れの一例を示す。
この処理は、例えば、定期的に実行される。
ステップ191では、障害処理プログラム457が、各部位をチェックすることで、障害状況をチェックする。そのチェックの結果、片側障害と判断された場合、具体的には、例えば、いずれかのクラスタのCM311が壊れたと判断された場合、或いは、いずれかのクラスタにおいて電源部314の電源回路からのCM311への給電が無くなったと判断された場合(図12参照)、ステップ192でYとなり、ステップ193に進む。また、そのチェックの結果、両電源障害発生と判断された場合、具体的には、例えば、天災などで2系統とも給電が電源部314A、314Bのバッテリーからの給電になったと判断された場合、ステップ192でN、及びステップ194でYとなり、ステップ196に進む。片側障害及び両電源障害発生のいずれでも無い場合、CM311A、311B上のデータ退避は不要のため、障害無しと判断される(ステップ195)。
ステップ193では、障害処理プログラム457が、I/O処理モードをライトスルーモードに変更する。具体的には、例えば、コマンド処理プログラム451が、そのプログラム451にI/O処理モードとしてライトスルーモードと通常モードとのいずれかを選択的に設定することができるように構成されている。ライトスルーモードとは、CM311にダーティのデータを一時格納することなく記憶装置353にデータを転送するモードであり、通常モードとは、CM311に該ダーティのデータを一時格納し該一時格納したデータをCM311から記憶装置353に転送するモードである。受信したアクセスコマンドがライトコマンドの場合、通常モードであれば、CM311にデータを一時格納した場合に、ホスト200に対してレスポンス(例えば書込み完了)を送信することができ、一方、ライトスルーモードでは、記憶装置353に書込んだ場合にレスポンスを送信することができる。そのため、ライトスルーモードに比して通常モードの方が、ホスト200に対してはライトコマンドを高速に処理することができるため、本実施形態では、原則として、通常モードになっている。しかし、上記のように、片側障害の場合には、例外的に、通常モードからライトスルーモードに変更される。ライトスルーモードへ変更後はCM311にダーティセグメントは生成されなくなるため、CM311中のダーティデータは一定時間経過すると全てデステージされる。なお、例えば、バッテリーからの給電でライトスルーモードが実行される場合、全ダーティデータをデステージ後であればCM311への給電は不要のため、CM311への給電のためのスイッチを切っておくことで、バッテリーからの給電による動作をより長時間行えることが期待できる。
ステップ196からステップ201の動作は、両電源障害発生の場合に各クラスタで行われるが、その動作、例えば、CM311からNM313へのダーティデータ退避並びにキャッシュ制御情報461の退避は(図13参照)、各電源部314A、314Bのバッテリーからの給電により行われる。以下、一方のクラスタでの動作を例に採り説明する。
ステップ196では、コマンド処理プログラム451が、I/O処理停止を実行する。具体的には、例えば、コマンド処理プログラム451が、アクセスコマンドの受け付けをホスト200に対して不可(例えばアクセスコマンドを受けたらエラーを返す)にする。
ステップ197では、コマンド処理プログラム451がキャッシュ制御プログラム454を呼び出す。キャッシュ制御プログラム454が、キャッシュ制御退避領域393以外の領域に属する全てのダーティでないNMセグメントを“フリー”にする。
ステップ198では、キャッシュ制御プログラム454が、CMランダムダーティキュー及びCMシーケンシャルダーティキューに属するCMセグメント内のダーティのデータを、ステップ197でフリー化されたNMセグメントに退避(コピー)する。
ステップ199では、キャッシュ制御プログラム454が、CM311上のキャッシュ制御情報461を、キャッシュ制御退避領域393に退避(コピー)する。その際、キャッシュ制御情報461のうち、ディレクトリエントリ553は退避するが、ハッシュテーブル551は退避しない。復旧の際には、各ディレクトリエントリ553からディレクトリエントリポインタを取得してハッシュテーブル551を構築することができるからである。また、退避するディレクトリエントリ553であるが、スロット属性が“ダーティ”のディレクトリエントリ553のみを選択して退避することもできる。それ以外のディレクトリエントリ553は無くても良いためである。
ステップ200では、キャッシュ制御プログラム454が、キャッシュ制御退避領域393に、退避完了(確実に退避ができたことを意味する情報)を記録する。
ステップ201では、MP303により、バッテリーからの給電がオフにされる(例えばバッテリーからの給電をオン/オフするためのスイッチがターンオフされる)。
以上が、障害が発生した場合に実行される処理の流れの一例を示す。なお、図12及び図13には、記憶装置部351に、記憶装置353の一種として、フラッシュメモリ354が搭載されている例を示している。この場合には、データ及び/又はディレクトリエントリの退避先として、NM313に加えて又は代えて、記憶装置部351内のフラッシュメモリ354が採用されても良い。フラッシュメモリ354に代えて又は加えて、他種のNMが搭載されても良い。
図11は、障害復旧時に行われる処理の流れの一例を示す。
片側障害からの復旧は、例えば、故障部位(例えば、電源部314の電源回路)の交換により行うことができる。この場合、片方のクラスタで故障部位の交換が済んだことを、SVP363からMP303への入力により、或いは、交換が済んだ場合のMP303に対する電気的な信号入力により、障害処理プログラム457で検出することができる。片側障害からの復旧が検出された場合(ステップ251でN)、障害処理プログラム457により、I/O処理モードがライトスルーモードから通常モードに戻される(ステップ256)。
一方、両電源障害からの復旧は、例えば、停電から復旧する、或いは、両方のクラスタの故障部位の交換により行うことができる。この場合にも、片方のクラスタと同様に、障害処理プログラム457が、両電源障害からの復旧を検出することができる。両電源障害からの復旧が検出された場合(ステップ251でY)、各クラスタにおいて、障害処理プログラム457からキャッシュ制御プログラム454が呼び出される。キャッシュ制御プログラム454により、NM313のキャッシュ制御退避領域393に、退避完了が記録されているかどうかがチェックされる(ステップ252)。その結果、両方のクラスタで、退避完了がある場合には(ステップ252でY)、ステップ253に進み、片方のクラスタで退避完了が無い場合には(ステップ252でN)、ステップ254に進む。なお、片方のクラスタで退避完了が無い場合としては、例えば、退避中に片方のクラスタでNM313に障害が発生した場合が考えられる。
ステップ253では、例えば図14に例示するように、両方のクラスタにおいて、復元処理が行われる。具体的には、キャッシュ制御プログラム454が、NM313のキャッシュ制御退避領域393からCM311のキャッシュ制御領域377に、ディレクトリエントリ553を復元(コピー)する。また、キャッシュ制御プログラム454が、NMセグメントからCMキャッシュにダーティのデータを復元(コピー)する。ダーティのデータの復元では、例えば、復元された複数のディレクトリエントリ553のうちの、NMダーティのディレクトリエントリ553から、NMセグメントが特定され、特定されたNMセグメントがコピー元とされてよい。同様に、例えば、復元された複数のディレクトリエントリ553のうちの、CMダーティのディレクトリエントリ553から、CMセグメントが特定され、特定されたCMセグメントがコピー先とされてよい。ステップ253が行われた後、前述したステップ256が行われる。
ステップ254では、ステップ253で説明した、ディレクトリエントリの復元及びダーティデータの復元が、片方のクラスタでのみ行われる。そして、ステップ255に進む。
ステップ255では、キャッシュ制御プログラム454が、ダーティデータの二重化処理を行う。具体的には、キャッシュ制御プログラム454が、CM311に復元されたダーティデータを、もう片方のクラスタのCM311にコピーする。この後、前述したステップ256が行われる。
以上が、障害復旧時に行われる処理である。なお、NMからデータ及び/又はディレクトリエントリを復元できない場合には、記憶装置部351のフラッシュメモリ354から復元されても良い。
<実施形態2>。
以下、本発明の第二実施形態を説明する。その際、第一実施形態との相違点を主に説明し、第一実施形態との共通点については説明を省略或いは簡略する(これは、後述の第三実施形態についても同様である)。
図15Aは、NMセグメントの構成例を示す。
NMセグメント463´には、CMセグメント内のデータが書かれる領域であるデータ格納部463´−1に加えて、制御情報の一種として、通算更新回数が格納される通算更新回数格納部463−2がある。NMセグメント463´のデータ格納部463´−1上のデータを更新することのできるプログラム、或いは別に用意されたコンピュータプログラムが、このNMセグメント463´のデータが更新される都度に、このNMセグメント463´に記録されている通算更新回数を1加算する。通算更新回数とは、現在までに更新された回数を意味し、第一実施形態で説明した更新頻度(すなわち、単位時間当たりの更新回数)とは異なる。NMセグメント463´には、更新頻度が格納される更新頻度格納部が更に用意されても良い。
図15Bは、ダーティ退避専用フリーキューを示す。
第二実施形態では、ダーティ退避専用フリーキューが更に用意される。後述するように、通算更新回数が所定の閾値を超えたNMセグメントは、通常時(障害が発生していない時)のように、CMセグメント上のクリーンデータのコピー先されず、障害時にダーティデータの退避先としてのみ使用されるようになるからである。NMダーティ退避専用フリーキューポインタ499に直接又は他のディレクトリエントリを介して繋がっているディレクトリエントリ553が、ダーティ退避専用のNMセグメントに対応したディレクトリエントリである。
図15Cは、NMセグメント確保処理に関わる処理の流れの一例を示す。
NMセグメント確保処理(ステップ211)では、例えば、図9のステップ177で、ハッシュテーブル511に新たに接続されたディレクトリエントリ553に対応したNMセグメントが、確保されたNMセグメントということになる。
キャッシュ制御プログラム454が、確保されたNMセグメントに記録されている通算更新回数が、所定の閾値をオーバーしているかどうかを判断する(ステップ212)。オーバーしていると判断した場合、ステップ213に進み、オーバーしていないと判断した場合、終了となる(例えば、ステップ211が、図8のステップ159である場合、終了となれば、図8のステップ160に進む)。
ステップ213では、キャッシュ制御プログラム454が、ディレクトリ接続解除を行う。具体的には、キャッシュ制御プログラム454は、ハッシュテーブル511に新たに接続された上記ディレクトリエントリ553と、そのハッシュテーブル511との接続を解除する。
ステップ214では、キャッシュ制御プログラム454が、接続が解除されたディレクトリエントリ553を、NMダーティ退避専用フリーキューポインタ499にエンキューする(例えば直接繋げる)。
ステップ215では、キャッシュ制御プログラム454がSVP通信プログラム455を呼び出す。SVP通信プログラム455が、ダーティ退避専用とされたNMセグメントに関する情報をSVP363に通知し、SVP363が、管理サーバ400にその情報を通知する。つまり、その情報は、SVP363経由で管理サーバ400に通知される。ここで通知される情報は、例えば、ダーティ退避専用とされたNMセグメントが新たに1つ増えたことを意味する情報であっても良いし、上記エンキューされたディレクトリエントリ553に記録されている所定種類の情報(例えばNMセグメントアドレス)であっても良いし、NM313に存在するNMセグメントの総数(第一の総数)のうちダーティ退避専用とされたNMセグメントの総数(第二の総数)であっても良いし、第一の総数に対する第二の総数の比率(すなわち、ダーティ退避専用とされたNMセグメントがNM中のどのぐらい占めているか)であっても良い。第一の総数や第二の総数は、コントローラ部301で管理されても良いし、SVP363で管理されても良い。この通知された情報それ自体、或いは、その情報を基にしてSVP363或いは管理サーバ400で算出される情報(例えば、第二の総数、或いは上記比率)により、管理者は、NM313の劣化の状況を知ることができる。
この第二の実施形態によれば、各NMセグメント毎に、通算更新回数が管理され、通算更新回数過多のNMセグメントが、障害時のダーティ退避専用として確保される。これにより、障害時に確実にダーティのデータをCM311から退避することができる。また、通算更新回数過多のNMセグメントには、クリーンのデータがコピーされることがないので、通算更新回数過多のNMセグメントにクリーンのデータをコピーしてしまうことによりNMが使えなくなってしまうことを未然に防ぐことができる。
<実施形態3>。
本発明の第三の実施形態では、NM313は、NAND型フラッシュメモリである(以下、フラッシュメモリを「FM」と略記することがある)。NAND型フラッシュメモリの記憶領域は、複数のブロックで構成される。ブロックは、図16Aに示すように、複数のセグメント(前述したNMセグメントに相当、以下、FMのセグメントであるため「FMセグメント」と言う)で構成される。この例では、一ブロックが、8個のFMセグメントで構成されるが、FMセグメントの数は、8に限らず、それよりも多くても少なくても良い。
NAND型フラッシュメモリへの書込みは、セグメント単位に行うことができる。NAND型メモリは、FMセグメントへの上書きは不可能であり、そのFMセグメントにデータを上書きするためには、データを一回消去する必要がある。消去は、ブロック単位で行われる。そのため、或るFMセグメントにデータを上書きしたい場合には、該或るFMセグメントを構成要素として備えるブロックにおける全FMセグメントのデータを消去する必要がある。そのため、上書きの必要の無いFMセグメントに対してまでデータ消去が行われる。故に、FMセグメントの更新回数(消去回数)が、FMセグメント単位で消去することができるタイプのNMに比して多くなりやすい。
そこで、この第三実施形態では、LRUが、FMセグメント単位ではなくブロック単位で管理される。以下、フラッシュメモリを「FM」と略記することがある。
図16Bは、第三実施形態でのディレクトリエントリ553Aの構成例と、FMブロック制御エントリ553Bの構成例とを示す。
ディレクトリエントリ553Aには、FMブロック制御エントリ553BのポインタであるFMブロック制御エントリポインタが記録される。また、このエントリ553Aには、FMブロック制御エントリ553Bがキューに組み込まれるため、双方向キューポインタが無い。
FMブロック制御エントリ553Bには、双方向キューポインタ、通算更新回数、有効ビットマップ、FMブロックアドレス及び時刻が記録される。通算更新回数は、このエントリ553Bに対応するFMブロック(以下、当該FMブロック)の通算消去回数を意味する。有効ビットマップは、当該FMブロックを構成する8個のFMセグメントにそれぞれ対応した8個のビットで構成されており、各ビットの値が、各FMセグメントが有効(クリーンまたはダーティ)か無効(フリー)かを表す。FMブロックアドレスは、当該FMブロックの場所を示す。時刻は、このエントリ553Bがキュー遷移した時の時刻を表す。リードコマンド、ライトコマンド処理において、キュー遷移処理(図6のステップ1111及び図7のステップ135)においてNMセグメントに対応するディレクトリエントリ553AをMRUへキュー遷移させる場合は、対応するFMブロック制御エントリ553Bをキュー遷移させる。
図17は、FMリプレース処理の流れの一例を示す。
FMリプレース処理の流れは、図8を参照して説明したNMリプレース処理の流れと似ているが、幾つか相違点がある。
第一の相違点として、例えば、ステップ159、162などでは、ディレクトリエントリ553Aではなく、FMブロック制御エントリ553Bが使用される。FMに関するLRU管理のためのキューや、フリーキューには、FMブロック制御エントリ553Bが組み込まれるからである。
第二の相違点として、例えば、ステップ155では、8個のCMランダムクリーンLRUセグメントが選択される。具体的には、例えば、CMランダムクリーンLRUキューポインタに直接繋がっているディレクトリエントリを外すと、そのディレクトリエントリのMRU側に繋がっていたディレクトリエントリセグメントが、そのLRUキューポインタに直接繋がることになる。こういった処理を8回行うことで、8個のCMランダムクリーンLRUセグメントを選択することができる。また、ステップ159ではNMクリーンキューLRUから1つのFMブロック制御エントリ553Bをデキューし、対応する8個のFMセグメントフリー化処理を実行する。このような処理を行うのは、CMからNMへのコピーの際、NMにおいて一回消去の動作が必要になる場合があり、そうなると、ブロック単位でコピーが行われるのが効率的であると考えられるためである。すなわち、8個のCMランダムクリーンLRUセグメントから1個のFMブロック(つまり8個のFMセグメント)にデータコピーが行うのが効率的であると考えられる。
第三の相違点として、ステップ157でNと、ステップ159との間に、ステップ501として、キャッシュ制御プログラム454により、ステップ155で8個のCMセグメントが選出されたかどうかが判断される。選出されなかったと判断された場合、ステップ501でNとなり、選出されたと判断された場合、ステップ501でYとなり、ステップ159にすすむ。
図18は、FMセグメントフリー化処理の流れの一例を示す。
この処理は、例えば、ホスト200からのライトコマンドでNMヒットした場合、FMブロック内の特定のFMセグメント(例えば、CMへのコピー元のFMセグメント)を無効にする場合に開始される。以下、その特定のFMセグメントを、「フリー化対象FMセグメント」と呼ぶ。
ステップ281で、キャッシュ制御プログラム454が、フリー化対象FMセグメントを含むFMブロック(以下、フリー化対象FMブロック)のFMブロック制御エントリ553Bを特定し、そのFMブロック制御エントリ553における有効ビットマップ中の、フリー化対象FMセグメントに対応したビットを、オフにする。
ステップ281では、キャッシュ制御プログラム454が、その有効ビットマップを構成する全ビットがオフを表しているかどうかを判断する。全ビットオフと判断した場合(ステップ282でY)、ステップ283に進み、少なくとも一つのビットがオンと判断した場合(ステップ282でN)、ステップ285に進む。
ステップ283では、キャッシュ制御プログラム454が、フリー化対象FMブロックに対して消去を行う。そして、ステップ284で、キャッシュ制御プログラム454は、フリー化対象FMブロックに対応したFMブロック制御エントリを、フリーキューにエンキューする。
ステップ285では、キャッシュ制御プログラム454が、フリー化対象FMセグメントのフリー化を行う。具体的には、例えば、キャッシュ制御プログラム454が、そのセグメントに対応したディレクトリエントリ553とハッシュテーブル551との接続を解除する。
図23は、FMブロック割り当て処理の流れの一例を示す。
この割当て処理は、図9に示した割当て処理と似ているが、幾つか相違点がある。
第一の相違点は、例えば、ステップ172、174及び175では、FMブロック制御エントリ553Bのデキューが行われる。
第二の相違点は、ステップ176では、デキューされたFMブロック制御エントリ553Bに対応した8つのディレクトリエントリ553Aについて、ハッシュディレクトリとの接続の解除が実行される。ステップ177では、それら8つのディレクトリエントリ553Aについて、ハッシュディレクトリとの接続が実行される。
第三の相違点は、ステップ177の後に、ステップ178が実行されることである。ステップ178では、キャッシュ制御プログラム454により、接続された8つのディレクトリエントリ553Aに対応するFMブロック制御エントリ553Bにおいて、有効ビットマップを構成する全ビットがオンにされる。
この第三実施形態では、NM313として、NAND型フラッシュメモリが採用され、LRU管理がブロック単位でされる。そして、FMブロック内の全FMセグメントがアクセスされなくなりFMリプレース処理のステップ159で選択されるまで(すなわち、FMブロック確保処理で、NMクリーンLRUからFMブロックを1個選択して8セグメントがフリー化されるまで)、或いは、FMブロック内の全ページが無効になるまで、フリー化しない。これにより、FMブロックの消去回数が抑えられ、以って、NAND型フラッシュメモリの劣化を抑える(言い換えれば、NAND型フラッシュメモリの寿命を延ばす)ことができる。
以上、本発明の幾つかの実施形態を説明したが、これらの実施形態は本発明の説明のための例示にすぎず、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。例えば、第三実施形態において、通算更新回数は、FMブロック制御エントリ553Bで管理することに代えて又は加えて、FMブロックで管理されても良い。また第三実施形態において、書き込み単位と消去単位が異なる性質を有するなら、NANDフラッシュメモリ以外のNMを使用してもよい。
図1は、本発明の第一実施形態に係る計算機システムの構成例を示す。 図2は、ストレージシステム101の構成例を示す。 図3は、コントローラ部301の論理的な構成例を示す。 図4Aは、LU構成テーブルの構成例を示す。図4Bは、LVOL構成テーブルの構成例を示す。 図5Aは、キャッシュディレクトリ管理構造の一例を示す。図5Bは、LRU管理構造の一例を示す。図5Cは、フリー管理構造を示す。 図6は、ホストI/Fでリードコマンドを受信した場合に実行される処理の流れの一例を示す。 図7は、ホストI/Fでライトコマンドを受信した場合に実行される処理の流れの一例を示す。 図8は、NMリプレース処理の流れの一例を示す。 図9は、セグメント割当て処理の流れの一例を示す。 図10は、障害が発生した場合に実行される処理の流れの一例を示す。 図11は、障害復旧時に行われる処理の流れの一例を示す。 図12は、片側障害を示す。 図13は、両電源障害の発生とデータ退避を示す。 図14は、障害復旧時のデータ復元を示す。 図15Aは、本発明の第二実施形態におけるNMセグメントの構成例を示す。図15Bは、ダーティ退避専用フリーキューを示す。図15Cは、NMセグメント確保処理に関わる処理の流れの一例を示す。 図16Aは、NAND型フラッシュメモリのブロックの構成例を示す。図16Bは、本発明の第三実施形態でのディレクトリエントリ553Aの構成例と、FMブロック制御エントリ553Bの構成例とを示す。 図18は、FMセグメントフリー化処理の流れの一例を示す。 図18は、初期コピー処理の流れの一例を示す。 図19は、本発明の第一実施形態に係る計算機システムの概要、並びに、ホスト計算機からリードコマンドが発行された場合に実行される処理の流れの概要を示す。 図20は、ホスト計算機からライトコマンドが発行された場合に実行される処理の流れの概要を示す。 図21は、一次電源からキャッシュメモリへの給電が無くなった場合に実行される処理の流れの概要を示す。 図22は、セグメントフリー化処理の流れの一例を示す。 図23は、FMブロック割り当て処理の流れの一例を示す。 図24は、第一の実施形態でダーティ過多の場合に実行される処理の一変形例を示す。
符号の説明
101…ストレージシステム、200…ホスト、301…コントローラ部、315…バッテリー、303…マイクロプロセッサ、311…揮発性キャッシュメモリ、313…不揮発性メモリ、353…記憶装置

Claims (12)

  1. 上位装置からアクセスコマンドを受信するストレージシステムであって、
    複数の記憶装置と、
    揮発性のキャッシュメモリと、
    給電の有無に関わらずデータを記憶し続けることが可能なタイプのメモリである不揮発性メモリと、
    前記アクセスコマンドがライトコマンドの場合、該ライトコマンドに従うデータを前記揮発性キャッシュメモリに一時記憶させ、該記憶させたデータを前記揮発性キャッシュメモリから読み出して前記複数の記憶装置の少なくとも一つに格納し、前記アクセスコマンドがリードコマンドの場合、該リードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性キャッシュメモリに一時記憶させ、該記憶させたデータを前記揮発性キャッシュメモリから読み出して前記上位装置に送信するアクセス制御部と、
    二次電源であるバッテリーと、
    一次電源から揮発性キャッシュメモリへの給電が無くなった場合に、前記バッテリーからの給電により、前記揮発性キャッシュメモリに記憶されているデータを前記不揮発性メモリにコピーするキャッシュデータコピー部と
    を備え、
    前記キャッシュデータコピー部は、
    (A)一次電源から前記揮発性キャッシュメモリへの給電がある場合にも、前記揮発性キャッシュメモリに記憶されているデータを前記不揮発性メモリにコピーし、その場合、前記不揮発性メモリが含む複数の不揮発サブ領域別に、不揮発サブ領域に対する更新の回数をカウントし、
    (B)該更新回数が所定の閾値を超えたか否かを判断し、
    (C)前記不揮発性メモリのうちの或る不揮発サブ領域について、前記更新回数が所定の閾値を超えたと判断した場合には、該或る不揮発サブ領域を、前記一次電源から前記揮発性キャッシュメモリへの給電が無くなった場合のデータコピー先である障害時退避先とし、それにより、以後、一次電源から前記揮発性キャッシュメモリへの給電がある間は、該或る不揮発サブ領域に、前記揮発性キャッシュメモリに記憶されているデータをコピーせず、前記一次電源から前記揮発性キャッシュメモリへの給電が無くなった場合に、前記バッテリーからの給電により、前記揮発性キャッシュメモリに記憶されているデータを、該或る不揮発サブ領域にコピーする、
    ストレージシステム。
  2. 前記不揮発性メモリは、NAND型フラッシュメモリであり、
    前記不揮発サブ領域は、ブロックであり、
    前記ブロックは、前記NAND型フラッシュメモリに対する書込みの単位領域であるセグメントを複数個で構成される領域である、
    請求項1記載のストレージシステム。
  3. 前記キャッシュデータコピー部は、前記障害時退避先とされたサブ領域に関する情報を、前記上位装置及び/又はそれとは別種の装置に通知する、
    請求項1又は2記載のストレージシステム。
  4. 前記キャッシュデータコピー部は、前記一次電源から前記揮発性キャッシュメモリへの給電がある場合、前記揮発性キャッシュメモリに含まれる複数の揮発サブ領域のうちの、クリーンのデータが格納されている揮発サブ領域を特定し、特定した揮発サブ領域内のデータのみを、前記不揮発性メモリにコピーする、
    請求項1記載のストレージシステム。
  5. 前記キャッシュデータコピー部は、前記クリーンのデータのうち、シーケンシャルでアクセスされるデータを、前記不揮発性メモリにはコピーせず、ランダムでアクセスされるデータを、前記不揮発性メモリにコピーする、
    請求項4記載のストレージシステム。
  6. 前記キャッシュデータコピー部は、以下の(1)又は(2)の場合に、
    (1)前記不揮発性メモリに含まれる複数の不揮発サブ領域のうち、MRU(Most Recently Used)の不揮発サブ領域であってクリーンのデータを記憶する不揮発サブ領域に該データが記憶された第一の時刻が、前記揮発性キャッシュメモリに含まれる複数の揮発サブ領域のうち、LRU(Least Recently Used)の揮発サブ領域であってクリーンのデータを記憶する揮発サブ領域に該データが記憶された第二の時刻より古い場合、
    (2)前記不揮発性メモリに含まれる複数の不揮発サブ領域のうち、LRUの不揮発サブ領域であってクリーンのデータを記憶する不揮発サブ領域に該データが記憶された第三の時刻と、前記揮発性キャッシュメモリに含まれる複数の揮発サブ領域のうち、LRUの揮発サブ領域であってクリーンのデータを記憶する揮発サブ領域に該データが記憶された第四の時刻との差が大きい場合、
    前記揮発性キャッシュメモリから前記不揮発性メモリへのデータコピーを行い、
    前記第三の時刻と第四の時刻との差が大きい場合とは、前記第三の時刻が第四の時刻よりも古く、且つ、以下の(A)又は(B)の場合:
    (A)第三の時刻と第四の時刻との差が所定の値を超えている場合;
    (B)予め設定されている容量比を基にした所定の条件に合致する場合;
    であり、
    前記容量比は、クリーンのデータを記憶する揮発サブ領域群の容量を1とした場合の、クリーンのデータを記憶する不揮発サブ領域群の容量である、
    請求項4又は5記載のストレージシステム。
  7. 上位装置からアクセスコマンドを受信し該アクセスコマンドに従ってデータの入出力を行うストレージシステムに搭載されるコントローラであって、
    前記上位装置に接続される通信インタフェース装置である第一I/Fと、
    複数の記憶装置に接続される通信インタフェース装置である第二I/Fと、
    揮発性のキャッシュメモリと、
    給電の有無に関わらずデータを記憶し続けることが可能なタイプのメモリである不揮発性メモリと、
    前記第一I/Fで受信したアクセスコマンドがライトコマンドの場合、該ライトコマンドに従うデータを前記揮発性キャッシュメモリに一時記憶させ、該記憶させたデータを前記揮発性キャッシュメモリから読み出して、前記第二I/Fを通じて前記複数の記憶装置の少なくとも一つに格納し、前記受信したアクセスコマンドがリードコマンドの場合、該リードコマンドに従うデータを、前記第二I/Fを通じて前記複数の記憶装置の少なくとも一つから読み出し、該読み出したデータを前記揮発性キャッシュメモリに一時記憶させ、該記憶させたデータを前記揮発性キャッシュメモリから読み出して前記上位装置に送信するアクセス制御部と、
    一次電源から前記揮発性キャッシュメモリへの給電が無くなった場合に、二次電源であるバッテリーからの給電により、前記揮発性キャッシュメモリに記憶されているデータを前記不揮発性メモリにコピーするキャッシュデータコピー部と
    を備え、
    前記キャッシュデータコピー部は、
    (A)一次電源から前記揮発性キャッシュメモリへの給電がある場合にも、前記揮発性キャッシュメモリに記憶されているデータを前記不揮発性メモリにコピーし、その場合、前記不揮発性メモリが含む複数の不揮発サブ領域別に、不揮発サブ領域に対する更新の回数をカウントし、
    (B)該更新回数が所定の閾値を超えたか否かを判断し、
    (C)前記不揮発性メモリのうちの或る不揮発サブ領域について、前記更新回数が所定の閾値を超えたと判断した場合には、該或る不揮発サブ領域を、前記一次電源から前記揮発性キャッシュメモリへの給電が無くなった場合のデータコピー先である障害時退避先とし、それにより、以後、一次電源から前記揮発性キャッシュメモリへの給電がある間は、該或る不揮発サブ領域に、前記揮発性キャッシュメモリに記憶されているデータをコピーせず、前記一次電源から前記揮発性キャッシュメモリへの給電が無くなった場合に、前記バッテリーからの給電により、前記揮発性キャッシュメモリに記憶されているデータを、該或る不揮発サブ領域にコピーする、
    コントローラ。
  8. 前記不揮発性メモリは、NAND型フラッシュメモリであり、
    前記不揮発サブ領域は、ブロックであり、
    前記ブロックは、前記NAND型フラッシュメモリに対する書込みの単位領域であるセグメントを複数個で構成される領域である、
    請求項記載のコントローラ。
  9. 前記キャッシュデータコピー部は、前記障害時退避先とされたサブ領域に関する情報を、前記上位装置及び/又はそれとは別種の装置に通知する、
    請求項又は記載のコントローラ。
  10. 前記キャッシュデータコピー部は、前記一次電源から前記揮発性キャッシュメモリへの給電がある場合、前記揮発性キャッシュメモリに含まれる複数の揮発サブ領域のうちの、クリーンのデータが格納されている揮発サブ領域を特定し、特定した揮発サブ領域内のデータのみを、前記不揮発性メモリにコピーする、
    請求項7記載のコントローラ。
  11. 前記キャッシュデータコピー部は、前記クリーンのデータのうち、シーケンシャルでアクセスされるデータを、前記不揮発性メモリにはコピーせず、ランダムでアクセスされるデータを、前記不揮発性メモリにコピーする、
    請求項10記載のコントローラ。
  12. 前記キャッシュデータコピー部は、以下の(1)又は(2)の場合に、
    (1)前記不揮発性メモリに含まれる複数の不揮発サブ領域のうち、MRU(Most Recently Used)の不揮発サブ領域であってクリーンのデータを記憶する不揮発サブ領域に該データが記憶された第一の時刻が、前記揮発性キャッシュメモリに含まれる複数の揮発サブ領域のうち、LRU(Least Recently Used)の揮発サブ領域であってクリーンのデータを記憶する揮発サブ領域に該データが記憶された第二の時刻より古い場合、
    (2)前記不揮発性メモリに含まれる複数の不揮発サブ領域のうち、LRUの不揮発サブ領域であってクリーンのデータを記憶する不揮発サブ領域に該データが記憶された第三の時刻と、前記揮発性キャッシュメモリに含まれる複数の揮発サブ領域のうち、LRUの揮発サブ領域であってクリーンのデータを記憶する揮発サブ領域に該データが記憶された第四の時刻との差が大きい場合、
    前記揮発性キャッシュメモリから前記不揮発性メモリへのデータコピーを行い、
    前記第三の時刻と第四の時刻との差が大きい場合とは、前記第三の時刻が第四の時刻よりも古く、且つ、以下の(A)又は(B)の場合:
    (A)第三の時刻と第四の時刻との差が所定の値を超えている場合;
    (B)予め設定されている容量比を基にした所定の条件に合致する場合;
    であり、
    前記容量比は、クリーンのデータを記憶する揮発サブ領域群の容量を1とした場合の、クリーンのデータを記憶する不揮発サブ領域群の容量である、
    請求項10又は11記載のコントローラ。
JP2006289538A 2006-10-25 2006-10-25 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム Expired - Fee Related JP4437489B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006289538A JP4437489B2 (ja) 2006-10-25 2006-10-25 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
US11/610,072 US7613877B2 (en) 2006-10-25 2006-12-13 Storage system comprising volatile cache memory and nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006289538A JP4437489B2 (ja) 2006-10-25 2006-10-25 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム

Publications (2)

Publication Number Publication Date
JP2008108026A JP2008108026A (ja) 2008-05-08
JP4437489B2 true JP4437489B2 (ja) 2010-03-24

Family

ID=39331772

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006289538A Expired - Fee Related JP4437489B2 (ja) 2006-10-25 2006-10-25 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム

Country Status (2)

Country Link
US (1) US7613877B2 (ja)
JP (1) JP4437489B2 (ja)

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
JP2009205335A (ja) 2008-02-27 2009-09-10 Hitachi Ltd 2種のメモリデバイスをキャッシュに用いるストレージシステム及びそのストレージシステムを制御する方法
US8615678B1 (en) * 2008-06-30 2013-12-24 Emc Corporation Auto-adapting multi-tier cache
WO2010016115A1 (ja) * 2008-08-06 2010-02-11 富士通株式会社 ディスクアレイ装置の制御ユニット、データ転送装置及び復電処理方法
JP4809413B2 (ja) 2008-10-08 2011-11-09 株式会社日立製作所 ストレージシステム
WO2010049929A1 (en) * 2008-10-27 2010-05-06 Kaminario Tehnologies Ltd. A mass-storage system utilizing solid-state storage and non-solid-state storage
JP5426684B2 (ja) * 2008-10-30 2014-02-26 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 独立ディスク冗長アレイ(raid)の書き込みキャッシュサブアセンブリ
CN101446926B (zh) * 2008-11-10 2011-06-01 成都市华为赛门铁克科技有限公司 一种高速缓冲存储器掉电数据保存方法、设备和系统
JP2010122730A (ja) * 2008-11-17 2010-06-03 Hitachi Ltd ストレージ制御装置及びストレージシステム
JP5074601B2 (ja) * 2008-12-04 2012-11-14 株式会社日立製作所 揮発性メモリと不揮発性メモリとを備えたストレージシステム
US8134875B2 (en) * 2008-12-08 2012-03-13 Xilinx, Inc. Data storage system with removable memory module having parallel channels of DRAM memory and flash memory
JP4691602B2 (ja) * 2009-03-19 2011-06-01 富士通株式会社 データバックアップ方法及び情報処理装置
JP4930555B2 (ja) * 2009-07-09 2012-05-16 富士通株式会社 制御装置、制御方法およびストレージシステム
US8972627B2 (en) 2009-09-09 2015-03-03 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
EP2476039B1 (en) * 2009-09-09 2016-10-26 SanDisk Technologies LLC Apparatus, system, and method for power reduction management in a storage device
US9021158B2 (en) 2009-09-09 2015-04-28 SanDisk Technologies, Inc. Program suspend/resume for memory
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8327069B2 (en) * 2009-12-08 2012-12-04 Hitachi, Ltd. Storage system and storage control apparatus provided with cache memory group including volatile memory and nonvolatile memory
US8255624B2 (en) 2009-12-17 2012-08-28 Hitachi, Ltd. Storage apparatus and its control method
JP5402693B2 (ja) 2010-02-05 2014-01-29 富士通株式会社 ディスクアレイ装置の制御方法及びディスクアレイ装置
JP2011170589A (ja) * 2010-02-18 2011-09-01 Nec Corp ストレージ制御装置、ストレージ装置およびストレージ制御方法
JP5060574B2 (ja) 2010-03-16 2012-10-31 株式会社東芝 メモリシステム
WO2011114384A1 (en) * 2010-03-19 2011-09-22 Hitachi, Ltd. Storage system and method for changing configuration of cache memory for storage system
JP5434738B2 (ja) * 2010-03-26 2014-03-05 日本電気株式会社 ディスク装置
JP5678516B2 (ja) * 2010-08-23 2015-03-04 セイコーエプソン株式会社 記憶装置、回路基板、液体容器及びシステム
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US9286298B1 (en) * 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
TW201222231A (en) * 2010-11-18 2012-06-01 Promise Tecnnology Inc Network-attached storage system
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
WO2012082792A2 (en) 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
WO2012117434A1 (en) * 2011-02-28 2012-09-07 Hitachi, Ltd. Method for ensuring consistency between mirrored copies of control information
US8885334B1 (en) 2011-03-10 2014-11-11 Xilinx, Inc. Computing system with network attached processors
JP5627521B2 (ja) * 2011-03-24 2014-11-19 株式会社東芝 キャッシュシステムおよび処理装置
JP5742362B2 (ja) * 2011-03-28 2015-07-01 富士通株式会社 退避処理装置
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US9170744B1 (en) 2011-04-06 2015-10-27 P4tents1, LLC Computer program product for controlling a flash/DRAM/embedded DRAM-equipped system
US9176671B1 (en) 2011-04-06 2015-11-03 P4tents1, LLC Fetching data between thread execution in a flash/DRAM/embedded DRAM-equipped system
US9164679B2 (en) 2011-04-06 2015-10-20 Patents1, Llc System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class
US9158546B1 (en) 2011-04-06 2015-10-13 P4tents1, LLC Computer program product for fetching from a first physical memory between an execution of a plurality of threads associated with a second physical memory
WO2012172708A1 (ja) * 2011-06-14 2012-12-20 オムロン株式会社 バックアップ装置およびバックアップ装置の動作方法
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10838646B2 (en) 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US9417754B2 (en) 2011-08-05 2016-08-16 P4tents1, LLC User interface system, method, and computer program product
US8745330B2 (en) * 2011-08-12 2014-06-03 International Business Machines Corporation Technique for improving replication persistance in a caching applicance structure
KR101298171B1 (ko) * 2011-08-31 2013-08-26 세종대학교산학협력단 메모리 시스템 및 그 관리 방법
WO2013054374A1 (en) * 2011-10-12 2013-04-18 Hitachi, Ltd. Storage system, and data backup method and system restarting method of storage system
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US8779849B2 (en) 2012-01-27 2014-07-15 Micron Technology, Inc. Apparatuses and methods for providing capacitance in a multi-chip module
US9141505B1 (en) * 2012-09-27 2015-09-22 Emc Corporation Adaptive failure survivability in a storage system using save time and data transfer after power loss
US9213386B2 (en) 2012-10-22 2015-12-15 Micron Technology, Inc. Apparatuses and methods and for providing power responsive to a power loss
US20140114928A1 (en) * 2012-10-22 2014-04-24 Robert Beers Coherence protocol tables
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9304913B2 (en) 2013-03-15 2016-04-05 Qualcomm Incorporated Mixed memory type hybrid cache
US9223699B2 (en) * 2013-03-15 2015-12-29 Intel Corporation Cache management in managed runtime environments
JP5970418B2 (ja) * 2013-05-28 2016-08-17 京セラドキュメントソリューションズ株式会社 電子機器
KR101443678B1 (ko) 2013-06-04 2014-09-26 명지대학교 산학협력단 하이브리드 메인 메모리와 플래시 메모리 저장 장치의 버퍼 캐시 방법
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
JP6248435B2 (ja) * 2013-07-04 2017-12-20 富士通株式会社 ストレージ装置、およびストレージ装置の制御方法
KR101469848B1 (ko) * 2013-07-04 2014-12-08 세종대학교산학협력단 메모리 시스템 및 그 관리 방법
US9619330B2 (en) * 2013-10-08 2017-04-11 Seagate Technology Llc Protecting volatile data of a storage device in response to a state reset
US9946655B2 (en) * 2013-10-09 2018-04-17 Hitachi, Ltd. Storage system and storage control method
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
JP6097845B2 (ja) * 2013-12-24 2017-03-15 株式会社日立製作所 不揮発性キャッシュメモリにデータをバックアップするストレージシステム
KR101502998B1 (ko) 2014-01-06 2015-03-18 세종대학교산학협력단 메모리 시스템 및 그 관리 방법
US9666244B2 (en) 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
WO2015186165A1 (ja) * 2014-06-02 2015-12-10 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US9489149B2 (en) 2014-06-16 2016-11-08 Netapp, Inc. Methods and systems for using a write cache in a storage system
US9836359B2 (en) 2014-07-11 2017-12-05 Hitachi, Ltd. Storage and control method of the same
SG11201702739VA (en) * 2014-10-03 2017-04-27 Agency Science Tech & Res Active storage unit and array
US9933950B2 (en) 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
CN105938447B (zh) 2015-03-06 2018-12-14 华为技术有限公司 数据备份装置及方法
WO2016175762A1 (en) * 2015-04-28 2016-11-03 Hewlett Packard Enterprise Development Lp Storage cache management
US10140149B1 (en) * 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9864686B2 (en) 2015-10-14 2018-01-09 International Business Machines Corporation Restriction of validation to active tracks in non-volatile storage during a warmstart recovery
WO2017069773A1 (en) * 2015-10-23 2017-04-27 Hewlett-Packard Development Company, L.P. Write commands filtering
KR101939361B1 (ko) * 2016-04-05 2019-01-16 울산과학기술원 비휘발성 메모리를 이용한 로깅 방법
US10649896B2 (en) * 2016-11-04 2020-05-12 Samsung Electronics Co., Ltd. Storage device and data processing system including the same
KR102208058B1 (ko) * 2016-11-04 2021-01-27 삼성전자주식회사 저장 장치 및 이를 포함하는 데이터 처리 시스템
KR20200119059A (ko) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20210011201A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 온도 조절 방법
KR20210014338A (ko) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법
KR20210011176A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 액세스 동작 방법 및 장치
KR20210011216A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 메타 데이터 관리 방법 및 장치
KR20200132047A (ko) 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
JP2021005121A (ja) 2019-06-25 2021-01-14 株式会社日立製作所 ストレージ装置、及び制御方法
US20210073037A1 (en) * 2019-09-09 2021-03-11 Advanced Micro Devices, Inc. Active hibernate and managed memory cooling in a non-uniform memory access system
US11656792B2 (en) 2021-06-29 2023-05-23 International Business Machines Corporation Mirroring data in write caches of a controller of a non-volatile memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04196000A (ja) 1990-11-28 1992-07-15 Hitachi Ltd 記憶装置
GB2256735B (en) * 1991-06-12 1995-06-21 Intel Corp Non-volatile disk cache
US5437022A (en) 1992-12-17 1995-07-25 International Business Machines Corporation Storage controller having additional cache memory and a means for recovering from failure and reconfiguring a control unit thereof in response thereto
JPH06309234A (ja) 1993-02-15 1994-11-04 Toshiba Corp ディスク制御装置
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US6539456B2 (en) 1999-10-13 2003-03-25 Intel Corporation Hardware acceleration of boot-up utilizing a non-volatile disk cache
JP2002007373A (ja) 2000-06-20 2002-01-11 Fujitsu Ltd 半導体装置
JP4059002B2 (ja) 2001-06-13 2008-03-12 株式会社日立製作所 メモリ装置
US6990603B2 (en) * 2002-01-02 2006-01-24 Exanet Inc. Method and apparatus for securing volatile data in power failure in systems having redundancy
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
US7500056B2 (en) * 2004-07-21 2009-03-03 Hewlett-Packard Development Company, L.P. System and method to facilitate reset in a computer system
US20060080515A1 (en) * 2004-10-12 2006-04-13 Lefthand Networks, Inc. Non-Volatile Memory Backup for Network Storage System

Also Published As

Publication number Publication date
JP2008108026A (ja) 2008-05-08
US20080104344A1 (en) 2008-05-01
US7613877B2 (en) 2009-11-03

Similar Documents

Publication Publication Date Title
JP4437489B2 (ja) 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
US8135905B2 (en) Storage system and power consumption reduction method for switching on/off the power of disk devices associated with logical units in groups configured from the logical units
US7882305B2 (en) Storage apparatus and data management method in storage apparatus
US8261036B2 (en) Storage system comprising function for reducing power consumption
US7650480B2 (en) Storage system and write distribution method
US8024516B2 (en) Storage apparatus and data management method in the storage apparatus
US8725981B2 (en) Storage system and method implementing online volume and snapshot with performance/failure independence and high capacity efficiency
US8176359B2 (en) Disk array system and control method thereof
EP2350839B1 (en) A mass-storage system utilizing solid-state storage and non-solid-state storage
JP4961319B2 (ja) 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム
US20070162692A1 (en) Power controlled disk array system using log storage area
US8412892B2 (en) Storage system and ownership control method for storage system
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
US7984260B2 (en) Storage system provided with a plurality of controller modules
JP2006113648A (ja) ディスクアレイ装置
WO2015011825A1 (ja) ストレージシステムおよびストレージシステムの制御方法
US7493443B2 (en) Storage system utilizing improved management of control information
JP2021009461A (ja) ストレージ制御装置及びストレージ制御プログラム
US20160259571A1 (en) Storage subsystem
WO2016006108A1 (ja) ストレージおよびその制御方法
US11789613B2 (en) Storage system and data processing method
US20140019678A1 (en) Disk subsystem and method for controlling memory access

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080813

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090630

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090813

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091222

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4437489

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140115

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees