JP6009095B2 - ストレージシステム及び記憶制御方法 - Google Patents
ストレージシステム及び記憶制御方法 Download PDFInfo
- Publication number
- JP6009095B2 JP6009095B2 JP2015541367A JP2015541367A JP6009095B2 JP 6009095 B2 JP6009095 B2 JP 6009095B2 JP 2015541367 A JP2015541367 A JP 2015541367A JP 2015541367 A JP2015541367 A JP 2015541367A JP 6009095 B2 JP6009095 B2 JP 6009095B2
- Authority
- JP
- Japan
- Prior art keywords
- area
- data
- cache
- write
- controller
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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 where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2097—Error 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 maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、ホストからのライトデータをストレージシステムのキャッシュ領域に書き込む技術に関する。
ホストコンピュータからライト要求を受信し、そのライト要求に付随するライトデータをキャッシュメモリ領域(以下、キャッシュ領域)に格納したときに、ホストコンピュータにライト終了を報告するストレージシステムが知られている。また、キャッシュ領域に格納したライトデータを、多重化(一般的に、2重化)することで、電源喪失等の障害に対するライトデータの保護を向上するストレージシステムも知られている。
特許文献1では、ホストコンピュータからのライトデータを2重化する際、キャッシュ領域を有する複数のコントローラ間の排他制御を無くすことで、性能を低下させることなくデータ保護を実現している。
特許文献2では、ユーザデータをパリティ等の冗長データを付与して格納するストレージシステムにおいて、ホストコンピュータからの更新データ(ライトデータ)を、更新前のデータ(旧データ)とは別のキャッシュ領域に格納することで、冗長データ生成時に記憶装置へのアクセスを低減し、ストレージシステムの処理効率を改善している。
ホストコンピュータからのライトデータをストレージシステムのキャッシュ領域に格納するデータ転送形態として、下記方式(A)及び(B)がある。
(A)ストレージシステムのFE−I/F(フロントエンドの通信インタフェースデバイス)が有するバッファ領域にホストコンピュータからのライトデータを一時的に格納し、格納したライトデータが一定のデータ量になった場合に、ライトデータをまとめてキャッシュ領域に転送する。
(B)FE−I/Fが有するバッファ領域を介さずに、ストレージシステムのキャッシュ領域にホストコンピュータからのライトデータを格納する。
(A)ストレージシステムのFE−I/F(フロントエンドの通信インタフェースデバイス)が有するバッファ領域にホストコンピュータからのライトデータを一時的に格納し、格納したライトデータが一定のデータ量になった場合に、ライトデータをまとめてキャッシュ領域に転送する。
(B)FE−I/Fが有するバッファ領域を介さずに、ストレージシステムのキャッシュ領域にホストコンピュータからのライトデータを格納する。
一般に、ミッドレンジクラスの一部及びハイエンドクラスのストレージシステムでは、ライトデータを纏めて転送することでストレージシステム内部のデータ転送パスの転送効率の低下を低減するため、方式(A)を用いることが多い。ミッドレンジクラスのストレージシステムでは、高機能の獲得や開発容易化を目的に、ハイエンドクラスのストレージシステムからマイクロプログラムを流用する一方、低コスト化を目的にハードウェアは簡素化、サーバ等との共通化が進んでいる。その一環として、従来は物理的に分離されていた、ユーザデータを格納するキャッシュ領域とデータ転送に使用されるバッファ領域を、プロセッサに直接接続されたメモリに集約している。
このようなメモリを有するハードウェア構成において、ホストコンピュータとストレージシステム間のデータ転送を、バッファ領域を介する方式(A)により実行する場合、集約されたメモリにおけるデータ入出力量が増大し、性能低下を生じることがある。よって、ホストコンピュータとストレージシステム間のデータ転送は、バッファ領域を介さない方式(B)により実行することが望ましいと考えられる。
一方、ホストコンピュータからのライトデータを受信中に、ホストコンピュータとストレージシステム間の障害等により、ホストコンピュータからのライトデータの転送が中断することがある。この場合、ストレージシステムは、ホストコンピュータからのライト要求に対しエラーを応答し、ホストコンピュータによるライト要求のリトライを期待するが、ホストコンピュータとストレージシステム間の障害要因がパスの断線等であった場合、ホストコンピュータからのライト要求のリトライは困難となる。
この時、バッファ領域を介する方式(A)の場合、ライトデータの転送が中断しても、当該バッファ領域のデータを破棄すればよい。しかし、バッファ領域を介さない方式(B)の場合、ストレージシステムのキャッシュ領域には、転送が中断したライトデータの一部と、ライトデータが書き込まれる前のデータが混在する可能性がある。
よって、方式(B)において、ホストコンピュータからのライトデータを受信中に、ホストコンピュータからのライト要求のリトライが困難な障害要因により、ライトデータの転送が中断した場合においても、ストレージシステムのキャッシュ領域に格納されているユーザデータを正しく維持することが課題である。
ストレージシステムが、1以上の記憶デバイスで構成された記憶デバイス群と、記憶デバイス群及びホストコンピュータに接続され第1バッファ領域及び第1キャッシュ領域を有する第1コントローラと、記憶デバイス群及びホストコンピュータに接続され第2バッファ領域及び第2キャッシュ領域を有する第2コントローラとを有する。第1コントローラは、ホストコンピュータからライト要求を受信し、ライト要求に従うライトデータを、第1バッファ領域を介さずに第1キャッシュ領域に格納し、第1キャッシュ領域に格納されたライトデータを、第2キャッシュ領域に第2バッファ領域を介さずに格納するために第2コントローラに転送し、第1キャッシュ領域内のライトデータを記憶デバイス群に書き込むようになっている。第1コントローラは、第1キャッシュサブ領域の状態が、第1キャッシュサブ領域への第1ライトデータの格納に成功した場合にクリアされる第1中断状態か否かを管理し、第1又は第2コントローラは、第2キャッシュサブ領域の状態が、第1キャッシュサブ領域から第2キャッシュサブ領域へのライトデータの転送に成功した場合にクリアされる第2中断状態か否かを管理する。第1コントローラは、中断状態回復処理を行う。中断回復処理は、第1キャッシュサブ領域が第1中断状態であり第2キャッシュサブ領域が第2中断状態であるか否かを判断することを含む。また、中断回復処理は、第1キャッシュサブ領域が第1中断状態であり第2キャッシュサブ領域が第2中断状態である場合、第1キャッシュサブ領域をコピー先として設定し、第2キャッシュサブ領域をコピー元として設定し、コピー元からコピー先にデータをコピーし、且つ、第1及び第2キャッシュサブ領域にそれぞれ対応する第1及び第2中断状態をクリアすることを含む。また、中断回復処理は、第1キャッシュサブ領域が第1中断状態でなく第2キャッシュサブ領域が第2中断状態である場合、第2キャッシュサブ領域をコピー先として設定し、第1キャッシュサブ領域をコピー元として設定し、コピー元からコピー先にデータをコピーし、第2キャッシュサブ領域に対応する第2中断状態をクリアすることを含む。
ホストコンピュータからのライトデータをバッファ領域を介さずキャッシュ領域に転送する方式において、ホストコンピュータからのライトデータを受信中にそのライトデータの転送が中断した場合でも、キャッシュ領域に格納されているユーザデータを正しく維持することができる。
以下、実施例を説明する。
以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、制御デバイスが有するプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェイスデバイス(例えば通信ポート)を用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有するコントローラ又は装置(例えばストレージシステム)とされてもよい。プロセッサが行う処理の一部又は全部が、コントローラが有するハードウェア回路で行われてもよい。コンピュータプログラムは、プログラムソースから制御デバイスにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
また、以下の説明では、同種の要素を区別して説明する場合は、その要素の参照符号に代えて、その要素に割り振られた識別子(例えば番号)を使用することがある。例えば、コントローラを特に区別しないで説明する場合には、コントローラ22と記載し、個々のコントローラを区別して説明する場合には、コントローラ#0及び#1のように記載することがある。
また、以下の説明では、種々の対象(例えば、VOL)の識別情報として、番号或いは名称等が使用されるが、それらは互いに置換可能であってもよいし、或いは、他種の識別情報が使用されてもよい。
また、以下の説明における用語の意味は、下記の通りである。
(*)「VOL」は、論理ボリュームの略であり、論理的な記憶デバイスである。VOLは、実体的なVOL(RVOL)であってもよいし、仮想的なVOL(VVOL)であってもよい。また、VOLは、そのVOLを提供するストレージシステムに接続されている外部の装置(例えばホストコンピュータ)に提供されるオンラインVOLと、外部の装置には提供されない(外部の装置からは認識されない)オフラインVOLとがあってよい。
(*)「RVOL」は、そのRVOLを有するストレージシステムが有する物理的な記憶資源(例えば、複数のPDEVで構成されたRAID(Redundant Array of Independent (or Inexpensive) Disks)グループ)に基づくVOLである。
(*)「RG」は、RAIDグループの略である。
(*)「VVOL」としては、例えば、そのVVOLを有するストレージシステムに接続されている外部のストレージシステムの記憶資源(例えばVOL)に基づいておりストレージ仮想化技術に従うVOLである外部接続VOL(EVOL)と、複数の仮想ページ(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOL(TPVOL)と、オリジナルのVOLのスナップショットとして提供されるスナップショットVOLとがあってよい。TPVOLは、典型的にはオンラインVOLである。スナップショットVOLは、RVOLであってもよい。
(*)「PDEV」は、不揮発性の物理的な記憶デバイスの略である。複数のPDEVで複数のRAIDグループが構成されてよい。RAIDグループはパリティグループと呼ばれてもよい。
(*)「プール」は、論理的な記憶領域(例えば複数のプールVOLの集合)であり、用途ごとに用意されてよい。例えば、プールとして、TPプールと、スナップショットプールとがあってよい。TPプールは、複数の実ページ(実体的な記憶領域)で構成された記憶領域である。TPプールからTPVOLの仮想ページに実ページが割り当てられてよい。スナップショットプールは、オリジナルのVOLから退避されたデータが格納される記憶領域でよい。プール(典型的にはTPプール)は、性能(例えばI/O性能)の異なる複数のティアを有してよい。各ティアは、I/O性能が同程度の1又は複数のプールVOLで構成されてよい。
(*)「プールVOL」は、プールの構成要素となるVOLである。プールVOLは、RVOLであってもよいしEVOLであってもよい。プールVOLは、典型的にはオフラインVOLである。
(*)バッファ領域は、複数のバッファサブ領域で構成されている。バッファ領域からバッファサブ領域単位で領域が確保される。以下、バッファサブ領域を「BS領域」と記載する。
(*)キャッシュ領域(キャッシュメモリ領域)は、複数のキャッシュサブ領域で構成されている。キャッシュ領域からキャッシュサブ領域単位で領域が確保される。以下、キャッシュサブ領域を「CS領域」と記載する。
(*)「VOL」は、論理ボリュームの略であり、論理的な記憶デバイスである。VOLは、実体的なVOL(RVOL)であってもよいし、仮想的なVOL(VVOL)であってもよい。また、VOLは、そのVOLを提供するストレージシステムに接続されている外部の装置(例えばホストコンピュータ)に提供されるオンラインVOLと、外部の装置には提供されない(外部の装置からは認識されない)オフラインVOLとがあってよい。
(*)「RVOL」は、そのRVOLを有するストレージシステムが有する物理的な記憶資源(例えば、複数のPDEVで構成されたRAID(Redundant Array of Independent (or Inexpensive) Disks)グループ)に基づくVOLである。
(*)「RG」は、RAIDグループの略である。
(*)「VVOL」としては、例えば、そのVVOLを有するストレージシステムに接続されている外部のストレージシステムの記憶資源(例えばVOL)に基づいておりストレージ仮想化技術に従うVOLである外部接続VOL(EVOL)と、複数の仮想ページ(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOL(TPVOL)と、オリジナルのVOLのスナップショットとして提供されるスナップショットVOLとがあってよい。TPVOLは、典型的にはオンラインVOLである。スナップショットVOLは、RVOLであってもよい。
(*)「PDEV」は、不揮発性の物理的な記憶デバイスの略である。複数のPDEVで複数のRAIDグループが構成されてよい。RAIDグループはパリティグループと呼ばれてもよい。
(*)「プール」は、論理的な記憶領域(例えば複数のプールVOLの集合)であり、用途ごとに用意されてよい。例えば、プールとして、TPプールと、スナップショットプールとがあってよい。TPプールは、複数の実ページ(実体的な記憶領域)で構成された記憶領域である。TPプールからTPVOLの仮想ページに実ページが割り当てられてよい。スナップショットプールは、オリジナルのVOLから退避されたデータが格納される記憶領域でよい。プール(典型的にはTPプール)は、性能(例えばI/O性能)の異なる複数のティアを有してよい。各ティアは、I/O性能が同程度の1又は複数のプールVOLで構成されてよい。
(*)「プールVOL」は、プールの構成要素となるVOLである。プールVOLは、RVOLであってもよいしEVOLであってもよい。プールVOLは、典型的にはオフラインVOLである。
(*)バッファ領域は、複数のバッファサブ領域で構成されている。バッファ領域からバッファサブ領域単位で領域が確保される。以下、バッファサブ領域を「BS領域」と記載する。
(*)キャッシュ領域(キャッシュメモリ領域)は、複数のキャッシュサブ領域で構成されている。キャッシュ領域からキャッシュサブ領域単位で領域が確保される。以下、キャッシュサブ領域を「CS領域」と記載する。
さて、まず、実施例の概要を説明する。
図1は、実施例の概要を示す。
ホストコンピュータ1(#0、#1)が、通信ネットワーク11を介して、ストレージシステム2に接続されている。ストレージシステム2には、データの冗長性を確保するため、冗長化されたコントローラ22(二重化されたコントローラ#0及び#1)存在している。コントローラ#0、#1同士は、相互に接続されている。
各コントローラ22(#0、#1)は、FE−I/F210(#0、#1)、CPU230(#0、#1)、及びメモリ240(#0、#1)を有する。メモリ240には、バッファ領域242(#0、#1)、及びキャッシュ領域244(#0、#1)がある。バッファ領域242は、キャッシュ領域244に入出力されるデータが一時格納される記憶領域である。バッファ領域242から読み出されたデータはバッファ領域242から削除されるようになっている。一方、キャッシュ領域244は、PDEV(RG)に入出力されるデータが一時格納される記憶領域である。キャッシュ領域244からデータが読み出されたからといって、バッファ領域242と違い、読み出されたデータが必ずしもキャッシュ領域244から削除されない。バッファ領域242とキャッシュ領域244は異なるメモリに分散していてもよいが、本実施例では、メモリ240にバッファ領域242及びキャッシュ領域244が集約されている。キャッシュ領域244には、PDEV(RG)から読み出されたデータが書き込まれる領域としてリード面41(41a)が確保されたり、PDEV(RG)に書き込まれるデータが書き込まれる領域としてライト面42(42a、42b)が確保されたりすることがある。本実施例の説明において、特段の説明が無い場合、リード面もライト面もキャッシュ領域244に存在する領域(典型的にはCS領域)である。
また、以下の説明では、下記の様な前提条件があるとする。
(1)コントローラ#0のキャッシュ領域#0に格納されたデータ(後述のデータA)が、コントローラ#1のキャッシュ領域#1にコピーされている。
(2)FE−I/F210には、ライト時及びリード時に積極的に利用できるバッファ領域がない。そのため、ホストコンピュータ1から送信されるライトデータは、FE−I/F210を介してメモリ244のキャッシュ領域244に送信される。その際、そのメモリ244におけるバッファ領域242には、ライトデータは格納されない。
(1)コントローラ#0のキャッシュ領域#0に格納されたデータ(後述のデータA)が、コントローラ#1のキャッシュ領域#1にコピーされている。
(2)FE−I/F210には、ライト時及びリード時に積極的に利用できるバッファ領域がない。そのため、ホストコンピュータ1から送信されるライトデータは、FE−I/F210を介してメモリ244のキャッシュ領域244に送信される。その際、そのメモリ244におけるバッファ領域242には、ライトデータは格納されない。
以下の説明において、バッファ領域を介さずにキャッシュ領域244にライトデータが転送されることを「ライト直転送」と言う。以下、ライト直転送実行時にストレージシステム2がホストコンピュータ1からリード要求又はライト要求を受信した場合に行われる処理を説明する。
ホストコンピュータ#0からライト要求をコントローラ#0が受信した場合、CPU#0は、キャッシュ領域#0からライトデータの格納領域(ライト面42a)を確保し、また、コントローラ#1を介して、キャッシュ領域#1から、ライト面42aに格納したデータのコピー先である格納領域(ライト面42b)を確保する。
その後、コントローラ#0のCPU#0は、FE−I/F#0を介してライト面42aにライトデータを格納する。
ライト要求を受信した場合、ライト面42aに、既に別のライト要求(例えば、同じ領域(例えばVOLにおける領域)を指定した過去のライト要求)によるライトデータ(以下、データA)が存在しており、データAが、(パリティ未生成の)ダーティデータである場合がある。ダーティデータとは、記憶デバイスにデステージされていないデータ(記憶デバイスに存在しないデータ)である。
ホストコンピュータ#0から新たなライトデータ(データB)をコントローラ#0が受信している最中に、ネットワーク11等のパスに障害が発生すると、FE−I/F#0が、ライト面42aにおけるダーティデータ(データA)を破壊してしまう(1−1)。つまり、データBによって上書きされるデータAが、データAの一部分だけがデータBの一部分によって上書きされた別のデータ(以下、データC)となってしまう。データAに関するパリティは未生成なので、データAを復元することはできない。
データBによりダーティデータAが破壊された状態で、データAのライト先領域をリード元領域としたリード要求をホストコンピュータ#1よりコントローラ#1が受信すると、コントローラ#1のCPU#1は、ライト面42bからバッファ領域#1にダーティデータAをリードしリード面41aのクリーンデータAと統合してバッファ領域#1から、データAをホストコンピュータ#1へ転送する(1―2)。なお、リード要求されたアドレス範囲のデータ全てがライト面42bに存在する場合は、ライト面42bから直接ホスト#1へ転送するリード直転送が行われる。
ネットワーク11等のパスに障害が回復した後に、ダーティデータ(データA)が破壊された状態で、ホストコンピュータ#0よりライト要求をコントローラ#0が受信すると、CPU#0は、ライト要求を実行する前に、コントローラ#1のライト面42bに格納されているデータA(破壊されていないダーティデータA)を用いて、ライト面42aのデータCをデータAに回復する(つまり、ライト面42aのデータCを、ライト面42bのデータAで上書きする)(1―3)。
この時、CPU#0が、CPU#1に、ライト面42bに格納されているデータAでデータCを上書きさせた後、CPU#0が、キャッシュ領域#0に格納されているデータAに対して、当該ライト要求を実行する。
以上の処理により、ライト直転送実行時においても、ホストコンピュータ1からのリード/ライト要求を、キャッシュ領域244に格納されているデータの状態に応じて、コントローラ22間でデータをやり取りすることにより、ホストコンピュータ1からのデータへのアクセスを維持することができる。
以上が、本実施例の概要である。以下、本実施例を詳細に説明する。
図2は、実施例に係る計算機システムの一例を示す。
計算機システムは、ホストコンピュータ1、管理端末12、保守端末23、及びストレージシステム2を有する。
ホストコンピュータ1、管理端末12、及び保守端末23が、ネットワーク11(例えば、SAN(Storage Area Network))を介し、ストレージシステム2のFE−I/F210に接続されている。
ストレージシステム2は、記憶制御装置21及び記憶デバイスユニット20を有する。記憶制御装置21は、コントローラ22を有する。コントローラ22は、通信インタフェースと、記憶デバイスと、それらに接続されたプロセッサとを有する。通信インタフェースとしては、例えば、FE−I/F(Front End Inter/Face)210、及びBE−I/F(Back End Inter/Face)220がある。記憶デバイスとしては、例えば、メモリ240がある。プロセッサとしては、例えば、CPU(Central Processing Unit)230がある。なお、図に示す例では、各コントローラ22が1つのメモリ240を備えている構成としているが、各コントローラ22が、メモリ240を複数備えている構成としてもよい。
記憶制御装置21は、冗長性を確保する目的で、コントローラ22を2台(コントローラ#0、#1)備えている。コントローラ#0及び#1は相互に接続されている。ストレージシステム2の可用性を向上させるため、コントローラ22毎に専用の電源を用意し、それぞれのコントローラ22に対して、その専用の電源を用いて給電してもよい。
FE−I/F210は、ホストコンピュータ1等のフロントエンドに存在する外部デバイスと通信するためのインタフェースデバイスである。BE−I/F220は、コントローラ22が記憶デバイスユニット20と通信するためのインタフェースデバイスである。
メモリ240は、プログラム領域241、バッファ領域242、管理テーブル領域243、及びキャッシュ領域244から構成されている。なお、両方のコントローラ22が有するメモリ240は、不揮発性メモリであっても、揮発性メモリであってもよいが、ダーティデータを格納するキャッシュ領域は、バックアップ電源等により不揮発化されていていよい。
プログラム領域241には、リードプログラム50、ライトプログラム51、データ転送中断状態回復プログラム52等の各種制御プログラムが格納される。
バッファ領域242は、後述のリード直転送及びライト直転送が行われない場合に、コントローラ22間でデータ転送をする際に使用される領域である。
管理テーブル領域243には、各種管理テーブルが格納される。管理テーブルとしては、バッファ領域管理テーブル30、VOL管理テーブル31、キャッシュディレクトリテーブル32、CS領域管理テーブル33、キャッシュ割当て管理テーブル34、及びキューヘッダ35がある。これらの管理テーブルの詳細は、後述する。なお、本実施例では、キャッシュ領域244は、複数のCS領域で構成されている。
キャッシュ領域244は、記憶デバイスユニット20からホストコンピュータ1へ送信されるリードデータや、ホストコンピュータ1から記憶デバイスユニット20へ送信されるライトデータをキャッシュする領域である。
CPU230は、メモリ240に格納されているプログラムを実行することで、各種機能を実現する。キャッシュ領域244には、記憶デバイスユニット20にライトされるデータ及び記憶デバイスユニット20からリードされたデータが一時的に格納される。
記憶デバイスユニット20は、複数のPDEV200を有する。PDEVは、HDD(Hard Disk Drive)でよいが、他種の記憶デバイス(不揮発性の記憶デバイス)、例えば、SSD(Solid State Device)のようなFM(Flash Memory)デバイスでもよい。記憶デバイスユニット20は、異なる種類のPDEVを有してよい。また、複数の同種のPDEVでRGが構成されてよい。RGには、所定のRAIDレベルに従いデータが格納される。以下、オンラインVOLに格納されるデータは最終的にはRGに格納されるとする。
コントローラ22がホストコンピュータ1からのライトデータを受信すると、FE−I/F210によって受信したライトデータに保証コードが付与される。保証コードが付与されたデータは、RGに格納される。リードデータ転送時には、CPU230により、リードデータに付与されている保証コードがチェックされる。保証コードは、データの格納位置を示す情報(VOL番号やVOL内のアドレス等)やデータの一貫性を確認する情報(CRC(Cyclic Redundancy Check)等)から構成されてもよい。
図3は、実施例に係るバッファ領域管理テーブルの一例を示す。
バッファ領域管理テーブル30は、BS領域の割当てを管理するためのテーブルである。バッファ領域管理テーブル30は、割当てサイズ301、CPU割当て情報302、割当てビットマップ303、及びBS領域アドレス304を有する。BS領域アドレス304は、BS領域毎に存在する。
割当てサイズ301は、BS領域のサイズを示す。
CPU割当て情報302は、バッファ領域242のどの範囲(どのBS領域)がどのCPU230によって使用されているかを示す。CPU割当て情報302は、バッファ領域242における領域範囲(1以上のBS領域アドレス)とCPU230との対応関係であってもよい。つまり、予め、BS領域毎に、使用されるCPU230が決められていてもよい。そのような対応関係が予め決められていることで、CPU230へのBS領域の割当て、或いはBS領域の解放に従う負荷(バッファ領域242への競合の負荷)を低減することが期待できる。また、本実施例では、バッファ領域242からBS領域を割り当てることは、通常、そのバッファ領域242を有するコントローラ22内のCPU230により行われるが、他のコントローラ22から転送されてくるデータの格納ためにバッファ領域242からBS領域を割り当てることについては、当該他のコントローラ22内のCPUにより行われる。つまり、本実施例では、CPU割当て情報302において、他のコントローラ22内のCPU230がBS領域に対応付けられている場合、そのBS領域は、コントローラ22間のデータ転送に使用されるBS領域であることがわかる。なお、本発明はこれに限定されず、例えば、バッファ領域242からBS領域を割り当てることは、そのバッファ領域242を有しない他のコントローラ内22のCPU230により行われてもよいし、他のコントローラ22から転送されてくるデータの格納ためにバッファ領域242からBS領域を割り当てることについては、そのバッファ領域242を有するコントローラ22内のCPU230により行われてもよい。
割当てビットマップ303は、複数のBS領域にそれぞれ対応した複数のビットで構成されている。各ビットは、そのビットに対応したBS領域が使用中(例えば「1」)か未使用状態(例えば「0」)であるかを示す。
BS領域アドレス304は、BS領域のバッファ領域242でのアドレスを示す。
図4は、実施例に係るVOL管理テーブルの一例を示す。
VOL管理テーブル31は、VOL毎に存在する。VOL管理テーブル31は、VOL番号311、容量312、状態313、ホストパス定義情報リスト314、VOL属性315、及び記憶領域情報316を有する。
VOL番号311は、VOLの識別番号である。容量312は、VOLの容量を示す。状態313は、VOLの状態を示す。VOLの状態には、例えば、正常、閉塞、及び未使用がある。
ホストパス定義情報リスト314は、リード/ライト要求元のホストコンピュータ1を特定するための情報(ホストコンピュータ1の名称、及びポート特定情報等)、及びリード/ライト要求先の当該VOLを特定するための情報(当該ストレージシステム2のポート特定情報やLUN(Logical Unit Number)等)を示す。
VOL属性315は、VOLの属性を示す。VOLの属性には、例えば、オンラインVOL、RVOL、TPVOL、EVOL及びプールVOL等がある。
記憶領域情報316は、VOL属性315に対応した情報を示す。例えば、VOL属性315がRVOLであれば、記憶領域情報316は、そのRVOLの基になっているRGに関する情報(RAIDレベル、PDEV数等)でよい。また、VOL属性315TPVOLであれば、記憶領域情報316は、TPVOLに割当てられたプールに関する情報や、仮想ページと実ページの対応関係でよい。
図5から図8にキャッシュ領域244を管理するためのテーブル群を示す。キャッシュ領域244を管理するテーブル群は、キャッシュディレクトリテーブル32、CS領域管理テーブル33、キャッシュ割当て管理テーブル34、及びキューヘッダ35を含む。
図5は、実施例に係るキャッシュディレクトリテーブル32の一例を示す。
キャッシュディレクトリテーブル32は、CPU24が、VOLにライトされる又はVOLからリードされたデータのキャッシュ領域244における格納状態を検索するために使用する。つまり、キャッシュディレクトリテーブル32は、CS領域管理テーブル33への索引である。
キャッシュディレクトリテーブル32は、複数のサブディレクトリエントリに分割されている。また、キャッシュ領域244は、複数のCS領域で構成されているが、1つのサブディレクトリエントリが、1つまたは複数のCS領域に関連付けられる。
ハッシュ情報321は、I/O先情報のハッシュ値と、ハッシュヘッダとの対応関係を示す情報である。I/O先情報は、ホストコンピュータ1からのI/O要求に含まれる情報であって、I/O先の領域を表す情報であり、典型的には、VOL番号とVOL内のアドレスとを含む。ハッシュヘッダの実体として、CS領域管理テーブル33のアドレスを示す先頭ポインタ322と終端ポインタ323がある。
つまり、キャッシュディレクトリテーブル32は、I/O先情報とCS領域との対応関係を管理し、I/O先についてCS領域が確保済か否かを検索することに使用される索引に相当する。キャッシュディレクトリテーブル32のI/O先情報のハッシュ値に対応する先頭ポインタ322を辿った先にI/O先に対応するCS領域管理テーブル33が見つからなかった場合、それは、CS領域が確保されていないことを意味する。一方、キャッシュディレクトリテーブル32のI/O先情報のハッシュ値に対応する先頭ポインタ322を辿った先にI/O先に対応するCS領域管理テーブル33が見つかった場合、それは、I/O先についてCS領域が既に確保済であり、I/O対象のデータをその確保済のCS領域に格納すればよいことを意味する。
なお、同一のハッシュヘッダに接続されるCS領域管理テーブル33の最大数を低減し検索時間の長大化を抑止するため、キャッシュディレクトリテーブル32のサイズは、ストレージシステム2がサポートする容量に応じて決定してもよい。
図6は、実施例に係るCS領域管理テーブル33の一例を示す。
CS領域管理テーブル33は、CS領域毎に存在し、そのCS領域の格納状態を管理する情報である。CS領域管理テーブル33は、データ状態331、エラー状態332、ディレクトリ前方ポインタ333、ディレクトリ後方ポインタ334、キュー前方ポインタ335、キュー後方ポインタ336、割当てアドレス337、リード面/ライト面フラグ338、及び転送制御情報339を有する。
データ状態331は、CS領域内のデータの状態を示す。データの状態としては、例えば、フリー、クリーン、パリティ未生成ダーティ、及びパリティ生成済みダーティがある。「フリー」とは、CS領域が空き領域であることを示す。「クリーン」とは、CS領域に格納されているデータが記憶デバイスユニット20に格納されている状態を示す。「パリティ未生成ダーティ」とは、CS領域に格納されているデータに関するパリティが生成されておらず、且つ、そのデータが記憶デバイスユニット20に格納されていない状態を示す。「パリティ生成ダーティ」とは、CS領域に格納されているデータに関するパリティは生成されているが、そのデータが記憶デバイスユニット20に格納されていない状態を示す。
エラー状態332は、ライトデータ受信時におけるデータ転送中断状態か否かを示す。あるI/O先に対応するCS領域について、各コントローラ内のCS領域管理テーブル33内では、エラー状態332がデータ転送中断状態を示す場合、その状態は、データ転送中断状態1及びデータ転送中断状態2の一方である。つまり、1つのコントローラ内のCS領域管理テーブル33内では、データ転送中断状態1及びデータ転送中断状態2の両方が同時に立つことはない。しかし、あるI/O先に対応するCS領域について、一方のコントローラ内のCS領域管理テーブル33内では、エラー状態332がデータ転送中断状態1であり、他方のコントローラ内のCS領域管理テーブル33内では、データ転送状態332がデータ転送中断状態2であることはある。「データ転送中断状態1」とは、ホストコンピュータ1からストレージシステム2に対するデータの転送が、完全に行われなかった状態を示す。「データ転送中断状態2」とは、一方のコントローラから他方のコントローラへのデータ転送が完全に行われなかった状態を示す。以下、データ転送中断状態を「中断状態」と略記する。
ディレクトリ前方ポインタ333及びディレクトリ後方ポインタ334は、対応するサブディレクトリエントリ、または、ハッシュ値が同じCS領域管理テーブル33を示す。具体的には、前方ポインタ333が、対応するサブディレクトリエントリ中の先頭ポインタ322、または、ハッシュ値が同じCS領域管理テーブル33に対応し、後方ポインタ334が、対応するサブディレクトリエントリ中の終端ポインタ323、または、ハッシュ値が同じCS領域管理テーブル33に対応している(図10参照)。
キュー前方ポインタ335及びキュー後方ポインタ336は、キューヘッダ35(クリーン、パリティ生成前ダーティ、パリティ生成後ダーティ、及びフリーの何れか)に接続するための情報である。キュー前方ポインタ335及びキュー後方ポインタ336については、後述する。
割当てアドレス337は、このアドレス337を有するCS領域管理テーブル33の接続先のキャッシュ割当て管理テーブル34のアドレスを表すポインタである。割当てアドレス337は、割当てアドレス1及び割当てアドレス2を有する。割当てアドレス1及び割当てアドレス2のうちの一方がライト面に対応し他方がリード面に対応する。
リード面/ライト面フラグ338は、割当てアドレス1と割当てアドレス2のどちらがリード面(クリーンデータ及びパリティ生成済みダーティデータを格納するCS領域)でありどちらがライト面(パリティ未生成ダーティデータを格納するCS領域)であるかを示す情報である。具体的には、フラグ338が立っていたら、割当てアドレス1にはリード面が対応しており、フラグ338が倒れていたら、割当てアドレス1にライト面が対応していることになる。
新データであるライトデータに対する新パリティを現パリティと現データから生成する場合に備え、現データに相当するクリーンデータ(記憶デバイスユニットに書込み済みのデータ)や、現データに相当するパリティ生成後ダーティデータ(記憶デバイスユニットに未書込みでパリティ生成後の(ダーティ状態の)ライトデータ)が、リード面に保持される。この様に、CS領域に格納されているデータの状態(クリーン又はダーティ)で、CS領域をライト面又はリード面として扱うことにより、CS領域を有効活用できる。
転送制御情報339は、データが書き込まれているライト範囲(キャッシュ領域244におけるアドレス範囲)及び、コントローラ22のホストコンピュータ1に対するデータ転送要求のリトライ回数を示す。
図7は、実施例に係るキャッシュ割当て管理テーブル34の一例を示す。
キャッシュ割当て管理テーブル34は、CS領域毎に存在する。キャッシュ割当て管理テーブル34は、キャッシュ領域244(CS領域)の割当てを管理するための情報である。
キャッシュ割当て管理テーブル34は、CS領域アドレス341、接続ポインタ342、ステージングブロックマップ343及びダーティブロックマップ344を有する。CS領域アドレス341は、CS領域のアドレスを示す。接続ポインタ342は、CS領域管理テーブル33、または、CS領域管理テーブル33へ複数のキャッシュ割当て管理テーブル34を割り当てる場合の、キャッシュ割当て管理テーブル34へのポインタである。ステージングブロックマップ343は、CS領域を構成する複数のサブ領域にそれぞれ対応した複数のビットを有し、クリーンデータが格納されている領域に対応したビットがON(1)である。ダーティブロックマップ344は、CS領域を構成する複数のサブ領域にそれぞれ対応した複数のビットを有し、ダーティデータが格納されている領域に対応したビットがON(1)である。1つのCS領域管理テーブル33のリード面或いはライト面のそれぞれに対し、異なるキャッシュ割当て管理テーブル34を接続ポインタで接続してもよい。
図8は、実施例に係るキューヘッダ35の一例を示す。
キューヘッダ35は、データ状態331毎に存在し、そのデータ状態に対応した管理テーブル(例えば、CS領域管理テーブル33或いはキャッシュ割当て管理テーブル34)のキューの先頭である。キューヘッダ35は、キュー属性351、エントリ数カウンタ352、先頭ポインタ353及び終端ポインタ354を有する。キュー属性351は、対応するデータ状態を示す。エントリ数カウンタ352は、接続されている管理テーブルの数を示す。先頭ポインタ353は、キューの先頭の管理テーブルのアドレスを示す。終端ポインタ354は、キューの末端の管理テーブルのアドレスを示す。
図9は、実施例に係るバッファ領域の管理の一例を示す。
バッファ領域管理テーブル30により、バッファ領域242における各BS領域の状態が管理される。例えば、CPU230は、BS領域アドレス304からBS領域を特定したり、割当てビットマップ303から、未使用状態のBS領域を特定したり、未使用状態のBS領域を割り当てたらそのBS領域に対応したビットの値をON(1)に変更したり、使用中のBS領域からデータが読み出されたらそのBS領域に対応したビットの値をOFF(0)に変更(BS領域を解放)したりすることができる。
図10は、実施例に係るキャッシュ領域244の管理の一例を示す。なお、図10において「ダーティ(前)」は、パリティ生成前ダーティを示し、「ダーティ(後)」は、パリティ生成後ダーティを示す。
CS領域管理テーブル33が、キャッシュディレクトリテーブル32中のサブディレクトリエントリに接続されている。1つのサブディレクトリエントリは、前述したように、I/O先情報のハッシュ値に対応している。
また、キューヘッダ35が、CS領域管理テーブル33及びキャッシュ割当て管理テーブル34の各々について存在する。また、特に、CS領域管理テーブル33については、複数のデータ状態にそれぞれ対応した複数のキューヘッダ35が存在する。以下、データ状態「AA」(例えばフリー)に対応したキューヘッダに接続されている管理テーブルのキューを「AAキュー」(例えばフリーキュー)と言うことがある。CS領域管理テーブル33は、その管理テーブル33が示すデータ状態に対応したキューヘッダ35に直接的に又は間接的に接続されている。間接的な接続は、例えば、1以上の他のCS領域管理テーブル33を隔てての接続である。上述のように、キューポンタには、キュー前方ポインタ335、及びキュー後方ポインタ336の2つのキューポインタがある。このように、2つのポインタを持つ理由は、CS領域管理テーブル33に格納されているデータのLRU(Least Recently Used)制御、すなわち、アクセスから時間が経ったデータを優先してキャッシュ上から破棄する制御を実現させるためである。具体的には、例えば、或るキューヘッダ35に対応したCS領域管理テーブル33(対象CS領域管理テーブル33)を先頭の位置に移動する場合、この対象CS領域管理テーブル33を途中から抜き取る必要がある。そして、対象CS領域管理テーブル33を途中から抜く動作の際に、キューの接続状態を維持するため、対象CS領域管理テーブル33の前方ポインタが指すCS領域管理テーブルと、後方ポインタが指すCS領域管理テーブルとを接続する必要があるためである。
CS領域管理テーブル33は、割当てアドレス1及び2の少なくとも一方を介してキャッシュ割当て管理テーブル34に接続される。なお、CS領域管理テーブル33中の割当てアドレス1及び2の各々に、キャッシュ割当て管理テーブル34が割り当てられることがある。例えば、CS領域管理テーブル33に対応しクリーン状態のデータを格納しているリード面に対してライトが発生し、そのリード面についてライト面を確保する場合がある。その場合、リード面に加えてライト面を1つのCS領域管理テーブル33に割り当てる必要があり、このような場合に、1つのCS領域管理テーブル33中の割当管理テーブルアドレス1及び2の両方が使用される。
クリーンデータは、一方のコントローラ22にのみ格納されるが、パリティ未生成ダーティデータ、及びパリティ生成済みダーティデータは、一方のコントローラのキャッシュ領域と他方のコントローラのキャッシュ領域に二重化される。なお、キャッシュ領域244が、揮発性領域と不揮発性領域とを有し、クリーンデータが揮発性領域に格納され、ダーティデータが不揮発性領域に格納されてもよい。
CPU230は、ホストコンピュータ1からのリード或いはライト要求受信時に、その要求が有するI/O先情報のハッシュ値に対応するキャッシュディレクトリテーブル32の先頭ポインタ322を辿った先にI/O先に対応するCS領域管理テーブル33が存在するか否かを判断する。その判断の結果が偽の場合、それは、そのI/O先についてCS領域が未確保であることを意味する。CS領域が未確保ならば、CPU230は、CS領域を確保する。具体的には、CPU230は、フリーキュー(CS領域管理テーブル群)から1つのCS領域管理テーブル33を取得し、取得した管理テーブル33をサブディレクトリエントリに接続し、且つ、フリーキュー(キャッシュ割当て管理テーブル群)から1つまたは複数のキャッシュ割当て管理テーブル34を取得し、その管理テーブル34を、上記取得したCS領域管理テーブル33に接続する。
受信した要求がリード要求の場合、CPU230は、CS領域をリード面として確保し、そのリード面に、I/O先情報に従うリード元となるRGからデータをステージングし、データ状態331をフリーからクリーンに変更し、対応するCS領域管理テーブル33を、クリーンキューに接続する(例えば、クリーンのキューヘッダ35に直接的に接続する)。
受信した要求がライト要求の場合、CPU230は、CS領域をライト面として確保し、ライト面にライトデータを格納し、データ状態331をフリーからパリティ未生成ダーティに変更し、対応するCS領域管理テーブル33を、パリティ未生成ダーティのキューヘッダ35に接続する。
ホストコンピュータ1からの要求とは非同期に、ストレージシステム2内でパリティ生成を実行した場合、CPU230は、リード面に、ライト面のダーティデータを統合して、ライト面のデータを破棄し、データ状態331をパリティ生成済ダーティに変更し、対応するCS領域管理テーブル33を、パリティ生成済みダーティキューに接続する。
パリティ生成済みダーティキューに接続されたCS領域管理テーブル33に対応したCS領域内のデータは、ホストコンピュータ1からの要求とは非同期に、ライト先のRGにデステージされる。なお、ホストコンピュータ1からのアクセスを契機に、同一属性のキュー内で、そのアクセスに対応するCS領域管理テーブル33が先頭へ遷移してよい。なぜなら、その管理テーブル33は、最近アクセスされたCS領域に対応した管理テーブル33だからである。
図11から図14にFE−I/F210のデータ転送形態の概要を示す。ホストコンピュータ1とキャッシュ領域244との間のデータ転送形態として、2段転送と直転送がある。2段転送は、バッファ領域242(BS領域)を介してデータを転送する転送形態である。直転送は、バッファ領域242(BS領域)を介さずデータを転送する転送形態である。2段転送として、ライト2段転送とリード2段転送がある。ライト2段転送は、ホストコンピュータ1からのライトデータをバッファ領域242(BS領域)を介してキャッシュ領域244(CS領域)に転送する2段転送である。リード2段転送は、キャッシュメモリ244内のリードデータをバッファ領域242(BS領域)を介してホストコンピュータ1に転送する2段転送である。一方、直転送として、ライト直転送とリード直転送がある。ライト直転送は、ホストコンピュータ1からのライトデータをバッファ領域242(BS領域)を介さずにキャッシュ領域244(CS領域)に転送する直転送である。リード直転送は、キャッシュ領域244(CS領域)内のリードデータをバッファ領域242(BS領域)を介さずにホストコンピュータ1に転送する直転送である。
図11は、リード直転送の一例を示す。図12は、リード2段転送の一例を示す。
図11に示すように、リード要求を受けたFE−I/F#0からリード直転送できるのは、FE−I/F#0が、リードデータがキャッシュ領域#0に存在する場合である。リード直転送では、キャッシュ領域#0に格納されているリードデータを、コントローラ#0のFE−I/F#0がホストコンピュータ1へ転送する。詳細には、FE−I/F#0が、リードデータに付随している保証コードをチェックし、リードデータにビットエラーが発生していなければ、CPU#0が、リードデータを、FE−I/F#0を介して(例えば、リードデータに付随している保証コードをチェックしつつ)、ホストコンピュータ1へ転送する(11―1)。その後、CPU#0は、リード要求完了報告を、FE−I/F#0を介して、ホストコンピュータ1に送信する(11―2)。なお、保証コードのチェックは、FE−I/F#0に代えてCPU#0が行ってもよい。
一方、図12に示すように、リード要求を受けたFE−I/F#0が受けたがリードデータがキャッシュ領域#1に格納されている場合、リード2段転送が行われる。リード2段転送では、CPU#0が、バッファ領域#0からBS領域を確保する。以下、バッファ領域#1から確保されたBS領域を「BS領域#1」と言い、バッファ領域#0から確保されたBS領域を「BS領域#0」と言う。確保したBS領域#0に、キャッシュ領域#1内のリード面41bのリードデータが転送される。この転送は、CPU#1によるリード面41bからBS領域#0へのライトであるが、CPU#0によるリード面41bからBS領域#0へのリードでもよい。CPU#0は、BS領域#0にリードデータを格納した後に(12―1)、FE−I/F#0が、格納したリードデータに付随している保証コードをチェックし、CPU#0が、FE−I/F#0を介して(例えば、リードデータに付随している保証コードをチェックしつつ)、リードデータをBS領域#0からホストコンピュータ1へ転送する(12―2)。その後、CPU#0は、リード要求完了報告をホストコンピュータ1に送信する(11―3)。
図示していないが、ライト面のデータが存在する場合(つまり、ホストコンピュータ1がライト要求を送信した後にリード要求を送信した場合)、リードデータは、ライト面のデータにリード面のデータを補ったものになる。別々のコントローラ22に存在するリード面とライト面からリードデータを転送する場合は、2段転送となる。
図13は、ライト2段転送の一例を示し、図14は、ライト直転送の一例を示す。
ライトデータ転送中断によるライト面のパリティ未生成ダーティデータ破壊を避けるため、一般に、ライトは常に2段転送で実行され、また、図示しないが、ストレージシステム2の内部機能(ローカルコピー、遠隔コピー等)においてライトデータを複製する場合等でも、2段転送で実行されてよい。
図13に示すように、ライト2段転送では、ホストコンピュータ1からのライトデータに対して、FE−I/F#0が、保証コードを付与し、保証コードを付与したライトデータを、BS領域#0(ライト2段転送のためにバッファ領域#0から確保されたBS領域)に格納する(13―1)。キャッシュ領域#0のライト面42aにパリティ未生成のダーティデータが格納されている場合、CPU#0が、保証コードを確認する(13―2)。なお、ライト要求受信時、ライト面42a及びライト面42bを新規に割当てる等、パリティ未生成のダーティデータを格納していない場合は、(13―2)の保証コードの確認が省略される。
ビットエラーが発生していなければ、CPU#0が、BS領域#0からキャッシュ領域#0のライト面42aにライトデータをコピーし(13―3)、更に、キャッシュ領域#1のライト面42bにライトデータをコピーする(13―4)。CPU#1は、ライト面42bに格納されたライトデータの保証コードを確認する(13―5)。ビットエラーが発生していなければ、CPU#1は、CPU#0及びFE−I/F#0を介して、ホストコンピュータ1にライト要求完了を報告する(13―6)。
一方、図14に示すように、ライト直転送では、ホストコンピュータ1からのライトデータをFE−I/F#0が保証コードを付与し、保証コードを付与したライトデータをキャッシュ領域#0のライト面42aに格納する(14―1)。ライト面42aにパリティ未生成のダーティデータを格納している場合は、CPU#0は、保証コードを確認する(14―2)。なお、ライト2段転送と同様、ライト要求受信時、ライト面42a、ライト面42bを新規に割当てる等、パリティ未生成のダーティデータを格納していない場合、(14−2)の保証コード確認が省略される。
ビットエラーが発生していなければ、CPU#0が、キャッシュ領域#0のライト面42aからキャッシュ領域#1のライト面42bにライトデータをコピーする(14―3)。CPU#1は、ライト面42bに格納されたライトデータの保証コードを確認する(14―4)。ビットエラーが発生していなければ、CPU#1は、FE−I/F#1を介して、ホストコンピュータ1にライト要求完了を報告する(14―5)。
図15は、実施例に係るライト転送方式の特徴比較の一例を示す。
データ状態について、次の通りである。すなわち、ライト要求受信時のキャッシュ領域244の状態が、キャッシュデータ無し、または、(キャッシュデータ有りで、かつ、(データ状態がクリーン、または、パリティ生成済みダーティ))のケースが、ケースXである。また、キャッシュデータ有りで、かつ、データ状態がパリティ未生成ダーティのケースが、ケースYである。
転送形態は、2段転送(保証コード確認有り/無し)と直転送(保証コード確認有り/無し)に大別される。
ライト中障害時のデータ回復方法は、ケースXでは、いずれの方式もライトデータが破棄され、ケースYでは、2段転送ではライトデータの転送リトライが行われ、直転送では、ライトデータの転送リトライ、または、他コントローラのダーティデータによる回復が行われる。なお、ライト中障害時のデータ回復方法に記載されている確固書き((1−1)〜(1−6))は、それぞれ、図13の(13−1)〜(13−6)にそれぞれ対応し、また、確固書き((1−1)〜(1−5))は、それぞれ、図14の(14−1)〜(14−5)対応している。
「ライト時2段転送のみ」と比較して、「ライト時直接転送のみ」は、ライト時のメモリアクセス回数を削減することができる。また、ライト面にパリティ未生成ダーティがある場合のみ「ライト2段転送」をする形態も考えられる。メモリアクセス回数削減効果は低減するがライトデータ転送中断時のデータ回復の実装が容易である。
以下の説明では、主に「ライト時直接転送のみ」において、一部、ライト2段転送も実行可能とした形態について説明する。
図16及び図17は、実施例に係るリード処理の流れの一例を示す。リード処理はCPU230がリードプログラム50を実行することで実現される。
まず、図16に示すように、CPU230が、FE−I/F210からのリード要求を検出する(ステップ1000)。
次に、CPU230は、リード要求が有するリード元情報(リード元を表すI/O先情報)から、キャッシュディレクトリテーブル32を介し、CS領域管理テーブル33とキャッシュ割当て管理テーブル34を参照する。これは、自コントローラと他コントローラの両方のキャッシュ領域管理テーブル33に対して実行する。CPU230が、リード要求範囲のキャッシュ領域管理テーブル33を参照し、リード要求データのキャッシュ領域244への格納状態を確認する(ステップ1001)。
次に、リードすべきライト面を決定するため、CPU230は、中断状態があるか判断する(ステップ1002)。リード要求範囲にライト面のデータが存在する場合、リード対象データは、ライト面のデータにリード面のデータを補ったものになる。なお、中断状態として、前述したように、中断状態1及び2がある。中断状態1とは、ホストコンピュータ1からライト要求を受信したコントローラ22へ、ライト要求に従うライトデータが完全に転送されなかった場合における、ライト要求を受信したコントローラが有するCS領域の状態である。中断状態2とは、ライトデータを受信したコントローラから他のコントローラへライトデータが完全に転送されなかった場合における、他のコントローラが有するCS領域の状態である。
データ転送中断状態1とデータ転送中断状態2のどちらも存在しない場合(ステップ1002:No)、CPU230は、通常どおり、クリーンデータが存在するリード面をリード対象に設定する(ステップ1003)。その後、ステップ1010へ進む。
中断状態1と中断状態2のどちらか一方でも存在する場合(ステップ1002:Yes)、CPU230は、中断状態2が発生しているコントローラ22のライト面に、パリティ未生成ダーティデータが存在するか否かを確認する(ステップ1004)。
パリティ未生成ダーティデータが無い場合(ステップ1004:Yes)、CPU230は、新規割当てしたライト面にライトデータを格納しようとしており、ライトデータの転送に失敗した場合、当該ライトデータを破棄するため、ライト面をリード対象とせず、リード面のデータ(及び、ステップ1011でステージングするデータ)をリード対象とする(ステップ1005)。その後、ステップ1009へ進む。
パリティ未生成ダーティデータが有る場合(ステップ1004:No)、CPU230は、自コントローラと他コントローラのリード元に対応するCS領域管理テーブル33の両方を見た場合、中断状態1と中断状態2の両方があるか判断する(ステップ1006)。
中断状態1と中断状態2の両方が有る場合(ステップ1006:Yes)、CPU230は、ライト要求を受信したコントローラ22のキャッシュ領域244にホストコンピュータ1からライトデータを転送中に発生した障害状態が存在するため、中断状態2が設定されているコントローラ22(パリティ未生成ダーティデータが格納されているコントローラ22)のライト面をリード対象とする(ステップ1007)。その後、ステップ1009へ進む。
中断状態1と中断状態2のどちらか一方しか無い場合(つまり、中断状態2が片方のコントローラ側にある場合)(ステップ1006:No)、ライト要求を受信したコントローラ22のライト面から他方のコントローラ22のライト面にライトデータをコピー中に発生した障害状態が存在するため、CPU230は、中断状態2が設定されていないコントローラ22(ライト要求を受信したコントローラ22)側のライト面をリード対象とする(ステップ1008)。
次に、CPU230は、リード要求範囲について、中断状態回復処理を起動する(ステップ1009)。中断状態回復処理は、起動するだけで終了を待たない。
次に、CPU230は、リード要求範囲の全てのデータがキャッシュ領域244に存在するか判断する(ステップ1010)。
リード要求範囲の全てのデータがキャッシュ領域244に存在する場合(ステップ1010:Yes)、図17のステップ1013へ進む。
リード要求範囲の全てのデータがキャッシュ領域244に存在しない場合(ステップ1010:No)、CPU230は、キャッシュ領域244に格納されていないデータを、リード面に、RGからステージングする(ステップ1011)。CPU230は、リード面に有効なクリーンデータが格納されていることを示すため、ステージングブロックマップにおける、ステージング範囲に対応したビットをONに設定する(ステップ1012)。その後、図17のステップ1013へ進む。
図17に示すように、CPU230は、リード要求範囲全てのデータが自コントローラ側にあるか判断する(ステップ1013)。リード要求範囲のデータを格納しているライト面とリード面の両方が自コントローラ側にある必要がある。
リード要求範囲の一部のデータが自コントローラ側に無い場合(ステップ1013:No)、CPU230は、リード2段転送を実行するため、自コントローラのBS領域を確保する(ステップ1014)。CPU230は、確保したBS領域に、リード面と(ステップ1002からステップ1008で決定した)ライト面から、リードデータを(DMA等により)コピーする(ステップ1015)。CPU230は、確保したBS領域からホストコンピュータ1へFE−I/F210を介してリードデータを転送する(ステップ1016)。その後、ステップ1018へ進む。
リード要求範囲の全てのデータが自コントローラ側に有る場合(ステップ1013:Yes)、CPU230は、リード直転送を実行するため、自コントローラ22のリード面から、ホストコンピュータ1へFE−I/F210を介して、リードデータを転送する(ステップ1017)。
次に、CPU230は、ホストコンピュータ1へリード要求の正常終了を報告する(ステップ1018)。
次に、CPU230は、未解放のBS領域の有無を判断する(ステップ1019)。リード2段転送を実行した場合、ステップ1014で確保したBS領域を未解放のまま自コントローラに有しているため、CPU230は、確保したBS領域を解放する(ステップ1020)。
最後に、CPU230は、データ状態に応じたキュー遷移を実行する(ステップ1021)。CPU230は、CS領域管理テーブル33をフリーキューから新規確保した場合は、クリーンキュー先頭に接続、また、リード要求時にCS領域管理テーブル33が存在した場合は、同一のデータ状態のキュー内でキューの先頭に接続し直す等を実行する。
以上で、リード処理の説明を終了する。
図18、図19及び図20は、実施例に係るライト処理の流れの一例を示す。ライト処理は、CPU230がライトプログラム51を実行することで実現される。
図18に示すように、まず、CPU230は、FE−I/F210からのライト要求を検出する(ステップ1100)。
次に、CPU230は、ライト要求が有するライト先情報(VOL番号とVOL内のアドレス)から、キャッシュディレクトリテーブル32を介し、CS領域管理テーブル33とキャッシュ割当て管理テーブル34を参照する。これは、自コントローラと他コントローラの両方のCS領域管理テーブル33に対して実行される。CPU230は、ライト要求範囲のキャッシ領域管理テーブル33を参照し、ライト範囲のデータのキャッシュ領域244への格納状態を確認する(ステップ1101)。なお、ライト先情報についてCS領域管理テーブル33が未だ確保されていないこともあり得る。
次に、CPU230は、既にライト面を確保しているか判断する(ステップ1102)。これは、自コントローラと他コントローラの両方のCS領域管理テーブル33に対して実行する。通常は、両方に確保されているか、あるいは、両方確保されていないかのどちらかである。
未だライト面が確保されていない場合(ステップ1102:No)、CPU230は、ライト面を新規に確保する(ステップ1103)。これは、自コントローラと他コントローラの両方のCS領域管理テーブル33に対して実行する。
既にライト面を確保している場合(ステップ1102:Yes)、CPU230は、ライト要求範囲に中断状態があるか判断する(ステップ1104)。
ライト要求範囲に中断状態が無い場合(ステップ1104:No)、ステップ1107へ進む。
ライト要求範囲に中断状態が有る場合(ステップ1104:Yes)、CPU230は、ライト要求範囲について中断状態回復処理を、ライト同期の起動要因で起動する(ステップ1105)。その後、CPU230は、中断状態回復処理の終了を待つ(ステップ1106)。
次に、CPU230は、ライト要求範囲のライトデータを格納するのに不足するライト面を追加確保する(ステップ1107)。CPU230は、確保済みのライト面でライト要求範囲のライトデータを格納できる場合は何もしない。
次に、CPU230は、キャッシュメモリ直転送実行可能か判断する(ステップ1108)。通常、ライト直転送が実行可能(ステップ1108:Yes)であるが、当該ボリュームに対して、ストレージシステム2の上述の内部機能を適用している場合等では、ライト2段転送が必要になる場合がある(ステップ1108:No)。その場合、図20のステップ1200へ進む。
次に、CPU230は、ライト要求を受信した自コントローラ22のエラー状態を中断状態1、他コントローラのエラー状態を中断状態2に設定する(ステップ1109)。
次に、FE−I/F210は、ライトデータをホストコンピュータ1から自コントローラのキャッシュ領域244のライト面に、保証コードを付与しながら格納する(ステップ1110)。
次に、CPU230は、自コントローラのライト面に、ライトデータのライト先領域(VOLにおける領域)と同じ領域をライト先としたダーティデータ(例えばパリティ未生成ダーティデータ)が有るか判断する(ステップ1111)。
パリティ未生成ダーティデータが無い場合(ステップ1111:No)、CPU230は、新規割当てしたライト面にライトデータを格納しようとしている状態であり、ライトデータの転送に失敗した場合、当該ライトデータは破棄するため、ライト要求を受信したコントローラ22側でのデータ保証コードの確認をスキップする。その後、ステップ1114へ進む。
自コントローラのライト面に、パリティ未生成ダーティデータが有る場合(ステップ1111:Yes)、CPU230は、ライトデータの保証コードを確認する(ステップ1112)。
次に、CPU230は、ライトデータの自コントローラのキャッシュ領域への格納が正常終了したか判断する(ステップ1113)。これは、FE−I/F210のデータ転送実行結果、データ保証コード確認結果等で判断する。
格納が正常終了していない場合(ステップ1113:No)、図19のステップ1129へ進む。
格納が正常終了している場合(ステップ1113:Yes)、CPU230は、ライト面に有効なダーティデータが格納されていることを示すため、ライト要求範囲の自コントローラのライト面に対応したダーティブロックマップにおける、ダーティデータが格納された領域に対応したビットを、ONに設定する(ステップ1114)。
次に、CPU230は、ライト要求を受信した自コントローラ22のエラー状態の中断状態1をクリア(キャンセル)する(ステップ1115)。その後、図19のステップ1116へ進む。
図19に示すように、CPU230は、ライトデータを自コントローラのライト面から他コントローラのライト面に(DMA等により)コピーする(ステップ1116)。
次に、CPU230は、ライトデータの保証コードを確認する(ステップ1117)。
次に、CPU230は、ライトデータの他コントローラのキャッシュ領域244への格納が正常終了したか判断する(ステップ1118)。これは、ステップ1116のコピー実行結果、データ保証コード確認結果等で判断する。
格納が正常終了した場合(ステップ1118:Yes)、ステップ1125へ進む。
格納が正常終了していない場合(ステップ1118:No)、ハードウェア等の一時的な不具合等によるデータ転送失敗等が想定されるため、CPU230は、ライトデータのコントローラ間のコピーをリトライする。まず、CPU230は、リトライ回数を初期化し(ステップ1119)、ステップ1116相当の、ライトデータを自コントローラのライト面から他コントローラのライト面に(DMA等により)コピーをリトライする(ステップ1120)。その後、CPU230は、ステップ1117相当の、CPU230によりライトデータの保証コードを確認する(ステップ1121)。次に、CPU230は、リトライが正常終了したか判断する(ステップ1122)。これは、リトライのコピー実行結果、データ保証コード確認結果等で判断する。リトライが正常終了した場合(ステップ1122:Yes)、ステップ1125へ進む。リトライが正常終了しなかった場合(ステップ1122:No)、CPU230は、リトライ回数を加算し(ステップ1123)、リトライ回数が閾値を超えているか判断する(ステップ1124)。リトライ回数が閾値を超えている場合(ステップ1124:Yes)、ステップ1129へ進む。リトライ回数が閾値を超えていない場合(ステップ1124:No)、CPU230は、再度コピーをリトライするため、ステップ1120へ進む。
リトライが正常終了した場合(ステップ1122:Yes)、又はS1118:Yesの後、ライト面に有効なダーティデータが格納されていることを示すため、CPU230は、他コントローラのライト面のライト要求範囲のダーティブロックマップをONに設定する(ステップ1125)。
次に、CPU230は、ライト要求を受信した他コントローラ22のエラー状態の中断状態2をクリア(キャンセル)する(ステップ1126)。
次に、CPU230は、ホストコンピュータ1へライト要求の正常終了を報告する(ステップ1127)。
次に、CPU230は、データ状態に応じたキュー遷移を実行する(ステップ1128)。CS領域管理テーブル33のデータ状態がクリーンだった場合、CPU230は、パリティ未生成ダーティに変更し、ダーティ(生成前)キュー先頭に接続、また、既ダーティ(生成前)キューに接続中であってもキューの先頭に接続し直す等を実行する。
一方、CPU230は、ステップ1113:No(ライトデータの自コントローラのキャッシュ領域への格納が正常終了していない場合)、ステップ1124:Yes(ライトデータの自コントローラのライト面から他コントローラのライト面への(DMA等による)コピーリトライが閾値を超えている場合)、ステップ1204:No(後述するライト2段転送における、ライトデータの自コントローラのバッファ領域への格納が正常終了していない場合)、又は、ステップ1212:Yes(後述するライト2段転送における、ライトデータの自コントローラの割当てたBS領域から自コントローラのライト面への(DMA等による)コピーリトライが閾値を超えている場合)の場合、CPU230は、ホストコンピュータ1へライト要求のエラー終了を報告し(ステップ1129)、ライト要求範囲についてデータ転送中断回復処理を起動する(ステップ1130)。
最後に、CPU230は、未解放のBS領域の有無を判断する(ステップ1131)。後述するライト2段転送を実行した場合、ステップ1200で確保したBS領域が未解放のまま自コントローラに存在するため、CPU230は、未解放のBS領域を解放する(ステップ1132)。
図18のステップ1108:Noの場合、図20に示すように、CPU230は、自コントローラのBS領域を確保し(ステップ1200)、FE−I/F210は、ライトデータを自コントローラの割当てたBS領域に保証コードを付与して格納する(ステップ1201)。
次に、CPU230は、自コントローラのライト面に、パリティ未生成ダーティデータが有るか判断する(ステップ1202)。
パリティ未生成ダーティデータが無い場合(ステップ1202:No)、新規割当てしたライト面にライトデータを格納しようとしている状態であり、ライトデータの転送に失敗した場合、当該ライトデータは破棄するため、CPU230は、ライト要求を受信したコントローラ22側でのデータ保証コードの確認をスキップする。その後、ステップ1205へ進む。
パリティ未生成ダーティデータが有る場合(ステップ1202:Yes)、CPU230により、確保したBS領域に格納したライトデータの保証コードを確認する(ステップ1203)。
次に、CPU230は、ライトデータの自コントローラのBS領域への格納は正常終了したか判断する(ステップ1204)。FE−I/F210のデータ転送実行結果、データ保証コード確認結果等で判断する。
格納が正常終了していない場合(ステップ1204:No)、図19のステップ1129へ進む。
格納が正常終了している場合(ステップ1204:Yes)、CPU230は、ライト要求を受信した自コントローラ22のエラー状態を中断状態1、他コントローラのエラー状態を中断状態2に設定する(ステップ1205)。
次に、ライトデータが、自コントローラのBS領域からライト面に(DMA等により)コピーされる(ステップ1206)。
次に、CPU230は、ライトデータの自コントローラのCS領域への格納は正常終了したか判断する(ステップ1207)。ステップ1205のコピー実行結果等で判断する。
格納が正常終了した場合(ステップ1207:Yes)、ステップ1213へ進む。
格納が正常終了していない場合(ステップ1207:No)、CPU130は、ハードウェア等の一時的な不具合等によるデータ転送失敗等が想定されるため、ライトデータの自コントローラのBS領域からCS領域へのコピーをリトライする。まず、CPU230は、リトライ回数を初期化し(ステップ1208)、ステップ1206相当の、ライトデータを自コントローラのBS領域からライト面に(DMA等により)コピーをリトライする(ステップ1209)。次に、CPU230は、リトライが正常終了したか判断する(ステップ1210)。リトライのコピー実行結果等で判断する。リトライが正常終了した場合(ステップ1210:Yes)、ステップ1213へ進む。リトライが正常終了していない場合(ステップ1210:No)、CPU230は、リトライ回数を加算し(ステップ1211)、リトライ回数が閾値を超えているか判断する(ステップ1212)。リトライ回数が閾値を超えている場合(ステップ1212:Yes)、図19のステップ1129へ進む。リトライ回数が閾値を超えていない場合(ステップ1212:No)、CPU230は、再度コピーをリトライするため、ステップ1209へ進む。
次に、ライト面に有効なダーティデータが格納されていることを示すため、CPU230は、自コントローラのライト面に対応したダーティブロックマップにおける、ダーティデータが格納されている領域に対応したビットを、ONに設定する(ステップ1213)。
次に、CPU230は、ライト要求を受信した自コントローラのエラー状態の中断状態1をクリア(キャンセル)する(ステップ1214)。その後、CPU230は、図19のステップ1116へ進む。
以上で、ライト処理の説明を終了する。
図21は、実施例に係る中断状態回復処理の流れの一例を示す。
中断状態回復処理は、CPU230が中断状態回復プログラム52を実行することで実現される。中断状態回復処理の起動要因としては、リード処理同期(リード処理からの起動)及びライト処理同期(ライト処理からの起動)のいずれかがあるが、その他、ホストコンピュータ1のI/O要求(リード/ライト要求)とは非同期の処理である非同期処理(例えば、パリティ生成処理からの起動、或いは、周期的な障害監視処理からの起動)であってもよい。また、中断状態回復処理は、キャッシュ領域244の中断状態に応じて異なる(詳細は図15を参照)。
まず、CPU230は、中断状態回復処理の起動要因、及び指定された範囲に属するCS領域に対応したCS領域管理テーブルを参照する(ステップ1300)。これは、自コントローラと他コントローラの両方のCS領域管理テーブルに対して実行する。また、図21の説明において、「指定された範囲」とは、例えば、起動要因がライト処理同期又はリード処理同期の場合、ホストコンピュータ1から受信したI/O要求で指定されているアドレス範囲(例えば、LUN、LBA(Logical Block Address)及びデータ長)でよく、起動要因がライト処理同期とリード処理同期のいずれでも無い場合、CPU230(中断状態回復プログラム52)が任意に指定した範囲でよい。以下、説明を分かり易くするために、図21の説明において、指定された範囲に属するCS領域を「指定CS領域」と言い、指定CS領域は1つのコントローラにつき1つであるとする。
次に、CPU230は、少なくとも1つのコントローラにおける指定CS領域に対応したCS領域管理テーブルに中断状態があるか(エラー状態332が中断状態1又は2であるか)判断する(ステップ1301)。
中断状態が無い場合(ステップ1301:No)、CPU230は、中断状態回復処理を終了する。このケースは、この中断状態回復処理が中断状態が無い状態で起動された、あるいは、上記起動要因以外の別契機で起動された中断状態回復処理が既に中断状態を回復した等のケースであると考えられる。
中断状態が有る場合(ステップ1301:Yes)、CPU230は、中断状態2に対応した指定CS領域(中断状態2が設定されているコントローラ側のキャッシュ領域のライト面)に、ライト要求に対応するパリティ未生成ダーティデータが無いか判断する(ステップ1302)。なお、「中断状態が有る」ということは、中断状態1及び2のうち少なくとも中断状態2が有るということである。なぜなら、ライト処理(図18〜図20)において、暫定的に中断状態1及び2の両方が設定され(S1109又はS1205)、その後、中断状態1及び2のうち先にクリアされるのは必ず中断状態1だからである(S1115又はS1214)。
中断状態2に対応した指定CS領域にパリティ未生成ダーティデータが無い場合(ステップ1302:Yes)、CPU230は、新規割当てしたライト面にライトデータを格納しようとしている状態であり、エラー終了したライト要求に対応するライトデータを破棄する(ステップ1304)。ただし、起動要因がライト処理同期の場合(1303:Yes)、CPU230は、中断状態回復処理の後にライト処理を控えているため、確保済みのライト面を再利用する目的で、(中断状態2のみが設定されている場合を想定し)データ転送元のダーティブロックマップをOFFに設定する(ステップ1305)。その後、ステップ1315へ進む。
次に、CPU230は、自コントローラと他コントローラのそれぞれの指定CS領域に対応するCS領域管理テーブル33の両方を全体として見た場合、中断状態1と中断状態2の両方があるか判断する(ステップ1306)。
中断状態1と中断状態2の両方がある場合(ステップ1306:Yes)、ライト要求を受信したコントローラ側のライト面のパリティ未生成ダーティデータが破壊されている可能性があるため、CPU230は、中断状態1に対応した指定CS領域を有するコントローラ(つまり自コントローラ)内のいずれかのCS領域をデータコピー先として設定し、中断状態2に対応した指定CS領域(つまり他コントローラの指定CS領域)をデータコピー元として設定する(ステップ1307)。その後、ステップ1309へ進む。なお、データコピー先は、中断状態1に対応した指定CS領域それ自体、すなわち、破壊されている可能性があるパリティ未生成ダーティデータを記憶しているライト面でもよい。
中断状態1と中断状態2の一方がある場合(ステップ1306:No)、つまり、中断状態2のみが有る場合、自コントローラの指定CS領域(ライト面)から他コントローラの指定CS領域(ライト面)へのライトデータのコピーが失敗していると考えられるため、CPU230は、中断状態2に対応した指定CS領域を有するコントローラ(つまり他コントローラ)内のいずれかのCS領域をデータコピー先として設定し、中断状態2が対応付けられていない指定CS領域(つまり自コントローラ内の指定CS領域)をデータコピー元として設定する(ステップ1308)。なお、データコピー先は、中断状態2に対応した指定CS領域それ自体でもよい。
次に、CPU230は、データコピー不要条件が満たされているか判断する(ステップ1309)。データコピー不要条件が満たされていない場合、CPU230は、コピー元からコピー先へのデータコピー(ステップ1310〜ステップ1314)を行うが、データコピー不要条件が満たされている場合、CPU230は、そのようなデータコピーを行うことなく、ステップ1315を行う。なお、当該判断を実施せず(一律、データコピー不要条件に合致しないと判断(ステップ1309:No)として)中断状態回復処理を実行してもデータ回復は問題なく可能である。具体的な判断条件は、起動要因がライト処理同期であり、かつ、現ライト要求を受信したコントローラがデータコピー先の指定CS領域を有し、かつ、データ転送中断時のライト要求範囲(ライト要求で指定されているアドレス範囲)が現ライト要求範囲に包含される場合である。この場合、ステップ1310〜ステップ1314のデータコピー処理で回復したライト面のパリティ未生成ダーティデータの状態を、控えている現ライト要求のライト処理によって上書きすることになるからである。
次に、ステップ1310〜ステップ1314のデータコピー処理により、データ転送が中断された可能性のあるライト面を、他方のコントローラの正常なライト面のパリティ未生成ダーティデータで上書きし、エラー状態を回復する。
CPU230は、データコピー位置を初期位置として指定されたリード/ライト範囲の先頭に設定し(ステップ1310)、指定された範囲全てのデータコピーを終了したか判断する(ステップ1311)。
データコピーが未終了の場合(ステップ1311:No)、データ転送元のライト面からデータ転送先のライト面にダーティデータを一定量(DMA等により)コピーする(ステップ1312)。このとき、コピー元のダーティブロックマップがON設定されている範囲内のデータのみをコピーすればよい。次に、ライト面に有効なダーティデータが格納されていることを示すため、CPU230は、コピー先コントローラのライト面のライト要求範囲のダーティブロックマップを(コピー元のダーティブロックマップON設定に合わせて)ONに設定する(ステップ1313)。次に、CPU230は、データコピー位置をコピーした分だけ一定量進める(ステップ1314)。その後、ステップ1311へ進む。
データコピーを終了の場合(ステップ1311:Yes)、CPU230は、指定CS領域に対応した中断状態をクリアして(ステップ1315)、中断状態回復処理を終了する。
以上、一実施例を説明したが、本発明は上記実施例に限定されない。
例えば、図示しないが、ステップ1312のコピーが失敗した場合、コピー方法が複数(複数のDMAエンジンが実装されている等)用意されている場合は、別の方法によるコピーをリトライしたり、また、CPU230が、コピー先のライト面を一度解放し、再度フリーキューから確保した同一コントローラのキャッシュ領域の別の領域をライト面としてコピーをリトライしたりしてもよい。それでも中断状態が回復できない場合は、コピー元のライト面のパリティ未生成ダーティデータのパリティを生成し、RGにコピー元のパリティ生成済ダーティデータと新パリティをデステージして、コピー元とコピー先のライト面内のデータを破棄してもよい。
1:ホストコンピュータ、2:ストレージシステム、21:記憶制御装置、22:コントローラ、210:FE−I/F、230:CPU、240:メモリ、242:バッファ領域、243:管理テーブル領域、244:キャッシュ領域
Claims (12)
- 1以上の記憶デバイスで構成された記憶デバイス群と、
前記記憶デバイス群及びホストコンピュータに接続され第1バッファ領域及び第1キャッシュ領域を有する第1コントローラと、
前記記憶デバイス群及び前記ホストコンピュータに接続され第2バッファ領域及び第2キャッシュ領域を有する第2コントローラと
を有し、
前記第1コントローラは、前記ホストコンピュータから第1ライト要求を受信し、前記第1ライト要求に従う第1ライトデータを、前記第1バッファ領域を介さずに前記第1キャッシュ領域におけるいずれかのキャッシュサブ領域である第1キャッシュサブ領域に格納し、前記第1キャッシュサブ領域に格納された前記第1ライトデータを前記第2キャッシュ領域のいずれかのキャッシュサブ領域である第2キャッシュサブ領域に前記第2バッファ領域を介さずに格納するために前記第2コントローラに転送し、前記第1キャッシュサブ領域内の前記第1ライトデータを、前記第1ライト要求で指定されているライト先に従う指定範囲に基づき前記記憶デバイス群に書き込むようになっており、
前記第1コントローラは、前記第1キャッシュサブ領域の状態が、前記第1キャッシュサブ領域への前記第1ライトデータの格納に成功した場合にクリアされる第1中断状態か否かを管理し、前記第1又は第2コントローラは、前記第2キャッシュサブ領域の状態が、前記第1キャッシュサブ領域から前記第2キャッシュサブ領域への前記第1ライトデータの転送に成功した場合にクリアされる第2中断状態か否かを管理し、
前記第1コントローラは、中断状態回復処理を行い、
前記中断状態回復処理は、
前記第1キャッシュサブ領域が前記第1中断状態であり前記第2キャッシュサブ領域が前記第2中断状態であるか否かを判断すること、
前記第1キャッシュサブ領域が前記第1中断状態であり前記第2キャッシュサブ領域が前記第2中断状態である場合、前記第1キャッシュサブ領域をコピー先として設定し、前記第2キャッシュサブ領域をコピー元として設定し、コピー元からコピー先にデータをコピーし、且つ、前記第1及び第2キャッシュサブ領域にそれぞれ対応する前記第1及び第2中断状態をクリアすること、
前記第1キャッシュサブ領域が前記第1中断状態でなく前記第2キャッシュサブ領域が前記第2中断状態である場合、前記第2キャッシュサブ領域をコピー先として設定し、前記第1キャッシュサブ領域をコピー元として設定し、コピー元からコピー先にデータをコピーし、前記第2キャッシュサブ領域に対応する前記第2中断状態をクリアすること、
を含む、
ストレージシステム。 - 前記中断状態回復処理は、コピー不要条件が満たされているか否かを判断すること、を更に含み、
前記コピー不要条件が満たされていない場合、前記第1コントローラは、コピー元からコピー先へのデータのコピーを行い、前記コピー不要条件が満たされている場合、前記第1コントローラは、コピー元からコピー先へのデータのコピーをすること無く、前記第1及び第2キャッシュサブ領域に対応する前記第1及び第2中断状態をクリアする、又は、前記第2キャッシュサブ領域に対応する前記第2中断状態をクリアする、
を含む、
請求項1に記載のストレージシステム。 - 前記コピー不要条件が満たされる場合は、前記中断状態回復処理が、前記第1ライト要求に従うライト処理からの起動であり、前記第1コントローラがコピー先のキャッシュサブ領域を有し、かつ、前記第2中断状態の原因となった転送に対応した過去のライト要求で指定されているライト先に従う指定範囲が、前記第1ライト要求で指定されているライト先に従う指定範囲に包含される場合である、
請求項2に記載のストレージシステム。 - 前記第1コントローラは、第1リード要求を前記ホストコンピュータから受信した場合、前記第1リード要求に従う第1リードデータが前記第1キャッシュサブ領域にあっても、前記第1キャッシュサブ領域が前記第1中断状態であれば、前記第1キャッシュサブ領域から前記ホストコンピュータへの前記第1リードデータの転送を行わない、
請求項1に記載のストレージシステム。 - 前記第1リードデータが、前記記憶デバイス群に書き込まれていないデータである第1ダーティデータであれば、前記第1コントローラは、前記第1中断状態ではないキャッシュサブ領域内のデータであり前記第1ダーティデータに対応したデータを前記ホストコンピュータへ転送する、
請求項4に記載のストレージシステム。 - 前記第1コントローラは、第2ライト要求又は第2リード要求を受信し、
前記第2ライト要求を受信した場合、前記第1コントローラは、前記第2ライト要求に従う第2ライトデータの格納先が、前記第1中断状態の前記第1キャッシュサブ領域であれば、前記第2ライト要求の処理の前に、前記第1キャッシュサブ領域について前記中断状態回復処理を行い、
前記第2リード要求を受信した場合、前記第1コントローラは、前記第2リード要求に従う第2リードデータが前記第1中断状態の前記第1キャッシュサブ領域内のデータであっても、前記第1キャッシュサブ領域についての前記中断状態回復処理を前記第2リード要求の処理とは非同期に実行する、
請求項5に記載のストレージシステム。 - 前記第1コントローラは、前記第2コントローラへ転送する前記第1ライトデータに付随している保証コードを確認すること無しに前記第1ライトデータを前記第2コントローラへ転送し、
前記第2コントローラが、前記第1ライトデータを受信し、前記第1ライトデータに付随している前記保証コードを確認する、
請求項1に記載のストレージシステム。 - 前記第1コントローラは、論理ボリューム間でデータをコピーする内部機能を実行している場合に、前記第1ライトデータを前記第1バッファ領域に格納し、前記第1バッファ領域から前記第1キャッシュサブ領域へ格納する、
請求項1に記載のストレージシステム。 - 前記第1コントローラは、前記第1ライトデータの格納先の前記第1キャッシュサブ領域に格納されているデータが前記記憶デバイス群に書込み済のデータであるクリーンデータであれば、前記中断状態回復処理において、前記第1キャッシュサブ領域を解放する、
請求項1に記載のストレージシステム。 - 前記第1コントローラは、前記第1中断状態の前記第1キャッシュサブ領域内のデータを回復するために或るキャッシュサブ領域と前記第1キャッシュサブ領域との間でデータコピーを行うようになっており、
前記第1コントローラは、コピー先のキャッシュサブ領域が前記第1キャッシュサブ領域であり、且つ、第1中断状態決定時のライト範囲が前記第1ライト要求の前記指定範囲に包含される場合、前記データコピーをスキップする、
請求項1に記載のストレージシステム。 - 前記第1コントローラが、第1メモリを有し、前記第2コントローラが、第2メモリを有し、
前記第1バッファ領域及び前記第1キャッシュ領域が、前記第1メモリに集約されており、前記第2バッファ領域及び前記第2キャッシュ領域が、前記第2メモリに集約されている、
請求項1に記載のストレージシステム。 - 1以上の記憶デバイスで構成された記憶デバイス群及びホストコンピュータに接続され第1バッファ領域及び第1キャッシュ領域を有する第1コントローラと、前記記憶デバイス群及び前記ホストコンピュータに接続され第2バッファ領域及び第2キャッシュ領域を有する第2コントローラとを有し、前記第1コントローラは、前記ホストコンピュータからライト要求を受信し、前記ライト要求に従うライトデータを、前記第1バッファ領域を介さずに前記第1キャッシュ領域におけるいずれかのキャッシュサブ領域である第1キャッシュサブ領域に格納し、前記第1キャッシュサブ領域に格納されたライトデータを、前記第2キャッシュ領域におけるいずれかのキャッシュサブ領域である第2キャッシュサブ領域に前記第2バッファ領域を介さずに格納するために前記第2コントローラに転送し、前記第1キャッシュサブ領域内のライトデータを前記記憶デバイス群に書き込むようになっているストレージシステム、の記憶制御方法であって、
前記第1コントローラは、前記第1キャッシュサブ領域の状態が、前記第1キャッシュサブ領域への前記ライトデータの格納に成功した場合にクリアされる第1中断状態か否かを管理し、前記第1又は第2コントローラは、前記第2キャッシュサブ領域の状態が、前記第1キャッシュサブ領域から前記第2キャッシュサブ領域への前記ライトデータの転送に成功した場合にクリアされる第2中断状態か否かを管理し、
前記第1コントローラは、中断状態回復処理を行い、
前記中断状態回復処理は、
前記第1キャッシュサブ領域が前記第1中断状態であり前記第2キャッシュサブ領域が前記第2中断状態であるか否かを判断すること、
前記第1キャッシュサブ領域が前記第1中断状態であり前記第2キャッシュサブ領域が前記第2中断状態である場合、前記第1キャッシュサブ領域をコピー先として設定し、前記第2キャッシュサブ領域をコピー元として設定し、コピー元からコピー先にデータをコピーし、且つ、前記第1及び第2キャッシュサブ領域にそれぞれ対応する前記第1及び第2中断状態をクリアすること、
前記第1キャッシュサブ領域が前記第1中断状態でなく前記第2キャッシュサブ領域が前記第2中断状態である場合、前記第2キャッシュサブ領域をコピー先として設定し、前記第1キャッシュサブ領域をコピー元として設定し、コピー元からコピー先にデータをコピーし、前記第2キャッシュサブ領域に対応する前記第2中断状態をクリアすること、
を含む、
記憶制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/077483 WO2015052798A1 (ja) | 2013-10-09 | 2013-10-09 | ストレージシステム及び記憶制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6009095B2 true JP6009095B2 (ja) | 2016-10-19 |
JPWO2015052798A1 JPWO2015052798A1 (ja) | 2017-03-09 |
Family
ID=52812645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015541367A Expired - Fee Related JP6009095B2 (ja) | 2013-10-09 | 2013-10-09 | ストレージシステム及び記憶制御方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9946655B2 (ja) |
JP (1) | JP6009095B2 (ja) |
CN (1) | CN104956311B (ja) |
DE (1) | DE112013005903T5 (ja) |
GB (1) | GB2534956A (ja) |
WO (1) | WO2015052798A1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326030B (zh) * | 2015-06-26 | 2020-03-20 | 伊姆西Ip控股有限责任公司 | 用于存储系统中的软切换的方法和装置 |
JP6507261B2 (ja) * | 2015-11-13 | 2019-04-24 | 株式会社日立製作所 | ストレージ装置、記録媒体、および記憶制御方法 |
US20170177276A1 (en) * | 2015-12-21 | 2017-06-22 | Ocz Storage Solutions, Inc. | Dual buffer solid state drive |
US9910619B2 (en) | 2015-12-21 | 2018-03-06 | Toshiba Memory Corporation | Dual buffer solid state drive |
US10169232B2 (en) * | 2016-02-19 | 2019-01-01 | Seagate Technology Llc | Associative and atomic write-back caching system and method for storage subsystem |
JP2018022404A (ja) * | 2016-08-05 | 2018-02-08 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御プログラム |
KR102703983B1 (ko) * | 2016-11-07 | 2024-09-10 | 삼성전자주식회사 | Raid 방식으로 데이터를 저장하는 스토리지 장치 |
US10223301B2 (en) * | 2016-11-29 | 2019-03-05 | International Business Machines Corporation | Pre-allocating memory buffers by physical processor and using a bitmap metadata in a control program |
US10235310B2 (en) | 2016-11-29 | 2019-03-19 | International Business Machines Corporation | Deallocation of memory buffer in multiprocessor systems |
WO2018198336A1 (ja) * | 2017-04-28 | 2018-11-01 | 株式会社日立製作所 | ストレージシステム及びストレージ制御装置 |
CN107463670B (zh) * | 2017-08-03 | 2020-06-05 | 北京奇艺世纪科技有限公司 | 数据存储、读取方法及装置 |
US10521148B2 (en) * | 2018-03-07 | 2019-12-31 | Western Digital Technologies, Inc. | Data storage device backup |
JP6976237B2 (ja) * | 2018-11-08 | 2021-12-08 | 株式会社日立製作所 | ストレージシステム、データ管理方法、及びデータ管理プログラム |
JP7201775B2 (ja) * | 2018-11-08 | 2023-01-10 | 株式会社日立製作所 | ストレージシステム、データ管理方法、及びデータ管理プログラム |
CN109511203B (zh) * | 2018-11-13 | 2020-09-29 | 广州鹏林照明灯具有限公司 | 一种舞台灯具双缓存校准dmx512数据的系统和方法 |
CN109783034B (zh) * | 2019-02-12 | 2022-03-25 | 记忆科技(深圳)有限公司 | 一种提升磁盘阵列处理效率的方法及其系统 |
CN111722785B (zh) * | 2019-03-21 | 2024-09-20 | 阿里巴巴集团控股有限公司 | 一种缓存更新方法和装置 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN111221474B (zh) * | 2020-01-02 | 2023-05-26 | 广州虎牙科技有限公司 | 一种数据的存储方法、装置、设备和存储介质 |
JP7028902B2 (ja) * | 2020-02-07 | 2022-03-02 | 株式会社日立製作所 | ストレージシステム及び入出力制御方法 |
JP7316242B2 (ja) * | 2020-03-18 | 2023-07-27 | 株式会社日立製作所 | ストレージシステムおよびデータ転送方法 |
US11789617B2 (en) * | 2021-06-29 | 2023-10-17 | Acronis International Gmbh | Integration of hashgraph and erasure coding for data integrity |
CN115129267B (zh) * | 2022-09-01 | 2023-02-03 | 苏州浪潮智能科技有限公司 | 一种域地址变更方法、装置、设备及可读存储介质 |
TWI808010B (zh) | 2022-09-26 | 2023-07-01 | 慧榮科技股份有限公司 | 資料處理方法及對應之資料儲存裝置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06131123A (ja) * | 1992-10-22 | 1994-05-13 | Fujitsu Ltd | 計算機の外部記憶装置 |
JPH09319655A (ja) * | 1996-05-29 | 1997-12-12 | Hitachi Ltd | キャッシュ管理方法および記憶装置システム |
JP2003058324A (ja) * | 2001-08-15 | 2003-02-28 | Nec Corp | ディスクアレイ装置 |
JP2006114064A (ja) * | 2005-12-28 | 2006-04-27 | Hitachi Ltd | 記憶サブシステム |
JP2006134149A (ja) * | 2004-11-08 | 2006-05-25 | Fujitsu Ltd | ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム |
US20080082856A1 (en) * | 2006-09-28 | 2008-04-03 | Emc Corporation | Recovering from a storage processor failure using write cache preservation |
JP2012514781A (ja) * | 2009-01-06 | 2012-06-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 回復動作中に使用するためのキャッシュ内の修正済みデータを決定するための方法、システム、およびコンピュータ・プログラム(回復動作中に使用するためのキャッシュ内の修正済みデータの決定) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3236166B2 (ja) | 1994-06-08 | 2001-12-10 | 株式会社日立製作所 | キャッシュ制御方法および情報処理装置 |
JP3772369B2 (ja) | 1995-11-20 | 2006-05-10 | 株式会社日立製作所 | 記憶サブシステム |
US7313724B1 (en) * | 2004-07-01 | 2007-12-25 | Symantec Operating Corporation | Method and apparatus for synchronizing redundant data with a volume |
JP4376750B2 (ja) * | 2004-10-14 | 2009-12-02 | 株式会社日立製作所 | 計算機システム |
DE102005016051B4 (de) * | 2005-04-07 | 2019-06-13 | Infineon Technologies Ag | Speicherüberprüfungsvorrichtung und Verfahren zum Überprüfen eines Speichers |
JP4437489B2 (ja) * | 2006-10-25 | 2010-03-24 | 株式会社日立製作所 | 揮発性キャッシュメモリと不揮発性メモリとを備えたストレージシステム |
JP5057366B2 (ja) * | 2006-10-30 | 2012-10-24 | 株式会社日立製作所 | 情報システム及び情報システムのデータ転送方法 |
US9104599B2 (en) * | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US8751467B2 (en) * | 2007-01-18 | 2014-06-10 | Dot Hill Systems Corporation | Method and apparatus for quickly accessing backing store metadata |
US7856419B2 (en) * | 2008-04-04 | 2010-12-21 | Vmware, Inc | Method and system for storage replication |
CN101630232B (zh) * | 2008-07-15 | 2011-11-23 | 中兴通讯股份有限公司 | 双存储控制器的管理方法和装置 |
CN101436152B (zh) * | 2008-12-02 | 2013-01-23 | 成都市华为赛门铁克科技有限公司 | 一种数据备份的方法和装置 |
US20120011326A1 (en) * | 2010-03-19 | 2012-01-12 | Hitachi, Ltd. | Storage system and method for changing configuration of cache memory for storage system |
WO2012137256A1 (en) * | 2011-04-06 | 2012-10-11 | Hitachi, Ltd. | Disk array apparatus and control method thereof |
US9304901B2 (en) * | 2013-03-14 | 2016-04-05 | Datadirect Networks Inc. | System and method for handling I/O write requests |
-
2013
- 2013-10-09 CN CN201380071895.1A patent/CN104956311B/zh active Active
- 2013-10-09 DE DE112013005903.7T patent/DE112013005903T5/de not_active Withdrawn
- 2013-10-09 US US14/765,442 patent/US9946655B2/en active Active
- 2013-10-09 JP JP2015541367A patent/JP6009095B2/ja not_active Expired - Fee Related
- 2013-10-09 GB GB1513247.5A patent/GB2534956A/en not_active Withdrawn
- 2013-10-09 WO PCT/JP2013/077483 patent/WO2015052798A1/ja active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06131123A (ja) * | 1992-10-22 | 1994-05-13 | Fujitsu Ltd | 計算機の外部記憶装置 |
JPH09319655A (ja) * | 1996-05-29 | 1997-12-12 | Hitachi Ltd | キャッシュ管理方法および記憶装置システム |
JP2003058324A (ja) * | 2001-08-15 | 2003-02-28 | Nec Corp | ディスクアレイ装置 |
JP2006134149A (ja) * | 2004-11-08 | 2006-05-25 | Fujitsu Ltd | ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム |
JP2006114064A (ja) * | 2005-12-28 | 2006-04-27 | Hitachi Ltd | 記憶サブシステム |
US20080082856A1 (en) * | 2006-09-28 | 2008-04-03 | Emc Corporation | Recovering from a storage processor failure using write cache preservation |
JP2012514781A (ja) * | 2009-01-06 | 2012-06-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 回復動作中に使用するためのキャッシュ内の修正済みデータを決定するための方法、システム、およびコンピュータ・プログラム(回復動作中に使用するためのキャッシュ内の修正済みデータの決定) |
Also Published As
Publication number | Publication date |
---|---|
US9946655B2 (en) | 2018-04-17 |
US20150370713A1 (en) | 2015-12-24 |
GB2534956A (en) | 2016-08-10 |
JPWO2015052798A1 (ja) | 2017-03-09 |
DE112013005903T5 (de) | 2015-09-10 |
WO2015052798A1 (ja) | 2015-04-16 |
GB201513247D0 (en) | 2015-09-09 |
CN104956311A (zh) | 2015-09-30 |
CN104956311B (zh) | 2017-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6009095B2 (ja) | ストレージシステム及び記憶制御方法 | |
US7975115B2 (en) | Method and apparatus for separating snapshot preserved and write data | |
US10459638B2 (en) | Computer system that generates group information and redundant code based on user data and changes the group information and redundant code based on transmission data, control method for computer system, and recording medium | |
JP4961319B2 (ja) | 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム | |
US20140223223A1 (en) | Storage system | |
US20080183964A1 (en) | Storage system and data management method | |
JP2008065525A (ja) | 計算機システム、データ管理方法及び管理計算機 | |
JP2008046986A (ja) | ストレージシステム | |
US20080222214A1 (en) | Storage system and remote copy system restoring data using journal | |
EP3659045B1 (en) | Methods for managing distributed snapshot for low latency storage and devices thereof | |
JP5275692B2 (ja) | ストレージシステム群 | |
US10664193B2 (en) | Storage system for improved efficiency of parity generation and minimized processor load | |
US11789613B2 (en) | Storage system and data processing method | |
US8880939B2 (en) | Storage subsystem and method for recovering data in storage subsystem | |
US8935488B2 (en) | Storage system and storage control method | |
US20050223180A1 (en) | Accelerating the execution of I/O operations in a storage system | |
JP5275691B2 (ja) | ストレージシステム | |
WO2017212514A1 (ja) | ストレージシステム及び記憶制御方法 | |
WO2018055686A1 (ja) | 情報処理システム | |
US20240231707A9 (en) | Storage system and storage control method | |
US12073089B2 (en) | Storage device and data recovery method by storage device | |
JP7457740B2 (ja) | ストレージシステム及びその制御方法 | |
US20140208023A1 (en) | Storage system and control method for storage system | |
JP6605762B2 (ja) | 記憶ドライブの故障により消失したデータを復元する装置 | |
JP2023096958A (ja) | ストレージシステム及びストレージシステム制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160802 |
|
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: 20160830 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160913 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6009095 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |