JP2012519317A - ストレージ装置及びデータ転送方法 - Google Patents

ストレージ装置及びデータ転送方法 Download PDF

Info

Publication number
JP2012519317A
JP2012519317A JP2011537757A JP2011537757A JP2012519317A JP 2012519317 A JP2012519317 A JP 2012519317A JP 2011537757 A JP2011537757 A JP 2011537757A JP 2011537757 A JP2011537757 A JP 2011537757A JP 2012519317 A JP2012519317 A JP 2012519317A
Authority
JP
Japan
Prior art keywords
error check
data
control unit
check code
write
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.)
Granted
Application number
JP2011537757A
Other languages
English (en)
Other versions
JP5386593B2 (ja
Inventor
ザキ プリマダニ
小明 姜
進 鶴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2012519317A publication Critical patent/JP2012519317A/ja
Application granted granted Critical
Publication of JP5386593B2 publication Critical patent/JP5386593B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】
ストレージ装置にホストサーバとの間でデータを送受するホスト制御部と、記憶デバイスとの間でデータを送受するドライブ制御部と、ホスト制御部及びドライブ制御部間で送受されるデータを一時的に保持するキャッシュメモリと、ホスト制御部、キャッシュメモリ及びドライブ制御部間においてデータの転送元及び転送先を切り替えるスイッチと、ホスト制御部、ドライブ制御部及びスイッチを制御する制御部とを設け、データのエラーチェックコードの生成処理及び当該エラーチェックコードを用いたエラーチェック処理を、スイッチにおいて実行し、又はホスト制御部、ドライブ制御部、スイッチ及び制御部において分散して実行するようにした。

Description

本発明はストレージ装置及びデータ転送方法に関し、ホストサーバから与えられたライトデータにエラーチェックコードを付加して装置内におけるデータ転送を行うストレージ装置に適用して好適なものである。
従来、この種のストレージ装置においては、ホストサーバから与えられたライトデータに対してLA/LRCなどのエラーチェックコードを付加し、このエラーチェックコードを用いてライトデータの正当性を適宜チェックすることにより、ストレージ装置内におけるデータ転送を信頼性高く行い得るようになされている。
このためこの種のストレージ装置には、かかるエラーチェックコードをライトデータに付加し、このエラーチェックコードを用いたエラーチェックを行う機能が搭載された専用のデータ制御用LSI(Large Scale Integration)が実装されており、このデータ制御用LSIにおいてエラーチェックコードの付加処理や当該エラーチェックコードを用いたエラーチェック処理を行っている。
また近年では、耐障害性の向上という観点から、ストレージ装置のコントローラを二重化することも提案されている(例えば、特開2008−097527号公報)。
ところで、近年、ストレージ装置の低価格化が進んでいる。このような状況のもと、かかるデータ制御用LSIは特注品であるためその製造コストが高いという問題がある。この問題は、上述のようなコントローラを二重化したストレージ装置にとってより深刻となる。そこで、かかるデータ制御用LSIに代えて汎用のスイッチを用いながら、信頼性高くストレージ装置内でデータ転送を行い得るデータ転送技術が望まれている。
本発明は以上の点を考慮してなされたもので、コストを抑えながら信頼性高くデータ転送を行い得るストレージ装置及びデータ転送方法を提案しようとするものである。
かかる課題を解決するため本発明は、ホストサーバからの要求に応じて、記憶デバイスが提供する記憶領域にデータを読み書きするストレージ装置において、前記ホストサーバとの間で前記データを送受するホスト制御部と、前記記憶デバイスとの間で前記データを送受するドライブ制御部と、前記ホスト制御部及び前記ドライブ制御部間で送受される前記データを一時的に保持するキャッシュメモリと、前記ホスト制御部、前記キャッシュメモリ及び前記ドライブ制御部間において前記データの転送元及び転送先を切り替えるスイッチと、前記ホスト制御部、前記ドライブ制御部及び前記スイッチを制御する制御部とを備え、前記データのエラーチェックコードの生成処理及び当該エラーチェックコードを用いたエラーチェック処理を、前記スイッチにおいて実行し、又は前記ホスト制御部、前記ドライブ制御部、前記スイッチ及び前記制御部において分散して実行することを特徴とする。
また本発明においては、ホストサーバからの要求に応じて、記憶デバイスが提供する記憶領域にデータを読み書きするストレージ装置内のデータ転送方法において、前記ストレージ装置は、前記ホストサーバとの間で前記データを送受するホスト制御部と、前記記憶デバイスとの間で前記データを送受するドライブ制御部と、前記ホスト制御部及び前記ドライブ制御部間で送受される前記データを一時的に保持するキャッシュメモリと、前記ホスト制御部、前記キャッシュメモリ及び前記ドライブ制御部間において前記データの転送元及び転送先を切り替えるスイッチと、前記ホスト制御部、前記ドライブ制御部及び前記スイッチを制御する制御部とを有し、前記データを前記ホストから受信する第1のステップと、前記データのエラーチェックコードの生成処理及び当該エラーチェックコードを用いたエラーチェック処理を、前記スイッチにおいて実行し、又は前記ホスト制御部、前記ドライブ制御部、前記スイッチ及び前記制御部において分散して実行する第2のステップとを備えることを特徴とする。
本発明によれば、スイッチとして汎用のものを適用しながら、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高く装置内でデータ転送を行い得るストレージ装置及びデータ転送方法を実現できる。
図1は、第1の実施の形態による計算機システムの全体構成を示すブロック図である。 図2は、従来の計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図3は、従来の計算機システムのリード処理時におけるデータの流れを示すブロック図である。 図4は、第1の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図5は、第1の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。 図6(A)は、DIFの構成を示す図であり、図6(B)は、LA/LRCの構成を示す図である。 図7は、第1の実施の形態による計算機システムのリード処理時におけるデータの流れを示すブロック図である。 図8は、第1の実施の形態による計算機システムのリード処理時における処理の流れを示すフローチャートである。 図9は、第1のエラー処理の処理手順を示すフローチャートである。 図10は、第1のエラー処理の処理手順を示すフローチャートである。 図11は、第2の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図12は、第2の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。 図13は、第2の実施の形態による計算機システムのリード処理時におけるデータの流れを示すブロック図である。 図14は、第2の実施の形態による計算機システムのリード処理時における処理の流れを示すフローチャートである。 図15は、第3の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図16は、第3の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。 図17は、第3の実施の形態による計算機システムのリード処理時におけるデータの流れを示すブロック図である。 図18は、第3の実施の形態による計算機システムのリード処理時における処理の流れを示すフローチャートである。 図19は、第4の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図20は、第4の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。 図21は、第4の実施の形態による計算機システムのリード処理時におけるデータの流れを示すブロック図である。 図22は、第4の実施の形態による計算機システムのリード処理時における処理の流れを示すフローチャートである。 図23は、第5の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図24は、第5の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。 図25は、第6の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図26は、第6の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。 図27は、第7の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図28は、第7の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。 図29は、第8の実施の形態による計算機システムのライト処理時におけるデータの流れを示すブロック図である。 図30は、第8の実施の形態による計算機システムのライト処理時における処理の流れを示すフローチャートである。
以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
(1−1)本実施の形態による計算機システムの構成
図1において、1は全体として本実施の形態による計算機システムを示す。この計算機システム1は、ネットワーク2を介して接続された1又は複数のホストサーバ3と、ストレージ装置4とを備えて構成される。
ネットワーク2は、例えばSAN(Storage Area Network)、LAN(Local Area Network)、インターネット、公衆回線又は専用回線などから構成される。このネットワーク2を介したホストサーバ3及びストレージ装置4間の通信は、例えばネットワーク2がSANである場合にはファイバーチャネルプロトコルに従って行われ、ネットワーク2がLANである場合にはTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルに従って行われる。
ホストサーバ3は、CPU(Central Processing Unit)及びメモリ等の情報処理資源を備えたコンピュータ装置であり、例えばパーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。ホストサーバ3は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置(図示せず)と、モニタディスプレイやスピーカ等の情報出力装置(図示せず)とを備える。
ストレージ装置4は、複数の記憶デバイス5と、これら複数の記憶デバイス5へのデータの入出力を制御する0系及び1系の2つのコントローラ6A,6Bとを備えて構成される。
記憶デバイス5は、例えばSCSI(Small Computer System Interface)ディスク等の高価なディスクデバイス、又はSATA(Serial AT Attachment)ディスクや光ディスク等の安価なディスクデバイスなどから構成される。
これらの記憶デバイス5は、0系及び1系の各コントローラ6A,6BによりRAID(Redundant Arrays of Inexpensive Disks)方式で運用される。なおコントローラは1つであってもよい。1又は複数の記憶デバイス5により提供される物理的な記憶領域上に、1又は複数の論理的なボリューム(以下、これを論理ボリュームと呼ぶ)VOLが設定される。そしてデータは、この論理ボリュームVOL内に所定大きさのブロック(以下、これを論理ブロックと呼ぶ)を単位として記憶される。
各論理ボリュームVOLには、それぞれ固有の識別子(以下、これをLUN(Logical Unit number)と呼ぶ)が付与される。本実施の形態の場合、データの入出力は、このLUNと、各論理ブロックにそれぞれ付与されるその論理ブロックに固有の番号(以下、これをLBA(Logical Block Address)と呼ぶ)との組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
0系、1系のコントローラ6A,6Bは、それぞれホスト制御部7A,7B、MPU(Micro Processing Unit)8A,8B、スイッチ9A,9B、キャッシュメモリ10A,10B及びドライブ制御部11A,11Bを備える。
ホスト制御部7A,7Bは、ネットワーク2に対するインタフェースであり、CPU(Central Processing Unit)及びメモリなどの情報処理資源を備える。ホスト制御部7A,7Bは、かかるネットワーク2を介してライトデータ及びリードデータや各種コマンドなどをホストサーバ3との間で送受する。
MPU8A,8Bは、ホストサーバ3からのライトコマンドやリードコマンドに応答して記憶デバイス5に対するデータの入出力処理を制御するプロセッサであり、記憶デバイス5から読み出したマイクロプログラムに基づいてホスト制御部7A,7B、スイッチ9A,9B及びドライブ制御部11A,11Bを制御する。
スイッチ9A,9Bは、ホスト制御部7A,7B、キャッシュメモリ10A,10B及びドライブ制御部11A,11B間におけるデータの転送元及び転送先を切り替える。本実施の形態の場合、スイッチ9A,9Bは、デュアルキャスト部12A,12Bが搭載された汎用のPCIe(PCI(peripheral component interconnect)Express)スイッチにDMA(Direct Memory Access)部13A,13B及びパリティ生成部14A,14Bを付加することにより構成されている。
デュアルキャスト部12A,12Bは、ライトデータやリードデータを自系のMPU8A,8Bを介して自系(0系又は1系)のキャッシュメモリ10A,10Bに転送するだけでなく、後述するバス15を介して他系(1系又は0系)のコントローラ6B,6Bに転送するデュアルキャスト機能を有する。またDMA部13A,13Bは、キャッシュメモリ10A,10Bに格納されたデータに対して直接アクセスするDMA機能を有する。
パリティ生成部14A,14Bは、ライトデータに対するRAID用のパリティ(以下、これをRAIDパリティと呼ぶ)を生成してライトデータに付加したり、このRAIDパリティを用いてリードデータに対するエラーチェックを実行するRAIDエラーチェック機能を有する。
なお、これらデュアルキャスト部12A,12B、DMA部13A,13B及びパリティ生成部14A,14Bは、その一部又は全部が、ハードウェアにより構成されていても、またソフトウェアにより構成(スイッチ9A,9B内の図示しないCPUが対応するプログラムを実行する構成)されていてもよい。またデュアルキャスト部12A,12Bによる後述のようなデュアルキャスト機能は、2つのコントローラを使用する場合にのみ機能し、1つのコントローラで運用を行うときには機能しない。
またスイッチ9A,9Bは、他系(0系又は1系)のスイッチ9B,9Aとバス15を介して接続されており、このバス15を通じて他系のコントローラ9B,9Aとの間でコマンドやデータを送受することができるようになされている。
キャッシュメモリ10A,10Bは、ホスト制御部7A,7B及びドライブ制御部11A,11B間において転送されるデータを一時的に記憶するために用いられる。このキャッシュメモリ10A,10Bには、ストレージ装置4の起動時に所定の記憶デバイス5から読み出された上述のマイクロプログラムや、各種のシステム情報も格納される。
ドライブ制御部11A,11Bは、記憶デバイス5に対するインタフェースであり、CPU及びメモリなどの情報処理資源を備える。このドライブ制御部11A,11Bは、ホスト制御部7A,7Bから与えられるホストサーバ3からのライトコマンドやリードコマンドに応じて対応する記憶デバイス5を制御することにより、ライトデータやリードデータをライトコマンドやリードコマンドにおいて指定された論理ボリュームVOL内の当該ライトコマンド又はリードコマンドにおいて指定されたアドレス位置に読み書きする。
(1−2)ストレージ装置におけるデータ転送方式
次に、ストレージ装置4におけるデータ転送方式について説明する。これに際して、まず、従来のストレージ装置におけるデータ転送の流れについて説明する。
(1−2−1)従来のストレージ装置におけるデータ転送方式
図1との対応部分に同一符号を付した図2は、従来のストレージ装置21において、0系のコントローラ22Aがホストサーバ3からライトコマンド及びライトデータを受信した場合における処理の流れを示す。この図2において、一点鎖線の矢印RA1〜RA7は0系のコントローラ22Aのキャッシュメモリ10Aや対応する記憶デバイス5に読み書きされるライトデータ等の流れを示し、二点鎖線の矢印RB1〜RB2は1系のコントローラ22Bのキャッシュメモリ11Bに書き込まれるライトデータの流れを示す。図4、図11、図15、図19、図23、図25、図27及び図29においても同様である。
また以下においては、0系のコントローラ22Aのホスト制御部23Aやデータ転送制御部24Aなどの構成部位を、適宜、「0系のホスト制御部23A」や「0系のデータ転送制御部24A」などと呼び、1系のコントローラ22Bのホスト制御部23Bやデータ転送制御部24Bなどの構成部位を、適宜、「1系のホスト制御部23B」や「1系のデータ転送制御部24B」などと呼ぶものとする。
かかる従来のストレージ装置21において、0系のホスト制御部23Aは、ホストサーバ3からのライトコマンド及びライトデータを受信すると、ライトデータを0系のデータ転送制御部24Aに送信する(矢印RA1)。
0系のデータ転送制御部24Aは、このライトデータを受信すると、MPU8A,8Bの制御のもとに、このライトデータ用のエラーチェックコード(以下、これをデータ用エラーチェックコードと呼ぶ)を生成し、生成したデータ用エラーチェックコードをライトデータに付加する。そして0系のデータ転送制御部24Aは、この後、このライトデータを0系のキャッシュメモリ10Aに格納する(矢印RA2)。なお、この場合のエラーチェックコードとしては、例えばLA/LRCが用いられる。またデータ転送制御部24Aは、かかるライトデータ及びそのデータ用エラーチェックコードを1系のデータ転送制御部24Bに転送し、これらライトデータ及びそのデータ用エラーチェックコードを1系のキャッシュメモリ10Bにも格納させる(矢印RB1)。
続いて0系のデータ転送制御部24Aは、0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードを読み出し(矢印RA3)、このデータ用エラーチェックコードを用いて当該ライトデータに対するエラーチェック処理を実行する。また0系のデータ転送制御部24Aは、このエラーチェック処理においてエラーが検出されなかったときには、かかるライトデータ及びデータ用エラーチェックコードからなるデータ群のRAIDパリティと、このRAIDパリティ用のエラーチェックコード(以下、これをパリティ用エラーチェックコードと呼ぶ)とを生成し、生成したRAIDパリティ及びそのパリティ用エラーチェックコードを0系のキャッシュメモリ10Aに格納する(矢印RA4)。
また0系のデータ転送制御部24Aは、かかるRAIDパリティ及びそのパリティ用エラーチェックコードを1系のデータ転送制御部24Bに転送し、これらRAIDパリティ及びそのパリティ用エラーチェックコードを1系のキャッシュメモリ10Bにも格納させる(矢印RB2)。
続いて0系のデータ転送制御部24Aは、0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードと、そのRAIDパリティ及び当該RAIDパリティのパリティ用エラーチェックコードとを読み出す(矢印RA5)。
そして0系のデータ転送制御部24Aは、かかるパリティ用エラーチェックコードを用いてRAIDパリティに対するエラーチェック処理を実行する。また0系のデータ転送制御部24Aは、このエラーチェック処理においてエラーを検出しなかったときには、かかるライトデータ及びそのデータ用エラーチェックコードと、そのRAIDパリティ及び当該RAIDパリティのパリティ用エラーチェックコードとを0系のドライブ制御部11Aに転送する(矢印RA6)。
かくして0系のドライブ制御部11Aは、これらライトデータ及びそのデータ用エラーチェックコードと、そのRAIDパリティ及び当該RAIDパリティのパリティ用エラーチェックコードとをライトコマンドにおいて指定された論理ボリュームVOL内の当該ライトコマンドにおいて指定されたアドレス位置に格納する(矢印RA7)。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、そのRAIDパリティ及び当該RAIDパリティのパリティ用エラーチェックコードとは、その後破棄される。
一方、図2との対応部分に同一符号を付した図3は、従来のストレージ装置21において、0系のコントローラ22Aがホストサーバ3からリードコマンドを受信した場合における処理の流れを示す。この図2において、一点鎖線の矢印LA1〜LA6は0系のコントローラ22Aのキャッシュメモリ10Aや対応する記憶デバイス5に読み書きされるリードデータ等の流れを示し、二点鎖線の矢印LB1は1系のコントローラ22Bのキャッシュメモリ10Bに書き込まれるリードデータの流れを示す。図7、図13、図17及び図21においても同様である。
かかるストレージ装置21において、0系のコントローラ22Aがホストサーバ3からのリードコマンドを受領した場合、まず0系のドライブ制御部11Aが、このリードコマンドにおいて指定された論理ボリュームVOL内の当該リードコマンドにおいて指定されたアドレス位置からデータ及びそのデータ用エラーチェックコードを読み出し(矢印LA1)、読み出したデータ(リードデータ)及びそのデータ用エラーチェックコードを0系のデータ転送制御部24Aに送信する(矢印LA2)。
0系のデータ転送制御部24Aは、このデータ用エラーチェックコードを用いてリードデータに対するエラーチェック処理を実行し、エラーを検出しなかったときには、リードデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aに格納する(矢印LA3)。
また0系のデータ転送制御部24Aは、かかるリードデータ及びそのデータ用エラーチェックコードを1系のデータ転送制御部24Bに転送し、かかるライトデータ及びそのデータ用エラーチェックコードを1系のキャッシュメモリ10Bにも格納させる(矢印LB1)。
続いて0系のデータ転送制御部24Aは、かかるリードデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aから読み出し(矢印LA4)、読み出したデータ用エラーチェックコードを用いてリードデータに対するエラーチェック処理を実行する。
そして0系のデータ転送制御部24Aは、このエラーチェック処理においてエラーを検出しなかった場合には、リードデータからデータ用エラーチェックコードを取り除き、このリードデータを0系のホスト制御部23Aに送信する(矢印LA5)。そして0系のホスト制御部23Aは、このリードデータをリードコマンドの送信元のホストサーバ3に転送する(矢印LA6)。
なお、以上のリード処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたリードデータ及びそのデータ用エラーチェックコードは、その後破棄される。
以上のように従来のストレージ装置21においては、ストレージ装置21内におけるデータ転送の信頼性を担保するためにライトデータやリードデータに対してエラーチェックコードを付加し、このエラーチェックコードを用いたエラーチェック処理を適宜実行しているが、このようなエラーチェック処理に関する一連の処理をすべてデータ転送制御部24A,24Bが行っている。
このため従来のストレージ装置21では、上述のようなエラーチェック処理に関する一連の処理を実行できるようなデータ転送制御部24A,24Bを特注する必要があり、データ転送制御部24A,24Bとして汎用のスイッチなどを利用することができなかった。この結果、従来のストレージ装置21では、データ転送制御部24A,24Bにおける処理負荷が大きく、データ転送制御部24A,24Bの性能如何によっては装置全体のデータ入出力性能が悪くなる問題があり、またデータ入出力性能の高いデータ転送制御部24A,24Bを使用するためにはストレージ装置21全体としての製造コストが高くなるという問題がある。
そこで本実施の形態によるストレージ装置4(図1)においては、上述のようなエラーチェック処理のうち、エラーチェックコードの生成及び生成したエラーチェックコードをライトデータへの付加等の処理をホスト制御部7A,7B(図1)において実行することにより、スイッチ9A,9B(図1)としてPCIeスイッチをカスタマイズしたものを利用できるようにしたものである。以下、このようなストレージ装置4内におけるデータ転送方式(ストレージ装置内でのライトデータやリードデータの転送の方式)について以下に説明する。
(1−2−2)本実施の形態によるデータ転送方式におけるライト処理の流れ
図4は、本実施の形態のストレージ装置4がホストサーバ3からのライトコマンド及びライトデータを受信した場合における、ストレージ装置4内での処理の流れを示している。以下においては、0系のコントローラ6Aがライトコマンド及びライトデータを受信した場合について説明するが、1系のコントローラ6Bがライトデータを受信した場合も同様である。また図5は、かかる処理の流れを概略的に示すフローチャートある。
ストレージ装置4において、0系のホスト制御部7Aは、ホストサーバ3からのライトコマンド及びライトデータを受信すると(図4の矢印RA10)、このライトデータのデータ用エラーチェックコードを生成し、生成したデータ用エラーチェックコードをそのライトデータに付加する(図5のSP1)。また0系のホスト制御部7Aは、かかるライトデータ及びデータ用エラーチェックコードを0系のスイッチ9Aのデュアルキャスト部12Aに送信する(図4の矢印RA11)。なお本実施の形態及び以下の第2〜第8の実施の形態においては、かかるデータ用エラーチェックコードとしてDIF(Data Integrity Field)を使用する。DIFの構成例を図6(A)に、またLA/LRCの構成例を図6(B)にそれぞれ示す。
かかるデュアルキャスト部12Aは、受信したライトデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aに格納すると共に、これらライトデータ及びそのデータ用エラーチェックコードを1系のスイッチ9Bに転送することにより、これらを1系のキャッシュメモリ10Bにも格納させる(図4の矢印RA12及び矢印RB10、図5のSP2)。
続いて0系のスイッチ9AのDMA部13Aが、0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードを読み出し(図4の矢印RA13)、このデータ用エラーチェックコードを用いたライトデータに対するエラーチェック処理を実行する(図5のSP3)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(SP4:YES)、0系のMPU8Aは、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、所定の第1のエラー処理が開始する(図5のSP5)。そしてストレージ装置4は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(SP4:NO)、0系のスイッチ9Aのパリティ生成部14Aが、0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードを読み出す(図4の矢印RA14)。そしてパリティ生成部14Aは、かかるライトデータ及びそのデータ用エラーチェックコードからなるデータ群のRAIDパリティを生成すると共に、このRAIDパリティのパリティ用エラーチェックコードを生成してこれを当該RAIDパリティに付加する(図5のSP6)。
またパリティ生成部14Aは、このようにして得られたRAIDパリティ及びそのパリティ用エラーチェックコードを0系のキャッシュメモリ10Aに格納する(図4の矢印RA15、図5のSP7)。次にMPU8Aは、これらRAIDパリティ及びそのパリティ用エラーチェックコードを0系のキャッシュメモリ10Aから読み出して1系のスイッチ9Bに転送することにより、これらを1系のキャッシュメモリ10Bにも格納させる(図4の矢印RB11、図5のSP8)。
次いでスイッチ9AのDMA部13Aが、ライトデータ及びデータ用エラーチェックコードと、RAIDパリティ及びそのパリティ用エラーチェックコードとを0系のキャッシュメモリ10Aから読み出し(図4の矢印RA16)、このデータ用エラーチェックコードと、パリティ用エラーチェックコードを用いたライトデータと、RAIDパリティとに対するエラーチェック処理を実行する(図5のSP9)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図5のSP10:YES)、0系のMPU8Aは、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、所定の第2のエラー処理を開始する(図5のSP5)。そしてストレージ装置4は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図5のSP10:NO)、スイッチ9Aは、ライトデータ及びそのデータ用エラーチェックコードと、RAIDパリティ及びそのパリティ用エラーチェックコードとを0系のキャッシュメモリ10Aから読み出し、これらをドライブ制御部11Aに送信する(図4の矢印RA17)。
かくしてドライブ制御部11Aは、これらライトデータ及びそのデータ用エラーチェックコードと、RAIDパリティ及びそのパリティ用エラーチェックコードとを、かかるライトコマンドにおいて指定された論理ボリュームVOL内の対応するアドレス位置に格納する(図5のSP11)。そしてストレージ装置4は、この後、このライト処理を終了する。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、そのRAIDパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
(1−2−3)本実施の形態によるデータ転送方式におけるリード処理の流れ
一方、図7は、本実施の形態のストレージ装置4がホストサーバ3からのリードコマンドを受信した場合における、ストレージ装置4内での処理の流れを示している。以下においても0系のコントローラ6Aがリードコマンドを受信した場合について説明するが、1系のコントローラ6Bがリードコマンドを受信した場合も同様である。また図8は、かかる処理の流れを概略的に示すフローチャートである。
ストレージ装置4において、0系のコントローラ6Aがホストサーバ3からのリードコマンドを受信すると、まず0系のドライブ制御部11Aが、このリードコマンドにおいて指定された論理ボリュームVOL内の当該リードコマンドにおいて指定されたアドレス位置からデータ及びそのデータ用エラーチェックコードを読み出し(図7の矢印LA10)、読み出したデータ(リードデータ)及びそのデータ用エラーチェックコードを0系のスイッチ9Aのデュアルキャスト部12Aに送信する(図7の矢印LA11)。
デュアルキャスト部12Aは、受信したリードデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aに格納すると共に、これらリードデータ及びそのデータ用エラーチェックコードを1系のスイッチ9Bに転送することにより、これらを1系のキャッシュメモリ10Bにも格納させる(図7の矢印LA12及び矢印LB10、図8のSP20)。
続いて0系のホスト制御部7Aが、かかるリードデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aから読み出し(図7の矢印LA13、図8のSP21)、そのデータ用エラーチェックコードを用いたリードデータに対するエラーチェック処理を実行する(図8のSP22)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(SP23:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図8のSP24)。そしてストレージ装置4は、この後、このリード処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(SP23:NO)、0系のホスト制御部7Aが、かかるリードデータからデータ用エラーチェックコードを削除し(図8のSP25)、このリードデータをリードコマンドの送信元のホストサーバ3に送信する(図7の矢印LA14、図8のSP26)。そしてストレージ装置4は、この後、このリード処理を終了する。
なお、以上のリード処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたデータ用エラーチェックコードが付加されたリードデータは、その後破棄される。
(1−2−3)エラー処理
次に、図5のステップSP5において実行される第1のエラー処理について説明する。図9は、かかる第1のエラー処理の具体的な処理内容を示すフローチャートである。
0系のDMA部13Aは、図5のステップSP3におけるエラーチェックにおいてエラーを検出した場合(図5のSP4:YES)、図9に示す第1のエラー処理を開始し、0系のキャッシュメモリ10A内の所定領域(以下、これをチェック結果格納領域と呼ぶ)にエラーステータスを書き込むと共に、1系のコントローラ6Bにエラー通知を発行する。またMPU8Aは、この後、自系のコントローラ6Aを閉塞する(SP30)。
かかるエラー通知を受けた1系のコントローラ6B側はライト処理を開始し(SP31)、まずスイッチ9BのDMA部13Bが、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードを読み出し、当該データ用エラーチェックコードを用いたライトデータに対するエラーチェック処理を実行する(SP32)。
このエラーチェックの結果、DMA部13Bは、エラーを検出したというチェック結果が得られた場合(SP33:YES)、1系のキャッシュメモリ10B内のチェック結果格納領域にエラーステータスを書き込み、この後、この1系のコントローラ10Bを閉塞してこの第1のエラー処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(SP33:NO)、1系のコントローラ6Bにおいて図9のステップSP35〜ステップSP39を図5のステップSP6〜ステップSP11と同様に処理することにより、ライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを1系のキャッシュメモリ10Bに格納する。そして1系のコントローラ6Bは、この後、このライト処理を終了する。
一方、図10は、図5のステップSP10において実行される第2のエラー処理の具体的な処理内容を示すフローチャートである。
0系のDMA部13Aは、図5のステップSP9におけるエラーチェックにおいてエラーを検出した場合(図5のSP10:YES)、図10に示す第2のエラー処理を開始し、0系のキャッシュメモリ10A内のチェック結果格納領域にエラーステータスを書き込むと共に、1系のコントローラ6Bにエラー通知を発行する。またDMA部13Bは、この後、自系のコントローラ6Aを閉塞する(SP40)。
かかるエラー通知を受けた1系のコントローラ6B側はライト処理を開始し(SP41)、まずスイッチ9BのDMA部13Bが、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードを読み出し、当該データ用エラーチェックコードを用いたライトデータに対するエラーチェック処理を実行する(SP42)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(SP43:YES)、DMA部13Bは、1系のキャッシュメモリ10B内のチェック結果格納領域にエラーステータスを書き込み、この後、この1系のコントローラ10Bを閉塞してこの第2のエラー処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(SP43:NO)、DMA部13Bは、ライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとをドライブ制御部11Aを介して、ライトコマンドにおいて指定された論理ボリュームVOL内の当該ライトコマンドにおいて指定されたアドレス位置に書き込み(SP45)、この後、このライト処理を終了する。
(1−3)本実施の形態の効果
以上のように本実施の形態によるストレージ装置4では、データ用エラーチェックコードやパリティ用エラーチェックコードの付加をホスト制御部7A,7Bやスイッチ9A,9Bのパリティ生成部14Aにおいて行い、これらデータ用エラーチェックコード又はパリティ用エラーチェックコードを用いたエラーチェック処理をスイッチ9A,9BのDMA部13Aで行う。
従って、本実施の形態によれば、スイッチ9A,9BとしてカスタマイズしたPCIeスイッチを適用しながらも、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
また本実施の形態によれば、ホスト制御部7A,7Bにおいてエラーチェックコードを付加するようにしているため、例えばホスト制御部7A,7B及びスイッチ9A,9B間におけるデータ転送をも保証することができ、従来に比べてより一層とデータ転送の信頼性を向上させることができる。
(2)第2の実施の形態
図1との対応部分に同一符号を付して示す図11は、第2の実施の形態による計算機システム30を示す。この計算機システム30は、ストレージ装置31の0系及び1系のコントローラ32A,32Bにおいて、ホスト制御部7A,7Bに加えてドライブ制御部33A,33Bにおいてもエラーチェック処理を実行できる点が第1の実施の形態による計算機システム1と異なる。
また計算機システム30においては、このような構成の違いに伴い、ストレージ装置31におけるライト処理の流れも第1の実施の形態によるストレージ装置4(図1)と相違する。
なお図11においては、ストレージ装置31内の0系のコントローラ32Aがホストサーバ3からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置31内のデータの流れを示しているが、1系のコントローラ32Bがライトコマンド及びライトデータを受信した場合も同様である。また図12は、本実施の形態のストレージ装置31におけるライト処理の流れを概略的に示すフローチャートである。
図11の矢印RA20〜RA25、矢印RA27、矢印RB20及び矢印RB21におけるデータの流れは、図4の矢印RA10〜RA15、矢印RA18、矢印RB10及び矢印RB11におけるデータの流れと同様である。また図12のステップSP50〜ステップSP57、ステップSP59及びステップSP60において実行される処理は、図5のステップSP1〜ステップSP8、ステップSP10及びステップSP11において実行される処理と全く同じである。
本実施の形態と第1の実施の形態との相違点は、第1の実施の形態では、ストレージ装置4において、RAIDパリティに対するエラーチェック処理をスイッチ9AのDMA部13Aにおいて実行していたのに対し、本実施の形態では、かかるエラーチェック処理をストレージ装置31のドライブ制御部33Aにおいて実行することである。
すなわち本実施の形態によるストレージ装置31の場合、ライトデータ及びそのデータ用エラーチェックコードからなるデータ群のRAIDパリティ及びそのパリティ用エラーチェックコードを1系のキャッシュメモリ10Bに格納し終えると(図11の矢印RB21、図12のSP57)、0系のドライブ制御部33Aが0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを読み出す。そして0系のドライブ制御部33Aは、このとき読み出したライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードに対するエラーチェック処理を実行する(図12のSP58)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図12のSP59:YES)、0系のMPU8Aは、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図12のSP54)。そしてストレージ装置31は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図12のSP59:NO)、0系のドライブ制御部33Aが、上述のように0系のキャッシュメモリ10Aから読み出したライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを、ライトコマンドにおいて指定された論理ボリュームVOL内の対応するアドレス位置に格納する(図12のSP60)。そしてストレージ装置31は、この後、このライト処理を終了する。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
一方、図13は、本実施の形態のストレージ装置31がホストサーバ3からのリードコマンドを受信した場合における、ストレージ装置31内での処理の流れを示している。また図14は、かかる処理の流れを概略的に示すフローチャートである。
図13において矢印LA20〜矢印LA24及び矢印LB20で示すデータの流れは図7において矢印LA10〜矢印LA14及び矢印LB10で示すデータの流れと同様である。また図14のステップSP74〜ステップSP79において実行される処理は、図8のステップSP20〜ステップSP26において実行される処理と全く同じである。異なる点は、第1の実施の形態では、リードデータに対するエラーチェック処理をDMA部13A,13Bで実行するのに対して、本実施の形態においては、リードデータに対するエラーチェック処理をドライブ制御部11Aにおいて実行することである。
すなわち本実施の形態によるストレージ装置31の場合、ドライブ制御部33Aは、ホストサーバ3からのリードコマンドに応じて、当該リードコマンドにおいて指定された論理ボリュームVOLから指定されたリードデータ及びそのデータ用エラーチェックコードを読み出す(図13のLA20、図14のSP70)。
そしてドライブ制御部33Aは、読み出したデータ用エラーチェックコードを用いたリードデータに対するエラーチェック処理を実行する(図14のSP71)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図14のSP72:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図14のSP73)。そしてストレージ装置31は、この後、このリード処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図14のSP72:NO)、ストレージ装置31は、図14のステップSP74〜ステップSP79を図8のステップSP20〜ステップSP26と同様に処理する。
なお、以上のリード処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたリードデータ及びそのデータ用エラーチェックコードは、その後破棄される。
以上のように本実施の形態による計算機システム30によれば、第1の実施の形態と同様に、ストレージ装置4のスイッチ9A,9Bとして、カスタマイズしたPCIeスイッチを適用しながら、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
また本実施の形態によれば、ドライブ制御部33A,33Bにおいてエラーチェック処理を実行するため、キャッシュメモリ10A,10B及びドライブ制御部33A,33B間におけるデータ転送をも保証することができ、第1の実施の形態のストレージ装置4に比べてより一層とデータ転送の信頼性を向上させることができる。
さらに本実施の形態によれば、ドライブ制御部33A,33Bにおいてエラーチェック処理を実行するため、その分、第1の実施の形態によるストレージ装置4に比べてスイッチ9A,9Bの処理負荷を軽減することができる。
(3)第3の実施の形態
(3−1)本実施の形態によるデータ転送方式
図1との対応部分に同一符号を付して示す図15は、第3の実施の形態による計算機システム40の構成を示す。この計算機システム40は、ストレージ装置41のホスト制御部43A,43Bにエラーチェックコードを生成するエラーチェックコード生成機能が搭載されておらず、スイッチ44A,44BのDMA部45A,45Bに当該エラーチェックコード生成機能が搭載されている点が第1の実施の形態による計算機システム1と異なる。
また本実施の形態による計算機システム40は、このような構成の違いに伴い、ストレージ装置41におけるライト処理の流れも第1の実施の形態によるストレージ装置41と相違する。
なお図15においては、ストレージ装置41内の0系のコントローラ42Aがホストサーバ3からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置41内のデータの流れを示しているが、1系のコントローラ42Bがライトコマンド及びライトデータを受信した場合も同様である。また図16は、本実施の形態のストレージ装置41におけるライト処理の流れを概略的に示すフローチャートある。
このストレージ装置41において、0系のホスト制御部43Aは、ホストサーバ3からのライトコマンド及びライトデータを受信すると(図15の矢印RA30)、ライトデータを0系のスイッチ44Aのデュアルキャスト部12Aに送信する(図15の矢印RA31)。
デュアルキャスト部12Aは、受信したライトデータを0系のキャッシュメモリ10Aに格納すると共に、このライトデータを1系のスイッチ44Bに転送することにより、当該ライトデータを1系のキャッシュメモリ10Bにも格納させる(図4の矢印RA32及び矢印RB30、図16のSP80)。
続いて0系のスイッチ44AのDMA部45Aが、0系のキャッシュメモリ10Aからライトデータを読み出し(図15の矢印RA33)、このライトデータのデータ用エラーチェックコードを生成し(図16のSP81)、生成したデータ用エラーチェックコードを0系のキャッシュメモリ10Aに格納する(図15の矢印RA34、図16のSP82)。
またDMA部45Aは、このデータ用エラーチェックコードをキャッシュメモリ10Aから読み出して1系のスイッチ44Bに送信することにより、当該データ用エラーチェックコードを1系のキャッシュメモリ10Bにも格納させる(図15の矢印RB31、図16のSP83)。
この後、このストレージ装置41では、図4のステップSP3〜ステップSP11と同様にしてステップSP84〜ステップSP91の処理が実行される。従って、図15の矢印RA35〜矢印RA40に示すデータの流れは、図4の矢印RA13〜矢印RA18と同様となる。そしてストレージ装置41は、この後、このライト処理を終了する。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
一方、図17は、本実施の形態のストレージ装置41がホストサーバ3からリードコマンドを受信した場合における、ストレージ装置41内での処理の流れを示している。以下においても0系のコントローラ42Aがリードコマンドを受信した場合について説明するが、1系のコントローラ42Bがリードコマンドを受信した場合も同様である。また図18は、かかる処理の流れを概略的に示すフローチャートである。
ストレージ装置41において、ホストサーバ3からのリードコマンドを0系のコントローラ42Aが受領した場合、まず0系のドライブ制御部11Aが、このリードコマンドにおいて指定された論理ボリュームVOL内の当該リードコマンドにおいて指定されたアドレス位置からデータ及びそのデータ用エラーチェックコードを読み出し(図17の矢印LA30)、読み出したデータ(リードデータ)及びそのデータ用エラーチェックコードを0系のスイッチ44Aのデュアルキャスト部12Aに送信する(図17の矢印LA31)。
デュアルキャスト部12Aは、受信したリードデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aに格納すると共に、これらリードデータ及びそのデータ用エラーチェックコードを1系のスイッチ44Bに転送し、これらリードデータ及びそのデータ用エラーチェックコードを1系のキャッシュメモリ10Bにも格納させる(図17の矢印LA32及び矢印LB30、図18のSP100)。
続いて0系のスイッチ44AのDMA部45Aが、かかるリードデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aから読み出し(図17の矢印LA33、図18のSP101)、そのデータ用エラーチェックコードを用いた当該リードデータに対するエラーチェック処理を実行する(図18のSP102)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図18のSP103:YES)、0系のMPU8Aは、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図18のSP104)。そしてストレージ装置41は、この後、このリード処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図18のSP103:NO)、DMA部45Aが、リードデータに付加されたデータ用エラーチェックコードを削除し、リードデータのみを0系のキャッシュメモリ10Aに格納する(図17の矢印AL34、図18のSP105)。
このリードデータは、この後0系のホスト制御部43Aにより読み出され(図17の矢印AL35)、ホストサーバ3に送信される(図17の矢印LA36、図18のSP106)。そしてストレージ装置41は、この後、このリード処理を終了する。
なお、以上のリード処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたリードデータ及びそのデータ用エラーチェックコードは、その後破棄される。
(3−2)本実施の形態の効果
以上のように本実施の形態によれば、第1の実施の形態と同様に、ストレージ装置41のスイッチ44A,44Bとして、カスタマイズしたPCIeスイッチを適用しながらも、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
また本実施の形態によれば、ライトデータ等に対するエラーチェックコードの生成や、当該エラーチェックコードを用いたエラーチェックをすべてスイッチ44A,44Bにおいて実行するため、第1の実施の形態のストレージ装置4に比べてホスト制御部43A,43Bや、ドライブ制御部11A,11Bにおける負荷を軽減し、これらホスト制御部43A,43B及びドライブ制御部11A,11Bの構成を簡易化することができる。
(4)第4の実施の形態
図15との対応部分に同一符号を付して示す図19は、第4の実施の形態による計算機システム50を示す。この計算機システム50は、ストレージ装置51のドライブ制御部55A,55Bにエラーチェック機能が搭載されている点が第3の実施の形態による計算機システム40と異なる。
また計算機システム50においては、上述のような構成の違いに伴い、ストレージ装置51におけるライト処理の流れも第3の実施の形態によるストレージ装置41と相違する。図20は、このような第4の実施の形態のストレージ装置51におけるライト処理の流れを概略的に示すフローチャートある。
なお図19においては、ストレージ装置51内の0系のコントローラ52Aがホストサーバ3からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置51内でのライト処理の流れを示しているが、1系のコントローラ52Bがライトコマンド及びライトデータを受信した場合も同様である。
図19において矢印RA40〜矢印RA47及び矢印RB40〜矢印RB43で示すデータの流れは、図15において矢印RA30〜矢印RA37及び矢印RB30〜矢印RB33で示すデータの流れと同様である。また図20のステップSP110〜ステップSP119において実行される処理は、図16のステップSP80〜ステップSP89において実行される処理と全く同じである。異なる点は、第3の実施の形態では、RAIDパリティに対するエラーチェック処理をスイッチ44AのDMA部45Aにおいて実行しているのに対して、本実施の形態においては、かかるエラーチェック処理をドライブ制御部11Aにおいて実行することである。
すなわち本実施の形態によるストレージ装置51の場合、0系のスイッチ53のパリティ生成部14Aにおいて生成されたRAIDパリティ及びそのパリティ用エラーチェックコードが0系のキャッシュメモリ10Aに格納されると(図19の矢印RA47、図20のSP119)、0系のドライブ制御部55Aがライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを0系のキャッシュメモリ10Aから読み出す(図19の矢印RA48)。
そして0系のドライブ制御部55Aは、そのライトデータ及びパリティ用エラーチェックコードを用いた当該ライトデータ及びRAIDパリティに対するエラーチェック処理を実行する(図20のSP120)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図20のSP121:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図20のSP116)。そしてストレージ装置51は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図20のSP121:NO)、0系のドライブ制御部55Aが、上述のように0系のキャッシュメモリ10Aから読み出したライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとをライトコマンドにおいて指定された論理ボリュームVOL内の当該ライトコマンドにおいて指定されたアドレス位置に格納する(図19の矢印RA49、図20のSP122)。そしてストレージ装置51は、この後、このライト処理を終了する。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
一方、図21は、本実施の形態のストレージ装置51がホストサーバ3からリードコマンドを受信した場合における、ストレージ装置51内での処理の流れを示している。以下においても0系のコントローラ52Aがリードコマンドを受信した場合について説明するが、1系のコントローラ52Bがリードコマンドを受信した場合も同様である。また図22は、かかる処理の流れを概略的に示すフローチャートである。
ストレージ装置51において、ホストサーバ3からのリードコマンドを0系のコントローラ52Aが受領した場合、まず0系のドライブ制御部55Aが、このリードコマンドにおいて指定された論理ボリュームVOL内の対応するアドレス位置からデータ及びそのデータ用エラーチェックコードを読み出し(図21の矢印LA50、図22のSP130)、このデータ用エラーチェックコードを用いたかかるデータ(リードデータ)に対するエラーチェック処理を実行する(図22のSP131)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図22のSP132:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図22のSP133)。そしてストレージ装置51は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図22のSP132:NO)、ドライブ制御部55Aが、かかるリードデータ及びそのデータ用エラーチェックコードをスイッチ53Aのデュアルキャスト部12Aに送信する。そしてデュアルキャスト部12Aは、与えられたリードデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aに格納すると共に、これらリードデータ及びそのデータ用エラーチェックコードを1系のスイッチ44Bに転送し、これらリードデータ及びそのデータ用エラーチェックコードを1系のキャッシュメモリ10Bにも格納させる(図21の矢印LA52及び矢印LB50、図22のSP134)。
この後、ストレージ装置51は、図22のステップSP135〜ステップSP139を図18のステップSP100〜ステップSP106と同様に処理する。従って、図21の矢印LA52〜矢印LA56におけるデータの流れは、図17の矢印LA33〜矢印LA36におけるデータの流れと同じである。そしてストレージ装置51は、この後、このリード処理を終了する。
なお、以上のリード処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたリードデータ及びそのデータ用エラーチェックコードは、その後破棄される。
以上のように本実施の形態によれば、第1の実施の形態と同様に、ストレージ装置51のスイッチ53A,53Bとして、カスタマイズしたPCIeスイッチを適用しながらも、必要なエラーチェック処理を適宜行うことができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
また本実施の形態によれば、ドライブ制御部55A,55Bにおいてエラーチェック処理を実行するため、キャッシュメモリ10A,10B及びドライブ制御部55A,55B間におけるデータ転送をも保証することができ、従来に比べてより一層とデータ転送の信頼性を向上させることができる。
さらに本実施の形態によれば、このようにドライブ制御部55A,55Bにおいてエラーチェック処理を実行するため、第3の実施の形態のストレージ装置41に比べて、スイッチ53A,53Bの負荷を軽減することができる。
(5)第5の実施の形態
図4との対応部分に同一符号を付して示す図23は、第5の実施の形態による計算機システム60示す。本実施の形態による計算機システム60は、ストレージ装置61の0系及び1系のコントローラ62A,62Bに実装するスイッチ63A,63Bとして、汎用のPCIeスイッチを用いている点が第1の実施の形態による計算機システム1と異なる。
また計算機システム60においては、このような構成の違いに伴い、ライトデータやリードデータに対するエラーチェック処理を、0系のキャッシュメモリ10Aに格納されたプログラム64に基づき、0系のMPU8Aにより実行するようになされた点が第1の実施の形態による計算機システム1と相違する。図24は、本実施の形態によるストレージ装置61におけるライト処理の流れを概略的に示すフローチャートある。
なお図23においては、ストレージ装置61内の0系のコントローラ62Aがホストサーバ3からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置61内の処理の流れを示しているが、1系のコントローラ62Bがライトコマンド及びライトデータを受信した場合も同様である。
ストレージ装置61において、0系のホスト制御部7Aは、ホストサーバ3からのライトコマンド及びライトデータを受信すると(図23の矢印RA50)、このライトデータのデータ用エラーチェックコードを生成し、これをライトデータに付加する。また0系のホスト制御部7Aは、これらライトデータ及びそのデータ用エラーチェックコードをスイッチ63Aのデュアルキャスト部12Aに送信する(図23の矢印RA51)。
デュアルキャスト部12Aは、0系のホスト制御部7Aから送信されるライトデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aに格納すると共に、これらを1系のスイッチ63Bに転送して1系のキャッシュメモリ10Bにも格納させる(図23の矢印RA52及び矢印RB50、図24のSP141)。
続いてMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づいて、当該0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードを読み出し(図23の矢印RA53)、このデータ用エラーチェックコードを用いた当該ライトデータに対するエラーチェック処理を実行する(図24のSP142)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図24のSP143:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図24のSP143)。そしてストレージ装置61は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図24のSP143:NO)、MPU8Aは、プログラム64に基づいて、ライトデータ及びそのデータ用エラーチェックコードからなるデータ群に対するRAIDパリティを生成すると供に、このRAIDパリティ用のパリティ用エラーチェックコードを生成し、当該パリティ要エラーチェックコードをかかるRAIDパリティに付加する(図24のSP145)。
続いてMPU8Aは、このRAIDパリティ及びそのパリティ用エラーチェックコードを0系のキャッシュメモリ10Aに書き込む(図23の矢印RA54、図24のSP146)。またMPU8Aは、これらRAIDパリティ及びそのパリティ用エラーチェックコードを0系のキャッシュメモリ10Aから読み出して1系のスイッチ63Bに転送することにより、これらを1系のキャッシュメモリ10Bに格納させる(図23の矢印RB51、図24のSP147)。
次いでMPU8Aは、0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを読み出す。またMPU8Aは、0系のキャッシュメモリ10Aに格納されたプログラム64に基づいて、かかるライトデータのデータ用エラーチェックコードと、パリティ用エラーチェックコードとを用いたそのライトデータ及びRAIDパリティに対するエラーチェック処理とを実行する(図24のSP148)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図24のSP149:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第2のエラー処理を開始する(図24のSP144)。そしてストレージ装置61は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図24のSP149:NO)、MPU8Aが、ライトデータ及びそのデータ用エラーチェックコードと、RAIDパリティ及びそのパリティ用エラーチェックコードとを0系のキャッシュメモリ10Aから読み出し、これらをドライブ制御部11Aに送信する(図23の矢印RA56)。
かくしてドライブ制御部11Aは、これらライトデータ及びそのデータ用エラーチェックコードと、RAIDパリティ及びそのパリティ用エラーチェックコードとを、かかるライトコマンドにおいて指定された論理ボリュームVOL内の対応するアドレス位置に格納する(図24のSP150)。そしてストレージ装置61は、この後、このライト処理を終了する。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
以上のように本実施の形態による計算機システム60によれば、ストレージ装置61において、エラーチェックコードの生成及び当該エラーチェックコードを用いたエラーチェック処理をMPU8Aが行うため、スイッチ63A,63Bとして汎用のPCIeスイッチを用いることができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
(6)第6の実施の形態
図23との対応部分に同一符号を付した図25は、第6の実施の形態による計算機システム70を示す。この計算機システム70は、ストレージ装置71の0系及び1系のコントローラ72A,72Bにおいて、ホスト制御部7A,7Bに加えてドライブ制御部74A,74Bにもエラーチェック機能が搭載された点が第5の実施の形態によるストレージ装置60と異なる。
また計算機システム70においては、このような構成の違いに伴い、ストレージ装置70におけるライト処理の流れも第5の実施の形態によるストレージ装置60と相違する。図26は、本実施の形態によるストレージ装置71におけるライト処理の流れを概略的に示すフローチャートである。
なお図25においては、ストレージ装置71内の0系のコントローラ72Aがホストサーバ3からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置71内の処理の流れを示しているが、1系のコントローラ72Bがライトコマンド及びライトデータを受信した場合も同様である。
図25の矢印RA60〜RA64、矢印RB60及び矢印RB61におけるデータの流れは、図23の矢印RA50〜RA54、矢印RB50及び矢印RB51におけるデータの流れと同様である。また図26のステップSP160〜ステップSP167において実行される処理は、図24のステップSP140〜ステップSP147において実行される処理と全く同じである。
本実施の形態と第5の実施の形態との相違点は、第5の実施の形態では、ストレージ装置61において、ライトデータ及びRAIDパリティに対するエラーチェック処理をスイッチ9AのDMA部13Aにおいて実行していたのに対し、本実施の形態では、かかるエラーチェック処理をストレージ装置71のドライブ制御部33Aにおいて実行することである。
すなわち本実施の形態によるストレージ装置61の場合、ライトデータ及びそのデータ用エラーチェックコードからなるデータ群のRAIDパリティ及びそのパリティ用エラーチェックコードを1系のキャッシュメモリ10Bに格納し終えると(図25の矢印RB60、図26のSP167)、0系のドライブ制御部74Aが0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを読み出す。そして0系のドライブ制御部74Aは、このとき読み出したライトデータ及びパリティ用エラーチェックコードを用いたライトデータ及びRAIDパリティに対するエラーチェック処理を実行する(図26のSP168)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図26のSP169:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図26のSP164)。そしてストレージ装置71は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図26のSP169:NO)、0系のドライブ制御部74Aは、上述のように0系のキャッシュメモリ10Aから読み出した0系のキャッシュメモリ10Aからライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを、ライトコマンドにおいて指定された論理ボリュームVOL内の対応するアドレス位置に格納する(図12のSP170)。そしてストレージ装置31は、この後、このライト処理を終了する。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
以上のように本実施の形態の計算機システム70によれば、第5の実施の形態と同様に、ストレージ装置71内におけるエラーチェックコードの生成及び当該エラーチェックコードを用いたエラーチェック処理をMPU8Aが行うため、スイッチ73A,73Bとして汎用のPCIeスイッチを用いることがで、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
また本実施の形態によれば、ドライブ制御部74A,74Bにおいてエラーチェック処理を実行するため、キャッシュメモリ10A,10B及びドライブ制御部74A,74B間におけるデータ転送をも保証することができ、第5の実施の形態のストレージ装置61に比べてより一層とデータ転送の信頼性を向上させることができる。
さらに本実施の形態によれば、このようにドライブ制御部74A,74Bにおいてエラーチェック処理を実行するようにしているため、MPU8A,8Bの処理負荷を軽減することができる。
(7)第7の実施の形態
図23との対応部分に同一符号を付して示す図27は、第7の実施の形態による計算機システム80の構成を示す。この計算機システム80は、ストレージ装置81のホスト制御部83A,83Bにエラーチェックコードを生成するエラーチェックコード生成機能が搭載されておらず、かかるエラーチェックコードの生成処理及び当該エラーチェックコードを用いたエラーチェック処理を、キャッシュメモリ10A,10Bに格納されたプログラムに基づいてMPU8A,8Bにより実行する点が第5の実施の形態による計算機システム60と異なる。
また本実施の形態による計算機システム80は、このような構成の違いに伴い、ストレージ装置81におけるライト処理の流れも第5の実施の形態によるストレージ装置60と相違する。
なお図27においては、ストレージ装置81内の0系のコントローラ82Aがホストサーバ3からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置81内のデータの流れを示しているが、1系のコントローラ82Bがライトコマンド及びライトデータを受信した場合も同様である。また図28は、本実施の形態のストレージ装置81におけるライト処理の流れを概略的に示すフローチャートある。
このストレージ装置81において、0系のホスト制御部83Aは、ホストサーバ3からのライトコマンド及びライトデータを受信すると(図27の矢印RA70)、ライトデータをスイッチ63Aのデュアルキャスト部12Aに送信する(図27の矢印RA71)。
デュアルキャスト部12Aは、受信したライトデータを0系のキャッシュメモリ10Aに格納すると共に、これを1系のスイッチ63Bに転送することにより、当該ライトデータを1系のキャッシュメモリ10Bにも格納させる(図27の矢印RA72及び矢印RB70、図28のSP170)。
続いてMPU8Aが、0系のキャッシュメモリ10Aに格納された所定のプログラム84に基づいて、当該キャッシュメモリ10Aからライトデータを読み出し(図27の矢印RA73)、このライトデータのデータ用エラーチェックコードを生成する(図28のSP171)。
またMPU8Aは、かかるプログラム84に基づいて、このデータ用エラーチェックコードを0系のキャッシュメモリ10Aに格納する(図27の矢印RA74、図28のSP172)と共に、当該データ用エラーチェックコードを0系のキャッシュメモリ10Aから読み出して1系のスイッチ63Bに送信することにより、当該データ用エラーチェックコードを1系のキャッシュメモリ10Bにも格納させる(図27の矢印RB71、図28のSP173)。
次いでMPU8Aは、かかるプログラム84に基づいて、ライトデータ及びそのデータ用エラーチェックコードを0系のキャッシュメモリ10Aから読み出し(図27の矢印RA75)、そのデータ用エラーチェックコードを用いた当該ライトデータに対するエラーチェック処理を実行する(図28のSP174)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図28のSP175:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図28のSP176)。そしてストレージ装置81は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図28のSP175:NO)、MPU8Aは、プログラム84に基づいて、ライトデータ及びそのデータ用エラーチェックコードからなるデータ群のRAIDパリティを生成すると共に、このRAIDパリティのパリティ用エラーチェックコードを生成する(図28のSP177)。
またMPU8Aは、かかるプログラム84に基づいて、かかるRAIDパリティ及びそのパリティ用エラーチェックコードを0系のキャッシュメモリ10Aに格納すると共に(図27の矢印RA76、図28のSP178)、これらRAIDパリティ及びそのパリティ用エラーチェックコードを当該キャッシュメモリ10Aから読み出して1系のスイッチ63Bに送信することにより、当該RAIDパリティ及びそのパリティ用エラーチェックコードを1系のキャッシュメモリ10Bに格納させる(図27の矢印RB72、図28のSP179)。
この後、MPU8Aは、ライトデータ及びデータ用エラーチェックコードと、RAIDパリティ及びそのパリティ用エラーチェックコードとを0系のキャッシュメモリ10Aから読み出し(図27の矢印RA77)、データ用エラーチェックコードとパリティ用エラーチェックコードとを用いて、ライトデータと、RAIDパリティとに対するエラーチェック処理を実行する(図28のSP180)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図28のSP181:YES)、MPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図28のSP176)。そしてストレージ装置81は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図28のSP181:NO)、MPU8Aは、プログラム84に基づいて、ライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを0系のキャッシュメモリ10Aから読み出し、これらをドライブ制御部11Aに送信する(図27の矢印RA78)。
かくしてドライブ制御部11Aは、これらライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを、ライトコマンドにおいて指定された論理ボリュームVOL内の当該ライトコマンドにおいて指定されたアドレス位置に格納する(図27の矢印RA79、図28のSP182)。そしてストレージ装置81は、この後、このライト処理を終了する。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
以上のように本実施の形態によれば、第5の実施の形態と同様に、ストレージ装置81内におけるエラーチェックコードの生成及び当該エラーチェックコードを用いたエラーチェック処理をMPU8Aが行うため、スイッチ63A,63Bとして汎用のPCIeスイッチを用いることができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
また本実施の形態によれば、ライトデータ等に対するエラーチェックコードの生成や、当該エラーチェックコードを用いたエラーチェックをすべてMPU8A,8Bにおいて実行するため、第5の実施の形態のストレージ装置4に比べてホスト制御部83A,83Bや、ドライブ制御部11A,11Bにおける負荷を軽減し、これらホスト制御部83A,83B及びドライブ制御部11A,11Bの構成を簡易化することができる。
(8)第8の実施の形態
図27との対応部分に同一符号を付して示す図29は、第8の実施の形態による計算機システム90を示す。この計算機システム90は、ストレージ装置91のドライブ制御部93Aにエラーチェック機能が搭載されている点が第7の実施の形態による計算機システム80と異なる。
また計算機システム90においては、上述のような構成の違いに伴い、ストレージ装置91におけるライト処理の流れも第7の実施の形態によるストレージ装置91と相違する。図30は、このような第8の実施の形態のストレージ装置91におけるライト処理の流れを概略的に示すフローチャートある。
なお図29においては、ストレージ装置81内の0系のコントローラ92Aがホストサーバ3からのライトコマンド及びライトデータを受信した場合における当該ストレージ装置91内でのライト処理の流れを示しているが、1系のコントローラ92Aがライトコマンド及びライトデータを受信した場合も同様である。
図29において矢印RA80〜矢印RA86で示すデータの流れは、図27の矢印RA30〜矢印RA37及び矢印RB30〜矢印RB33におけるデータの流れと同様である。また図30のステップSP180〜ステップSP189において実行される処理は、図28のステップSP170〜ステップSP179において実行される処理と全く同じである。異なる点は、第7実施の形態では、ライトデータ及びデータ用エラーチェックコードと、RAIDパリティ及びそのパリティ用エラーチェックコードとのエラーチェックをMPU8Aが行っていたのに対し、本実施の形態では、かかるエラーチェック処理をドライブ制御部93Aにおいて実行することである。
すなわち本実施の形態によるストレージ装置91の場合、0系のMPU8Aがライトデータ及びそのデータ用エラーチェックコードからなるデータ群のRAIDパリティ及びそのパリティ用エラーチェックコードが0系のキャッシュメモリ10Aに格納されると(図29の矢印RB82、図30のSP199)、0系のドライブ制御部93Aがライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとを0系のキャッシュメモリ10Aから読み出す(図29の矢印RA88)。
そして0系のドライブ制御部93Aは、そのデータ用エラーチェックコードと、パリティ用エラーチェックコードとを用いて、当該ライトデータとRAIDパリティとに対するエラーチェック処理を実行する(図30のSP200)。
このエラーチェックの結果、エラーを検出したというチェック結果が得られた場合(図30のSP201:YES)、0系のMPU8Aが、0系のキャッシュメモリ10Aに格納されたプログラムに基づき、上述の第1のエラー処理を開始する(図30のSP196)。そしてストレージ装置91は、この後、このライト処理を終了する。
これに対して、かかるエラーチェックの結果、エラーを検出しなかったというチェック結果が得られた場合(図30のSP201:NO)、ドライブ制御部93Aは、上述のように0系のキャッシュメモリ10Aから読み出したライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとをライトコマンドにおいて指定された論理ボリュームVOL内の当該ライトコマンドにおいて指定されたアドレス位置に格納する(図29の矢印RA88、図30のSP202)。そしてストレージ装置91は、この後、このライト処理を終了する。
なお、以上のライト処理が正常に終了した場合、1系のキャッシュメモリ10Bに格納されたライトデータ及びそのデータ用エラーチェックコードと、これらのRAIDパリティ及びそのパリティ用エラーチェックコードとは、その後破棄される。
以上のように本実施の形態によれば、第5の実施の形態と同様に、ストレージ装置91内におけるエラーチェックコードの生成及び当該エラーチェックコードを用いたエラーチェック処理をMPU8Aが行うため、スイッチ63A,63Bとして汎用のPCIeスイッチを用いることができ、かくしてコストを抑えながら信頼性高くデータ転送を行うことができる。
また本実施の形態によれば、ドライブ制御部93A,93Bにおいてエラーチェック処理を実行するようにしているため、例えばスイッチ63A,63B及びドライブ制御部93A,93B間におけるデータ転送をも保証することができ、従来に比べてより一層とデータ転送の信頼性を向上させることができる。
さらに本実施の形態によれば、このようにドライブ制御部93A,93Bにおいてエラーチェック処理を実行するため、第7の実施の形態のストレージ装置81に比べて、MPU8A,8Bの負荷を軽減することができる。
本発明は、ストレージ装置及びデータ転送方法に関し、ホストサーバから与えられたライトデータにエラーチェックコードを付加して装置内におけるデータ転送を行うストレージ装置に広く適用することができる。

Claims (14)

  1. ホストサーバからの要求に応じて、記憶デバイスが提供する記憶領域にデータを読み書きするストレージ装置において、
    前記ホストサーバとの間で前記データを送受するホスト制御部と、
    前記記憶デバイスとの間で前記データを送受するドライブ制御部と、
    前記ホスト制御部及び前記ドライブ制御部間で送受される前記データを一時的に保持するキャッシュメモリと、
    前記ホスト制御部、前記キャッシュメモリ及び前記ドライブ制御部間において前記データの転送元及び転送先を切り替えるスイッチと、
    前記ホスト制御部、前記ドライブ制御部及び前記スイッチを制御する制御部と
    を備え、
    前記データのエラーチェックコードの生成処理及び当該エラーチェックコードを用いたエラーチェック処理を、前記スイッチにおいて実行し、又は前記ホスト制御部、前記ドライブ制御部、前記スイッチ及び前記制御部において分散して実行する
    ことを特徴とするストレージ装置。
  2. 前記スイッチは、PCIe(peripheral component interconnect Express)スイッチである
    ことを特徴とする請求項1に記載のストレージ装置。
  3. 前記エラーチェックコードの生成処理を前記ホスト制御部において実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記スイッチにおいて実行する
    ことを特徴とする請求項1に記載のストレージ装置。
  4. 前記エラーチェックコードの生成処理を前記ホスト制御部において実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記スイッチ及び前記ドライブ制御部において実行する
    ことを特徴とする請求項1に記載のストレージ装置。
  5. 前記エラーチェックコードの生成処理を前記スイッチにおいて実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記スイッチ及び前記ドライブ制御部において実行する
    ことを特徴とする請求項1に記載のストレージ装置。
  6. 前記エラーチェックコードの生成処理を前記ホスト制御部において実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記制御部において実行する
    ことを特徴とする請求項1に記載のストレージ装置。
  7. 前記エラーチェックコードの生成処理を前記制御部において実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記ドライブ制御部において実行する
    ことを特徴とする請求項1に記載のストレージ装置。
  8. ホストサーバからの要求に応じて、記憶デバイスが提供する記憶領域にデータを読み書きするストレージ装置内のデータ転送方法において、
    前記ストレージ装置は、
    前記ホストサーバとの間で前記データを送受するホスト制御部と、
    前記記憶デバイスとの間で前記データを送受するドライブ制御部と、
    前記ホスト制御部及び前記ドライブ制御部間で送受される前記データを一時的に保持するキャッシュメモリと、
    前記ホスト制御部、前記キャッシュメモリ及び前記ドライブ制御部間において前記データの転送元及び転送先を切り替えるスイッチと、
    前記ホスト制御部、前記ドライブ制御部及び前記スイッチを制御する制御部とを有し、
    前記データを前記ホストから受信する第1のステップと、
    前記データのエラーチェックコードの生成処理及び当該エラーチェックコードを用いたエラーチェック処理を、前記スイッチにおいて実行し、又は前記ホスト制御部、前記ドライブ制御部、前記スイッチ及び前記制御部において分散して実行する第2のステップと
    を備えることを特徴とするデータ転送方法。
  9. 前記スイッチは、PCIe(peripheral component interconnect Express)スイッチである
    ことを特徴とする請求項8に記載のデータ転送方法。
  10. 前記第2のステップでは、
    前記エラーチェックコードの生成処理を前記ホスト制御部において実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記スイッチにおいて実行する
    ことを特徴とする請求項8に記載のデータ転送方法。
  11. 前記第2のステップでは、
    前記エラーチェックコードの生成処理を前記ホスト制御部において実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記スイッチ及び前記ドライブ制御部において実行する
    ことを特徴とする請求項8に記載のデータ転送方法。
  12. 前記第2のステップでは、
    前記エラーチェックコードの生成処理を前記スイッチにおいて実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記スイッチ及び前記ドライブ制御部において実行する
    ことを特徴とする請求項8に記載のデータ転送方法。
  13. 前記第2のステップでは、
    前記エラーチェックコードの生成処理を前記ホスト制御部において実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記制御部において実行する
    ことを特徴とする請求項8に記載のデータ転送方法。
  14. 前記第2のステップでは、
    前記エラーチェックコードの生成処理を前記制御部において実行し、
    前記エラーチェックコードを用いたエラーチェック処理を前記ドライブ制御部において実行する
    ことを特徴とする請求項8に記載のデータ転送方法。
