JP5760556B2 - ストレージ装置、制御装置およびストレージ装置制御方法 - Google Patents

ストレージ装置、制御装置およびストレージ装置制御方法 Download PDF

Info

Publication number
JP5760556B2
JP5760556B2 JP2011061716A JP2011061716A JP5760556B2 JP 5760556 B2 JP5760556 B2 JP 5760556B2 JP 2011061716 A JP2011061716 A JP 2011061716A JP 2011061716 A JP2011061716 A JP 2011061716A JP 5760556 B2 JP5760556 B2 JP 5760556B2
Authority
JP
Japan
Prior art keywords
data
storage area
storage
write
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
JP2011061716A
Other languages
English (en)
Other versions
JP2012198704A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011061716A priority Critical patent/JP5760556B2/ja
Priority to US13/412,711 priority patent/US9146803B2/en
Publication of JP2012198704A publication Critical patent/JP2012198704A/ja
Application granted granted Critical
Publication of JP5760556B2 publication Critical patent/JP5760556B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors

Description

本件は、ストレージ装置、制御装置およびストレージ装置制御方法に関する。
情報技術の進歩および普及に伴い、磁気ディスク、光ディスク、半導体メモリ等の記憶媒体を利用し、記憶媒体にデータの読み書きが可能なストレージ装置が広く利用されている。ストレージ装置を用いることで、大量のデータの書き込み、読み出しおよび更新ならびに大量のデータの管理が容易になる。
ストレージ装置におけるデータの書き込みに関して、以下の技術が知られている。
特開2000−20398号公報 特開2001−318766号公報
ここで、ストレージ装置におけるデータの一部または全部について上書きによる更新が行われる場合に、更新するデータに不整合が発生していた等の原因により、エラーが発生していたものとする。この場合、上書きされたデータにも更新するデータのエラーが反映されてしまう場合があるという問題点があった。
本件はこのような点に鑑みてなされたものであり、データの更新時に、データがエラーを有するデータで更新されることを抑止可能なストレージ装置、制御装置およびストレージ装置制御方法を提供することを目的とする。
上記目的を達成するために以下のようなストレージ装置が提供される。このストレージ装置は、第1の記憶領域に記憶されている第1のデータの少なくとも一部を第2のデータの少なくとも一部によって更新する場合、第2のデータを第1の記憶領域とは異なる第2の記憶領域に書き込むとともに書き込みエラーの発生の有無を判定し、書き込みエラーが発生していないときには、第1のデータと第2のデータとを結合する制御部を有する。
また、上記目的を達成するために以下のようなストレージ装置制御方法が提供される。このストレージ装置制御方法は、第1のデータに記憶されている第1のデータの少なくとも一部を第2のデータの少なくとも一部によって更新する場合、第2のデータを第1の記憶領域とは異なる第2の記憶領域に書き込むとともに書き込みエラーの発生の有無を判定する。書き込みエラーが発生していないときには、第1のデータと第2のデータとを結合する。
開示のストレージ装置、制御装置およびストレージ装置制御方法によれば、データの更新時に、データがエラーを有するデータで更新されることを抑止することが可能となる。
第1の実施の形態のストレージ装置を示す図である。 第2の実施の形態のストレージ装置のハードウェア構成を示す図である。 第2の実施の形態のストレージ装置の機能を示すブロック図である。 第2の実施の形態のキャッシュ領域を示す図である。 第2の実施の形態の制御レジスタを示す図である。 第2の実施の形態のキャッシュ管理テーブルを示す図である。 比較例のストレージ装置の書き込み処理におけるエラーの検出を示す図である。 第2の実施の形態の後の書き込みデータに先の書き込みデータの差分を付加して結合する際の動作を示す図である。 第2の実施の形態の後の書き込みデータによって先の書き込みデータに上書きして結合する際の動作を示す図である。 第2の実施の形態の後の書き込みデータの書き込み時にエラーが発生した際の動作を示す図である。 第2の実施の形態のホストコンピュータから送信された先の書き込みデータをキャッシュ領域に書き込む際の動作を示す図である。 第2の実施の形態のホストコンピュータから送信された後の書き込みデータをキャッシュ領域に書き込む際の動作を示す図である。 第2の実施の形態の先の書き込みデータと後の書き込みデータとを結合した結合データを記憶デバイスに書き込む際の動作を示す図である。 第2の実施の形態の更新判定処理を示すフローチャートである。 第2の実施の形態の書き込みエラー検出処理を示すフローチャートである。 第2の実施の形態のデータ結合処理を示すフローチャートである。 第2の実施の形態の変形例におけるエラー発生処理を示すフローチャートである。
以下、実施の形態を、図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージ装置を示す図である。本実施の形態のストレージ装置1は、制御部11、記憶領域12a(第1の記憶領域)、記憶領域12b(第2の記憶領域)を有する。
制御部11は、記憶領域12aに記憶されているデータ2a(第1のデータ)の少なくとも一部をデータ2b(第2のデータ)の少なくとも一部によって更新する場合、データ2bを記憶領域12aとは異なる記憶領域12bに書き込む。ここで、データ2aとデータ2bとは、例えば、同一の更新対象のデータを更新するデータであるとともにデータ2aによる更新の後にデータ2bによる更新が行われ、かつ、更新対象のデータにおけるデータ2aが更新する部分と、データ2bが更新する部分との少なくとも一部が重複してもよい。すなわち、更新対象のデータに対してデータ2aによる更新が行われた場合、データ2aによって更新された部分の少なくとも一部について、データ2bによってさらに更新される関係であってもよい。データ2aは、データ2bとの重複する部分である更新部分2a1と、更新部分2a1以外の差分2a2とを有するものとする。図1では、一例として、データ2aにおいて、更新部分2a1がデータ2bで更新されるものとする。また、制御部11は、書き込みエラーの発生の有無を判定する。制御部11は、判定の結果、書き込みエラーが発生していないときには、データ2aとデータ2bとを結合する。これにより、制御部11は、データ2bでデータ2aを更新する際、直接データ2aに上書きせず、一旦記憶領域12bに書き込み、エラーが発生しなければデータ2aと結合することで、データ2cを生成する。従って、データ2bの記憶領域12bへの書き込みの際にエラーが発生しても、データ2aをエラーデータであるデータ2bで上書きしてしまうことが抑止できる。
また、制御部11は、書き込みエラーが発生していないときには、記憶領域12aにデータ2bを書き込む結合処理1(第1の結合処理)を実行して、データ2aとデータ2bとを結合してもよい。結合処理1は、データ2aの更新部分2a1をデータ2bで上書きによって更新することで結合し、データ2cを生成する処理である。
また、制御部11は、書き込みエラーが発生していないときには、記憶領域12bにデータ2aにおける更新部分以外の差分を書き込む結合処理2を実行して、データ2aとデータ2bとを結合してもよい。結合処理2は、データ2bに、データ2aにおける更新部分2a1以外の差分2a2を付加し、データ2cを生成する処理である。
また、制御部11は、書き込みエラーが発生していないときには、結合処理1を実行した場合の書き込み量(第1の書き込み量)と、結合処理2を実行した場合の書き込み量(第2の書き込み量)とを比較してもよい。この場合、制御部11は、比較結果に基づいて、結合処理1または結合処理2のいずれかを選択し、選択した処理を実行することができる。制御部11は、比較結果に基づいて、結合処理1または結合処理2のうちの書き込み量が少ない方を選択し、選択した処理を実行してもよい。
記憶領域12aは、データ2aを記憶している。記憶領域12bは、空き領域である。制御部11によってデータ2が記憶領域12bに書き込まれる際、制御部11によりエラーの発生の有無が判定される。データ2が記憶領域12bに書き込まれる際にエラーが発生しなければ、データ2aとデータ2bとが結合される。また、データ2が記憶領域12bに書き込まれる際にエラーが発生しても、データ2bは、データ2aが記憶されている記憶領域12aには書き込まれず、記憶領域12bに書き込まれている。このため、データ2aはエラーデータであるデータ2bによって更新されずに保持される。
以上のように、第1の実施の形態では、制御部11が、記憶領域12aに記憶されているデータ2aをデータ2bによって更新する場合、データ2bを記憶領域12aとは異なる記憶領域12bに書き込み、書き込みエラーの発生の有無を判定する。そして、制御部11は、判定の結果、書き込みエラーが発生していないときには、データ2aとデータ2bとを結合する。これにより、データの更新時に、データがエラーを有するデータで更新されることを抑止することが可能となる。
[第2の実施の形態]
次に、図1に示したストレージ装置1の、エラーデータによるデータの更新を抑止する機能を、RAID(Redundant Arrays of Inexpensive Disks)を構成する記憶デバイス群を有するストレージ装置100に適用した実施の形態を、第2の実施の形態として説明する。
図2は、第2の実施の形態のストレージ装置のハードウェア構成を示す図である。ストレージ装置100は、装置全体の制御を行うCM(Controller Module)110a,110b、記憶デバイス120a,120b,120c,120dを有する。
ストレージ装置100は、後述するハードディスクドライブ等の複数の記憶デバイスに対するデータの入出力を行う。ストレージ装置100は、RAID0〜6等のRAID機能を有し、複数の記憶デバイスをまとめてRAIDを構成することにより、各RAIDをそれぞれ1台の記憶デバイスとして管理する。
ホストコンピュータ300は、業務処理を実行するコンピュータであり、ファイバチャネル(Fibre Channel)で構成されたSAN(Storage Area Network)を介してストレージ装置100とデータ通信可能に接続されている。ホストコンピュータ300は、業務処理に使用するデータについて、ストレージ装置100への保存およびストレージ装置100からの読み出しを行う。
CM110aは、CPU(Central Processing Unit)111a、メモリ112a、デバイスインタフェース(DI:Device Interface)113c,113d、DMA(Direct Memory Access)114a、チャネルアダプタ115c,115dを有する。
CPU111aは、OS(Operating System:オペレーティングシステム)等に従って処理を実行し、各種制御を行う。また、CPU111aは、メモリ112a、チャネルアダプタ115c,115d、記憶デバイス120a,120b,120c,120d等の資源管理を行う。
メモリ112aは、CPU111aがストレージ装置100を制御するために必要な制御データを記憶する。また、メモリ112aは、ホストコンピュータ300から送信され、記憶デバイス120a〜120dに記憶される書き込みデータおよびホストコンピュータ300から送信された読み出し要求に応じて記憶デバイス120a〜120dから読み出され、ホストコンピュータ300に送信される読み出しデータを一時的に記憶する。
デバイスインタフェース113c,113dは、記憶デバイス120a〜120dとの接続制御を行う。
DMA114aは、ファームウェアによる制御に基づき、バス150を介してCM110bとの間で直接データ転送を行う。DMA114a,114bは、バス150によって接続されている。このバス150を介して、DMA114aおよびDMA114bの間でデータが転送される。
チャネルアダプタ115c,115dは、ホストコンピュータ300とCM110aとの接続制御を行う。例えば、チャネルアダプタ115cは、ホストコンピュータ300からの要求を受け付けて、CM110aとの接続制御を行う。CM110a,110bは、それぞれ複数個(図ではそれぞれ2個)のチャネルアダプタを有する。
なお、チャネルアダプタ115c,115dとホストコンピュータ300との間の通信は、ファイバチャネルで構成されたSANによって接続されているが、ファイバチャネル以外の接続方式によって接続されていてもよい。また、チャネルアダプタ115c,115dとホストコンピュータ300との間の通信は、専用線やVPN(Virtual Private Network)を用いて、ストレージ装置100をホストコンピュータ300から遠隔地に設置するように構成してもよい。
また、CM110a,110bは、制御装置として機能し、ストレージ装置100に対し着脱可能である。ここで、CM110bは、CPU111b、メモリ112b、デバイスインタフェース113e,113f、DMA114b、チャネルアダプタ115e,115fを有し、CM110aと同一の構成であるため、説明を省略する。
記憶デバイス120a〜120dは、RAIDを構成可能なハードディスクドライブであり、ホストコンピュータ300から送信されたユーザデータを記憶する。なお、ユーザデータは1個のハードディスクドライブに記憶されている必要はなく、複数のハードディスクドライブに渡って記憶されていてもよい。また、1個のハードディスクドライブに複数のユーザデータが記憶されていてもよい。また、記憶デバイス120a〜120dは、例えば、SSD(Solid State Drive)等の不揮発性半導体メモリやハードディスクドライブ以外の磁気記憶装置、光ディスク、その他のデータの記憶が可能な記憶媒体を使用することができる。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープ等がある。光ディスクには、DVD、DVD−RAM、CD−ROM/RW等がある。
なお、図2において、CM110a,110bは、それぞれ2個図示し、デバイスインタフェース113c〜113fおよびチャネルアダプタ115c〜115fは、CM110a,110bそれぞれに対してそれぞれ2個ずつ図示しているが、これらの数はそれぞれ任意である。
また、図2において、ストレージ装置100に対して1つのホストコンピュータ300が接続されているが、ストレージ装置100に対して複数のホストコンピュータが接続されていてもよい。
また、ストレージ装置100に対してCM110aおよびCM110b制御を受ける、制御部および記憶デバイスを有する増設用装置(図示省略)を接続してもよい。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。
図3は、第2の実施の形態のストレージ装置の機能を示すブロック図である。第2の実施の形態のストレージ装置100は、CM110a,CM110b、記憶デバイス120a〜120dを有する。CM110aは、メモリ112a、チャネルアダプタ115c、制御部116aを有する。メモリ112aは、バッファ領域112a1、キャッシュ領域112a2、実行用領域112a3を有する。制御部116aは、制御レジスタ116a1を有する。CM110aは、CM110bとの間でデータを転送可能である。
CM110bは、制御部116bを有する。制御部116bは、第2の制御部として機能する。なお、以下ではCM110aについて説明するが、CM110bは、CM110aと同一の構成であって同一の機能を有するため、説明を省略する。
CM110aは、ホストコンピュータ300等の上位装置との間の送受信等に基づくデータの記憶デバイス120a〜120dへの読み書きの制御等、ストレージ装置100を制御する。CM110aは、制御装置として機能する。
メモリ112aは、CM110aによって記憶デバイス120a〜120dに読み書きされるデータや、制御部116aによる制御に使用される制御データ等を記憶する。
バッファ領域112a1は、ホストコンピュータ300から送信されたデータやホストコンピュータ300に送信されるデータを一時的に記憶する。
キャッシュ領域112a2は、ホストコンピュータ300から送信され、記憶デバイス120a〜120dに書き込まれる書き込みデータを、記憶デバイス120a〜120dへの書き込みが完了するまでの間、一時的に記憶する。また、キャッシュ領域112a2は、記憶デバイス120a〜120dから読み出され、ホストコンピュータ300に送信される読み出しデータを一時的に記憶する。ここでは、キャッシュ領域112a2のある記憶領域には、先の書き込みデータ(第1のデータ)が記憶されているものとする。また、ホストコンピュータ300から、先の書き込みデータを更新する後の書き込みデータ(第2のデータ)が送信されたものとする。ここで、先の書き込みデータと後の書き込みデータとは、例えば、同一のデータを更新するデータであるとともに先の書き込みデータによる更新の後に、後の書き込みデータによる更新が行われるものとする。また、先の書き込みデータおよび後の書き込みデータの更新対象のデータにおける、先の書き込みデータが更新する部分と、後の書き込みデータが更新する部分との少なくとも一部が重複しているものとする。すなわち、更新対象のデータに対して後の書き込みデータによる更新が行われた場合、先の書き込みデータによって更新された部分の少なくとも一部について、後の書き込みデータの少なくとも一部によってさらに更新される関係であるものとする。キャッシュ領域112a2は、キャッシュ部として機能する。
ここで、キャッシュ領域112a2に書き込みデータが記憶される際、制御部116aは、図6において後述するキャッシュ管理テーブルに記憶されているキャッシュ管理情報を参照して、重複部分を有する先の書き込みデータの存在の有無を判定する。具体的には、制御部116aは、キャッシュ領域112a2の各記憶領域のキャッシュ管理情報を参照し、キャッシュ管理情報のフラグを確認してキャッシュ領域112a2の各記憶領域について書き込みデータのキャッシュデータが記憶されているか否かを判定する。制御部116aは、フラグに基づいて書き込みデータのキャッシュデータが記憶されていると判定した記憶領域について、キャッシュ管理情報のディスク番号および先頭LBAにより、キャッシュ領域112a2に記憶されている書き込みデータの中で、キャッシュ領域112a2に書き込まれる書き込みデータと更新対象のデータが同一である書き込みデータの有無を判定する。制御部116aは、ディスク番号および先頭LBAに基づいてキャッシュ領域112a2に書き込まれる書き込みデータと更新対象が同一である書き込みデータがあった場合、更新対象が同一である書き込みデータが記憶されているキャッシュ領域112a2の記憶領域に対応するキャッシュ管理情報の使用LBAビットマップにより、キャッシュ領域112a2に書き込まれる書き込みデータが更新対象のデータを更新する部分の少なくとも一部と、上記更新対象のデータが同一である書き込みデータが更新対象のデータを更新する部分の少なくとも一部とが重複するか否かを判定する。制御部116aは、判定の結果、キャッシュ領域112a2に書き込まれる書き込みデータが更新する部分の少なくとも一部と、更新対象が同一である書き込みデータが更新する部分の少なくとも一部とが重複する場合には、キャッシュ領域112a2に書き込まれる書き込みデータを後の書き込みデータとし、後の書き込みデータと更新対象が同一である書き込みデータを先の書き込みデータとする。
次に、制御部116aは、キャッシュ領域112a2の先の書き込みデータの少なくとも一部を後の書き込みデータの少なくとも一部によって更新する場合、キャッシュ領域112a2において、後の書き込みデータを先の書き込みデータとは異なる記憶領域に書き込む。制御部116aは、後の書き込みデータをキャッシュ領域112a2に書き込む際、先の書き込みデータが記憶されているキャッシュ領域112a2の記憶領域とは異なる記憶領域であって、かつ、空いている記憶領域に書き込む。具体的には、制御部116aは、キャッシュ管理テーブルを参照して、キャッシュ領域112a2の記憶領域について空き領域であるか否かを判定し、空き領域と判定された記憶領域を選択して後の書き込みデータを記憶させる。すなわち、制御部116aは、キャッシュ領域112a2の記憶領域について、キャッシュ管理テーブルを参照してフラグを取得し、フラグが無効(データが書き込まれていない)であるか否かを判定する。制御部116aは、判定の結果、記憶領域のフラグが無効である場合、上記記憶領域を後の書き込みデータを記憶させる記憶領域に選択する。一方、制御部116aは、判定の結果、記憶領域のフラグが有効(データが書き込まれている)である場合、先の書き込みデータが記憶されている記憶領域以外の記憶領域のうちの次の記憶領域について判定を行う。次に、制御部116aは、選択した記憶領域に後の書き込みデータを記憶させる。
実行用領域112a3は、図6において後述するキャッシュ管理テーブル等のCM110aやストレージ装置100等の制御に使用する制御データを記憶する。実行用領域112a3は、管理情報記憶部として機能する。
チャネルアダプタ115cは、ホストコンピュータ300から送信され、キャッシュ領域112a2に書き込まれるデータにチェックコードを付加して、バッファ領域112a1に書き込む。チャネルアダプタ115cは、付加部として機能する。
制御部116aは、CM110a内におけるデータのバッファ領域112a1、キャッシュ領域112a2への転送や、CM110bとの間のデータ転送を制御する。この際、ストレージ装置100では、パケット単位に分割してデータ転送が行われる。また、制御部116aは、後の書き込みデータのキャッシュ領域112a2への書き込み時に、書き込みエラーの発生の有無を判定する。制御部116aは、判定の結果、書き込みエラーが発生していないときには、先の書き込みデータと後の書き込みデータとを結合して、結合データを生成する。制御部116aは、結合データにより、記憶デバイス120a〜120dに記憶されている先の書き込みデータおよび後の書き込みデータと対応する更新の対象のデータを更新する。
これにより、制御部116aは、後の書き込みデータで先の書き込みデータを更新する際、直接先の書き込みデータに上書きせず、先の書き込みデータとは異なる記憶領域に書き込み、エラーが発生しなければ先の書き込みデータと結合する。従って、後の書き込みデータのキャッシュ領域112a2の記憶領域への書き込みの際にエラーが発生しても、先の書き込みデータをエラーデータである後の書き込みデータで上書きしてしまうことが抑止できる。制御部116aは、CPU111aおよびDMA114aによって実現できる。
また、制御部116aは、書き込みエラーが発生していないときには、先の書き込みデータの記憶領域に後の書き込みデータを書き込む結合処理1(第1の結合処理)を実行して、先の書き込みデータと後の書き込みデータとを結合してもよい。結合処理1は、先の書き込みデータを後の書き込みデータで更新して結合する処理である。
また、制御部116aは、書き込みエラーが発生していないときには、後の書き込みデータの記憶領域に先の書き込みデータにおける更新部分以外の差分を書き込む結合処理2を実行して、先の書き込みデータと後の書き込みデータとを結合してもよい。結合処理2は、後の書き込みデータに、先の書き込みデータにおける更新部分以外の差分を付加する処理である。
また、制御部116aは、書き込みエラーが発生していないときには、結合処理1を実行した場合の結合量1(第1の書き込み量)と、結合処理2を実行した場合の結合量2(第2の書き込み量)とを比較してもよい。この場合、制御部116aは、比較結果に基づいて、結合処理1または結合処理2のいずれかを選択し、選択した処理を実行することができる。制御部116aは、比較結果に基づいて、結合処理1または結合処理2のうちの書き込み量が少ない方を選択し、選択した処理を実行してもよい。
また、制御部116aは、バッファ領域112a1に記憶されている書き込みデータを読み出し、その後、キャッシュ領域112a2に後の書き込みデータを書き込む際に、チャネルアダプタ115cで付加されたチェックコードに基づいてエラーの発生の有無を判定する。ここで、ホストコンピュータ300から送信された後の書き込みデータは、制御部116aの制御に基づき、チャネルアダプタ115cでチェックコードが付加された後にバッファ領域112a1に書き込まれる。その後、後の書き込みデータは、制御部116aにより、キャッシュ領域112a2に書き込まれる際に、チェックコードに基づいてエラーの発生の有無を判定される。これにより、制御部116a(DMA114a)が書き込みデータをバッファ領域112a1からキャッシュ領域112a2に転送する際に、書き込みデータのエラーの発生の有無を判定することができる。なお、これに限らず、制御部116aは、バッファ領域112a1に書き込んだ書き込みデータについてチェックコードにより書き込みデータのエラーの発生の有無を判定してもよい。
ここで、キャッシュ領域112a2に書き込まれている書き込みデータは、既に制御部116aにより、エラーが発生していないと判定されている。これに従い、制御部116aによってエラーの発生の有無が判定されていない、バッファ領域112a1の書き込みデータは、キャッシュ領域112a2の書き込みデータよりもエラーが生じている可能性が高く、信頼性が低いと考えられる。従って、キャッシュ領域112a2に先の書き込みデータが書き込まれているとともに、バッファ領域112a1に後の書き込みデータが記憶されている場合、先の書き込みデータは後の書き込みデータよりも信頼性が高いと考えられる。
このため、制御部116aは、キャッシュ領域112a2の先の書き込みデータと後の書き込みデータとを結合する際に、キャッシュ領域112a2において、先の書き込みデータとは異なる記憶領域に後の書き込みデータを書き込む。制御部116aは、後の書き込みデータの書き込み時にエラーの発生の有無を判定する。制御部116aは、後の書き込みデータの書き込み時にエラーの発生がなければ、結合処理1または結合処理2によって先の書き込みデータおよび後の書き込みデータを結合する。また、後の書き込みデータのキャッシュ領域112a2への書き込み時にエラーが発生した場合にも、先の書き込みデータは後の書き込みデータが書き込まれた記憶領域とは異なる記憶領域に保持されている。これにより、後の書き込みデータの書き込み時にエラーが発生しても、先の書き込みデータに対するエラーデータによる更新を抑止できる。また、先の書き込みデータのホストコンピュータ300への再送要求等をしなくてもよいため、処理の増加を抑制できる。
記憶デバイス120a〜120dは、RAIDを構成するハードディスクドライブ等の記憶デバイスであり、ホストコンピュータ300から送信されたデータやホストコンピュータ300に送信するデータを記憶する。記憶デバイス120a〜120dは、記憶部として機能する。
また、制御部116aは、制御部116bに対してホストコンピュータ300から送信された書き込みデータを送信する。制御部116bは、先の書き込みデータおよび後の書き込みデータを受信すると、制御部116aと同様、送信された先の書き込みデータと後の書き込みデータとを結合して、結合データを生成する。
また、制御部116aは、後の書き込みデータで書き込みエラーが発生したときには、先の書き込みデータと後の書き込みデータとを結合せずに、後の書き込みデータを削除し、ホストコンピュータ300に対してエラーの発生を通知する。また、制御部116aは、書き込みエラーが発生したときには、制御部116で結合された結合データを取得してもよい。
制御レジスタ116a1は、DMA114aが書き込みデータや読み出しデータの制御に使用する制御データを記憶するレジスタである。制御レジスタは、DMA114aに設けてもよい。
なお、第2の実施の形態のストレージ装置100は、RAIDを構成する記憶デバイス群を有するが、これに限らず、1つの記憶デバイスや、RAIDを構成しない複数の記憶デバイス群を有してもよい。また、ストレージ装置100は、パーソナルコンピュータ(personal computer)や携帯情報端末等の記憶デバイスを有する情報処理装置であってもよい。
また、ストレージ装置100は、キャッシュ領域112a2において、先の書き込みデータが記憶されている場合に後の書き込みデータが書き込まれるときに、後の書き込みデータを空き領域に書き込む。しかし、ストレージ装置100は、これに限らず、バッファ領域112a1、記憶デバイス120a〜120d、その他のメモリや記憶媒体において、先の書き込みデータが記憶されている場合に後の書き込みデータが書き込まれるときに、後の書き込みデータを、メモリや記憶媒体の等の空き領域に書き込んでもよい。
また、チェックコードは、書き込みデータに対してチャネルアダプタ115cによって付加されるが、これに限らず、ホストコンピュータ300等の外部装置や制御部116a等の他の内部構成要素によって付加されてもよい。
図4は、第2の実施の形態のキャッシュ領域を示す図である。図4に、第2の実施の形態のストレージ装置が有するメモリ112aに設定されているキャッシュ領域112a2を示す。
キャッシュ領域112a2は、ホストコンピュータ300から送信され記憶デバイス120a〜120dに記憶される書き込みデータや記憶デバイス120a〜120dから読み出されホストコンピュータ300に送信される読み出しデータを一時的に記憶する。キャッシュ領域112a2は、第2の実施の形態では、一例として2GByteの記憶容量を有するものとするが、必ずしもこれに限られず、任意のサイズの記憶容量を有することができる。キャッシュ領域112a2は、所定の管理単位の記憶容量(例えば、64KByte)毎の記憶領域112a21,112a22,112a23,・・・に区分して管理されている。キャッシュ領域112a2は、区分された記憶領域毎に書き込みデータおよび読み出しデータの一時記憶に使用される。
キャッシュ領域112a2の記憶領域(例えば、記憶領域112a21)は、所定の記憶容量(例えば、512Byte)毎のLBA(Logical Block Address)に分割されている。記憶領域112a21には、昇順にLBAのアドレスが設定されており、LBA毎に書き込み処理や読み出し処理が行われる。
図5は、第2の実施の形態の制御レジスタを示す図である。図5に、第2の実施の形態のストレージ装置が有する制御部116aに設定される制御レジスタ116a1を示す。
制御レジスタは、DMA114aが書き込みデータや読み出しデータの制御に使用する制御データを記憶するレジスタである。図5に示す制御レジスタには、“モード”、“DMAサイズ”、“DMA転送先アドレス”、“マージ先頭アドレス”、“マージ最終アドレス”、“書き込みキャッシュ先頭アドレスA”、“書き込みキャッシュ先頭アドレスB”、“書き込みキャッシュサイズ”が、各書き込みデータに対応して設定される。
モードは、DMA114aの制御モードを示す。モードは、DMA114aによる書き込みデータの処理に先立ってCPU111aが設定する。モードには、一例として、“READ”、“WRITE”、“WRITE & MERGE”を設定可能にしてもよい。
READモードの場合、制御部116aは、CM110bから転送されたデータを受信する。WRITEモードの場合、制御部116aは、CM110aからCM110bにデータを転送する。WRITE & MERGEモードの場合、制御部116aは、WRITEモードによりCM110aからCM110bに後の書き込みデータを転送した後、後の書き込みデータと、CM110aのキャッシュ領域112a2の異なる記憶領域に記憶されている先の書き込みデータとの結合を行う。また、CM110aから転送された後の書き込みデータを受信した後、受信した後の書き込みデータと、CM110bの図示しないキャッシュ領域の異なる記憶領域に記憶されている前もってCM110aから転送された先の書き込みデータとの結合を行う。新たな書き込みデータについて、キャッシュ領域112a2に更新対象のデータの少なくとも一部が重複する書き込みデータが存在する場合、CPU111は、WRITE & MERGEモードを設定する。
DMAサイズは、DMA114aによる読み出しまたは書き込みの際のDMAサイズ(Byte数)を示す。DMAサイズは、DMA114aによる書き込みデータの処理に先立ってCPU111aが設定する。
DMA転送先アドレスは、DMA114aによる読み出しまたは書き込みの際の転送先のメモリのアドレスを示す。DMA転送先アドレスは、DMA114aによる書き込みデータの処理に先立ってCPU111aが設定する。
マージ先頭アドレスは、WRITE & MERGEモードにおける書き込みデータの結合時に使用される。マージ先頭アドレスは、後の書き込みデータに対して更新対象のデータの少なくとも一部が重複する先の書き込みデータが存在する場合、後の書き込みデータとの結合の対象であり、先に存在する先の書き込みデータが記憶されている、キャッシュ領域112a2の記憶領域における先頭アドレスを示す。マージ先頭アドレスは、DMA114aによる書き込みデータの処理に先立ってCPU111aが設定する。
マージ最終アドレスは、マージ先頭アドレスと同様、WRITE & MERGEモードにおける書き込みデータの結合時に使用される。マージ最終アドレスは、書き込みデータに対して更新対象の領域の少なくとも一部が重複する書き込みデータが存在する場合、後の書き込みデータとの結合の対象であり、先に存在する先の書き込みデータが記憶されている、キャッシュ領域112a2の記憶領域における最終アドレスを示す。マージ最終アドレスは、DMA114aによる書き込みデータの処理に先立ってCPU111aが設定する。
書き込みキャッシュ先頭アドレスAは、マージ先頭アドレスと同様、WRITE & MERGEモードにおける書き込みデータの結合時に使用される。書き込みキャッシュ先頭アドレスAは、書き込みデータに対して更新対象の領域の少なくとも一部が重複する書き込みデータが存在する場合、先に存在する先の書き込みデータが記憶されているキャッシュ領域112a2の記憶領域の先頭アドレスを示す。書き込みキャッシュ先頭アドレスAは、DMA114aによる書き込みデータの処理に先立ってCPU111aが設定する。
書き込みキャッシュ先頭アドレスBは、マージ先頭アドレスと同様、WRITE & MERGEモードにおける書き込みデータの結合時に使用される。書き込みキャッシュ先頭アドレスBは、書き込みデータに対して更新対象の領域の少なくとも一部が重複する書き込みデータが存在する場合、後から書き込まれる後の書き込みデータが記憶されているキャッシュ領域112a2の記憶領域の先頭アドレスを示す。書き込みキャッシュ先頭アドレスBは、DMA114aによる書き込みデータの処理に先立ってCPU111aが設定する。
書き込みキャッシュサイズは、マージ先頭アドレスと同様、WRITE & MERGEモードにおける書き込みデータの結合時に使用される。書き込みキャッシュサイズは、キャッシュ領域112a2が有する各記憶領域の1つあたりの記憶容量を示す。書き込みキャッシュサイズは、DMA114aによる書き込みデータの処理に先立ってCPU111aが設定する。
なお、図5に示した制御レジスタ116a1は一例であり、制御レジスタには任意の項目を設定することができる。
図6は、第2の実施の形態のキャッシュ管理テーブルを示す図である。図6に示すキャッシュ管理テーブル112a31は、第2の実施の形態のストレージ装置100が有するメモリ112aの実行用領域112a3に設定される。キャッシュ管理テーブル112a31は、ストレージ装置100のキャッシュ領域112a2が有する各記憶領域の書き込みデータを管理するテーブルである。
キャッシュ管理テーブル112a31には、項目として“先頭アドレス”、“フラグ”、“ディスク番号”、“先頭LBA”、“使用LBAビットマップ(bitmap)”が設けられている。キャッシュ管理テーブル112a31には、上記項目に設定された値が、キャッシュ領域112a2が有するそれぞれの記憶領域のキャッシュ管理情報として互いに関連付けられる。
先頭アドレスは、キャッシュ管理情報で管理されるキャッシュ領域112a2の記憶領域を示すアドレスである。キャッシュ管理情報は、キャッシュ領域112a2の記憶領域に対して1対1で設定される。
フラグは、記憶領域に記憶されている書き込みデータまたは読み出しデータが有効であるか無効であるかを示す。例えば、記憶領域のデータが無効であれば、“0”が設定され、有効であれば、“1”が設定される。なお、フラグは、記憶領域に記憶されているデータが書き込みデータであるか読み出しデータであるかを示してもよい。この場合、例えば、記憶領域のデータが無効であれば、“0”が設定され、記憶領域のデータが有効であるとともに書き込みデータであれば、“1”が設定され、記憶領域のデータが有効であるとともに読み出しデータであれば、“2”が設定されてもよい。
ディスク番号は、記憶領域に記憶されている書き込みデータまたは読み出しデータを記憶している記憶デバイス120a〜120dを示す。
先頭LBAは、記憶領域に記憶されている書き込みデータまたは読み出しデータに対応するデータが記憶されている記憶デバイス120a〜120dにおける管理単位分の記憶領域の先頭アドレスを示す。
使用LBAビットマップは、記憶領域に記憶されている書き込みデータまたは読み出しデータにおける有効な部分を示す。第2の実施の形態では、データのアクセス単位は512Byteとする。このため、使用LBAビットマップは、512Byteの実際のデータにつき1bitのビットマップ情報としてもよい。
なお、図6に示したキャッシュ管理テーブル112a31は一例であり、キャッシュ管理テーブルには任意の項目を設定することができる。
図7は、比較例のストレージ装置の書き込み処理におけるエラーの検出を示す図である。図7(A)は、比較例のストレージ装置において先の書き込みデータ640がパケット単位に分割されて書き込まれている記憶領域512a24に、後の書き込みデータ650が上書きされる場合を示す。図7(B)は、その後、比較例のストレージ装置において記憶領域512a24に、後の書き込みデータ650がパケット単位で書き込まれている際に、エラーを有するパケット654が検出された場合を示す。図7(A)、図7(B)では、比較例のストレージ装置が書き込み処理を行い、エラーが発生した場合について説明する。比較例のストレージ装置は、所定の管理単位(例えば、64KByte)の記憶領域512a24を有する。
図7(A)に示すように、比較例のストレージ装置において、バッファ領域からキャッシュ領域の記憶領域512a24に先の書き込みデータ640が書き込まれているものとする。この場合において、後の書き込みデータ650が記憶領域512a24に対して書き込まれることにより、データ640の一部(図7(A)の更新部分)上書きが行われるものとする。ここで、データ650は、パケット651,652,653,654,655,656に所定のサイズで区分され、パケット単位で転送、書き込みおよび読み出しが行われる。ここで、パケット654は、エラーデータであるものとする。
図7(B)に示すように、その後、比較例のストレージ装置において、データ650のパケット651,652,653,654,655,656が順次記憶領域512a24に書き込まれる。これにより、データ640の一部が更新される。更新後のデータをデータ640bとする。ここで、上記のように、パケット654がエラーデータであるため、比較例のストレージ装置において、DMAがパケット654の記憶領域512a24への書き込み時にエラーを検出し、データ650の転送および書き込みを中止する。しかし、比較例のストレージ装置がパケット654のエラーを検出した時点では、既にパケット651〜653が記憶領域512a24に書き込まれている。また、エラーを有するデータ(例えば、パケット654)で更新された部分を特定し、特定した部分を再取得して訂正するのが困難である場合や、エラーが一部(パケット654)に生じているデータ650全体の信頼性を低く評価する場合には、データ640bにおけるデータ650によって更新された部分や、更新される予定であった部分全体をエラーデータとして扱う場合がある。
これに対し、第2の実施の形態のストレージ装置100は、予め先の書き込みデータと異なる領域に後の書き込みデータを書き込んでエラーの有無を検出し、エラーが発生していない場合に先の書き込みデータと後の書き込みデータとを結合するので、先の書き込みデータがエラーデータとなることを抑止できる。
図8は、第2の実施の形態の後の書き込みデータに先の書き込みデータの差分を付加して結合する際の動作を示す図である。図8(A)は、第2の実施の形態のストレージ装置100において、キャッシュ領域112a2の記憶領域112a25に先の書き込みデータ310が書き込まれる際の動作を示す。図8(B)は、第2の実施の形態のストレージ装置100において、キャッシュ領域112a2の記憶領域112a26に後の書き込みデータ320が書き込まれるとともに、結合量が比較される際の動作を示す。図8(C)は、第2の実施の形態のストレージ装置100において、結合量の比較の結果に基づいて、後の書き込みデータ320に先の書き込みデータの差分である差分データ311,313が付加されて結合される際の動作を示す。記憶領域112a25,112a26は、ともに所定の記憶容量(例えば、64KByte)毎に区分された管理単位であるものとする。
図8(A)に示すように、ストレージ装置100において、ホストコンピュータ300から送信された先の書き込みデータである書き込みデータ310が受信され、記憶領域112a25に対して書き込まれたものとする。この場合、ストレージ装置100は、書き込みデータ310の書き込みに基づいて、記憶領域112a25のキャッシュ管理情報を設定する。この時点では、記憶領域112a26は、空き領域であるものとする。ここで、キャッシュ領域112a2の各記憶領域が空き領域であるか否かは、各記憶領域に対応するキャッシュ管理情報のフラグにより示される。制御部116aは、例えば、キャッシュ領域112a2の各記憶領域のキャッシュ管理情報のフラグに基づいて、記憶領域が空き領域であるか否かを判定し、判定結果に基づいて、記憶領域112a25等の空き領域にデータを書き込むことができる。
次に、図8(B)に示すように、ストレージ装置100において、ホストコンピュータ300から送信された後の書き込みデータである書き込みデータ320が記憶領域112a26に対してエラーが発生せず、正常に書き込まれたものとする。この場合、ストレージ装置100は、書き込みデータ320の書き込みに基づいて、記憶領域112a26のキャッシュ管理情報を設定する。また、ストレージ装置100は、結合処理1を実行した場合の書き込み量である結合量1を算出する。ここで、結合処理1は、書き込みデータ310が記憶されている記憶領域112a25に、書き込みデータ320を上書きして書き込む処理となる。これにより、結合量1は、書き込みデータ320のデータサイズを示す、データサイズ320aとなる。また、ストレージ装置100は、結合処理2を実行した場合の書き込み量である結合量2を算出する。ここで、結合処理2は、書き込みデータ320が記憶されている記憶領域112a26に、書き込みデータ320によって書き込みデータ310を上書きした場合の更新部分以外の差分データ311,313を書き込む処理となる。これにより、結合量2は、書き込みデータ310の差分データ311,313のそれぞれのデータサイズを示す、データサイズ311a,313aの合計値となる。次に、ストレージ装置100は、結合量1および結合量2を比較し、比較結果に基づいて結合処理1または結合処理2を実行する。ここでは、結合量1よりも結合量2の方が小さいものとする。
次に、図8(C)に示すように、結合量の比較の結果に基づき、結合2が小さいので、ストレージ装置100は、結合処理2を実行する。すなわち、ストレージ装置100は、書き込みデータ320が記憶されている記憶領域112a26に差分データ311,313を付加して結合することにより、結合データ320bを生成する。また、ストレージ装置100は、記憶領域112a26の更新に伴い、書き込みデータ310の書き込みに基づくキャッシュ管理情報を無効にするとともに、書き込みデータ320の書き込みに基づくキャッシュ管理情報を修正する。これにより、書き込みデータ310は、記憶領域112a25から削除される。また、キャッシュ領域112a2に記憶されているデータの記憶デバイス120a〜120dへの書き込み処理の際に、記憶領域112a26の結合データ320bが記憶デバイス120a〜120dの更新の対象データに上書きされる。
図9は、第2の実施の形態の後の書き込みデータによって先の書き込みデータに上書きして結合する際の動作を示す図である。図9(A)は、第2の実施の形態のストレージ装置100において、キャッシュ領域112a2の記憶領域112a25に先の書き込みデータ330が書き込まれる際の動作を示す。図9(B)は、第2の実施の形態のストレージ装置100において、キャッシュ領域112a2の記憶領域112a26に後の書き込みデータ340が書き込まれるとともに、結合量が比較される際の動作を示す。図9(C)は、第2の実施の形態のストレージ装置100において、結合量の比較の結果に基づいて、先の書き込みデータ330が後の書き込みデータ340によって上書きによって結合される際の動作を示す。
図9(A)に示すように、ストレージ装置100において、ホストコンピュータ300から送信された先の書き込みデータである書き込みデータ330が受信され、記憶領域112a25に対して書き込まれたものとする。この場合、ストレージ装置100は、書き込みデータ330の書き込みに基づいて、記憶領域112a25のキャッシュ管理情報を設定する。この時点では、記憶領域112a26は、空き領域であるものとする。
次に、図9(B)に示すように、ストレージ装置100において、ホストコンピュータ300から送信された後の書き込みデータである書き込みデータ340が記憶領域112a26に対してエラーが発生せず、正常に書き込まれたものとする。この場合、ストレージ装置100は、書き込みデータ340の書き込みに基づいて、記憶領域112a26のキャッシュ管理情報を設定する。また、ストレージ装置100は、結合量1および結合量2を算出する。図9(B)では、結合量1は、書き込みデータ340のデータサイズ340aとなる。また、結合量2は、差分データ331,333のそれぞれのデータサイズ331a,333aの合計値となる。次に、ストレージ装置100は、結合量1および結合量2を比較し、比較結果に基づいて結合処理1または結合処理2を実行する。ここでは、結合量2よりも結合量1の方が小さいものとする。
次に、図9(C)に示すように、結合量の比較の結果に基づき、結合処理1が小さいので、ストレージ装置100は、結合処理1を実行する。すなわち、ストレージ装置100は、書き込みデータ330が記憶されている記憶領域112a25に書き込みデータ340が上書きして結合することにより、結合データ330bを生成する。また、ストレージ装置100は、記憶領域112a25の更新に伴い、書き込みデータ340の書き込みに基づくキャッシュ管理情報を無効にする。また、ストレージ装置100は、記憶領域112a25の更新に伴い、結合データ330bの有効な範囲のアドレスに応じて、適宜書き込みデータ330の書き込みに基づくキャッシュ管理情報を修正する。これにより、書き込みデータ340は、記憶領域112a26から削除される。また、キャッシュ領域112a2に記憶されているデータの記憶デバイス120a〜120dへの書き込み処理により、記憶領域112a25の結合データ330bが記憶デバイス120a〜120dの更新対象のデータに上書きされる。
このように第2の実施の形態のストレージ装置100では、図8および図9に示すように、先の書き込みデータおよび後の書き込みデータに応じて、結合処理1、結合処理2のうち書き込みデータ量が少ない処理が実行される。これにより、結合処理によるストレージ装置100の負荷を抑制可能である。また、結合による書き込みデータ量を削減することに基づき、書き込み処理による転送時のエラーの発生を抑制できる。
図10は、第2の実施の形態の後の書き込みデータの書き込み時にエラーが発生した際の動作を示す図である。図10(A)は、第2の実施の形態のストレージ装置100において、キャッシュ領域112a2の記憶領域112a25に先の書き込みデータ350が書き込まれる際の動作を示す。図10(B)は、第2の実施の形態のストレージ装置100において、キャッシュ領域112a2の記憶領域112a26に後の書き込みデータ360が書き込まれた場合に、書き込みエラーが検出された際の動作を示す。図10(C)は、第2の実施の形態のストレージ装置100において、エラーが検出された書き込みデータ360が記憶領域112a26から削除される際の動作を示す。
図10(A)に示すように、ストレージ装置100において、ホストコンピュータ300から送信された先の書き込みデータである書き込みデータ350が受信され、記憶領域112a25に対して書き込まれたものとする。この場合、ストレージ装置100は、書き込みデータ350の書き込みに基づいて、記憶領域112a25のキャッシュ管理情報を設定する。この時点では、記憶領域112a26は、空き領域であるものとする。
次に、図10(B)に示すように、ストレージ装置100において、ホストコンピュータ300から送信された後の書き込みデータである書き込みデータ360が記憶領域112a26に対して書き込まれた際に、書き込みエラーが発生したものとする。この場合、ストレージ装置100は、記憶領域112a26に書き込まれた書き込みデータ360の全体をエラーデータとして扱う。また、ストレージ装置100は、エラーデータである書き込みデータ360の書き込みに対して記憶領域112a26のキャッシュ管理情報を設定しない。
次に、図10(C)に示すように、記憶領域112a26に書き込まれた書き込みデータ360がエラーデータであったので、ストレージ装置100は、データの結合を実行しない。また、書き込みデータ360は、記憶領域112a26のキャッシュ管理情報が無効であるため、記憶デバイス120a〜120dの更新対象のデータに上書きされない。また、ストレージ装置100は、書き込みデータ360のエラーの発生に基づき、記憶領域112a25の書き込みデータ350を保持しながらホストコンピュータ300に対して書き込みデータ360の書き込みエラー発生を通知する。書き込みデータ360の書き込みエラー発生の通知を受信したホストコンピュータ300は、書き込みデータ360の再送を行ってもよい。書き込みデータ350の更新対象のデータへの上書きまでに書き込みデータ360の再送があり、再送された書き込みデータ360の書き込みにエラーが発生しなければ、書き込みデータ350,360の結合が実行される。これに従い、キャッシュ領域112a2に記憶されているデータの記憶デバイス120a〜120dへの書き込み処理により、結合データで更新対象のデータが更新される。再送がなければ、キャッシュ領域112a2に記憶されているデータの記憶デバイス120a〜120dへの書き込み処理により、記憶領域112a25の書き込みデータ350によって記憶デバイス120a〜120dの更新対象のデータが更新される。
このように第2の実施の形態では、図10に示すように、後の書き込みデータの記憶領域112a26への書き込み時にエラーが発生したものとする。この場合には、ストレージ装置100において書き込みデータ350,360の結合が行われず、書き込みデータ350がエラーデータである書き込みデータ360で上書きされずに保持される。これにより、ストレージ装置100は、例えばホストコンピュータ300に対して書き込みデータ360の再送を要求する。次にストレージ装置100は、書き込みデータ360単独で記憶デバイス120a〜120dの更新対象データの更新を行う。または、ストレージ装置100は、書き込みデータ350,360を結合し、結合データで記憶デバイス120a〜120dの更新対象データの更新を行ってもよい。
これにより、書き込みデータ350の再送の要求を行わなくてもよいため、ストレージ装置100やホストコンピュータ300の処理の負荷を抑制できる。
図11は、第2の実施の形態のホストコンピュータから送信された先の書き込みデータをキャッシュ領域に書き込む際の動作を示す図である。第2の実施の形態のストレージ装置100は、図11に示すように、ホストコンピュータ300と接続されているとともに、CM110a,110b、記憶デバイス120a〜120dを有する。CM110aは、CPU111a、メモリ112a、デバイスインタフェース113c、DMA114a、チャネルアダプタ115cを有する。CM110bは、CPU111b、メモリ112b、デバイスインタフェース113e、DMA114b、チャネルアダプタ115eを有する。メモリ112aは、バッファ領域112a1、キャッシュ領域112a2を有する。メモリ112bは、バッファ領域112b1、キャッシュ領域112b2を有する。DMA114a,114bは、互いに接続されており、両者の間でデータ転送が可能である。
図11に示すように、ストレージ装置100は、ホストコンピュータ300から記憶デバイス120a〜120dに記憶されているデータを更新する書き込みデータ410を受信したものとする。この場合、ストレージ装置100は、チャネルアダプタ115cにおいて受信した書き込みデータ410に対してパケット毎にエラー検出に使用するチェックコードを付加し、チェックコードを付加した書き込みデータ410をバッファ領域112a1に書き込む。ストレージ装置100は、DMA114aによってバッファ領域112a1に記憶されている書き込みデータ410を読み出す。ストレージ装置100は、DMA114aによって、読み出した書き込みデータ410についてチャネルアダプタ115cで付加したチェックコードを用いてパケット毎にエラーの検出の有無を判定する。ストレージ装置100は、DMA114aによって、エラーが検出されなければ、パケット毎に書き込みデータ410をキャッシュ領域112a2に書き込むともに、DMA114bを介してCM110bに転送する。ストレージ装置100は、書き込みデータ410のキャッシュ領域112a2への書き込みおよびCM110bへの転送の完了後、ホストコンピュータ300に対して書き込みデータ410の書き込みを応答する。CM110bに転送された書き込みデータ410は、DMA114bによりキャッシュ領域112b2に書き込まれる。これにより、書き込みデータ410が、CM110a,110bにおいて2重化される。
図12は、第2の実施の形態のホストコンピュータから送信された後の書き込みデータをキャッシュ領域に書き込む際の動作を示す図である。第2の実施の形態のストレージ装置100は、図11と同様、図12に示すように、ホストコンピュータ300と接続されているとともに、CM110a,110b、記憶デバイス120a〜120dを有する。CM110aは、CPU111a、メモリ112a、デバイスインタフェース113c、DMA114a、チャネルアダプタ115cを有する。CM110bは、CPU111b、メモリ112b、デバイスインタフェース113e、DMA114b、チャネルアダプタ115eを有する。メモリ112aは、バッファ領域112a1、キャッシュ領域112a2を有する。メモリ112bは、バッファ領域112b1、キャッシュ領域112b2を有する。
図12に示すように、ストレージ装置100は、図11に示した状態、ホストコンピュータ300から記憶デバイス120a〜120dに記憶されているデータを更新する書き込みデータ420を受信したものとする。ここで、書き込みデータ420は、データ410が更新する対象のデータと同一のデータを更新するものとする。また、書き込みデータ420が更新する対象のデータを更新する部分の一部または全部と、書き込みデータ410が更新する対象のデータを更新する一部または全部とが重複するものとする。すなわち、書き込みデータ420を後の書き込みデータとした場合、書き込みデータ410は、先の書き込みデータの関係に該当する。この場合、ストレージ装置100は、チャネルアダプタ115cにおいて受信した書き込みデータ420に対してパケット毎にチェックコードを付加し、チェックコードを付加した書き込みデータ420をバッファ領域112a1に書き込む。ストレージ装置100は、DMA114aによってバッファ領域112a1に記憶されている書き込みデータ420を読み出す。ストレージ装置100は、DMA114aによって、読み出した書き込みデータ420についてチェックコードを用いてエラーの検出の有無を判定する。ストレージ装置100は、DMA114aによって、エラーが検出されなければ、パケット毎に書き込みデータ420をキャッシュ領域112a2に書き込むとともに、DMA114bを介してCM110bに転送する。このとき、ストレージ装置100は、DMA114aによって、キャッシュ領域112a2における、書き込みデータ410が記憶されている記憶領域と異なるとともに、空いている記憶領域に書き込みデータ420を書き込む。CM110bに転送された書き込みデータ420は、DMA114bによりキャッシュ領域112b2に書き込まれる。これにより、書き込みデータ420が、CM110a,110bにおいて2重化される。
図13は、第2の実施の形態の先の書き込みデータと後の書き込みデータとを結合した結合データを記憶デバイスに書き込む際の動作を示す図である。第2の実施の形態のストレージ装置100は、図11と同様、図13に示すように、ホストコンピュータ300と接続されているとともに、CM110a,110b、記憶デバイス120a〜120dを有する。CM110aは、CPU111a、メモリ112a、デバイスインタフェース113c、DMA114a、チャネルアダプタ115cを有する。CM110bは、CPU111b、メモリ112b、デバイスインタフェース113e、DMA114b、チャネルアダプタ115eを有する。メモリ112aは、バッファ領域112a1、キャッシュ領域112a2を有する。メモリ112bは、バッファ領域112b1、キャッシュ領域112b2を有する。
図13に示すように、ストレージ装置100は、図12に示した状態、DMA114aによって、キャッシュ領域112a2の書き込みデータ410,420の結合を実行し、結合データ430を生成したものとする。このときストレージ装置100は、結合処理1または結合処理2によって書き込みデータ410の一部である差分データ411および書き込みデータ420を有する結合データ430を生成する。ストレージ装置100は、書き込みデータ420のCM110bへの転送および書き込みデータ410,420の結合の完了後、ホストコンピュータ300に対して書き込みデータ420の書き込みを応答する。また、このときCM110bにおいても、DMA114bにより、キャッシュ領域112b2の書き込みデータ410,420の結合が実行され、結合データ430が生成される。これにより、結合データ430が、CM110a,110bにおいて2重化される。また、ストレージ装置100は、所定の契機に基づいて、CPU111aおよびデバイスインタフェース113cによって、キャッシュ領域112a2に記憶されている結合データ430を用いて、記憶デバイス120a〜120dの更新対象のデータを更新する。これにより、差分データ411による更新(書き込みデータ410の更新)および書き込みデータ420による更新が、記憶デバイス120a〜120dの更新対象のデータに反映される。所定の契機は、例えば、キャッシュ領域112a2の記憶量が所定の閾値や所定の比率を超えた場合、キャッシュ領域112a2の記憶量が所定の閾値や比率を超えた後、さらに所定の時間が経過した場合等、任意の条件で設定することができる。また、ストレージ装置100内の処理に余裕が生じた場合等であってもよい。
図14は、第2の実施の形態の更新判定処理を示すフローチャートである。第2の実施の形態のストレージ装置100は、CM110aが記憶デバイス120a〜120dに記憶される書き込みデータをホストコンピュータ300から受信したものとする。この場合、受信した書き込みデータを一時的にバッファ領域112a1に書き込み、同一のデータを更新するデータが既にキャッシュ領域112a2に書き込まれているか否かを判定する更新判定処理を実行する。以下では、図14に示す更新判定処理をフローチャートのステップ番号に沿って説明する。
[ステップS11]制御部116aは、ホストコンピュータ300から送信された書き込みデータを受信すると、受信した書き込みデータをバッファ領域112a1に書き込む。
[ステップS12]制御部116aは、実行用領域112a3に記憶されているキャッシュ管理テーブル112a31を参照して、更新対象のデータが少なくとも一部重複する書き込みデータがキャッシュ領域112a2に存在するか否かを判定する。重複する書き込みデータがキャッシュ領域112a2に存在すれば(ステップS12 YES)、処理はステップS13に進められる。一方、重複する書き込みデータがキャッシュ領域112a2に存在しなければ(ステップS12 NO)、処理はステップS14に進められる。
[ステップS13]制御部116aは、ステップS11でバッファ領域112a1に書き込んだ書き込みデータをキャッシュ領域112a2の空き領域に書き込んでエラーの有無を判定する書き込みエラー検出処理を実行する。書き込みエラー検出処理については、詳しくは図15において後述する。その後、処理は終了する。
[ステップS14]制御部116aは、ステップS11でバッファ領域112a1に書き込んだ書き込みデータを、キャッシュ領域112a2の空き領域に書き込む。このとき、制御部116aは、書き込みデータについて制御レジスタを設定する。キャッシュ領域112a2の空き領域に書き込まれたデータは、記憶デバイス120a〜120dに記憶されている対象データの更新に使用される。その後、処理は終了する。
図15は、第2の実施の形態の書き込みエラー検出処理を示すフローチャートである。第2の実施の形態のストレージ装置100は、更新判定処理において同一対象を更新するデータがキャッシュ領域112a2に存在する場合、CM110aのキャッシュ領域112a2の空き領域に書き込みデータを書き込む書き込みエラー検出処理を実行する。以下では、図15に示す書き込みエラー検出処理をフローチャートのステップ番号に沿って説明する。
[ステップS21]制御部116aは、CM110aのキャッシュ領域112a2の空き領域に書き込みデータを書き込む。また、制御部116aは、CM110bに書き込みデータを転送する。CM110bは、転送された書き込みデータを図示しないキャッシュ領域の空き領域に書き込む。CM110bに転送された書き込みデータは、CM110aの書き込みデータと同様に処理される。
[ステップS22]制御部116aは、ステップS21における書き込みデータのキャッシュ領域112a2への書き込みにおいて、エラーが発生したか否かを判定する。エラーが発生していれば(ステップS22 YES)、処理はステップS24に進められる。一方、エラーが発生していなければ(ステップS22 NO)、処理はステップS23に進められる。
[ステップS23]制御部116aは、ステップS12で検出されたキャッシュ領域112a2に存在する同一対象を更新するデータと、ステップS21でキャッシュ領域112a2に書き込んだ書き込みデータとを結合するデータ結合処理を実行する。データ結合処理については、詳しくは図16において後述する。その後、処理は更新判定処理に復帰する。
[ステップS24]制御部116aは、ステップS21の書き込みにより発生したエラーに対する処理を行う。ここでは、制御部116aは、エラーが発生した書き込みデータを物理的に消去または論理的に無効にして記憶領域を開放してもよい。また、制御部116aは、ホストコンピュータ300に対して書き込みデータのエラーを通知してもよい。ホストコンピュータ300は、エラーの通知に基づいて、書き込みデータおよび書き込み指示を再送してもよい。また、書き込みエラーが発生した場合、制御部116aは、CM110bにおいて対応する書き込みにエラーが発生せず、結合が行われた場合には、結合データをCM110bから取得してもよい。この場合、制御部116aは、取得したデータで記憶デバイス120a〜120dの更新対象のデータを更新してもよい。その後、処理は更新判定処理に復帰する。
図16は、第2の実施の形態のデータ結合処理を示すフローチャートである。第2の実施の形態のストレージ装置100は、書き込みエラー検出処理においてエラーが発生しなかった場合、データの書き込み量を比較し、書き込み量が少ない結合処理で先の書き込みデータおよび後の書き込みデータを結合するデータ結合処理を実行する。以下では、図16に示すデータ結合処理をフローチャートのステップ番号に沿って説明する。
[ステップS31]制御部116aは、書き込みデータについて制御レジスタを設定する。このとき、キャッシュ領域112a2に書き込まれる後の書き込みデータについて制御レジスタが設定される。なお、先の書き込みデータについては、更新判定処理のステップS14において制御レジスタが設定されているものとする。
[ステップS32]制御部116aは、結合量1および結合量2を算出する。結合量1は、後の書き込みデータを先の書き込みデータの記憶領域に書き込む結合処理1の実行時の書き込み量である。結合量2は、先の書き込みデータの差分を後の書き込みデータに付加する結合処理2の実行時の書き込み量である。
ここで、結合量1および結合量2の算出方法について説明する。
結合量1は、キャッシュ領域112a2の先の書き込みデータが書き込まれている記憶領域に、後の書き込みデータが書き込んだ場合(結合処理1)の書き込み量である。このため、結合量1は、後の書き込みデータのサイズと等しいので、後の書き込みデータの書き込み時の制御レジスタ116a1のDMAサイズで示すことができる。また、結合量1は、キャッシュ領域112a2の記憶領域に記憶されている書き込みデータのサイズから取得してもよい。
結合量2は、キャッシュ領域112a2の後の書き込みデータが書き込まれている記憶領域に、先の書き込みデータにおける後の書き込みデータで更新されない差分を付加して書き込んだ場合(結合処理2)の書き込み量である。このため、結合量2は、先の書き込みデータの差分のデータ量である。結合量2は、例えば、以下に示す式(1)によって算出することができる。
結合量2=結合量2A+2B … (1)
ここで、結合量2Aは、後の書き込みデータの制御レジスタ116a1の値および以下に示す式(2)〜(6)を用いて算出される。
結合量2A1=マージ先頭アドレス−書き込みキャッシュ先頭アドレスA … (2)
結合量2A2=DMA転送先アドレス−書き込みキャッシュ先頭アドレスB… (3)
以下の式(4)が成立する場合、結合量2Aは、後述する式(5)で算出されるものとする。また、式(4)が成立しない場合、結合量2Aは、後述する式(6)で定義されるものとする。
結合量2A1<結合量2A2 … (4)
結合量2A=結合量2A2−結合量2A1 … (5)
結合量2A=0 … (6)
また、結合量2Bは、後の書き込みデータの制御レジスタ116a1の値および以下に示す式(7)〜(11)を用いて算出される。
結合量2B1=(書き込みキャッシュ先頭アドレスA+書き込みキャッシュサイズ)−(マージ最終アドレス) … (7)
結合量2B2=(書き込みキャッシュ先頭アドレスB+書き込みキャッシュサイズ)−(DMA転送先アドレス+DMAサイズ) … (8)
ここで、以下の式(9)が成立する場合、結合量2Bは、後述する式(10)で算出されるものとする。また、式(9)が成立しない場合、結合量2Bは、後述する式(11)で定義されるものとする。
結合量2B1<結合量2B2 … (9)
結合量2B=(マージ最終アドレス−書き込みキャッシュ先頭アドレスA)−(DMA転送先アドレス+DMAサイズ)−書き込みキャッシュ先頭アドレスB(=結合量2B2−結合量2B1) … (10)
結合量2B=0 … (11)
[ステップS33]制御部116aは、ステップS32の算出結果に基づき、結合量1および結合量2の大小を比較する。結合量2が結合量1以上であれば(ステップS33 YES)、処理はステップS34に進められる。一方、結合量2が結合量1未満であれば(ステップS33 NO)、処理はステップS35に進められる。
[ステップS34]制御部116aは、後の書き込みデータで先の書き込みデータを上書きする結合処理1を実行する。その後、処理は書き込みエラー検出処理に復帰する。
[ステップS35]制御部116aは、先の書き込みデータの差分を後の書き込みデータに付加する結合処理2を実行する。その後、処理は書き込みエラー検出処理に復帰する。
以上のような第2の実施の形態のストレージ装置100は、先の書き込みデータの更新時に、先の書き込みデータがエラーを有する後の書き込みデータで更新されることを抑止することができる。
また、先の書き込みデータおよび後の書き込みデータを結合する際に、結合処理1により、先の書き込みデータに後の書き込みデータを上書きすることができる。これにより、後の書き込みデータのサイズが先の書き込みデータの差分のサイズよりも小さい場合には、結合量を抑制することができる。従って、ストレージ装置100の負荷を抑制でき、結合によるエラーの発生の確率を抑制することができる。
また、先の書き込みデータおよび後の書き込みデータを結合する際に、結合処理2により、後の書き込みデータに先の書き込みデータの差分を付加することができる。これにより、先の書き込みデータの差分のサイズが後の書き込みデータのサイズよりも小さい場合には、結合量を抑制することができる。従って、ストレージ装置100の負荷を抑制でき、結合によるエラーの発生の確率を抑制することができる。
また、結合量1および結合量2を算出し、比較結果に基づいて結合処理1および結合処理2のうちの書き込み量が少ない方を選択して実行する。これにより、結合処理1および結合処理2のうち、書き込み量が少ない処理を実行できるので、ストレージ装置100の負荷や書き込み処理によるエラー発生の確率の増加を抑制できる。
また、チャネルアダプタ115cによりキャッシュ領域112a2に書き込まれる書き込みデータに予めチェックコードを付加し、制御部116aがチェックコードに基づいてエラーの発生の有無を判定する。これにより、制御部116aは、キャッシュ領域112a2への書き込みの際の間のエラーの発生の有無を判定できる。
また、先の書き込みデータおよび後の書き込みデータの結合データによって記憶デバイス120a〜120dの更新対象データを更新するので、記憶デバイス120a〜120dへの書き込み回数を削減でき、ストレージ装置100の負荷の増加を抑制できる。
また、CM110bにおいてもCM110aにおいて同様の処理等による結合を行うことで、結合されるデータ2重化によりCM110aにおいてエラーの発生時等に対処可能になる。
また、後の書き込みデータの書き込み時に書き込みエラーが発生した場合には、結合せずに後の書き込みデータを削除するので、先の書き込みデータを保持でき、先の書き込みデータを再送しなくてもよいので、ストレージ装置100の負荷の増加を抑制できる。
また、後の書き込みデータの書き込み時に書き込みエラーが発生した場合には、エラーの発生をホストコンピュータ300に通知するので、ホストコンピュータ300から後の書き込みデータが再送される。これにより、ストレージ装置100やホストコンピュータ300の処理の遅延を抑制することができる。
[第2の実施の形態の変形例]
次に、第2の実施の形態の変形例を説明する。第2の実施の形態との差異を中心に説明し、同様の事項については説明を省略する。第2の実施の形態の変形例のストレージ装置は、書き込みエラー検出処理においてエラーが発生したと判定された場合、他のCMでエラーが発生していなければ、当該CMから結合したデータを取得する点で、第2の実施の形態と異なる。
図17は、第2の実施の形態の変形例におけるエラー発生処理を示すフローチャートである。第2の実施の形態の変形例では、ストレージ装置100は、書き込みエラー検出処理においてエラーが発生したと判定された場合に、他のCMでエラーが発生していなければ、当該CMから結合したデータを取得するエラー発生処理を実行する。以下では、図17に示すエラー発生処理をフローチャートのステップ番号に沿って説明する。
[ステップS41]制御部116aは、CM110bにおいてキャッシュ領域112a2の空き領域に書き込みデータを書き込む際におけるエラーの発生の有無を取得する。
[ステップS42]制御部116aは、ステップS41において取得した取得結果に基づいて、CM110bにおける書き込みでエラーが発生したか否かを判定する。エラーが発生していれば(ステップS42 YES)、処理はステップS44に進められる。一方、エラーが発生せず、CM110bでデータの結合が行われていれば(ステップS42 NO)、処理はステップS43に進められる。
[ステップS43]制御部116aは、CM110bから結合データを取得し、取得したデータをキャッシュ領域112a2に書き込む。書き込まれたデータは、CM110aに接続されている記憶デバイス120a〜120dに記憶されている更新対象のデータの更新に使用される。その後、処理は終了する。
[ステップS44]制御部116aは、書き込みエラー検出処理で検出され、かつ、CM110bで書き込まれたデータのエラーに対する処理を行う。ここでは、制御部116aは、前述した書き込みデータを削除または論理的に無効にして記憶領域を開放してもよい。また、制御部116aは、ホストコンピュータ300に対して書き込みデータのエラーを通知してもよい。ホストコンピュータ300は、エラーの通知に基づいて、書き込みデータおよび書き込み指示を再送してもよい。その後、処理は更新判定処理に復帰する。
以上のような第2の実施の形態の変形例のストレージ装置100は、第2の実施の形態と同様の効果に加えて、CM110aで後の書き込みデータの書き込みでエラーが発生した場合にも、CM110bで結合された結合データを取得できる。これにより、CM110aで後の書き込みデータの書き込みでエラーが発生した場合に、CM110bでエラーが発生していなければ、CM110bによる結合データで記憶デバイス120a〜120dのデータを更新できる。
以上、開示のストレージ装置、制御装置およびストレージ装置制御方法を、図示の実施の形態に基づいて説明したが、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、開示の技術に他の任意の構成物や工程が付加されてもよい。また、開示の技術は前述した実施の形態のうちの任意の2以上の構成を組み合わせたものであってもよい。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、開示の技術は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
以上の第1の実施の形態、第2の実施の形態および第2の実施の形態の変形例に関し、さらに以下の付記を開示する。
(付記1) 第1の記憶領域に記憶されている第1のデータの少なくとも一部を第2のデータの少なくとも一部によって更新する場合、前記第2のデータを前記第1の記憶領域とは異なる第2の記憶領域に書き込むとともに書き込みエラーの発生の有無を判定し、前記書き込みエラーが発生していないときには、前記第1のデータと前記第2のデータとを結合する制御部を有することを特徴とするストレージ装置。
(付記2) 前記制御部は、前記書き込みエラーが発生していないときには、前記第2のデータに、前記第1のデータにおける更新部分以外の差分を付加して結合することを特徴とする付記1記載のストレージ装置。
(付記3) 前記制御部は、前記書き込みエラーが発生していないときには、前記第1のデータを前記第2のデータで更新して結合することを特徴とする付記1記載のストレージ装置。
(付記4) 前記制御部は、前記書き込みエラーが発生していないときには、前記第1の記憶領域に前記第2のデータを書き込む第1の結合処理を実行した場合の第1の書き込み量と、前記第2の記憶領域に前記第1のデータにおける更新部分以外の差分を書き込む第2の結合処理を実行した場合の第2の書き込み量とを比較し、比較結果に基づいて、前記第1の結合処理または前記第2の結合処理のいずれかを選択し、前記選択した処理を実行することを特徴とする付記1記載のストレージ装置。
(付記5) 前記第2の記憶領域に書き込まれる前記第2のデータにチェックコードを付加する付加部を有し、
前記制御部は、前記第2の記憶領域に前記第2のデータを書き込む際に前記付加されたチェックコードに基づいて前記書き込みエラーの発生の有無を判定することを特徴とする付記1記載のストレージ装置。
(付記6) 記憶部を有し、
前記第1のデータは、対応するデータの少なくとも一部である第1の部分を更新するデータであり、
前記第2のデータは、前記対応するデータの少なくとも一部である第2の部分を更新するデータであり、
前記制御部は、結合したデータにより、前記記憶部に記憶されている前記第1のデータおよび前記第2のデータと対応する前記データを更新することを特徴とする付記1記載のストレージ装置。
(付記7) 第1の制御部と、
前記第1の制御部との間でデータ転送可能な第2の制御部と、
を有し、
前記第1の制御部は、前記第2の制御部に対して前記第1のデータと前記第2のデータとを送信し、
前記第2の制御部は、前記送信された前記第1のデータと前記第2のデータとを結合する、
ことを特徴とする付記1記載のストレージ装置。
(付記8) 前記制御部は、前記書き込みエラーが発生したときには、前記第1のデータと前記第2のデータとを結合せずに前記第2のデータを削除することを特徴とする付記1記載のストレージ装置。
(付記9) 前記制御部は、前記書き込みエラーが発生したときには、前記書き込みエラーの発生を通知することを特徴とする付記1記載のストレージ装置。
(付記10) 前記第1の制御部は、前記書き込みエラーが発生したときには、前記第2の制御部で結合されたデータを取得することを特徴とする付記記載のストレージ装置。
(付記11) 前記制御部は、前記比較結果に基づいて、前記第1の結合処理または前記第2の結合処理のうちの書き込み量が少ない方を選択し、前記選択した処理を実行することを特徴とする付記4記載のストレージ装置。
(付記12) 前記対応するデータは、前記第1のデータによる更新の後に前記第2のデータによる更新が行われ、かつ、前記第1の部分と、前記第2の部分との少なくとも一部が重複することを特徴とする付記6記載のストレージ装置。
(付記13)前記第1の記憶領域と前記第2の記憶領域とを含む複数の記憶領域を有するキャッシュ部と、
前記キャッシュ部が有する記憶領域が空き領域であるか否かを示す管理情報を記憶する管理情報記憶部と、
を有し、
前記制御部は、前記キャッシュ部の記憶領域が空き領域であるか否かを判定し、判定結果に基づいて前記第2の記憶領域を選択することを特徴とする付記1記載のストレージ装置。
(付記14) 第1の記憶領域に記憶されている第1のデータの少なくとも一部を第2のデータの少なくとも一部によって更新する場合、前記第2のデータを前記第1の記憶領域とは異なる第2の記憶領域に書き込むとともに書き込みエラーの発生の有無を判定し、前記書き込みエラーが発生していないときには、前記第1のデータと前記第2のデータとを結合し、前記結合したデータにより、記憶部に記憶されている前記第1のデータおよび前記第2のデータと対応するデータを更新する制御部を有することを特徴とする制御装置。
(付記15) 第1の記憶領域に記憶されている第1のデータの少なくとも一部を第2のデータの少なくとも一部によって更新する場合、前記第2のデータを前記第1の記憶領域とは異なる第2の記憶領域に書き込むとともに書き込みエラーの発生の有無を判定し、
前記書き込みエラーが発生していないときには、前記第1のデータと前記第2のデータとを結合する、
ことを特徴とするストレージ装置制御方法。
1 ストレージ装置
11 制御部
12a,12b 記憶領域
2a,2b,2c データ
2a1 更新部分
2a2 差分

