JP6097845B2 - 不揮発性キャッシュメモリにデータをバックアップするストレージシステム - Google Patents

不揮発性キャッシュメモリにデータをバックアップするストレージシステム Download PDF

Info

Publication number
JP6097845B2
JP6097845B2 JP2015554332A JP2015554332A JP6097845B2 JP 6097845 B2 JP6097845 B2 JP 6097845B2 JP 2015554332 A JP2015554332 A JP 2015554332A JP 2015554332 A JP2015554332 A JP 2015554332A JP 6097845 B2 JP6097845 B2 JP 6097845B2
Authority
JP
Japan
Prior art keywords
data
cache memory
stored
capacity
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015554332A
Other languages
English (en)
Other versions
JPWO2015097751A1 (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
Application granted granted Critical
Publication of JP6097845B2 publication Critical patent/JP6097845B2/ja
Publication of JPWO2015097751A1 publication Critical patent/JPWO2015097751A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/222Non-volatile memory
    • 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/222Non-volatile memory
    • G06F2212/2228Battery-backed RAM
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、概して、ストレージシステムのキャッシュ制御に関する。
電源遮断時の主記憶デバイス上のデータの消失を防ぐために、主記憶メモリ上のデータを退避させるための不揮発性メモリをストレージコントローラに搭載することがある。特許文献1は、退避すべき主記憶メモリ上のデータのみを選択し、不揮発性メモリに退避する技術を開示している。例えば、上位装置からのアクセスコマンドに従うデータの一時格納先は、揮発性キャッシュメモリとしている。一次電源から揮発性キャッシュメモリへの給電が無くなった場合に、バッテリからの給電により、揮発性キャッシュメモリに記憶されているデータを不揮発性メモリにコピーしている。
特開2008−108026号公報
しかし、特許文献1に開示された技術では、不揮発性メモリと揮発性キャッシュメモリの容量が考慮されていないので、揮発性キャッシュメモリが大容量である場合、揮発性キャッシュメモリの全てのデータをバックアップできない場合がある。また、主記憶キャッシュメモリの容量増加により電源遮断時に必要なバッテリ容量とバックアップ媒体容量が増大する。
よって、ストレージシステムにおいて、電断時のデータ転送時間を短縮させることにより、バッテリ容量を削減し、コストを削減することが課題である。
上記課題を解決するために、ストレージシステムは、記憶デバイスと、ホストコンピュータからデータを受信し、受信したデータを記憶デバイスに格納するストレージコントローラとを備える。ストレージコントローラは、プロセッサと、プロセッサに接続されデータを一時的に格納する揮発性の第1のキャッシュメモリと、マイクロプロセッサに接続されデータを一時的に格納する不揮発性の第2のキャッシュメモリと、電断が起こった場合に少なくともプロセッサおよび第1のキャッシュメモリに電力を供給するバッテリとを備える。第2のキャッシュメモリは、記憶デバイスに格納されていないデータであるダーティデータを格納するダーティデータ領域と、ダーティデータ領域以外の残りの領域とを含む。プロセッサは、電断が起こった場合、第1のキャッシュメモリに格納されている全部または一部のデータを対象データとして、第2のキャッシュメモリの残りの領域に格納する。
電断時のデータ転送時間を短縮させることにより、バッテリ容量を削減し、コストを削減することができる。
第1実施例に係るストレージシステムを示す。 主記憶メモリと、NVRAMとに格納するデータの構成を示す。 ユーザーデータの構成を示す。 主記憶メモリ管理テーブルの構成を示す。 ダーティデータテーブルの構成を示す。 NVRAM管理テーブルの構成を示す。 退避先データテーブルの構成を示す。 第1実施例において、ストレージ装置が電断した時のストレージコントローラによるバックアップ処理の動作を示す。 ダーティ最大容量決定処理のフローチャートを示す。 バックアップ処理のフローチャートを示す。 第1実施例に係るバックアップデータ選択処理のフローチャートを示す。 第1実施例に係る退避先選択処理のフローチャートを示す。 第1実施例に係るデータ転送処理のフローチャートを示す。 第1実施例に係るバックアップデータの復旧処理のフローチャートを示す。 第2実施例に係るストレージシステムを示す。 第2実施例のストレージ装置が電断した時のストレージコントローラによるバックアップ処理の動作を示す。 第2実施例に係るバックアップデータの退避先判定処理のフローチャートを示す。 第2実施例に係るバックアップデータの復旧処理のフローチャートを示す。 第3実施例に係るバックアップデータの復旧処理の動作を示す。 第3実施例に係るバックアップデータの復旧処理のフローチャートを示す。 復旧対象データ選択処理のフローチャートを示す。 デステージデータテーブルの構成を示す。 デステージ処理のフローチャートを示す。 第3実施例に係るNVRAM管理テーブルの構成を示す。 第3実施例に係るバックアップデータ選択処理のフローチャートを示す。 第3実施例に係る退避先選択処理のフローチャートを示す。 クリーン領域選択処理のフローチャートを示す。 第3実施例に係るデータ転送処理のフローチャートを示す。 第3実施例に係る、バックアップデータの復旧処理のフローチャートを示す。
以下、図面を参照しながら本発明の実施の形態を説明する。
図1は、本発明の第1実施例におけるストレージシステムの構成を示す。
ストレージシステムは、ホストコンピュータ2と、ホストコンピュータ2に接続されたストレージ装置1とを有する。ストレージ装置1は、データ処理、演算を行うホストコンピュータ2に接続されている。ストレージ装置1は、ホストコンピュータ2とFibre Channel(FC)、およびiSCSI等によるデータ転送路で接続されている。なお、ホストコンピュータ2の数は一つでも複数でも良い。
ストレージ装置1は、ストレージコントローラ3と、ドライブ筐体4と、電源5とを有する。ドライブ筐体5は、複数の記憶ドライブ6(本実施例では3つドライブ)を収容する。電源5は、ストレージコントローラ3とドライブ筐体4とに電力を供給する。また、ストレージ装置1は、商用電源7に接続されている。
ストレージ装置1が含むストレージコントローラ3、ドライブ筐体4、電源5のそれぞれの数は設計に依存する。記憶ドライブの種別は問わない。例えば、ハードディスクドライブ(HDD)でも良いし、フラッシュメモリなどの不揮発性能メモリを搭載したSolid State Drive(SSD)であっても良い。
記憶ドライブ6は、例えば不揮発性の記憶媒体であり、ホストコンピュータ2から転送されたユーザーデータを格納する。例えば、複数の記憶ドライブ6がRAID(Redundant Arrays of Inexpensive Disks)を構成しデータの冗長化を行っても良い。これにより、記憶ドライブ6に障害が発生しデータを消失したとしても、記憶ドライブ6のデータおよびパリティに基づいて消失したデータを復元することができる。なお、記憶ドライブ6は、記憶デバイスの一例である。
ストレージコントローラ3は複数のクラスタ10を有し、本例において、2つのクラスタ10を有する。ストレージコントローラ3は、可用性を重視し、サービスを継続して提供するために2つのクラスタ2を備えている。なお、2つのクラスタ10は、同一の構成であるので、同一の符号を付し、一方のクラスタ10についてのみ説明する。
クラスタ10は、ホストインターフェース(I/F)LSI11と、ドライブI/F LSI12と、マイクロプロセッサ(以下、単にMPとする)13と、主記憶メモリ14と、NVRAM15と、バッテリ16とを含む。
ホストI/F LSI11は、ホストコンピュータ2との通信に用いられるデバイスであり、FC、Fibre Channel Over Ethernet(登録商標)(FCoE)、iSCSI等の通信プロトコルをストレージ装置1内部で用いられるPCIeプロトコルに変換する機能を有する。なお、ホストコンピュータ2からストレージ装置1に対し、512B単位でデータ転送が行われるが、ホストI/F LSI11はそのデータに対し8BのCRCを付加するように構成されている。
ドライブI/F LSI12は、複数のドライブ6を収容するドライブ筐体4と、ストレージコントローラ3とを接続するためのデバイスである。例えば、ドライブI/F LSI12は、記憶ドライブ6とストレージコントローラ3との通信に用いられるFC、Serial Attached SCSI(SAS)、Serial Advanced Technology Attachment(SATA)、Non−Volatile Memory Express(NVMe)等の通信プロトコルをストレージコントローラ3内部で用いられるプロトコル、例えば、PCIeのプロトコルに変換する機能を有する。
MP13は、クラスタ10内における内部処理を実行する。MP13は、演算やデータの読み書きを実行してストレージコントローラの制御を行うコア13A、主記憶メモリ14とのデータ転送を行うメモリI/F13B、ホストI/F LSI11とMP13とを接続するPCIeインターフェース13C、ドライブI/F LSI12とMP13とを接続するPCIe I/F13D、NVRAM15とMP13とを接続するPCIe I/F13E、主記憶メモリ14と他方のクラスタ2(リモートクラスタとも呼ぶ。)とのデータ転送を行うDMA13F、リモートクラスタ2との通信I/FとなるNon Transparent Bridge(NTB)13Gとを有する。MP13の内部構成要素は内部ネットワークで相互に接続されている。メモリI/F13Bは、例えばDDRインターフェースである。MP13のコア13Aは、ユーザーデータを主記憶メモリ14から記憶ドライブ6にコピーする際に後述のセグメント32毎にパリティを生成し、記憶ドライブ6に格納(デステージ)する。
主記憶メモリ14は、MP13に接続されており、Double Data Rate(DDR) Synchronous DRAM等の半導体メモリで構成される揮発性の記憶デバイスである。主記憶メモリ14の容量は、例えば100〜500GBである。主記憶メモリ14は、DDRインターフェースであるメモリI/F13Bを介してMP13と接続している。主記憶メモリ14は、ホストコンピュータ2から読み書きされるデータを一時的に記憶し(ユーザーデータのキャッシング)、また、MP13が扱うデータやストレージコントローラ10を制御するためのプログラムを格納する。主記憶メモリ14が格納するデータの詳細は後述する。なお、主記憶メモリ14は、第1のキャッシュメモリの一例である。
NVRAM15は、典型的にはPCIe I/F13Eを介してマイクロプロセッサ13に接続されており、NAND型フラッシュメモリ、Phase Change RAM(PCM)、Resistance RAM(ReRAM)等の半導体メモリで構成される不揮発性の記憶デバイスである。NVRAM15の容量は、例えば500GB〜1TBである。NVRAM15は、主記憶メモリ14に記憶されているデータを、NVRAM15に転送するためのDirect Memory Access(DMA)15Aを搭載する。NVRAM15はホストコンピュータ2から読み書きされるデータを一時的に格納する。一般に、NVRAM15は、DRAMと比較して面積あたりのデータ記録密度は大きいが、データ読み込み速度、データ書き込み速度が小さく、また、データ書き換え可能回数は少ない。NVRAM15が格納するデータの詳細は後述する。なお、NVRAM15は、第2のキャッシュメモリの一例である。
バッテリ16は、例えば、再充電可能な二次電池であり、電源5の故障等によりストレージコントローラ3に電力が供給出来なくなった場合に電源の代わりに電力を供給する。なお、バッテリ16を構成する電池の種別は問わない。例えば鉛蓄電池、リチウムイオン電池等であっても構わない。バッテリ16は、クラスタ10内の少なくともMP13、主記憶メモリ14、NVRAM15の3つを一定時間動作させられるだけの電荷量を保持する。バッテリ16は、電力をクラスタ10に供給する回路の電圧降下(電断とも呼ぶ)を契機にクラスタ10に電力の供給を開始するように構成されている。
図2は、主記憶メモリ14と、NVRAM15とに格納するデータの構成例を示す。
主記憶メモリ14には、ストレージコントローラ3を制御するプログラムである制御プログラムデータ20と、ホストコンピュータ2から読み書きされるユーザーデータ30と、ユーザーデータ30を管理する情報を格納する主記憶メモリ管理テーブル40と、NVRAM15に記憶されたユーザーデータを管理する情報を格納するNVRAM管理テーブル50と、主記憶メモリ14上のバックアップ対象となるデータを管理するバックアップデータテーブル60と、ユーザーデータ30が退避可能なNVRAM15上の領域を管理する退避先データテーブル70とが格納されている。また、NVRAM15には、ユーザーデータ80が格納されている。
ユーザーデータ30、80、管理テーブル40、50、バックアップデータテーブル60、退避先データテーブル70の構造についての詳細は後述する。NVRAM15上にはユーザーデータ80のみが格納される。NVRAM15は、基本的にはキャッシュメモリとして用いられるが、ライト性能がDRAMである主記憶メモリ14よりも低いため、アクセス頻度が高い管理テーブル40、50、および制御プログラムデータ20は、NVRAM15に格納しない。
ホストコンピュータ2からストレージ装置1に転送されたユーザーデータのうち、キャッシュメモリに格納されており、記憶ドライブ6に既にコピーされているユーザーデータをクリーンデータと呼ぶ。すなわち、記憶ドライブ6にデステージされたユーザーデータがクリーンデータである。一方、ホストコンピュータ2からストレージ装置1に転送されたユーザーデータのうち、キャッシュメモリに格納されているが、記憶ドライブ6に未だコピーされていないユーザーデータをダーティデータと呼ぶ。すなわち、記憶ドライブ6にまだデステージされていないユーザーデータがダーティデータである。
図3は、ユーザーデータ30の構造を示している。
ユーザーデータ30は、ホストコンピュータ2から転送されたデータの集合体を表している。図3に示すように、一つのスロット31は、複数のセグメント32から構成されており、各セグメント32はそれぞれ複数のブロック33から構成される。なお、図示はしないが、NVRAM15に格納されたユーザーデータ80も、ユーザーデータ30と同じ構成である。
一つのスロット31は、例えば256KBであり、スロット31の数は、設計に依存する。各セグメント32は主記憶メモリ14上の連続領域を表す。また、セグメント32の大きさは設計に依存し、スロット31が持てるセグメント32の数は設計に依存する。各ブロック33は、ユーザーデータ30を管理する最小の単位であって、例えば512Bであり、主記憶メモリ14上の連続領域を表す。
そして、各ブロック33に、クリーンデータ33Aおよびダーティデータ33Bが格納される。また、MP13が、新たなダーティデータを格納するためにクリーンデータが格納されたブロック33またはセグメント32を初期化して解放する事により、一時的に空き領域のブロック33Cが生じる。
また、ストレージ装置1においては、主記憶メモリ14に保持可能なダーティデータの最大容量を、ユーザーにより設定可能に構成されている。
図4は、主記憶メモリ管理テーブル40の構成を示す。
主記憶メモリ管理テーブル40は、主記憶メモリ14に格納されたユーザーデータ30を管理するテーブルである。主記憶メモリ管理テーブル40は、スロット管理ポインタテーブル41と、スロット管理テーブル42と、セグメント管理テーブル43とを有する。
スロット管理ポインタテーブル41は、I/O先情報を格納するテーブルである。すなわち、スロット管理ポインタテーブル41は、ホストコンピュータ2から受けたI/O要求に含まれる情報で、I/O先を表す情報を格納する。典型的には、I/O先情報は、LUN(Logical Unit Number)とLBA(Logical Block Addressing)である。LUNは、論理ユニット(論理ボリューム)の番号であり、ホストコンピュータ2が認識している番号である。LBAは、記憶ドライブ6の論理ユニットにおける領域(論理ブロック)を表すアドレスです。
スロット管理ポインタテーブル41は、所定数のブランクのエントリ(レコード)を有する。I/O要求を受けたときに、ブランクのエントリに、I/O先情報であるスロット管理ポインタが書かれる。そして、スロット管理テーブル42から、空きスロットに対応したレコードが特定されて、そのレコードに、スロット管理ポインタが紐付けられる。これにより、どのI/O先に書かれる(あるいはどのI/O先から読み出された)データが、キャッシュメモリである主記憶メモリ14のどこに入っているのかが分かる。
なお、スロット管理ポインタテーブル41の1行は、最初からは、スロット管理テーブル42の1行に1対1に対応していない。なぜなら、そうしてしまうと、予め、論理ボリュームの容量分のポインタを用意しなければならず、テーブルのサイズもキャッシュのサイズも膨大に必要になってしまうからである。
スロット管理テーブル42は、スロットと特定するための情報であるスロットID42Aと、Most Recent Used(MRU)情報42Bと、Least Recent Used(LRU)情報42Cと、スロットステータス42Dと、セグメント管理ポインタ42Eとを格納する。
MRU情報42Bは、対応スロットに対するアクセスが高頻度であるか否かを示す情報である。LRU情報42Cは、対応スロットに対するアクセスが低頻度であるか否かを示す情報である。
スロットステータス42Dは、クリーンまたはダーティのキャッシュ制御情報、およびスロット31の各セグメント32に対しパリティを生成したことを示す情報が格納する。なお、本実施例では、主記憶メモリ14およびNVRAM15に格納されているダーティデータの割合が、所定の割合を超えた場合に、ダーティデータに関するパリティがセグメント32毎に生成され、ダーティデータのデステージ処理が実行される。
セグメント管理ポインタ42Eは、スロットが内包するセグメントに対応するセグメント管理テーブルのポインタを格納する。
セグメント管理テーブル43は、各スロットに対応して複数設けられている。セグメント管理テーブル43は、セグメントを特定するための情報であるセグメントID43Aと、データ格納アドレス43Bと、クリーンデータビットマップ43Cと、ダーティデータビットマップ43Dとを格納する。データ格納アドレス43Bは、セグメントが配置されている位置を示す。クリーンデータビットマップ43Cは、対応セグメント内でクリーン状態になっているデータ格納位置を示す。すなわち、クリーンデータビットマップ43Cは、対応セグメント内でクリーンデータを格納している位置を示す。ダーティデータビットマップ43Dは、対応セグメント内でダーティ状態になっているデータ格納位置を示す。ダーティデータビットマップ43Dは、対応セグメント内でダーティデータを格納している位置を示す。
図5は、バックアップデータテーブル60の構成を示す。
バックアップデータテーブル60は、電断時にMP13のコア13Aにより、主記憶メモリ管理テーブル40に基づき作成される。バックアップデータテーブル60は、ユーザーデータ30中のバックアップ対象データに関するビットマップテーブルである。すなわち、バックアップデータテーブル60は、バックアップ対象となるデータがどこに格納されているのかを指し示すテーブルである。また、バックアップデータテーブル60は、スロット管理ポインタ61と、スロットID62と、セグメントID63と、データサイズ64と、データ先頭アドレス65とを格納する。なお、主記憶メモリ14からNVRAM15へ退避されるデータは、全ユーザーデータである場合と、ダーティデータのみである場合があるが、いずれのデータをバックアップ対象とした時も図5に示したバックアップデータテーブル60をバックアップデータテーブルとして説明する。なお、バックアップデータテーブル60は対象データテーブルに相当し、バックアップデータは対象データに相当する。また、電断時に主記憶メモリ14からNVRAM15へバックアップする対象であるためバックアップデータと表現しているが、電源が復旧したときにはNVRAM15から主記憶メモリ14へ復旧の対象となるデータでもある。
スロット管理ポインタ61と、スロットID62と、セグメントID63とは、それぞれ図4におけるスロット管理ポインタテーブル41と、スロットID42Aと、セグメントID43Aとに対応する。データサイズ64は、対応するセグメントに格納されているバックアップデータのサイズである。データ先頭アドレス65は、対応するセグメントに格納されているバックアップデータの先頭のアドレスを示す。
上記のように、ホストコンピュータ2から512B単位で転送されてくるデータに対し8BのCRCが付加される。そうすると、8Bずつアドレスがずれることとなる。このため、同じブロックでもダーティデータとクリーンデータが混在することとになる。したがって、バックアップ対象をデータサイズとアドレスで管理することにより、ユーザーデータ30からバックアップデータのみを抽出して退避させることができ、バックアップデータ量を減少させることができる。
図6は、NVRAM管理テーブル50の構成を示す。
NVRAM管理テーブル50は、NVRAM15に格納されたユーザーデータ80を管理するテーブルである。NVRAM管理テーブル50は、スロット管理ポインタテーブル51と、スロット管理テーブル52と、セグメント管理テーブル53とを格納する。スロット管理ポインタテーブル51と、スロット管理テーブル52と、セグメント管理テーブル53とは、それぞれ主記憶メモリ管理テーブル40のスロット管理ポインタテーブル41と、スロット管理テーブル42と、セグメント管理テーブル43と同様のテーブルであるので、詳細な説明は省略する。
なお、スロット管理ポインタテーブル51のスロット管理ポインタは、スロット管理ポインタテーブル41のスロット管理ポインタと同様に、I/O先情報を示すが、主記憶メモリ14に入ったデータのI/O先情報とは別のNVRAM15に入ってデータのI/O先情報を示している。また、スロット管理テーブル52は、スロットID52Aと、MRU情報52Bと、LRU情報52Cと、スロットステータス52Dと、セグメント管理ポインタ52Eとを有する。セグメント管理テーブル53は、各スロットに対応して複数設けられ、セグメントID53Aと、データ格納アドレス53Bと、クリーンデータビットマップ53Cと、ダーティデータビットマップ53Dとを有する。
図7は、退避先データテーブル70の構成を示す。
退避先データテーブル70は、電断時にMP13のコア13Aにより作成される。退避先データテーブル70は、電断時に、主記憶メモリ14からNVRAM15へユーザーデータ30中のダーティデータを退避させるための退避先(バックアップ先)を示すビットマップテーブルである。また、退避先データテーブル70は、スロット管理ポインタ71と、スロットID72と、セグメントID73と、データサイズ74と、データ先頭アドレス75とを有する。なお、主記憶メモリ14からNVRAM15へ退避されるデータは、全ユーザーデータである場合と、ダーティデータのみである場合があるが、いずれのデータをバックアップ対象とした時も図7に示した退避先データテーブル70を退避先データテーブルとして説明する。
スロット管理ポインタ71は、図5のスロット管理ポインタ61に対応する。すなわち、図5において管理しているバックアップデータのI/O先情報(スロット管理ポインタ)を、図7の退避先データテーブルにおいても管理している。これにより、主記憶メモリ14上のバックアップ対象となるデータと、NVRAM15上に退避されるデータとが対応付けられる。そして、主記憶メモリ14にバックアップデータを復旧したときに、図7のテーブルのスロット管理ポインタ(I/O先情報)が表すI/O先に、バックアップデータを書込むことができる。
また、スロットID72と、セグメントID73とは、それぞれ図5におけるスロットID62と、セグメントID63とに対応する。また、退避先データサイズ74は、対応するセグメントに格納されているダーティデータのサイズである。退避先データ先頭アドレス75は、対応するセグメントに格納されているダーティデータ先頭のアドレスを示す。
図8は、第1実施例において、ストレージ装置1が電断した時のストレージコントローラ3によるバックアップ処理の動作を示す。なお、図8では、一方のクラスタ10におけるバックアップ処理の動作のみを示す。
電源5の故障等により電圧が低下し、電源5からストレージコントローラ3へ電力を供給する回路8が開放状態に遷移した事を契機に、クラスタ10はバックアップ処理を開始する。バックアップ処理とは、主記憶メモリ14に格納されている、ユーザーデータ30、主記憶メモリ管理テーブル40、NVRAM管理テーブル50、バックアップデータテーブル60、および退避先テーブル70を、NVRAM15のクリーンデータ領域15Bおよび空き領域15Cにデータ転送F1を実行する処理を表す。すなわち、バックアップ処理では、バックアップデータが、ダーティデータ領域以外の残りの領域(クリーンデータ領域15Bおよび空き領域15C)に格納される。バックアップ処理の具体的な処理動作は後述する。なお、バックアップ処理時には、クラスタ10はバッテリ16により稼働する。
図9は、ダーティ最大容量決定処理のフローチャートを示す。この処理は、ストレージ装置1の起動時、又は、主記憶メモリ14に保持可能なダーティデータの最大容量をユーザーが変更した時に実行される。
MP13は、主記憶メモリ14の容量情報とNVRAM15の容量情報を取得し、NVRAM容量が主記憶メモリ容量より大きいか否かを判定する(S10)。NVRAM容量が主記憶メモリ容量より大きいと判定された場合(S10:YES)、MP13は、NVRAM容量と主記憶メモリ容量との差分を、NVRAM15で保持できるダーティデータの最大容量に設定する(S11)。主記憶メモリ14の方がライト性能は高いため、主記憶メモリ14にダーティデータを保持させるようにする事で、ストレージ装置1の性能を維持する事が可能となる。
NVRAM容量が主記憶メモリ容量以下であると判定された場合(S10:NO)、MP13は、NVRAM容量が、主記憶メモリ14が保持できるダーティデータの最大容量よりも小さいか否かを判定する(S12)。NVRAM容量が、主記憶メモリ14が保持できるダーティデータの最大容量より小さいと判定された場合(S12:YES)、MP13は、主記憶メモリ14が保持できるダーティデータの最大容量をNVRAMの容量と同等になるようにストレージ装置1の設定を変更する(S13)。さらに、NVRAM15が保持できるダーティデータの容量を0にする(S13)。この場合、NVRAM15には、クリーンデータのみが格納されることとなる。これにより、主記憶メモリ14の方がライト性能は高いため、主記憶メモリ14にダーティデータを保持させるようにする事で、ストレージ装置1の性能を維持する事が可能となる。
また、ステップS13の処理において、NVRAM15にダーティデータが格納されている場合には、そのダーティデータを全て記憶ドライブ6に書込んで(デステージして)、NVRAM15を全てクリーン状態にしても良い。また、ステップS13の処理において、主記憶メモリ14に格納されているダーティデータの量が、主記憶メモリ14が保持できるダーティデータの最大容量を超えていた場合には、超えている分のダーティデータを記憶ドライブ6に書込んでも良い。
NVRAM15の容量が、主記憶メモリ14が保持できるダーティデータの最大容量以上であると判定された場合(S12:NO)、MP13は、NVRAM15と主記憶メモリ14が保持できるダーティデータの最大容量との差分を、NVRAM15で保持できるダーティデータの最大容量に設定する(S14)。これにより、主記憶メモリ14が保持できるダーティデータの最大容量分だけ、NVRAM15はクリーンデータを保持することになる。
図10は、電断時におけるストレージ装置1のバックアップ処理のフローチャートを示す。
まず、MP13は、電源5の故障等により電圧が低下し、電源5からストレージコントローラ3へ電力を供給する回路8が開放状態に遷移したか否かを判定する(S20)。すなわち、MP13は、電断が発生したか否かを判定する。電断が発生していなければ(S20:NO)、バックアップ処理は終了する。一方、電断が発生していれば(S20:YES)、MP13は、主記憶メモリ14上のバックアップ対象であるデータを選択するバックアップデータ選択処理を実行する(S21)。バックアップデータ選択処理の詳細については後述する。バックアップデータ選択処理が終了すると、MP13は、バックアップデータの退避先をNVRAM15から選択する退避先選択処理を実行する(S22)。退避先選択処理の詳細については後述する。退避先選択処理の終了後、MP13は、ステップS21で選択したバックアップデータをステップS22で選択した退避先に転送するデータ転送処理を実行する(S23)。データ転送処理の詳細については後述する。データ転送処理の完了をもってストレージ装置1のバックアップ処理を終了する。
図11は、主記憶メモリ14上のバックアップデータを選択するバックアップデータ選択処理のフローチャートを示す。
MP13は、バックアップデータテーブル60を作成する(S30)。この時点で、バックアップデータテーブル60は空となっている。次に、MP13は、主記憶メモリ14の容量がNVRAM15上のクリーンデータの容量と空き容量との合計量以下であるか否かを判定する(S31)。主記憶メモリ14の容量が合計量以下であると判定された場合(S31:YES)、MP13は、主記憶メモリ14上の全データをバックアップ対象として選択する(S32)。これにより、一律に全てのデータが選択されるので、逐一バックアップ対象となるデータを判定するための処理時間が削減される。よって、全体のバックアップ処理時間の削減が可能となる。
MP13は、ステップS32で選択した全ユーザーデータの情報をバックアップデータテーブルに反映させる(S33)。具体的には、主記憶メモリ管理テーブル40に基づき、スロットポインタ、スロットID、セグメントID、データサイズ、データ先頭アドレスをバックアップデータテーブル60に反映させる。これにより、図5に示した全ユーザーデータに関するバックアップデータテーブル60が作成される。
一方、主記憶メモリ容量が合計量より大きいと判定された場合(S31:NO)は、主記憶メモリ上のデータの全てを選択することができない。そのため、MP13は、主記憶メモリ管理テーブル40に基づき、ダーティデータを格納するスロットとセグメントを特定し、ダーティデータをバックアップ対象として選択する(S34)。この時、特定したダーティデータのサイズをダーティデータビットマップ43Dから計算する。次に、MP13は、特定したダーティデータの情報に基づき、スロットポインタ、スロットID、セグメントID、ダーティデータのデータサイズ、ダーティデータのデータ先頭アドレスをバックアップデータテーブル60に反映させる(S35)。これにより、バックアップデータとして、図5に示したバックアップデータテーブル60が作成される。
次に、MP13は、全てのユーザーデータについてダーティデータの判定処理が完了したか否かを判定する(S36)。MP13は、この判定処理が完了していなければステップS34に戻り(S36:NO)、ダーティデータの選択処理を繰り返す。全てのユーザーデータについてダーティデータの判定処理が完了していると判定した場合(S36:YES)、MP13は、ステップS33およびステップS35で作成したバックアップデータテーブル60に基づき、バックアップ対象となるバックアップデータの合計サイズを計算する(S37)。ステップS37でバックアップデータの合計サイズを計算した後、MP13は、バックアップデータ選択処理を終了する。
図12は、バックアップデータの退避先をNVRAM15から選択する退避先選択処理のフローチャートを示す。
MP13は、NVRAM管理テーブル50に基づき、退避先データテーブルを作成する(S40)。なお、この時点において、退避先データテーブルには、データは何も反映されていない。MP13は、NVRAM管理テーブル50、および図11のバックアップデータ選択処理で作成したバックアップデータテーブル60を読み込む(S41)。
ここで、NVRAM15の容量効率を高めるため、MP13はNVRAM15上にバックアップ用データ退避領域を設けずにバックアップデータ格納先としてクリーンデータが格納されているユーザーデータ領域を選択する。そのため、MP13はNVRAM15のユーザーデータの管理テーブルを読み込み、バックアップデータ格納先となるクリーンデータの位置を特定する必要がある。この時バックアップ格納先を選択する優先順位は以下の順となる。(1)ユーザーデータが格納されていない空き領域、(2)最も大きいデータ管理単位であるスロットの内、クリーン状態のスロット、(3)スロットの次に大きいデータ管理単位であるセグメントの内、クリーン状態のセグメント、(4)最も小さいデータ管理単位であるブロックの内、クリーン状態のブロック。このように、大きい領域から順に選択することにより、主記憶メモリ14からNVRAM15への書込み時間を短縮することができる。よって、バッテリ16によるクラスタ10への給電時間を短くすることができ、バッテリ16の容量を削減することができる。ここで、クリーン状態とは、その対応する領域に格納されているデータが全てクリーンデータであり、ダーティデータを格納していない状態を示す。
MP13は、NVRAM管理テーブル50に基づき、NVRAM15に空き領域があるか否かを判定する(S42)。NVRAM15に空き領域がある場合(S42:YES)、MP13は、空き領域を選択する(S43)。一方、NVRAM15に空き領域がない場合(S42:NO)、MP13は、NVRAM15にクリーン状態のスロットがあるか否かを判定する(S44)。NVRAM15にクリーン状態のスロットがある場合(S44:YES)、MP13は、クリーン状態のスロットを選択する(S45)。NVRAM15にクリーン状態のスロットがない場合(S44:NO)、MP13は、NVRAM15にクリーン状態のセグメントがあるか否かを判定する(S46)。NVRAM15にクリーン状態のセグメントがある場合(S46:YES)、MP13は、クリーン状態のセグメントを選択する(S47)。NVRAM15にクリーン状態のセグメントがない場合(S46:NO)、MP13は、クリーン状態のブロックを選択する(S48)。このようにして、MP13は、退避領域を選択するので、NVRAM15中のクリーンデータをなるべく残しておくことができる。
これらの退避先選択処理の後、MP13は、選択した領域の書込回数に1を足した回数が、最大書込可能回数を超えるか否かを判定する(S49)。選択した領域の書込回数に1を足した回数が最大書込可能回数以上である場合(S49:YES)、S42に戻り、退避先選択処理を繰り返す。一方、選択した領域の書込回数に1を足した回数が最大書込可能回数未満である場合(S49:NO)、MP13は、NVRAM管理テーブル50における選択した退避領域のキャッシュステートをダーティに遷移させる(S50)。ダーティに遷移させることにより、リカバリ時に誤ってバックアップデータを破棄することを防止することができる。MP13は、選択した領域に対し、退避させるユーザーデータを割り当て、退避先データテーブル70に、割り当てたユーザーデータに関するスロットポインタ、スロットID、セグメントID、データサイズ、データ先頭アドレスを反映させる(S51)。
次に、MP13は、図11のS37で算出したバックアップデータの合計サイズ分だけ退避領域を選択したか否かを判定する(S52)。バックアップデータの合計サイズ分だけ退避領域を選択したと判定した場合(S52:YES)、MP13は、退避先選択処理を終了する。一方、バックアップデータの合計サイズ分だけ退避領域を選択していないと判定した場合(S52:NO)、MP13は、ステップS42に戻る。
図13は、主記憶メモリ14からNVRAM15へバックアップデータを転送するデータ転送処理のフローチャートを示す。
MP13は、バックアップデータテーブル60と、退避先データテーブル70とを読み込む(S60)。次に、MP13は、読み込んだ2つのテーブルに基づいて、NVRAM15のDMA15Aでデータ転送するためのデータ転送命令を主記憶メモリ14に作成する(S61)。この時、主記憶メモリ管理テーブル40、NVRAM管理テーブル50、バックアップデータテーブル60、および退避先データテーブル70も転送対象に含める。次に、MP13は、DMA15Aに作成したデータ転送命令を読み込ませ、DMA15Aにデータ転送を実行させる(S62)。
MP13は、DMA15Aにデータ転送を実行させた後、一定時間待機し(S63)、DMA15Aによるデータ転送が完了したか否かを判定する(S64)。データ転送が完了していなければ(S64:NO)、MP13は、ステップS63に戻り待機する。データ転送が完了していれば(S64:YES)、MP13は、全バックアップデータについて転送を完了したか否かを判定する(S65)。全バックアップデータについて転送を完了していなければ(S65:NO)、MP13はステップS62に戻り、転送処理を繰り返す。全バックアップデータについて転送を完了してしれば(S65:YES)、MP13はデータ転送処理を終了する。
図14は、電源が復旧した時の、MP13によるバックアップデータの復旧処理のフローチャートを示す。
MP13は、NVRAM15に復旧データが存在するか否かを判定する(S70)。例えば、NVRAM15にバックアップデータテーブル60および退避先データテーブル70が格納されているか否かを判定する。NVRAM15に復旧データが存在しないと判定された場合(S70:NO)、MP13は復旧処理を終了する。一方、NVRAM15に復旧データが存在すると判定された場合(S70:YES)、MP13は、NVRAM15から退避先データテーブル70を読み込み、NVRAM15上のバックアップデータを特定する(S71)。
次に、MP13は、ステップS72で特定したバックアップデータを主記憶メモリ14に再展開するために、NVRAM15から主記憶メモリ14にステップS72で特定したバックアップデータを転送する(S72)。また、MP13は、主記憶メモリ管理テーブル40およびNVRAM管理テーブル50を転送する。MP13は、バックアップデータテーブル60を参照して、主記憶メモリ管理テーブル40を再構成し(S73)、復旧処理を終了する。また、退避先データテーブル70を参照して、NVRAM管理テーブル50を再構成しても良い。バックアップデータの転送時には、バックアップデータに付されたCRCコードをチェックし、CRCエラーを検出した場合には、そのデータを破棄する。
上記のように、電断時に主記憶メモリ14に格納されているデータをNVRAM15の空き領域および/またはクリーンデータ領域に退避するようにしたので、NVRAM15の容量効率を高めることができる。また、バックアップデータの退避用としての不揮発性メモリを設ける必要がなくなるので、コストの増大を防止することができる。また、キャッシュメモリとして使用するNVRAM15にバックアップデータを退避させるので、データ転送時間を短縮することができ、バッテリ16の容量を削減することができ、コストを減少させることができる。
次に、本発明の第2実施例おけるストレージ装置101について説明する。
図15は、第2実施例におけるストレージシステムを構成するストレージ装置101を示している。なお、第1実施例と同一の構成については同一の番号を付して説明を省略し、異なる部分についてのみ説明する。
図15に示すように、本実施例の各クラスタ10は、バックアップ専用の不揮発性媒体であるSSD17と、SSD I/F LSI18とを有している。SSD17は、NAND型フラッシュメモリ、Phase Change RAM(PCM)、Resistance RAM(ReRAM)等の半導体メモリで構成される記憶デバイスであり、その容量は1〜2TBである。SSD17は、通常はSATAインターフェースでMP13と接続している。また、SSD17は、DRAMと比較して面積あたりのデータ記録密度は大きいが、データ読み込み速度、データ書き込み速度が小さく、また、データ書き換え可能回数は少ない。
本実施例では、SSD17は、電断時に主記憶メモリ14に格納されたデータを退避させるためだけに用いられ、バックアップ処理時以外でホストコンピュータ2から読み書きされるデータを格納することは無い。SSD I/F LSI18は、SSD17がMP13と通信を行うためのコントローラである。
図16は、本実施例のストレージ装置101が電断した時のストレージコントローラ3によるバックアップ処理の動作を示す。なお、図16では、一方のクラスタ10におけるバックアップ処理の動作のみを示す。
電源5の故障等により電圧が低下し、電源5からストレージコントローラ3へ電力を供給する回路8が開放状態に遷移した事を契機に、クラスタ10はバックアップ処理を開始する。本実施例のバックアップ処理では、主記憶メモリ14に格納されている、ユーザーデータ30、主記憶メモリ管理テーブル40、NVRAM管理テーブル50、バックアップデータテーブル60、および退避先データテーブル70を、NVRAM15のクリーンデータ領域および空き領域にデータ転送F1、SSD17にデータ転送F2を実行する。このように、本実施例のバックアップ処理では、第1実施例のバックアップ処理と異なり、主記憶メモリ14からNVRAM15へのバックアップデータ転送と、主記憶メモリ14からSSD17へのバックアップデータ転送を並列して実行する。バックアップ処理の具体的な処理動作は後述する。
本実施例においても、第1実施例の図10と同様のバックアップ処理が実行される。しかし、本実施例では、ステップS22に代えて、図17のバックアップデータの退避先判定処理が実行される。
図17は、本実施例におけるバックアップデータの退避先判定処理のフローチャートを示す。
MP13は、クラスタ10にSSD17が存在するか否かを判定する(S80)。SSD17が存在しないと判定すれば(S80:NO)、MP13は、図10のステップS22と同じ処理を実行する。すなわち、バックアップデータの退避先がNVRAM15しかないので、図12の処理のみを実行する。
一方、SSD17が存在すると判定した場合(S80:YES)、バックアップデータの格納先となる不揮発性媒体が二つあるため、MP13は、各媒体に格納するデータ量を設定する処理を実行する。まず、MP13は、NVRAM15およびSSD17のデータ転送スループットを測定する(S81)。例えば、MP13は、ダミーデータを作成し、主記憶メモリ14からNVRAM15とSSD17とに対しダミー転送を実行し、データ転送量とデータ転送時間とから1秒あたりのデータ転送量を計算する。これにより、NVRAM15のデータ転送スループット(VNVRAM[GB/S])およびSSD17のデータ転送スループット(VSSD[GB/S])が測定される。
次に、MP13は、下記の式(1)、(2)を用いて、NVRAM15とSSD17にバックアップするデータ量を算出する(S82)。
Figure 0006097845
Figure 0006097845
ここで、各変数は
SSD:ステップS81で測定したSSDのデータ転送スループット[GB/S]
NVRAM:ステップS81で測定したNVRAMのデータ転送スループット[GB/S]
MaxDirty:主記憶メモリに格納されているダーティデータ量[GB]
SSD:SSDにバックアップするデータ量[GB]
NVRAM:NVRAMにバックアップするデータ量[GB]
である。
次に、MP13は、ステップS82で算出したBSSD[GB]およびBNVRAM[GB]に基づき、SSD17およびNVRAM15のそれぞれにバックアップするデータを決定する。MP13は、ステップS83で決定したNVRAM15に退避するバックアップデータについて、図10のステップS22と同じ処理を実行する。
次に、MP13は、ステップS83で決定したSSD17に退避するバックアップデータについて、図示せぬ退避テーブルを作成する(S84)。退避テーブルでは、少なくともI/O先情報と、バックアップデータとが対応付けられる。これにより、主記憶メモリ14にバックアップデータを復旧した時に、I/O先情報が示すI/O先にバックアップデータを書込むことができる。MP13は、退避テーブル作成処理の後、退避先判定処理を終了する。このように、NVRAM15およびSSD17のデータ転送スループットに基づき、バックアップするデータ量を決定するので、NVRAM15およびSSD17のそれぞれに対するデータ転送を同時に終了させることができる。よって、バックアップデータを退避させる時間を最短にすることができ、バッテリ16の容量を削減することができる。
図18は、本実施例における電源が復旧した時の、MP13によるバックアップデータの復旧処理のフローチャートを示す。なお、図14に示した復旧処理と同一の処理については同一の番号を付して説明を省略し、異なる処理についてのみ説明する。
本実施例の復旧処理では、ステップS72とステップS73との間に、ステップ90とステップ91とが追加されている。MP13は、ステップ90において、SSD17にバックアップデータが格納されているか否か判定する。SSD17にバックアップデータが格納されていなければ、MP13は、ステップS73に進む。一方、SSD17にバックアップデータが格納されていれば、SSD17に退避されたバックアップデータを主記憶メモリ14に転送する。
次に、本発明の第3実施例おけるストレージ装置について説明する。本実施例では、第1実施例のストレージ装置と比較して、バックアップデータの復旧処理のみが異なる。よって、バックアップデータの復旧処理についてのみ説明を行う。この復旧処理では、NVRAM15上のバックアップデータのうち、主記憶メモリ14へ転送するデータと主記憶メモリ14へ転送しないデータとをそれぞれ選択し、主記憶メモリ14へ転送するデータのみを主記憶メモリ14へ転送する。これにより、バックアップデータの復旧処理の時間を削減している。なお、第1実施例と同一の構成については同一の番号を付して説明を省略し、異なる部分についてのみ説明する。
図19は、本実施例における電源が復旧した時の、MP13によるバックアップデータの復旧処理の動作を示す。
図19に示すように、本実施例では、NVRAM15に退避されたバックアップデータ19をセグメント毎に、主記憶メモリ14に戻すのか、記憶ドライブ6にデステージするのかが判定される。例えば、セグメントを、パリティが未生成であるパリティ未生成セグメント19Aと、パリティを生成済みであるパリティ生成済みセグメント19Bに分類する。さらに、パリティ未生成セグメント19Aに含まれるダーティデータの割合が所定の閾値未満である第1のパリティ未生成セグメント19A1と、その割合が所定の閾値以上である第2のパリティ未生成セグメント19A2とに分類する。
そして、バックアップデータの復旧処理において、第1のパリティ未生成セグメント19A1に含まれるダーティデータを主記憶メモリ14に転送するデータ転送F3、パリティ生成済みセグメント19Bおよび第2のパリティ未生成セグメント19A2に含まれるダーティデータを記憶ドライブ6に転送するデータ転送F4を実行する。これにより、主記憶メモリ14に転送する転送データ量の削減を図ることができ、復旧処理を短時間で終了させることができる。
図20は、本実施例における電源が復旧した時の、MP13によるバックアップデータの復旧処理のフローチャートを示す。なお、図14に示した復旧処理と同一の処理については同一の番号を付して説明を省略し、異なる処理についてのみ説明する。
S70、S71の処理を実行後、MP13は、NVRAM15から主記憶メモリ管理テーブル40およびNVRAM管理テーブル50を読み込み、主記憶メモリ14上に構成する(S100)。テーブルを構成後、MP13は、復旧対象データ選択処理を実行する(S101)。復旧対象データ選択処理の詳細については後述する。復旧対象データ選択処理が終了すると、MP13は、復旧対象データ選択処理において主記憶メモリ14に復旧させるデータとして選択したバックアップデータ(ダーティデータ)を主記憶メモリ14に転送する(S102)。バックアップデータの転送時には、バックアップデータに付されたCRCコードをチェックし、CRCエラーを検出した場合には、そのデータを破棄する。その後、MP13は、デステージ処理を実行し(S103)、バックアップデータの復旧処理を終了する。デステージ処理の詳細については後述する。
図21は、本実施例における復旧対象データ選択処理のフローチャートを示す。
まず、MP13は、図22に示すデステージデータテーブル80を主記憶メモリ13上に作成する(S110)。なお、図22では、デステージデータテーブル80にデータが入力されているが、作成時点ではデステージデータテーブル80は空となっている。
次に、MP13は、主記憶メモリ管理テーブル40を読み込む(S111)。この処理により、電断前の主記憶メモリ14のキャッシュ管理の状態を確認することができる。MP13は、セグメント管理テーブル43からダーティデータを含む1つのセグメントを選択する(S112)。選択したセグメントについて、パリティ生成済みであるか否かを判定する(S113)。パリティ生成済みであるか否かは、スロット管理テーブル42のスロットステータス42Dを参照して判定する。選択したセグメントがパリティ生成済みであった場合(S113:YES)、MP13は、選択したセグメントに含まれるダーティデータを主記憶メモリ14に転送しないデータとして選択する(S114)。すなわち、NVRAM15に格納されたバックアップデータのうち、選択したセグメントに含まれるダーティデータに対応するダーティデータを主記憶メモリ14に転送しないデータとして選択する。次に、MP13は、S114において選択したダーティデータを図22のデステージデータテーブルに追加する(S115)。
一方、選択したセグメントがパリティ未生成である場合(S113:NO)、MP13は、選択したセグメントに含まれるデータに対するダーティデータの割合が所定の閾値以上であるか否かを判定する(S116)。選択したセグメントに含まれるデータに対するダーティデータの割合は、セグメント管理テーブル43(図4)を参照して算出される。また、所定の閾値は、ユーザーが自由に設定可能である。なお、バックアップ処理において、ダーティデータのみを退避させた場合には、MP13は、選択したセグメントにおける空き領域を含む全体のサイズに対するダーティデータの割合が所定の閾値以上であるか否かを判定する。ダーティデータの割合が所定の閾値以上である場合(S116:YES)、MP13は、S114へ進む。
一方、ダーティデータの割合が所定の閾値未満である場合(S116:NO)、MP13は、選択したセグメントに含まれるダーティデータを主記憶メモリ14に転送するデータとして選択し、データ転送命令を作成する(S117)。ダーティデータの割合が所定の閾値より小さいセグメントに含まれるダーティデータの量は比較的少ないと考えられ、データ復旧時の主記憶メモリ13へのデータ転送量を少なくすることができる。よって、復旧処理を短時間で終了させることができる。なお、S117ではダーティデータのみを選択したが、クリーンデータも選択して復旧させても良い。
次に、MP13は、全てのダーティデータを含むセグメントについて処理を完了したか否かを判定し、完了していればS119に進み(S118:YES)、完了していなければS112に戻る(S118:NO)。MP13は、S117およびS114で選択したデータに基づき、主記憶メモリ管理テーブル40とNVRAM管理テーブル50とを更新する。すなわち、主記憶メモリ管理テーブル40およびNVRAM管理テーブル50から、記憶ドライブ6にデステージするダーティデータに関する情報を削除し、新たなダーティデータを格納することを可能にする。これにより、主記憶メモリ14のキャッシュ利用効率を高めることができる。また、主記憶メモリ管理テーブル40およびNVRAM管理テーブル50を更新することにより、バックアップデータの復旧処理後の主記憶メモリ14およびNVRAM15のユーザーデータの状態と、管理テーブル40、50との整合性をとることができる。
図22は、デステージ処理の対象であるダーティデータを管理するデステージデータテーブル80の構成を示す。
デステージデータテーブル80は、スロット管理ポインタ81と、スロットID82と、セグメントID83と、ダーティデータサイズ84と、ダーティデータ先頭アドレス85とを格納する。スロットID82、セグメントID83、ダーティデータサイズ84、およびダーティデータ先頭アドレス85は、NVRAM15における情報である。
図23は、本実施例におけるデステージ処理のフローチャートを示す。
まず、MP13は、主記憶メモリ13からデステージデータテーブル80を読み込む(S120)。次に、MP13は、デステージ対象であるダーティデータのうち、パリティ未生成のダーティデータに対しパリティを生成し(S121)、デステージ対象であるダーティデータとパリティを記憶ドライブ6にデステージ処理する命令を作成する(S122)。なお、パリティの生成は、NVRAM15のDMA15Aが行っても良い。
MP13は、ドライブI/F LSI12に作成した命令を読み込ませ、デステージ対象であるダーティデータとパリティを記憶ドライブ6に転送する(S123)。転送後、MP13は、デステージデータテーブル80の全デステージ対象データについて、デステージ処理を完了したか否かを判定し(S124)、完了していない場合はS120に戻り、完了していればデステージ処理を終了する。
次に、本発明の第4実施例におけるストレージ装置について説明する。本実施例では、NVRAM15上の退避先を選択する際に、利用頻度の低いクリーンスロットを優先的に選択し、選択したクリーンスロットにバックアップデータを退避させるようにしている。これにより、利用頻度の高いクリーンスロットを残し、電源復旧後の装置のキャッシュヒット率を向上させることができる。なお、第1実施例と同一の構成については同一の番号を付して説明を省略し、異なる部分についてのみ説明する
図24は、本実施例におけるNVRAM管理テーブル150の構成を示す。NVRAM管理テーブル150は、MRU情報テーブル54およびLRU情報テーブル55を格納している。なお、図示していないが、NVRAM管理テーブル150は、図6で示したスロット管理ポインタテーブル51、スロット管理テーブル52、およびセグメント管理テーブル53も格納している。
MRU情報テーブル54は、どのスロットにより直近にアクセスがあったかを示すテーブルである。すなわち、MRU情報テーブル54では、直近にアクセスのあったスロットがより上位に配置されるように構成されている。換言すれば、直近にアクセスのないスロットほど下位に配置される。MRU情報テーブル54は、アクセス履歴情報54Aと、スロット位置ポインタ54Bとを有する。アクセス履歴情報54Aは、その数値が小さいほど、より直近にスロットに対しアクセスがあったこと示す情報である。スロット位置ポインタ54Bは、アクセスのあったスロットの位置を示す情報である。したがって、MP13は、あるスロットにアクセスがあった場合、そのスロットをMRU情報テーブル54の最も上位に配置する。
LRU情報テーブル55は、どのスロットにより直近にアクセスがなかったかを示すテーブルである。すなわち、LRU情報テーブル55では、直近にアクセスがなかったスロットがより上位に配置されるように構成されている。換言すれば、直近にアクセスのあったスロットほど下位に配置される。LRU情報テーブル55は、アクセス履歴情報55Aと、スロット位置ポインタ55Bとを有する。アクセス履歴情報55Aは、その数値が小さいほど、より直近にスロットに対しアクセスがなかったこと示す情報である。スロット位置ポインタ55Bは、アクセスのなかったスロットの位置を示す情報である。また、NVRAM15の全スロットは、MRU情報テーブル54およびLRU情報テーブル55のいずれかに格納される。
なお、MRU情報テーブル54は、直近にアクセスのあったスロットがより上位に配置されるように構成したが、所定の期間内におけるスロットへのアクセスの回数を記録しておき、回数が多いスロットほど上位に配置するようにしても良い。同様に、LRU情報テーブル55、直近にアクセスのなかったスロットほど、より上位に配置されるように構成したが、所定の期間内におけるスロットへのアクセスの回数を記録しておき、回数が少ないスロットほど上位に配置するようにしても良い。
図25は、本実施例における主記憶メモリ14上のバックアップデータを選択するバックアップデータ選択処理のフローチャートを示す。なお、図11に示したバックアップデータ選択処理と同一の処理については同一の番号を付して説明を省略し、異なる処理についてのみ説明する。
バックアップデータテーブル60を作成後、MP13は、主記憶管理テーブル40とNVRAM管理テーブル150とを読み込む(S130)。これにより、MP13は、ストレージ装置1が有するクリーンデータの量とダーティデータの量を把握することができる。
主記憶メモリ容量が合計量より大きいと判定された場合(S31:NO)、MP13は、主記憶メモリ14のダーティデータを含むセグメント数が、NVRAM15のクリーン状態のセグメント数以下であるか否かを判定する(S131)。主記憶メモリ14のダーティデータを含むセグメント数が、NVRAM15のクリーン状態のセグメント数以下であった場合(S131:YES)、MP13は、ダーティデータを含むセグメントをバックアップデータとして選択する(S132)。これにより、MP13、セグメント中のダーティデータのみを選択・抽出して、NVRAM15に転送しなくても、セグメントをコピーする処理のみでダーティデータを全て退避させることができる。MP13は、NVRAM15上のクリーン状態のセグメントを開放し、主記憶メモリ14のダーティデータを含むセグメントをコピーする処理を行うことにより、ダーティデータをバックアップすることができる。MP13は、S30で作成したバックアップデータテーブル60を破棄する(S133)。すなわち、セグメント単位でデータをバックアップするので、バックアップデータの先頭アドレス等の情報が必要なくなるため、バックアップデータテーブル60を破棄する。
図26は、本実施例におけるバックアップデータの退避先をNVRAM15から選択する退避先選択処理のフローチャートを示す。なお、図12に示した退避先選択処理と同一の処理については同一の番号を付して説明を省略し、異なる処理についてのみ説明する。
まず、MP13は、主記憶メモリ14上にバックアップデータテーブル60が存在するか否かを判定する(S140)。バックアップデータテーブル60が存在しない場合(S140:NO)、すなわち、図26のS133でバックアップデータテーブル60を破棄している場合、MP13は、退避先リストを作成する(S141)。その後、MP13は、NVRAM管理テーブル150を読み込み(S142)、退避先を選択する処理を行う(S143)。S143のクリーン領域選択処理の詳細については後述する。
一方、バックアップデータテーブル60が存在する場合(S140:YES)、MP13は、図12で説明したS40〜S42の処理を実行し、退避先を選択する処理を行う(S43、S141)。
MP13は、選択した領域の書込回数に1を足した回数が最大書込可能回数以上である場合(S49:YES)において、S49の処理に至るルートが、S40〜S42の処理を実行するルートであった場合はS42の処理に戻り、S140〜S141の処理を実行するルートであった場合はS143の処理に戻る。
また、MP13は、S51の処理において、S51の処理に至るルートが、S40〜S42の処理を実行するルートであった場合は、退避先データテーブル70に、割り当てたユーザーデータに関する情報を反映させ、S140〜S141の処理を実行するルートであった場合は、退避先リストにS143で選択したスロットおよびセグメントに関する情報を反映させる。
図27は、クリーン領域選択処理のフローチャートを示す。
まず、MP13は、S41の処理又はS141の処理で読み込んだNVRAM管理テーブル150のLRU情報テーブル55に、退避先として未選択のクリーンスロットがあるか否かを判定する(S150)。LRU情報テーブル55に未選択のクリーンスロットがある場合(S150:YES)、最上位のクリーンスロットを選択し(S151)、クリーン領域選択処理を終了する。
一方、LRU情報テーブル55に未選択のクリーンスロットがない場合(S150:NO)、MP13は、MRU情報テーブル54に、退避先として未選択のクリーンスロットがあるか否かを判定する(S152)。MRU情報テーブル54に未選択のクリーンスロットがある場合(S150:YES)、最下位のクリーンスロットを選択し(S151)、クリーン領域選択処理を終了する。このように、クリーンスロットを選択することにより、利用頻度の高いクリーンスロットを残すことができるので、電源復旧後におけるキャッシュヒット率を向上させることができる。
MRU情報テーブル54に未選択のクリーンスロットがない場合(S152:NO)、MP13は、S154の処理へ進む。S154〜S156の処理は、図12のS46〜S48と同じであるので説明を省略する。
図28は、本実施例における主記憶メモリ14からNVRAM15へバックアップデータを転送するデータ転送処理のフローチャートを示す。なお、図13に示した退避先選択処理と同一の処理については同一の番号を付して説明を省略し、異なる処理についてのみ説明する。
まず、MP13は、主記憶メモリ14にバックアップデータテーブル60が存在するか否かを判定する(S160)。主記憶メモリ14にバックアップデータテーブル60が存在しない場合(S160:NO)、すなわち、図25のS133の処理でバックアップデータテーブル60を破棄している場合、MP13は、主記憶メモリ管理テーブル40と退避先リストとを読み込む。そして、S61の処理において、退避先リストのセグメントに主記憶メモリ管理テーブル40におけるダーティデータを含むセグメントをコピーする命令を作成する。なお、主記憶メモリ管理テーブル40、NVRAM管理テーブル50、退避先リストを転送対象に含める。
一方、主記憶メモリ14にバックアップデータテーブル60が存在する場合(S160:YES)、MP13は、S60の処理を行う。
図29は、本実施例における、電源が復旧した時の、MP13によるバックアップデータの復旧処理のフローチャートを示す。なお、図13に示した退避先選択処理と同一の処理については同一の番号を付して説明を省略し、異なる処理についてのみ説明する。
MP13は、S70において、NVRAM15に、バックアップデータテーブル60、退避先データテーブル70、又は退避先リストが格納されているか否かを判定する。NVRAM15に復旧データが存在すると判定された場合(S70:YES)、MP13は、NVRAM15に退避先テーブルが存在するか否かを判定する(S170)。NVRAM15に退避先テーブルが存在する場合、MP13は、S71〜S73の処理を実行する。すなわち、NVRAM15に退避先テーブルが存在する場合は、全ユーザーデータまたはダーティデータを退避させた場合である。
一方、NVRAM15に退避先テーブルが存在しない場合、MP13は、主記憶メモリ管理テーブル40およびNVRAM管理テーブル50を主記憶メモリ14に転送し、それらの管理テーブル49、50を主記憶メモリ14上に再構成する(S171)。すなわち、データ転送処理においてNVRAM15に退避させたデータを、復旧処理において主記憶メモリ14に戻さない。これにより、復旧処理にかかる時間を短縮することができ、ホストコンピュータ2は、電源復旧後直ちにNVRAM15のユーザーデータにアクセスすることができる。
なお、上記実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。ある実施例の構成の一部を、他の実施例の構成に置き換えることができる。ある実施例の構成に他の実施例の構成を加えることもできる。各実施例の構成の一部について、他の構成の追加、削除、置換が可能である。例えば、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよい。あるいは、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
1:ストレージ装置、2:ホストコンピュータ、6:記憶ドライブ、4:ドライブ筐体、3:ストレージコントローラ、14:主記憶メモリ、15:NVRAM、16:バッテリ、60:バックアップデータテーブル、70:退避先データテーブル

Claims (13)

  1. 記憶デバイスと、
    ホストコンピュータからデータを受信し、受信したデータを前記記憶デバイスに格納するストレージコントローラと
    を備えるストレージシステムであって、
    前記ストレージコントローラは、プロセッサと、前記プロセッサに接続され前記データを一時的に格納する揮発性の第1のキャッシュメモリと、前記マイクロプロセッサに接続され前記データを一時的に格納する不揮発性の第2のキャッシュメモリと、電断が起こった場合に少なくとも前記プロセッサおよび前記第1のキャッシュメモリに電力を供給するバッテリと、を備え、
    前記第2のキャッシュメモリは、前記記憶デバイスに格納されていないデータであるダーティデータを格納するダーティデータ領域と、前記ダーティデータ領域以外の残りの領域とを含み、
    前記プロセッサは、電断が起こった場合、前記第1のキャッシュメモリに格納されている全部または一部のデータを対象データとして、前記第2のキャッシュメモリの前記残りの領域に格納する
    ストレージシステム。
  2. 前記第2のキャッシュメモリの前記残りの領域は、前記記憶デバイスに格納されているデータであるクリーンデータを格納するクリーンデータ領域と、データが格納されていない空き領域とを含み、
    前記プロセッサは、電断が起こった場合、前記第1のキャッシュメモリの容量と、前記第2のキャッシュメモリの前記クリーンデータ領域および前記空き領域の合計容量とを比較し、
    前記第1のキャッシュメモリの容量が前記合計容量以下の場合は、前記対象データは、前記第1のキャッシュメモリに格納されている全てのデータであり、
    前記第1のキャッシュメモリの容量が前記合計容量より大きい場合は、前記対象データは、前記第1のキャッシュメモリに格納されているデータのうちのダーティデータのみである、
    請求項1に記載のストレージシステム。
  3. 前記プロセッサは、電断が起こった場合、
    前記対象データが前記第1のキャッシュメモリのどこに格納されているのかを示す対象データテーブルと、前記対象データを前記第2のキャッシュメモリのどこに格納するのかを示す退避先データテーブルとを前記第1のキャッシュメモリ上に作成し、
    前記対象データテーブルおよび前記退避先データテーブルを前記対象データとともに前記第2のキャッシュメモリの前記残りの領域に格納する
    請求項1に記載のストレージシステム。
  4. 前記第2のキャッシュメモリの前記残りの領域は、前記記憶デバイスに格納されているデータであるクリーンデータを格納するクリーンデータ領域と、データが格納されていない空き領域とを含み、
    前記プロセッサは、前記クリーンデータ領域および前記空き領域のうち、前記空き領域に優先的に前記対象データの格納先にする
    請求項1に記載のストレージシステム。
  5. 前記クリーンデータ領域は、複数の領域を有し、
    前記プロセッサは、前記複数の領域のうち大きいサイズ領域から順に前記対象データの格納先にする
    請求項4に記載のストレージシステム。
  6. 前記ストレージコントローラは、
    前記第1のキャッシュメモリの容量と第2のキャッシュメモリの容量とを比較し、
    前記第1のキャッシュメモリの容量が前記第2のキャッシュメモリの容量よりも小さい場合、前記第1のキャッシュメモリの容量と第2のキャッシュメモリの容量との差分を、前記第2のキャッシュメモリで保持できるダーティデータの最大容量に設定し、
    前記第1のキャッシュメモリの容量が前記第2のキャッシュメモリの容量以上である場合、前記第1のキャッシュメモリで保持できるダーティデータの最大容量と前記第2のキャッシュメモリの容量とを比較し、
    前記第2のキャッシュメモリの容量が前記第1のキャッシュメモリで保持できるダーティデータの最大容量より小さい場合、前記第1のキャッシュメモリで保持できるダーティデータの最大容量を前記第2のキャッシュメモリの容量と等しくし、前記第2のキャッシュメモリが保持できるダーティデータの最大容量を0にし、
    前記第2のキャッシュメモリの容量が前記第1のキャッシュメモリで保持できるダーティデータの最大容量以上である場合、前記第2のキャッシュメモリの容量と前記第1のキャッシュメモリで保持できるダーティデータの最大容量との差分を、前記第2のキャッシュメモリで保持できるダーティデータの最大容量に設定する
    請求項1乃至請求項5のいずれか一項に記載のストレージシステム。
  7. 前記ストレージコントローラは、前記プロセッサに接続される不揮発性媒体を更に備え、
    前記プロセッサは、電断が起こった場合、前記対象データを、前記第2のキャッシュメモリの前記残りの領域および前記不揮発性媒体に分けて格納する
    請求項1に記載のストレージシステム。
  8. 前記プロセッサは、前記第1のキャッシュメモリから前記第2のキャッシュメモリへの単位時間当たりのデータ転送量である第1の転送スループット、および、前記第1のキャッシュメモリから前記不揮発性媒体への単位時間当たりのデータ転送量である第2の転送スループットを算出し、
    前記プロセッサは、前記第1の転送スループットおよび前記第2の転送スループットに基づき、前記第2のキャッシュメモリの前記残りの領域に格納する第1のデータ量および前記不揮発性媒体に格納する第2のデータ量を決定する
    請求項7に記載のストレージシステム。
  9. 前記対象データは、前記第2のキャッシュメモリにおいて、複数のセグメントに分けて格納され、
    前記プロセッサは、電断発生後、電断が解消された場合に、ダーティデータを含む前記格納領域に対してパリティが生成されているか否かを前記セグメント毎に判断し、
    前記プロセッサは、前記パリティが生成されていない前記セグメントに格納された前記対象データに対するダーティデータの割合に応じて、前記パリティが生成されていない前記セグメントに格納された前記対象データを、前記第1のキャッシュメモリに転送し、又は、前記記憶デバイスに記憶する
    請求項1乃至請求項8のいずれか一項に記載のストレージシステム。
  10. 前記プロセッサは、前記パリティが生成されている前記セグメントに格納された前記対象データを、前記セグメントから前記記憶デバイスに格納する
    請求項9に記載のストレージシステム。
  11. 前記プロセッサは、前記パリティが生成されていない前記セグメントに格納された前記対象データを、前記記憶デバイスに記憶する時に、記憶する前記対象データに対しパリティを生成する
    請求項9または請求項10に記載のストレージシステム。
  12. 前記第2のキャッシュメモリの前記残りの領域は、前記記憶デバイスに既に格納されたクリーンデータを格納する複数のクリーンデータ領域を含み、
    前記プロセッサは、各クリーンデータ領域に格納されたデータへのアクセスの頻度に応じて、各クリーンデータ領域を順位付けし、アクセスの頻度が低い前記クリーンデータ領域から順に前記対象データを格納する
    請求項1に記載のストレージシステム。
  13. 電断が起こった場合にバッテリからの電力で動作するストレージシステムの制御方法であって、
    ホストコンピュータからデータを受信する都度に、受信したデータを、一時的に格納する揮発性の第1のキャッシュメモリと、データを一時的に格納する不揮発性の第2のキャッシュメモリとのいずれかに格納し、
    前記第1又は第2のキャッシュメモリに格納されているデータを記憶デバイスに格納し、
    電断が起こった場合、前記第1のキャッシュメモリに格納されている全部または一部の前記データを対象データとして、前記第2のキャッシュメモリのダーティデータ領域と残りの領域のうち前記残りの領域に格納し、
    前記ダーティデータ領域は、前記記憶デバイスに格納されていないデータであるダーティデータを格納する領域であり、
    前記残りの領域は、前記第2のキャッシュメモリのうちの前記ダーティデータ領域以外の領域である、
    ストレージシステムの制御方法。
JP2015554332A 2013-12-24 2013-12-24 不揮発性キャッシュメモリにデータをバックアップするストレージシステム Active JP6097845B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/084502 WO2015097751A1 (ja) 2013-12-24 2013-12-24 不揮発性キャッシュメモリにデータをバックアップするストレージシステム

Publications (2)

Publication Number Publication Date
JP6097845B2 true JP6097845B2 (ja) 2017-03-15
JPWO2015097751A1 JPWO2015097751A1 (ja) 2017-03-23

Family

ID=53477694

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015554332A Active JP6097845B2 (ja) 2013-12-24 2013-12-24 不揮発性キャッシュメモリにデータをバックアップするストレージシステム

Country Status (3)

Country Link
US (1) US9696922B2 (ja)
JP (1) JP6097845B2 (ja)
WO (1) WO2015097751A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6030085B2 (ja) * 2014-03-20 2016-11-24 株式会社東芝 キャッシュメモリおよびプロセッサシステム
JP6517549B2 (ja) * 2015-03-13 2019-05-22 東芝メモリ株式会社 メモリコントローラ、記憶装置、データ転送システム、データ転送方法、及びデータ転送プログラム
US10491667B1 (en) * 2015-03-16 2019-11-26 Amazon Technologies, Inc. Customized memory modules in multi-tenant service provider systems
US20160350231A1 (en) * 2015-06-01 2016-12-01 Kabushiki Kaisha Toshiba Magnetic disk device and method for executing synchronize command
JP6625735B2 (ja) 2016-04-19 2019-12-25 株式会社日立製作所 計算機システム及び不揮発性メモリの冗長化方法
JP6954587B2 (ja) * 2017-03-23 2021-10-27 Necプラットフォームズ株式会社 ストレージシステム、ストレージシステムの制御方法及びプログラム
KR20200008273A (ko) * 2018-07-16 2020-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10620868B1 (en) 2019-03-22 2020-04-14 Hitachi, Ltd. Storage system and data transfer method
JP6898393B2 (ja) 2019-03-22 2021-07-07 株式会社日立製作所 ストレージシステム及びデータ転送方法
US10860491B2 (en) 2019-05-03 2020-12-08 Mediate Inc. Cache management method using object-oriented manner and associated microcontroller
JP7446963B2 (ja) * 2020-09-23 2024-03-11 キオクシア株式会社 メモリシステム及びメモリシステムの制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008108026A (ja) * 2006-10-25 2008-05-08 Hitachi Ltd 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
JP2009075759A (ja) * 2007-09-19 2009-04-09 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993018461A1 (en) * 1992-03-09 1993-09-16 Auspex Systems, Inc. High-performance non-volatile ram protected write cache accelerator system
US6557077B1 (en) * 2000-07-07 2003-04-29 Lsi Logic Corporation Transportable memory apparatus and associated methods of initializing a computer system having the same
WO2014102886A1 (en) 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008108026A (ja) * 2006-10-25 2008-05-08 Hitachi Ltd 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム
JP2009075759A (ja) * 2007-09-19 2009-04-09 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法

Also Published As

Publication number Publication date
JPWO2015097751A1 (ja) 2017-03-23
US9696922B2 (en) 2017-07-04
WO2015097751A1 (ja) 2015-07-02
US20150317093A1 (en) 2015-11-05

Similar Documents

Publication Publication Date Title
JP6097845B2 (ja) 不揮発性キャッシュメモリにデータをバックアップするストレージシステム
JP4890160B2 (ja) ストレージシステム及びバックアップ/リカバリ方法
JP2008015769A (ja) ストレージシステム及び書き込み分散方法
JP5008845B2 (ja) ストレージシステムとストレージ装置及びその制御方法
US10459639B2 (en) Storage unit and storage system that suppress performance degradation of the storage unit
JP4933861B2 (ja) ストレージ制御装置、データ管理システムおよびデータ管理方法
JP4901316B2 (ja) ストレージシステム及び記憶制御装置
JP4975396B2 (ja) 記憶制御装置及び記憶制御方法
JP2007156597A (ja) ストレージ装置
US20140075240A1 (en) Storage apparatus, computer product, and storage control method
WO2015015550A1 (ja) 計算機システム及び制御方法
US7984260B2 (en) Storage system provided with a plurality of controller modules
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
JP7208000B2 (ja) 情報処理装置及び情報処理装置の制御方法
JP2011209973A (ja) ディスクアレイ構成プログラム、計算機、計算機システム
US11740823B2 (en) Storage system and storage control method
JP6094677B2 (ja) 情報処理装置、メモリダンプ方法、およびメモリダンププログラム
JP2019074897A (ja) ストレージ制御装置、及びプログラム
WO2015011825A1 (ja) ストレージシステムおよびストレージシステムの制御方法
US20220365692A1 (en) Techniques for storage management
JP2010049637A (ja) 計算機システム、ストレージシステム及び構成管理方法
JP5712535B2 (ja) ストレージ装置、制御部およびストレージ装置制御方法
JP4245021B2 (ja) ストレージ装置、ストレージシステム、ストレージ装置の制御方法
JPWO2018142622A1 (ja) 計算機
JP5829753B2 (ja) ストレージシステムおよび記憶制御方法

Legal Events

Date Code Title Description
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: 20170207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170220

R150 Certificate of patent or registration of utility model

Ref document number: 6097845

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111