JP2011537757A 2009-04-06 2009-04-06 ストレージ装置及びデータ転送方法 Expired - Fee Related JP5386593B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/057538 WO2010116538A1 (en) 2009-04-06 2009-04-06 Storage apparatus and data transfer method

Publications (2)

Publication Number Publication Date
JP2012519317A true JP2012519317A (ja) 2012-08-23
JP5386593B2 JP5386593B2 (ja) 2014-01-15

Family

ID=41665332

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011537757A Expired - Fee Related JP5386593B2 (ja) 2009-04-06 2009-04-06 ストレージ装置及びデータ転送方法

Country Status (3)

Country Link
US (1) US20110154165A1 (ja)
JP (1) JP5386593B2 (ja)
WO (1) WO2010116538A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014032573A (ja) * 2012-08-06 2014-02-20 Fujitsu Ltd ストレージ装置、ストレージ装置の管理方法、ストレージ装置の管理プログラム及び記憶媒体
JP2015075845A (ja) * 2013-10-07 2015-04-20 富士通株式会社 ストレージ制御装置、制御プログラムおよび制御方法
WO2015072028A1 (ja) * 2013-11-18 2015-05-21 株式会社日立製作所 ストレージ制御装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793539B2 (en) 2012-06-13 2014-07-29 International Business Machines Corporation External settings that reconfigure the error handling behavior of a distributed PCIe switch
US10296429B2 (en) * 2014-07-25 2019-05-21 Hitachi, Ltd. Storage device
WO2018198336A1 (ja) 2017-04-28 2018-11-01 株式会社日立製作所 ストレージシステム及びストレージ制御装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002023966A (ja) * 2000-06-30 2002-01-25 Toshiba Corp 転送データを冗長化したディスクシステム
US6715036B1 (en) * 2000-08-01 2004-03-30 International Business Machines Corporation Method, system, and data structures for transferring blocks of data from a storage device to a requesting application
JP2004288078A (ja) * 2003-03-25 2004-10-14 Hitachi Ltd 固定長ディスクを利用したディスクアレイシステム
JP2006107311A (ja) * 2004-10-08 2006-04-20 Hitachi Ltd ディスクアレイ装置およびその制御方法
JP2007122476A (ja) * 2005-10-28 2007-05-17 Fujitsu Ltd データストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349357B1 (en) * 1999-03-04 2002-02-19 Sun Microsystems, Inc. Storage architecture providing scalable performance through independent control and data transfer paths
US6397267B1 (en) * 1999-03-04 2002-05-28 Sun Microsystems, Inc. Redirected I/O for scalable performance storage architecture
US6370605B1 (en) * 1999-03-04 2002-04-09 Sun Microsystems, Inc. Switch based scalable performance storage architecture
US6898721B2 (en) * 2001-06-22 2005-05-24 Gallitzin Allegheny Llc Clock generation systems and methods
US6957303B2 (en) * 2002-11-26 2005-10-18 Hitachi, Ltd. System and managing method for cluster-type storage
JP4405277B2 (ja) * 2004-02-16 2010-01-27 株式会社日立製作所 ディスク制御装置
JP4391954B2 (ja) * 2005-02-18 2009-12-24 富士通株式会社 ファイル制御システムおよびファイル制御装置
JP4700562B2 (ja) * 2006-05-18 2011-06-15 株式会社バッファロー データ記憶装置およびデータ記憶方法
JP2008097527A (ja) * 2006-10-16 2008-04-24 Hitachi Ltd ストレージシステム及びその制御方法
JP4956143B2 (ja) * 2006-11-02 2012-06-20 株式会社東芝 半導体メモリカード、ホスト装置、及びデータ転送方法
US20090070761A1 (en) * 2007-09-06 2009-03-12 O2Micro Inc. System and method for data communication with data link backup
JP5127491B2 (ja) * 2008-02-08 2013-01-23 株式会社日立製作所 ストレージサブシステム及びこれの制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002023966A (ja) * 2000-06-30 2002-01-25 Toshiba Corp 転送データを冗長化したディスクシステム
US6715036B1 (en) * 2000-08-01 2004-03-30 International Business Machines Corporation Method, system, and data structures for transferring blocks of data from a storage device to a requesting application
JP2004288078A (ja) * 2003-03-25 2004-10-14 Hitachi Ltd 固定長ディスクを利用したディスクアレイシステム
JP2006107311A (ja) * 2004-10-08 2006-04-20 Hitachi Ltd ディスクアレイ装置およびその制御方法
JP2007122476A (ja) * 2005-10-28 2007-05-17 Fujitsu Ltd データストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014032573A (ja) * 2012-08-06 2014-02-20 Fujitsu Ltd ストレージ装置、ストレージ装置の管理方法、ストレージ装置の管理プログラム及び記憶媒体
JP2015075845A (ja) * 2013-10-07 2015-04-20 富士通株式会社 ストレージ制御装置、制御プログラムおよび制御方法
WO2015072028A1 (ja) * 2013-11-18 2015-05-21 株式会社日立製作所 ストレージ制御装置
US9495235B2 (en) 2013-11-18 2016-11-15 Hitachi, Ltd. Identifying a physical device in which a fault has occurred in a storage system