Claims (6)

  1. 記憶装置と、前記記憶装置に記憶されたデータをキャッシュするキャッシュ領域として記憶領域の一部が使用される記憶部を備えた制御装置とを有し、
    前記制御装置は、
    前記キャッシュ領域に存在する第1の記憶領域に記憶されている第1のデータの少なくとも一部を第2のデータの少なくとも一部によって更新する場合、前記第2のデータを前記キャッシュ領域に存在する第2の記憶領域に書き込むとともに書き込みエラーの発生の有無を判定し、
    書き込みエラーが発生していないときには、前記第1の記憶領域に前記第2のデータを書き込むことで前記第1のデータを前記第2のデータで更新した第1の更新データを生成する第1の結合処理を実行した場合の第1の書き込み量と、前記第2の記憶領域に前記第1のデータにおける更新部分以外の差分を書き込んで前記第2のデータに前記差分を付加することで前記第1のデータを更新した第2の更新データを生成する第2の結合処理を実行した場合の第2の書き込み量とを比較し、比較結果に基づいて前記第1の結合処理または前記第2の結合処理のいずれかを選択して実行し、
    前記第1の結合処理を実行した場合は、前記第1の更新データをキャッシュデータとして前記第1の記憶領域に残すとともに、前記第2の記憶領域の前記第2のデータを無効化し、
    前記第2の結合処理を実行した場合は、前記第2の更新データをキャッシュデータとして前記第2の記憶領域に残すとともに、前記第1の記憶領域の前記第1のデータを無効化する、
    ことを特徴とするストレージ装置。
  2. 前記制御装置は、前記第2の記憶領域に対する前記第2のデータの書き込みにおいて書き込みエラーが発生していないときには、前記第2の結合処理を実行することを特徴とする請求項1記載のストレージ装置。
  3. 前記制御装置は、前記第2の記憶領域に対する前記第2のデータの書き込みにおいて書き込みエラーが発生していないときには、前記第1の結合処理を実行することを特徴とする請求項1記載のストレージ装置。
  4. 前記記憶装置に記憶されたデータをキャッシュする他のキャッシュ領域として記憶領域の一部が使用される他の記憶部を備えた他の制御装置をさらに有し、
    前記他の制御装置は、前記他のキャッシュ領域に存在する第3の記憶領域に前記第1のデータが記憶され、前記制御装置において前記第1のデータの少なくとも一部が前記第2のデータの少なくとも一部によって更新される際に、前記第2のデータを前記制御装置から受信して前記他のキャッシュ領域に存在する第4の記憶領域に書き込むとともに書き込みエラーの有無を判定し、書き込みエラーが発生していないときには、前記第1のデータと前記第2のデータとを結合することで前記第1のデータを更新した第3の更新データを生成し、
    前記制御装置は、前記第2の記憶領域に対する前記第2のデータの書き込みにおいて書き込みエラーが発生したとき、前記他の制御装置における前記第3の記憶領域に対する前記第2のデータの書き込みにおいて書き込みエラーが発生していない場合には、前記第3の更新データを前記他の制御装置から取得して前記キャッシュ領域に書き込む、
    ことを特徴とする請求項1乃至3のいずれか1項に記載のストレージ装置。
  5. 記憶装置に記憶されたデータをキャッシュするキャッシュ領域として記憶領域の一部が使用される記憶部と、
    前記キャッシュ領域に存在する第1の記憶領域に記憶されている第1のデータの少なくとも一部を第2のデータの少なくとも一部によって更新する場合、前記第2のデータを前記キャッシュ領域に存在する第2の記憶領域に書き込むとともに書き込みエラーの発生の有無を判定し、
    書き込みエラーが発生していないときには、前記第1の記憶領域に前記第2のデータを書き込むことで前記第1のデータを前記第2のデータで更新した第1の更新データを生成する第1の結合処理を実行した場合の第1の書き込み量と、前記第2の記憶領域に前記第1のデータにおける更新部分以外の差分を書き込んで前記第2のデータに前記差分を付加することで前記第1のデータを更新した第2の更新データを生成する第2の結合処理を実行した場合の第2の書き込み量とを比較し、比較結果に基づいて前記第1の結合処理または前記第2の結合処理のいずれかを選択して実行し、
    前記第1の結合処理を実行した場合は、前記第1の更新データをキャッシュデータとして前記第1の記憶領域に残すとともに、前記第2の記憶領域の前記第2のデータを無効化し、
    前記第2の結合処理を実行した場合は、前記第2の更新データをキャッシュデータとして前記第2の記憶領域に残すとともに、前記第1の記憶領域の前記第1のデータを無効化する、制御部と、
    を有することを特徴とする制御装置。
  6. 記憶装置に記憶されたデータをキャッシュするキャッシュ領域として記憶領域の一部が使用される記憶部を備えた制御装置が、
    前記キャッシュ領域に存在する第1の記憶領域に記憶されている第1のデータの少なくとも一部を第2のデータの少なくとも一部によって更新する場合、前記第2のデータを前記キャッシュ領域に存在する第2の記憶領域に書き込むとともに書き込みエラーの発生の有無を判定し、
    書き込みエラーが発生していないときには、前記第1の記憶領域に前記第2のデータを書き込むことで前記第1のデータを前記第2のデータで更新した第1の更新データを生成する第1の結合処理を実行した場合の第1の書き込み量と、前記第2の記憶領域に前記第1のデータにおける更新部分以外の差分を書き込んで前記第2のデータに前記差分を付加することで前記第1のデータを更新した第2の更新データを生成する第2の結合処理を実行した場合の第2の書き込み量とを比較し、比較結果に基づいて前記第1の結合処理または前記第2の結合処理のいずれかを選択して実行し、
    前記第1の結合処理を実行した場合は、前記第1の更新データをキャッシュデータとして前記第1の記憶領域に残すとともに、前記第2の記憶領域の前記第2のデータを無効化し、
    前記第2の結合処理を実行した場合は、前記第2の更新データをキャッシュデータとして前記第2の記憶領域に残すとともに、前記第1の記憶領域の前記第1のデータを無効化する、
    ことを特徴とするストレージ装置制御方法。
JP2011061716A 2011-03-18 2011-03-18 ストレージ装置、制御装置およびストレージ装置制御方法 Active JP5760556B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011061716A JP5760556B2 (ja) 2011-03-18 2011-03-18 ストレージ装置、制御装置およびストレージ装置制御方法
US13/412,711 US9146803B2 (en) 2011-03-18 2012-03-06 Storage apparatus, control apparatus, and storage apparatus control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011061716A JP5760556B2 (ja) 2011-03-18 2011-03-18 ストレージ装置、制御装置およびストレージ装置制御方法

Publications (2)

Publication Number Publication Date
JP2012198704A JP2012198704A (ja) 2012-10-18
JP5760556B2 true JP5760556B2 (ja) 2015-08-12

Family

ID=46829449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011061716A Active JP5760556B2 (ja) 2011-03-18 2011-03-18 ストレージ装置、制御装置およびストレージ装置制御方法

Country Status (2)

Country Link
US (1) US9146803B2 (ja)
JP (1) JP5760556B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5695126B2 (ja) * 2013-05-14 2015-04-01 株式会社日立製作所 計算機システム、サーバモジュール及びストレージモジュール
JP2019121195A (ja) * 2018-01-05 2019-07-22 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
EP3846026A4 (en) * 2018-09-21 2021-11-03 Huawei Technologies Co., Ltd. DATA EXTRACTION PROCESS AND DEVICE

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5235693A (en) * 1989-01-27 1993-08-10 Digital Equipment Corporation Method and apparatus for reducing buffer storage in a read-modify-write operation
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
US5809228A (en) * 1995-12-27 1998-09-15 Intel Corporaiton Method and apparatus for combining multiple writes to a memory resource utilizing a write buffer
JP2000020398A (ja) 1998-06-26 2000-01-21 Toshiba Corp ディスク記憶装置及び同装置に適用するディスクコントローラ
JP3940539B2 (ja) * 2000-02-03 2007-07-04 株式会社日立製作所 半導体集積回路
JP2001318766A (ja) 2000-05-08 2001-11-16 Nec Software Shikoku Ltd ディスクアレイ装置およびキャッシュメモリ制御方法
JP4596602B2 (ja) * 2000-05-09 2010-12-08 大日本印刷株式会社 不揮発性メモリのデータ管理方法
JP2005062928A (ja) * 2003-08-11 2005-03-10 Hitachi Ltd 複数のサイトにリモートコピーを行うシステム
JP2006338731A (ja) * 2005-05-31 2006-12-14 Hitachi Global Storage Technologies Netherlands Bv データ書き込み方法
JP2007179085A (ja) * 2005-12-26 2007-07-12 Fujitsu Ltd ディスク装置、ディスク書込データ選択方法およびディスク書込データ選択プログラム
US8352805B2 (en) * 2006-05-18 2013-01-08 Rambus Inc. Memory error detection
JP2008046685A (ja) * 2006-08-10 2008-02-28 Fujitsu Ltd 二重化システム及び系切り換え方法
JP4977583B2 (ja) * 2007-11-22 2012-07-18 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法
US8255783B2 (en) * 2008-04-23 2012-08-28 International Business Machines Corporation Apparatus, system and method for providing error protection for data-masking bits
US8756374B2 (en) * 2010-11-05 2014-06-17 Oracle International Corporation Store queue supporting ordered and unordered stores

Also Published As

Publication number Publication date
JP2012198704A (ja) 2012-10-18
US20120239968A1 (en) 2012-09-20
US9146803B2 (en) 2015-09-29

Similar Documents

Publication Publication Date Title
JP4236049B2 (ja) データのミラー・コピーを提供するための方法、システム、およびプログラム
JP4634157B2 (ja) ストレージシステム
US8583853B1 (en) Error-handling for write-distribute command in raid mirroring
US7975168B2 (en) Storage system executing parallel correction write
US20230168957A1 (en) Non-Volatile Memory Switch with Host Isolation
US20160092118A1 (en) Memory write management in a computer system
JP2015515033A (ja) ストレージシステム
US20160274795A1 (en) Server Based Disaster Recovery by Making Use of Dual Write Responses
US20150339058A1 (en) Storage system and control method
JP2002149499A (ja) データの完全性を備えるリモートコピーシステム
WO2018120844A1 (zh) 一种差异数据备份方法和差异数据备份装置
US20100082924A1 (en) Storage controller having virtual volume
JP2009175824A (ja) メインフレーム用記憶制御装置及びメインフレーム用ボリュームの仮想化方法
US9158478B2 (en) Storage system and storage control method
US20180052632A1 (en) Storage system and storage control method
US20170116087A1 (en) Storage control device
JP5760556B2 (ja) ストレージ装置、制御装置およびストレージ装置制御方法
US11023321B2 (en) Raid storage-device-assisted deferred parity data update system
US8327043B2 (en) Buffer management device which manages buffer transfer, storage apparatus comprising the same device, and buffer management method
JP2006072435A (ja) ストレージシステムおよびデータ記録方法
US20180095824A1 (en) Parity delta caching for short writes
US10014983B2 (en) System, receiving device, and method
US8972634B2 (en) Storage system and data transfer method
US6950905B2 (en) Write posting memory interface with block-based read-ahead mechanism
US20170344425A1 (en) Error-laden data handling on a storage device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140916

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141114

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150525

R150 Certificate of patent or registration of utility model

Ref document number: 5760556

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150