Also Published As

Publication number Publication date
US20110154165A1 (en) 2011-06-23
WO2010116538A1 (en) 2010-10-14
JP5386593B2 (ja) 2014-01-15

Similar Documents

Publication Publication Date Title
US11604746B2 (en) Presentation of direct accessed storage under a logical drive model
US20200327074A1 (en) Multi-Device Storage System with Hosted Services on Peer Storage Devices
JP5386593B2 (ja) ストレージ装置及びデータ転送方法
JP5014821B2 (ja) ストレージシステム及びその制御方法
US9026845B2 (en) System and method for failure protection in a storage array
CN106021147B (zh) 在逻辑驱动器模型下呈现直接存取的存储设备
JP5124792B2 (ja) RAID(RedundantArrayofIndependentDisks)システム用のファイルサーバ
JP2008181416A (ja) 記憶システム及びデータ管理方法
US20070050544A1 (en) System and method for storage rebuild management
JP2014041664A (ja) Raid情報のメモリ効率検査
US10929229B2 (en) Decentralized RAID scheme having distributed parity computation and recovery
US20120210314A1 (en) Concurrent upgrade of all components in storage subsystems
US10936420B1 (en) RAID storage-device-assisted deferred Q data determination system
JP4836014B2 (ja) ディスクアレイ装置及び物理ディスクの復元方法
US11340989B2 (en) RAID storage-device-assisted unavailable primary data/Q data rebuild system
EP2859553B1 (en) Memory system management
JP5511546B2 (ja) フォールトトレラントの計算機システム、複数の物理サーバとストレージ装置とに接続されるスイッチ装置、及び、サーバ同期制御方法
JP2014523043A (ja) 第2のブロック・サイズのブロック内の第1のブロック・サイズのブロックをエミュレートするディスク・ドライブからの通知を介した破壊的書き込みのインジケーションのための方法、システム、およびコンピュータ・プログラム(第2のブロック・サイズのブロック内の第1のブロック・サイズのブロックをエミュレートするディスク・ドライブからの通知を介した破壊的書き込みのインジケーション)
JP2002215337A (ja) ディスクアレイシステム
US11422740B2 (en) Raid storage-device-assisted data update system
JP5153392B2 (ja) 記憶制御装置及び方法
US11327683B2 (en) RAID storage-device-assisted read-modify-write system
US12019917B2 (en) Peer RAID control among peer data storage devices
US11995316B2 (en) Systems and methods for a redundant array of independent disks (RAID) using a decoder in cache coherent interconnect storage devices
JP2012113345A (ja) ディスクアレイ装置及び領域割当て方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130814

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131007

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees