JP4362134B2 - データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム - Google Patents

データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム Download PDF

Info

Publication number
JP4362134B2
JP4362134B2 JP2007030753A JP2007030753A JP4362134B2 JP 4362134 B2 JP4362134 B2 JP 4362134B2 JP 2007030753 A JP2007030753 A JP 2007030753A JP 2007030753 A JP2007030753 A JP 2007030753A JP 4362134 B2 JP4362134 B2 JP 4362134B2
Authority
JP
Japan
Prior art keywords
data
verification
field
block
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007030753A
Other languages
English (en)
Other versions
JP2008197804A (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 JP2007030753A priority Critical patent/JP4362134B2/ja
Priority to US12/068,355 priority patent/US7921265B2/en
Publication of JP2008197804A publication Critical patent/JP2008197804A/ja
Application granted granted Critical
Publication of JP4362134B2 publication Critical patent/JP4362134B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、所定のフィールドによって構成されるブロック単位で可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラムに関し、特に、データ更新時に確実にエラーを検出するデータアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラムに関する。
ベンダ独自のオペレーティングシステムによって稼動するメインフレーム系システムにおいては、その外部記憶装置として、可変長レコードのデータフォーマットを有する磁気ディスク装置が利用されている。
ところで、情報処理システムに使用される外部記憶装置として、データアクセスの高速性やデータの障害耐性を高める構成を有するディスクアレイ装置(RAID(Redundant Arrays of Inexpensive Disks)装置ともいう)が多く用いられている。このディスクアレイ装置は、種類の異なる汎用的なオペレーティングシステムによって稼動するオープン系システムで多く利用されるため、固定長レコードのデータフォーマットを有している。
また、近年では、情報処理技術の進展に伴って情報処理端末が一般化してきており、情報処理システムがメインフレーム系システムとオープン系システムの混在によって構成される場合が多くなっている。そのため、固定長のデータフォーマットでデータを記憶するディスクアレイ装置において、メインフレーム系システムからでもデータのアクセスが可能なように構成されている。
このようななか、たとえば、特許文献1では、可変長レコードを固定長でデータを管理するCA(Channel Adaptor)のキャッシュメモリに書き込む際に、可変長レコードのフィールドにFCC(Field Check Code)を、LBA(Logical Block Addressing)にBCC(Block Check Code)を付加して、キャッシュメモリへ書き込まれるデータの信頼性を高めるデータ書き込み方法が提案されている。
また、特許文献2では、ディスクアレイ装置のパリティグループを構成する各ディスクに書き込まれたデータに付加チェックコードを付加するとともに、パリティディスクにパリティグループの全ての付加チェックコードを書き込み、データの読み出しの際に、パリティディスクの付加チェックコードを読み出してデータチェックを行うディスクアレイ制御方式が提案されている。
また、特許文献3には、ディスクに書き込むデータの一部を管理エリアに格納するとともに該データの一部に基づいて生成された演算データを該データに埋め込んでディスクに書き込む。また、ディスクから前述のデータを読み出す際に、該データに埋め込まれている演算データを抽出して所定の演算を行うとともに、この演算結果と、管理エリアに格納されている前述のデータの一部とを比較することにより、読み出しデータの正当性をチェックするディスクアレイ装置が提案されている。
特開2006−164141号公報 特開2003−36146号公報 特開2006−79380号公報
しかしながら、上記特許文献1〜3に代表される従来技術では、データのリード時に、フィールドやLBA単位でのデータ抜けが発生した場合に、これを検出することが可能であるものの、CAにおけるキャッシュメモリへのデータ書き込みが異常であると、BCCはエラーを検出できず、FCCでのみしかエラーを検出できなかった。
具体的には、CA内部で書き込みデータが異常となってしまう原因は、Read Modify Write(LBAの一部のフィールドのみの更新)の際に、一旦キャッシュメモリからデータを読み出すが、このとき読み出しデータが異常であることによる。このため、更新されるフィールドのFCCは当然エラーを検出しないが、BCCは、異常データと更新データとから再計算されるため、BCCもエラーを検出することができなかった。
なお、ディスクリプタがデータ長の指定ミスを起こした場合、FCCをチェックできない場合がありうる。しかし、現状では、FCCチェックが行われなかったとしても、エラーとは見なされず、正常終了とされてしまう。
本発明は、上記問題点(課題)を解消するためになされたものであって、Read Modify Write時に、FCCチェックおよびBCCチェックともに正しくチェックが完了したか否かを明らかにするとともに、FCCチェックおよびBCCチェックにより確実にエラーを検出できるデータアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラムを提供することを目的とする。
上述した問題を解決し、目的を達成するため、本発明は、所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス方法であって、前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証工程と、前記検証工程による検証結果を前記外部装置へ通知する検証結果通知工程とを含み、前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含み、前記検証結果通知工程は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証工程による前記検証結果にかかわらず該検証結果を異常として通知することを特徴とする。
また、本発明は、所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うチャネルアダプタであって、前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証手段と、前記検証手段による検証結果を前記外部装置へ通知する検証結果通知手段とを備え、前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含み、前記検証結果通知手段は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証手段による前記検証結果にかかわらず該検証結果を異常として通知することを特徴とする。
また、本発明は、所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセスを制御するデータアクセス制御装置であって、前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証部と、前記検証部による検証結果を前記外部装置へ通知する検証結果通知部とを備え、前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含み、前記検証結果通知部は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証部による前記検証結果にかかわらず該検証結果を異常として通知することを特徴とする。
また、本発明は、所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス手順をチャネルアダプタの制御装置に実行させるデータアクセスプログラムであって、前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証手順と、前記検証手順による検証結果を前記外部装置へ通知する検証結果通知手順とを前記制御装置に実行させ、前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含み、前記検証結果通知手順は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証手順による前記検証結果にかかわらず該検証結果を異常として通知することを特徴とする。
これらの発明によれば、可変長データをデータ蓄積用メモリから読み出す際に、ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証し、検証結果は、ブロックデータ検証コードに基づいて可変長データをブロック単位で検証したか否かを示すブロック検証情報と、フィールドデータ検証コードに基づいて可変長データをフィールド単位で検証したか否かを示すフィールド検証情報とを含み、ブロック検証情報が未検証を示す情報であった場合、またはフィールド検証情報が未検証を示す情報であった場合に、検証結果にかかわらず該検証結果を異常として通知するので、データの異常を早期に発見することが可能となる。また、このデータの異常を外部装置へ通知して報知することが可能となる。また、データの検証が行われたか否かについて認識することが可能となる。また、このデータの検証が行われたか否かについて外部装置へ通知して報知することが可能となる。また、データに異常があるにもかかわらず検証が行われていないためにこの異常を通知しないという不都合を回避することが可能となる。
また、本発明は、上記発明において、前記フィールドは、該フィールドに付与されているフィールドデータ検証コードを含むデータ長を指定して読み出されるものであり、前記検証工程は、前記データ長の指定が誤っていた場合に、前記フィールド検証情報に未検証を示す情報を設定することを特徴とする。
この発明によれば、フィールドデータ検証コードを含むフィールドのデータ長の指定が誤っていた場合に、フィールド検証情報に未検証を示す情報を設定するので、フィールドのデータに異常があるにもかかわらず検証が行われていないためにこの異常を通知しないという不都合を回避することが可能となる。
また、本発明は、上記発明において、更新データを受信すると、該更新データによる更新対象の被更新データを前記データ蓄積用メモリから読み出して前記検証工程による該被更新データの検証を行った後に、前記更新データにより前記被更新データのフィールドを更新し、更新後のフィールドに対応してフィールドデータ検証コードを更新するとともに、該更新後のフィールドを含むブロックに対応するブロックデータ検証コードを更新することを特徴とする。
この発明によれば、更新データによる更新対象の被更新データをデータ蓄積用メモリから読み出して検証を行った後に、更新データにより被更新データのフィールドを更新し、更新後のフィールドに対応してフィールドデータ検証コードを更新するとともに、該更新後のフィールドを含むブロックに対応するブロックデータ検証コードを更新するので、データ更新時において、データ蓄積用メモリから読み出した被更新データの異常を発見することが可能となる。
また、本発明は、所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス方法であって、前記可変長データを前記データ蓄積用メモリに書き込む際に、前記ブロックごとにブロック検証コードを付加し、前記フィールドごとにフィールドデータ検証コードを付加する検証コード付加工程と、前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証工程と、前記検証工程による検証結果を前記外部装置へ通知する検証結果通知工程とを含み、前記検証コード付加工程において、可変長のユーザデータが2つのブロックにまたがって分割されて記憶される場合には、ユーザデータが分割されてできた複数の部分のうち最後尾の部分にのみ当該ユーザデータ全体を検証するデータ検証コードを付加し、前記検証工程においては、前記ユーザデータが2つのブロックにまたがって分割されて記憶された場合に、当該ユーザデータが分割されてできた複数の部分を連結し、前記データ検証コードに基づいて前記複数の部分を連結してできたユーザデータをさらに検証することを特徴とする。
この発明によれば、可変長データをデータ蓄積用メモリに書き込む際に、ブロックごとにブロック検証コードを付加し、フィールドごとにフィールドデータ検証コードを付加し、可変長データをデータ蓄積用メモリから読み出す際に、ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証し、検証結果を外部装置へ通知し、可変長のユーザデータが2つのブロックにまたがって分割されて記憶される場合には、ユーザデータが分割されてできた複数の部分のうち最後尾の部分にのみ当該ユーザデータ全体を検証するデータ検証コードを付加し、ユーザデータが2つのブロックにまたがって分割されて記憶された場合に、当該ユーザデータが分割されてできた複数の部分を連結し、データ検証コードに基づいて複数の部分を連結してできたユーザデータをさらに検証することとしたので、データの異常を早期に発見することが可能となる。また、このデータの異常を外部装置へ通知して報知することが可能となる。
本発明によれば、可変長データをデータ蓄積用メモリから読み出す際に、ブロックデータ検証コードと、フィールドデータ検証コードとに基づいたデータ検証を必ず行うので、早期に読み出しデータの異常を発見することが可能になるとともに、異常がある読み出しデータに基づいてデータ更新を行い、その異常が発見されることなくデータ蓄積用メモリに書き戻されることを防止し、チャネルアダプタのキャッシュメモリに格納されるデータの精度を高めることが可能となるという効果を奏する。
以下に添付図面を参照し、本発明のデータアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラムにかかる実施例を詳細に説明する。なお、本発明にかかるデータアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラムは、固定長のデータフォーマットに可変長のデータフォーマットのデータを格納する形式でデータを管理し、固定長データへのアクセスも可変長データへのアクセスもともに対処可能な記憶装置(データ蓄積用メモリ)に対して適用することができる。以下の実施例では、かかるデータアクセス方法を実行する装置として、ディスクアレイ装置におけるキャッシュメモリ(CM)へのデータの読み書きを行うチャネルアダプタ(CA)を例に挙げて説明する。
先ず、実施例にかかるディスクアレイ装置の構成について説明する。図1は、実施例にかかるディスクアレイ装置の概略構成を示すブロック図である。ディスクアレイ装置10は、外部装置としてのホストコンピュータ20A、20Bの外部記憶装置として機能する装置であり、データを格納するディスクアレイ部と、ディスクアレイ部の制御を行うディスクアレイ制御部とを備えて構成される。
ディスクアレイ部は、複数の磁気ディスク装置90A、90Bと、複数の磁気ディスク装置90A、90Bの切り替えを行うスイッチ80A、80Bとから構成される。この磁気ディスク装置90A、90Bは、一般的にデータアクセスの速さとデータの冗長性の段階に応じて分類されるRAID(Redundant Array of Inexpensive Disks)のレベルによって異なる構成を有する。
たとえば、データを格納するための磁気ディスク装置と、この磁気ディスク装置に格納されたデータをミラーリングするための磁気ディスク装置と、磁気ディスク装置に格納されたデータに対して作成されたパリティデータを格納するための磁気ディスク装置というように、RAIDのレベルに対応してそれぞれの磁気ディスク装置の用途が分かれている。なお、磁気ディスク装置90A、90Bは、固定長のデータフォーマットでデータを格納しているものとする。
ディスクアレイ制御部は、ホストコンピュータ20A、20Bに対するインタフェース制御を行うチャネルアダプタ40A、40Bと、磁気ディスク装置90A、90Bから読み出したデータを一時的に保持するキャッシュメモリ50A、50Bと、データの読み書き時の各種制御を行い、キャッシュメモリ50A、50Bの管理を行うキャッシュコントローラ60A、60Bと、データの読み書き時にキャッシュコントローラ60A、60Bの指示に基づいてそれぞれの磁気ディスク装置90A、90Bに対する制御を行うディスクアダプタ70A、70Bとを備えて構成される。
キャッシュコントローラ60A、60Bは、ホストコンピュータ20A、20Bから読み出し要求のあったデータがキャッシュメモリ50A、50B上にない場合に、磁気ディスク装置90A、90Bからデータを読み出してキャッシュメモリ50A、50B上に置き、チャネルアダプタ40A、40Bによって読み込み可能な状態とする機能を有する。
なお、キャッシュメモリ50A、50Bの容量が飽和した場合には、使われていないデータや最後にアクセスされてから所定の期間が経過したデータなどを廃棄して新たなデータを書き込むための領域の確保が行われる。また、キャッシュコントローラ60A、60Bは、ホストコンピュータ20A、20Bからの書き込み要求によってキャッシュメモリ50A、50Bに書き込まれたデータを磁気ディスク装置90A、90Bへ書き込むようにディスクアダプタ70A、70Bに指示する機能も有する。
データ蓄積用メモリであるキャッシュメモリ50A、50Bは、キャッシュコントローラ60A、60Bによって磁気ディスク装置90A、90Bから読み出されたデータを格納したり、ホストコンピュータ20A、20Bからの書き込み要求のあったデータを格納したりする機能を有する。
ディスクアダプタ70A、70Bは、キャッシュコントローラ60A、60Bからの指示に基づいて、磁気ディスク装置90A、90Bからデータを読み込んだり、磁気ディスク装置90A、90Bにデータを書き込んだりする機能を有する。
チャネルアダプタ40A、40Bは、ホストコンピュータ20A、20Bからの読み出し要求に対応するデータをキャッシュメモリ50A、50Bから読み出して、ホストコンピュータ20A、20Bに転送するとともに、ホストコンピュータ20A、20Bから書き込み要求のあったデータをキャッシュメモリ50A、50B上に書き込む処理を行う機能を有する。
以上の構成において、本発明にかかるデータアクセス方法は、チャネルアダプタ40A、40Bとキャッシュメモリ50A、50Bとの間のデータの書き込みに対して適用することができる。そこで、チャネルアダプタ40A、40Bとキャッシュメモリ50A、50Bとの間でデータを転送する際のフォーマット変換とチェックコードについて説明する。
固定長データフォーマットに可変長データフォーマットのデータを格納する際に、可変長データフォーマットとしてCKDフォーマットを用いる。CKDフォーマットのレコードは、カウント部(COUNT)、キー部(Key)、データ部(Data)の3つから構成される。カウント部は、固定長であり、当該レコードのアドレスとデータ長の情報を含む。キー部は、可変長であり、オペレーティングシステムが当該レコードを識別するために用いられる。データ部は、可変長であり、ユーザデータが格納される領域である。カウント部、キー部、データ部をフィールドと呼ぶ。
磁気ディスク装置90A、90Bでは、ホストコンピュータ20A、20Bから受け渡された可変長データを固定長の論理ブロックで管理する。このときの固定長は、512バイトである。キャッシュメモリ50A、50Bでは、磁気ディスク装置90A、90Bから読み出したデータについて、LBAと呼ばれる512バイトの論理ブロックごとに行われたエラーチェックの結果である8バイトのエラーチェックコード(以下、ブロックチェックコード(Block Check Code、BCC)という)がこのLBAの末尾に付されたものが格納されている。つまり、キャッシュメモリ50A、50Bに書き込まれるデータは、LBAごとにエラー保護のための8バイトのBCCが続いて付加され、全体として520バイトのデータ長となる。
また、フィールドごとにエラー保護のために計算された8バイトのエラーチェックコード(以下、フィールドチェックコード(Field Check Code、FCC)という)が付加される。このFCCは、各フィールドの末尾に8バイトで付与される。よって、LBAは、カウント部、キー部、データ部それぞれに8バイトのFCCを含んで512バイトとなる。
なお、BCCは、LBA内の全体のデータを使用して計算した結果生成されることが望ましく、FCCも、各フィールド内の全体のデータを使用して計算した結果生成されることが望ましい。たとえば、エラーチェック方法として巡回冗長検査(CRC(Cyclic Redundancy Check))を用い、このCRCによって生成されるCRC符号を用いてもよいが、これに限定されず、ハミング符号などその他の符号を用いてもよい。
次に、実施例にかかるデータ書き込み方法を実行するディスクアレイ装置10内のチャネルアダプタ40A、40Bの構成について説明する。図2は、実施例にかかるチャネルアダプタの内部構成を示すブロック図である。チャネルアダプタ40は、データバッファ41、LSI(Large Scale Integration)330、CPU(Central Processing Unit)43、メモリ44、プロトコルコントローラ45、光モジュール46を含んで構成される。LSI330、CPU43、プロトコルコントローラ45は、所定のバスによって接続されており、相互にデータを転送することができる。
LSI330は、キャッシュコントローラ60とのインタフェースを担当する。データの書き込みなどのアクセス要求を出すホストコンピュータ20とキャッシュメモリ50A、50Bとの間に位置し、CPU43を経由することなくホストコンピュータ20とキャッシュメモリ50A、50Bとの間で、データバッファ41でデータをバッファリングしながらデータを転送するDMA機能を内蔵し、CPU43からの指示にしたがってキャッシュコントローラ60との間で通信処理を行う。
なお、図2では、ホストコンピュータ20とディスクアレイ装置10とが光ファイバで接続される場合を例示しており、LSI330のホストコンピュータ20との接続側には、ホストコンピュータ20から送られてくる光信号を電気信号に変換し、ディスクアレイ装置10からの電気信号を光信号に変換する光モジュール46と、LSI330およびホストコンピュータ20の接続に用いられるファイバチャネルのプロトコルを制御するプロトコルコントローラ45が設けられている。
CPU43は、チャネルアダプタ40全体の動作制御をつかさどるプロセッサとメモリインタフェース部分を有するLSIであり、データ書き込み方法に関係する機能モジュールとしてデータ処理ブロック(図示せず)を有している。データ処理ブロックは、CKDフォーマットを有するデータを新たにキャッシュメモリ50A、50Bに書き込んだり更新したりする際に必要なディスクリプタを生成する機能を有する。
たとえば、キャッシュメモリ50A、50Bに新たにCKDフォーマットを有するデータを書き込むディスクリプタを生成したり、CKDフォーマットを有する更新データを受信する前に、ホストコンピュータ20との間でそのデータについての情報をやり取りして更新データ中の更新するフィールドについての更新情報を取得するとともに、受信した更新データと更新情報に基づいてデータ更新処理(以下、Read Modify Write処理という)を実行するためのディスクリプタを生成したりする機能を有する。ここで、ディスクリプタとは、LSI330によるデータアクセス処理を実行するために必要な手順を記述したものである。
メモリ44は、CPU43の処理で使用されるデータなどを格納する記憶装置であり、CPU43と接続される。このメモリ44には、CPU43のデータ処理ブロックによって生成されたディスクリプタを格納するディスクリプタ格納領域(図示せず)が設けられる。
次に、実施例にかかるデータ書き込み方法を実行するチャネルアダプタ40内のLSI330の構成について説明する。図3は、実施例にかかるLSIの構成を示す機能ブロック図である。なお、ここでのLSIは、DMA(Direct Memory Access)チップである。
LSI330は、CPU43とのインタフェースとなるPCI I/F331と、ホストコンピュータ20とのインタフェースとなるホストI/F332と、キャッシュコントローラ60A、60BとのインタフェースとなるCM I/F333と、ホストコンピュータ20との接続に用いられるファイバチャネルのプロトコルを制御するプロトコルコントローラ334と、CPU43がメモリ44にセットしたディスクリプタをリードするディスクリプタブロック336と、キャッシュメモリ50A、50Bからデータを読み込む際の処理を行うレシーブエンジン337と、ホストコンピュータ20からのデータの書き込み要求に応じてキャッシュメモリ50A、50Bに対するデータ処理を行うセンドエンジン342とを備えて構成される。
プロトコルコントローラ334は、ホストコンピュータ20から送信される書き込み要求のあったデータ(以下、書き込みデータという)や更新要求のあったデータ(以下、更新データという)を格納する書き込みデータバッファ335を有している。この書き込みデータバッファ335は、特許請求の範囲における書き込みデータ格納手段に対応している。また、ディスクリプタブロック336は、CPU43のデータ処理ブロックによってメモリ44に格納されたディスクリプタをリードし、関係する処理部に読み込んだディスクリプタ情報を通知する機能を有する。
レシーブエンジン337は、キャッシュメモリ50A、50Bからデータをリードするモジュールであり、さらに、キャッシュメモリ50A、50B上からキャッシュデータを読み込む処理を行うCMリードブロック338と、キャッシュメモリ50A、50Bから読み込んだキャッシュデータの論理ブロックごとの保証を行うBCCチェックブロック339と、キャッシュメモリ50A、50Bから読み込んだキャッシュデータのフィールドごとの保証を行うFCCチェックブロック340と、CMリードブロック338によって読み込まれたキャッシュデータを格納するリードデータ格納バッファ341とを備えて構成される。
CMリードブロック338は、データリード用ディスクリプタに記述されたキャッシュアドレスフィールドに基づいてキャッシュメモリ50A、50Bからキャッシュデータを読み込み、そのキャッシュデータをデータリード用ディスクリプタ中で指定されたリードデータ格納バッファのアドレスに書き込む処理を行う。また、データリード用ディスクリプタ中での指定に従って、読み込んだデータをBCCチェックブロック339またはFCCチェックブロック340に渡す。
なお、CMリードブロック338は、リードデータ格納バッファ341へのデータの書き込み終了後に、ディスクリプタブロック336を介して「データ転送終了通知」をCPU43へ通知する。この「データ転送終了通知」には、「BCCチェックが行われたか否かを示すビット」、「BCCチェック結果を示すビット」、「FCCチェックが行われたか否かを示すビット」、「FCCチェック結果を示すビット」が含まれている。
BCCチェックブロック339は、CMリードブロック338から渡されたキャッシュデータについて論理ブロックごとにエラーチェックを行い、論理ブロックに付されたブロックチェックコードと比較して、リードデータ格納バッファ341に格納されたデータにエラーがないかを検査する機能を有する。そして、当該検査が完了すると、該完了をCMリードブロック338へ通知する。当該完了を通知されたCMリードブロック338は、前述の「データ転送終了通知」に含まれる「BCCチェックが行われたか否かを示すビット(BCCチェックビット)」をオンにする。当該完了を通知されなかった場合は、CMリードブロック338は、前述の「データ転送終了通知」に含まれる「BCCチェックビット」をオフにする。
BCCチェックブロック339によってエラーと判定された場合には、BCCチェックブロック339は、データリード用ディスクリプタ中の設定にかかわらず、キャッシュメモリ50A、50Bから読み込んだデータにエラーがあることをCPU43に対して行い、実行中の処理を終了する。そして、当該エラーをCMリードブロック338へ通知する。当該エラーを通知されたCMリードブロック338は、前述の「データ転送終了通知」に含まれる「BCCチェック結果を示すビット(BCCエラービット)」をオンにする。また、エラーを通知されなかった場合は、CMリードブロック338は、前述の「データ転送終了通知」に含まれる「BCCエラービット」をオフにする。
FCCチェックブロック340は、CMリードブロック338から渡されたキャッシュデータについてフィールドごとにエラーチェックを行い、フィールドに付されたフィールドチェックコード(Field Check Code(FCC))と比較して、リードデータ格納バッファ341に格納されたデータにエラーがないかを検査する機能を有する。そして、当該検査が完了すると、該完了をCMリードブロック338へ通知する。当該完了を通知されたCMリードブロック338は、前述の「データ転送終了通知」に含まれる「FCCチェックが行われたか否かを示すビット(FCCチェックビット)」をオンにする。当該完了を通知されなかった場合は、CMリードブロック338は、前述の「データ転送終了通知」に含まれる「FCCチェックビット」をオフにする。
FCCチェックブロック340によってエラーと判定された場合には、FCCチェックブロック340は、データリード用ディスクリプタ中の設定にかかわらず、キャッシュメモリ50A、50Bから読み込んだデータにエラーがあることをCPU43に対して行い、実行中の処理を終了する。そして、当該エラーをCMリードブロック338へ通知する。当該エラーを通知されたCMリードブロック338は、前述の「データ転送終了通知」に含まれる「FCCチェック結果を示すビット(FCCエラービット)」をオンにする。また、エラーを通知されなかった場合は、CMリードブロック338は、前述の「データ転送終了通知」に含まれる「FCCエラービット」をオフにする。
なお、データリード用ディスクリプタのフィールド長の指定が誤っていた場合には、リードデータ格納バッファ341に格納されたデータにエラーがないかの検査は行われないこととなり、当該検査が完了しないので、前述の「データ転送終了通知」に含まれる「FCCチェックビット」をオフにすることとなる。
そして、CMリードブロック338は、データ転送終了時に、ディスクリプタブロック336を介してCPU43へ「データ転送終了通知」を送信する。このように、「データ転送終了通知」がディスクリプタブロック336を介してCPU43へ通知されることによって、BCCチェックおよびFCCチェックの結果が正常であるか否かが判別可能になるとともに、BCCチェックおよびFCCチェック自体が行われて完了したか否かも判別可能となる。よって、データ操作を指示したホストコンピュータ20において、BCCチェックおよびFCCチェックの結果が正常であるか否か、BCCチェックおよびFCCチェック自体が行われて完了したか否かが判別可能となる。
リードデータ格納バッファ341は、CMリードブロック338によってキャッシュメモリ50A、50Bから読み込まれたキャッシュデータを、データリード用ディスクリプタ中で指定されたアドレスに格納する。
センドエンジン342は、ホストコンピュータ20から新たに書き込むデータや更新を行うデータをキャッシュメモリ50A、50Bに転送するモジュールであり、さらに、キャッシュメモリ50A、50Bに書き込むデータを読み込むデータリードブロック343と、読み込んだデータについて論理ブロックごとにフィールドチェックコードの生成を行うBCC生成ブロック344と、読み込んだデータが更新される内容を含む更新フィールドである場合にそのフィールド部分についてフィールドチェックコードの生成を行うFCC生成ブロック345と、データリードブロック343、BCC生成ブロック344およびFCC生成ブロック345からのデータからキャッシュメモリ50A、50Bに書き込む論理ブロック長のデータを生成するCMライトブロック346とを備えて構成される。
データリードブロック343は、データライト用ディスクリプタに基づいてプロトコルコントローラ334の書き込みデータバッファ335またはレシーブエンジン337のリードデータ格納バッファ341から選択的にデータをフィールド単位に読み込む機能を有する。具体的には、データライト用ディスクリプタが新たなデータの書き込みである場合には、プロトコルコントローラ334の書き込みデータバッファ335に格納されている書き込みデータを読み込み、そのデータをCMライトブロック346、BCC生成ブロック344およびFCC生成ブロック345へと受け渡す処理を行う。
また、データライト用ディスクリプタが更新データの書き込みすなわちRead Modify Write処理である場合には、更新される内容を含むフィールド(以下、更新フィールドという)をプロトコルコントローラ334の書き込みデータバッファ335から読み込み、そのデータをCMライトブロック346、BCC生成ブロック344およびFCC生成ブロック345へと受け渡し、更新されない内容を含むフィールドをレシーブエンジン337のリードデータ格納バッファ341から読み込み、そのデータをCMライトブロック346およびBCC生成ブロック344へと受け渡す処理を行う。
BCC生成ブロック344は、データライト用ディスクリプタに基づいて、データリードブロック343から渡されたデータについて論理ブロック単位でBCCを計算して生成し、生成されたBCCをCMライトブロック346に出力する機能を有する。このとき、書き込みデータを新たに書き込む場合またはRead Modify Write処理で更新される内容を含むフィールドを書き込む場合には、そのフィールド内の所定の位置に付加されるべきFCCの値をFCC生成ブロック345から取得して計算する。
上記したように、データリードブロック343によって読み出されるデータの切り替えが行われるので、BCCを計算するにあたって、更新されないフィールドについてはリードデータ格納バッファ341に格納されるキャッシュデータが用いられ、更新フィールドについては書き込みデータバッファ335に格納される更新データが用いられる。
FCC生成ブロック345は、データライト用ディスクリプタに基づいて、データリードブロック343がプロトコルコントローラ334の書き込みデータバッファ335からのデータ、すなわち更新される内容を含む更新フィールドを流している場合に、そのデータについてフィールドごとにFCCを計算して生成し、生成したFCCをCMライトブロック346に出力する機能を有する。
CMライトブロック346は、データライト用ディスクリプタに基づいて、データリードブロック343から渡されたデータと、BCCチェックブロック339から入力されるBCC−CRCと、FCCチェックブロック340から入力されるFCCとからキャッシュメモリ50A、50Bに書き込むLBAを生成する機能を有する。
具体的には、実施例にかかるディスクアレイ装置10では、データは512バイトの固定長のLBAで管理されるので、データリードブロック343からのデータが512バイトになると、その後にBCCを付加する処理を行う。
また、新たにデータを書き込む場合には各フィールドの最後部を含むフィールド書き込みブロックの所定の位置に、そして論理ブロック内に更新内容を含むフィールドを含む場合にはそのフィールドの最後部を含むフィールド書き込みブロックの所定の位置に、FCCを付加する処理を行う。
次に、図3に示したLSI330で行われるBCCチェック方法およびFCCチェック方法について説明する。図4−1は、BCCチェック方法を示す図であり、図4−2は、FCCチェック方法を示す図である。ホストコンピュータ20からの可変長データ「COUNT+Key+Data1+Data2」は、「COUNT」+「COUNTのFCC」+「Key」+「KeyのFCC」+「Data1」を1つのLBAとし、このLBAを単位としてBCCを付加して磁気ディスク装置90A、90Bに格納される。また、「Data2」+「Data2のFCC」およびパディングデータを1つのLBAとし、このLBAを単位としてBCCを付加して磁気ディスク装置90A、90Bに格納される。
図4−1に示すように、磁気ディスク装置90A、90Bから当該データを読み出す際に、LBAごとにそれらのBCCを検証して、読み出しデータの正当性を検証する。また、図4−2に示すように、磁気ディスク装置90A、90Bから当該データを読み出す際に、「COUNT」、「Key」、「Data1+Data2」ごとにそれらのFCCを検証して、読み出しデータの正当性を検証する。
なお、ユーザデータの分割単位である「Data1」および「Data2」それぞれにはFCCが付加されず、あくまで分割単位の最後尾である「Data2」のみにFCCが付加される。そして、このFCCは、全ユーザデータに基づいて生成されたFCCである。すなわち、LBA単位に分割されたユーザデータは、その最後尾を含まない場合には、FCCが付与されることはない。
次に、Read Modify Writeが行われる場合の一連の動作について説明する。図5−1〜図5−3は、Read Modify Write正常時の一連の処理を示す図である。また、図6−1〜図6−3は、Read Modify Write異常時の一連の処理を示す図である。
図5−1に示すように、キャッシュメモリ(CM)上のデータのうち、「Key」部分を更新対象とする場合を想定する。この変更のためにホストコンピュータ20(HOST)から更新データ「Key´」が送信されてきたとする。
次に、更新対象である「Key」を含むLBAをCMから読み出し(図5−2)、「Key」を「Key´」で更新した後に、「Key」のFCCを「Key´」のFCCで更新し、当該LBAのBCCを再計算して更新した後に、当該LBAをCMに書き戻す(図5−3)。
このように、Read Modify Writeの際のCMからのLBAのリードが正常に行われた場合には、従来のように、当該リードに際してのFCCチェックおよびBCCチェックを行わなくても問題はなかった。
しかし、図6−1に示すように、キャッシュメモリ(CM)上のデータのうち、「Key」部分を更新対象とする場合に、この変更のためにホストコンピュータ20(HOST)から更新データ「Key´」が送信されてきた際に、従来のように、当該リードに際してのFCCチェックおよびBCCチェックを行わないと、Read Modify Writeの際のCMからのLBAのリードが正常に行われなかった場合には(図6−2参照)、図6−3に示すように、たとえ、「Key」を「Key´」で更新した後に、「Key」のFCCを「Key´」のFCCで更新し、当該LBAのBCCを再計算して更新した後に、当該LBAをCMに書き戻したとしても、当該LBA単位でのBCCは正常に見えてしまうため、データの異常が発見されることはなかった。
本発明は、かかる不都合を解消するために、CMからのLBAのリードに際して、必ずFCCチェックおよびBCCチェックを行うこととしたため、Read Modify Write時におけるデータの保証を確実にした。なお、Read Modify Write時に限らず、データの読み出し時においても必ずFCCチェックおよびBCCチェックを行うこととし、CMからのLBAのリードに際して発生しうるデータのリードミスを早期に発見することを可能とした。
次に、図3に示したLSI330におけるRead Modify Writeエラーチェック結果通知処理手順について説明する。図7は、Read Modify Writeエラーチェック結果通知処理手順を示すフローチャートである。同図に示すように、先ず、CMリードブロック338は、ホストコンピュータ20からのデータ操作に応じて、キャッシュメモリ50Aまたは50Bから更新対象のLBAを読み出す(ステップS101)。
続いて、BCCチェックブロック339は、CMから読み出された全てのLBAのBCCチェックを行い、チェック結果をCMリードブロック338に通知する(ステップS102)。続いて、CMリードブロック338は、BCCエラーありか否かを判定し(ステップS103)、BCCエラーありの場合(ステップS103肯定)、「データ転送終了通知」の「BCCエラービット」をオンにし(ステップS104)、BCCエラーなしの場合(ステップS103否定)、「データ転送終了通知」の「BCCエラービット」をオフにする(ステップS105)。ステップS105が終了すると、ステップS106へ移る。
続いて、CMリードブロック338は、CMから読み出された全てのLBAのBCCチェックが完了したか否かを判定し(ステップS106)、完了の場合(ステップS106肯定)、「データ転送終了通知」の「BCCチェックビット」をオンにし(ステップS107)、完了でない場合(ステップS106否定)、「データ転送終了通知」の「BCCチェックビット」をオフにする(ステップS108)。ステップS108が終了すると、ステップS109へ移る。
続いて、FCCチェックブロック340は、CMから読み出された全てのLBAの全フィールドのFCCチェックを行い、チェック結果をCMリードブロック338に通知する(ステップS109)。続いて、CMリードブロック338は、FCCエラーありか否かを判定し(ステップS110)、FCCエラーありの場合(ステップS110肯定)、「データ転送終了通知」の「FCCエラービット」をオンにし(ステップS111)、FCCエラーなしの場合(ステップS110否定)、「データ転送終了通知」の「FCCエラービット」をオフにする(ステップS112)。ステップS112が終了すると、ステップS113へ移る。
続いて、CMリードブロック338は、CMから読み出された全てのLBAの全フィールドのFCCチェックが完了したか否かを判定し(ステップS113)、完了の場合(ステップS113肯定)、「データ転送終了通知」の「FCCチェックビット」をオンにし(ステップS114)、完了でない場合(ステップS113否定)、「データ転送終了通知」の「FCCチェックビット」をオフにする(ステップS115)。ステップS115が終了すると、ステップS116へ移る。
続いて、データリードブロック343は、ホストコンピュータからの更新データがあるか否かを判定し(ステップS116)、更新データありの場合(ステップS116肯定)、更新データのFCCを算出して該FCCとともにデータを更新し(ステップS117)、データが更新されたLBAのBCCを算出して該BCCとともにLBAを更新する(ステップS118)。更新データなしの場合(ステップS116否定)、ステップS119へ移る。
続いて、CMリードブロック338は、「データ転送終了通知」を、ディスクリプタブロック336を介してCPU43へ送信する(ステップS119)。CPU43は、受信した「データ転送終了通知」の内容に基づいて、データ操作を指示したホストコンピュータ20へCMからのデータ読み出しにエラーがあったか否かを通知することとなる。
以上、本発明の実施例を説明したが、本発明は、これに限られるものではなく、特許請求の範囲に記載した技術的思想の範囲内で、更に種々の異なる実施例で実施されてもよいものである。また、実施例に記載した効果は、これに限定されるものではない。
また、上記実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記実施例で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPU(Central Processing Unit)(またはMPU(Micro Processing Unit)、MCU(Micro Controller Unit)などのマイクロ・コンピュータ)および当該CPU(またはMPU、MCUなどのマイクロ・コンピュータ)にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されてもよい。
(付記1)所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス方法であって、
前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証工程と、
前記検証工程による検証結果を前記外部装置へ通知する検証結果通知工程と
を含んだことを特徴とするデータアクセス方法。
(付記2)前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含むことを特徴とする付記1に記載のデータアクセス方法。
(付記3)前記検証結果通知工程は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証工程による前記検証結果にかかわらず該検証結果を異常として通知することを特徴とする付記2に記載のデータアクセス方法。
(付記4)前記フィールドは、該フィールドに付与されているフィールドデータ検証コードを含むデータ長を指定して読み出されるものであり、
前記検証工程は、前記データ長の指定が誤っていた場合に、前記フィールド検証情報に未検証を示す情報を設定することを特徴とする付記2または3に記載のデータアクセス方法。
(付記5)更新データを受信すると、該更新データによる更新対象の被更新データを前記データ蓄積用メモリから読み出して前記検証工程による該被更新データの検証を行った後に、前記更新データにより前記被更新データのフィールドを更新し、更新後のフィールドに対応してフィールドデータ検証コードを更新するとともに、該更新後のフィールドを含むブロックに対応するブロックデータ検証コードを更新することを特徴とする付記1〜4のいずれか一つに記載のデータアクセス方法。
(付記6)所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うチャネルアダプタであって、
前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証手段と、
前記検証手段による検証結果を前記外部装置へ通知する検証結果通知手段と
を有することを特徴とするチャネルアダプタ。
(付記7)前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含むことを特徴とする付記6に記載のチャネルアダプタ。
(付記8)前記検証結果通知手段は、前記ブロック検証情報が未検証を示すものであった場合、または前記フィールド検証情報が未検証を示すものであった場合に、前記検証手段による前記検証結果にかかわらず該検証結果を異常として通知することを特徴とする付記7に記載のチャネルアダプタ。
(付記9)所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセスを制御するデータアクセス制御装置であって、
前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証部と、
前記検証部による検証結果を前記外部装置へ通知する検証結果通知部と
を有することを特徴とするデータアクセス制御装置。
(付記10)所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス手順をチャネルアダプタの制御装置に実行させるデータアクセスプログラムであって、
前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証手順と、
前記検証手順による検証結果を前記外部装置へ通知する検証結果通知手順と
を前記制御装置に実行させることを特徴とするデータアクセスプログラム。
本発明は、FCCおよびBCCともに正しくチェックが行われたか否かを明らかにするとともに、FCCおよびBCCにより確実にエラーを検出したい場合に有用であり、特に、Read Modify Write時に、確実にエラーを検出したい場合に効果的である。
実施例にかかるディスクアレイ装置の概略構成を示すブロック図である。 実施例にかかるチャネルアダプタの内部構成を示すブロック図である。 実施例にかかるLSIの構成を示す機能ブロック図である。 BCCチェック方法を示す図である。 FCCチェック方法を示す図である。 Read Modify Write正常時の一連の処理を示す図(その1)である。 Read Modify Write正常時の一連の処理を示す図(その2)である。 Read Modify Write正常時の一連の処理を示す図(その3)である。 Read Modify Write異常時の一連の処理を示す図(その1)である。 Read Modify Write異常時の一連の処理を示す図(その2)である。 Read Modify Write異常時の一連の処理を示す図(その3)である。 Read Modify Writeエラーチェック結果通知処理手順を示すフローチャートである。
10 ディスクアレイ装置
20、20A、20B ホストコンピュータ
40、40A、40B チャネルアダプタ
41 データバッファ
43 CPU
44 メモリ
45 プロトコルコントローラ
46 光モジュール
50A、50B キャッシュメモリ
60、60A、60B キャッシュコントローラ
70A、70B ディスクアダプタ
80A、80B スイッチ
90A、90B 磁気ディスク装置
330 LSI
331 PCI I/F
332 ホストI/F
333 CM I/F
334 プロトコルコントローラ
335 書き込みデータバッファ
336 ディスクリプタブロック
337 レシーブエンジン
338 CMリードブロック
339 BCCチェックブロック
340 FCCチェックブロック
341 リードデータ格納バッファ
342 センドエンジン
343 データリードブロック
344 BCC生成ブロック
345 FCC生成ブロック
346 CMライトブロック

Claims (7)

  1. 所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス方法であって、
    前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証工程と、
    前記検証工程による検証結果を前記外部装置へ通知する検証結果通知工程と
    を含み、
    前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含み、
    前記検証結果通知工程は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証工程による前記検証結果にかかわらず該検証結果を異常として通知する
    ことを特徴とするデータアクセス方法。
  2. 前記フィールドは、該フィールドに付与されているフィールドデータ検証コードを含むデータ長を指定して読み出されるものであり、
    前記検証工程は、前記データ長の指定が誤っていた場合に、前記フィールド検証情報に未検証を示す情報を設定することを特徴とする請求項に記載のデータアクセス方法。
  3. 更新データを受信すると、該更新データによる更新対象の被更新データを前記データ蓄積用メモリから読み出して前記検証工程による該被更新データの検証を行った後に、前記更新データにより前記被更新データのフィールドを更新し、更新後のフィールドに対応してフィールドデータ検証コードを更新するとともに、該更新後のフィールドを含むブロックに対応するブロックデータ検証コードを更新することを特徴とする請求項1または2に記載のデータアクセス方法。
  4. 所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うチャネルアダプタであって、
    前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証手段と、
    前記検証手段による検証結果を前記外部装置へ通知する検証結果通知手段と
    を備え、
    前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含み、
    前記検証結果通知手段は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証手段による前記検証結果にかかわらず該検証結果を異常として通知する
    ことを特徴とするチャネルアダプタ。
  5. 所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセスを制御するデータアクセス制御装置であって、
    前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証部と、
    前記検証部による検証結果を前記外部装置へ通知する検証結果通知部と
    を備え、
    前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含み、
    前記検証結果通知部は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証部による前記検証結果にかかわらず該検証結果を異常として通知する
    ことを特徴とするデータアクセス制御装置。
  6. 所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス手順をチャネルアダプタの制御装置に実行させるデータアクセスプログラムであって、
    前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証手順と、
    前記検証手順による検証結果を前記外部装置へ通知する検証結果通知手順と
    を前記制御装置に実行させ
    前記検証結果は、前記ブロックデータ検証コードに基づいて前記可変長データを前記ブロック単位で検証したか否かを示すブロック検証情報と、前記フィールドデータ検証コードに基づいて前記可変長データを前記フィールド単位で検証したか否かを示すフィールド検証情報とを含み、
    前記検証結果通知手順は、前記ブロック検証情報が未検証を示す情報であった場合、または前記フィールド検証情報が未検証を示す情報であった場合に、前記検証手順による前記検証結果にかかわらず該検証結果を異常として通知する
    ことを特徴とするデータアクセスプログラム。
  7. 所定のフィールドによって構成されるブロックで可変長データを管理するデータ蓄積用メモリとの間で、外部装置からの指示に応じてデータの読み書きを行うデータアクセス方法であって、
    前記可変長データを前記データ蓄積用メモリに書き込む際に、前記ブロックごとにブロック検証コードを付加し、前記フィールドごとにフィールドデータ検証コードを付加する検証コード付加工程と、
    前記可変長データを前記データ蓄積用メモリから読み出す際に、前記ブロックごとに付加されているブロックデータ検証コードに基づいて該可変長データを該ブロック単位で検証するとともに、前記フィールドごとに付与されているフィールドデータ検証コードに基づいて該可変長データを該フィールド単位で検証する検証工程と、
    前記検証工程による検証結果を前記外部装置へ通知する検証結果通知工程と
    を含み、
    前記検証コード付加工程において、可変長のユーザデータが2つのブロックにまたがって分割されて記憶される場合には、ユーザデータが分割されてできた複数の部分のうち最後尾の部分にのみ当該ユーザデータ全体を検証するデータ検証コードを付加し、
    前記検証工程においては、前記ユーザデータが2つのブロックにまたがって分割されて記憶された場合に、当該ユーザデータが分割されてできた複数の部分を連結し、前記データ検証コードに基づいて前記複数の部分を連結してできたユーザデータをさらに検証すること
    を特徴とするデータアクセス方法。
JP2007030753A 2007-02-09 2007-02-09 データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム Expired - Fee Related JP4362134B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007030753A JP4362134B2 (ja) 2007-02-09 2007-02-09 データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム
US12/068,355 US7921265B2 (en) 2007-02-09 2008-02-05 Data access method, channel adapter, and data access control device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007030753A JP4362134B2 (ja) 2007-02-09 2007-02-09 データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム

Publications (2)

Publication Number Publication Date
JP2008197804A JP2008197804A (ja) 2008-08-28
JP4362134B2 true JP4362134B2 (ja) 2009-11-11

Family

ID=39686862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007030753A Expired - Fee Related JP4362134B2 (ja) 2007-02-09 2007-02-09 データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム

Country Status (2)

Country Link
US (1) US7921265B2 (ja)
JP (1) JP4362134B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5256948B2 (ja) * 2008-09-04 2013-08-07 富士通株式会社 キャッシュ論理検証装置、キャッシュ論理検証方法およびキャッシュ論理検証プログラム
WO2010095173A1 (en) * 2009-02-19 2010-08-26 Hitachi, Ltd. Storage apparatus and data integrity assurance method
US8732396B2 (en) * 2009-06-08 2014-05-20 Lsi Corporation Method and apparatus for protecting the integrity of cached data in a direct-attached storage (DAS) system
JP6206138B2 (ja) 2013-12-02 2017-10-04 富士通株式会社 ストレージ制御装置およびストレージ制御装置の制御プログラム
CN107291398A (zh) * 2017-06-29 2017-10-24 郑州云海信息技术有限公司 一种数据存储的保护方法及装置
JP7006166B2 (ja) 2017-11-17 2022-01-24 富士通株式会社 データ転送装置およびデータ転送方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02199680A (ja) 1989-01-30 1990-08-08 Nec Corp 磁気ディスク装置
JPH07325673A (ja) 1994-05-31 1995-12-12 Dainippon Printing Co Ltd 処理ファイル管理方法
US5907801A (en) * 1995-09-22 1999-05-25 At&T Wireless Services, Inc. Apparatus and method for optimizing wireless financial transactions
JPH09288545A (ja) 1996-04-24 1997-11-04 Matsushita Electric Ind Co Ltd Cd−romデコーダおよびデータ読み出し方法
JP2001325567A (ja) 2000-05-17 2001-11-22 Hitachi Ltd カード発行方法およびカードのデータ回復方法および読み書き可能なメモリを有したカード
US7020835B2 (en) 2000-10-19 2006-03-28 Oracle International Corporation Enhancements to data integrity verification mechanism
JP2003036146A (ja) 2001-07-23 2003-02-07 Hitachi Ltd ディスクアレイ制御方式
JP2006079380A (ja) * 2004-09-10 2006-03-23 Hitachi Ltd ディスクアレイ装置
JP4437953B2 (ja) 2004-12-10 2010-03-24 富士通株式会社 データ書込み方法とチャネルアダプタ
JP2006268524A (ja) 2005-03-24 2006-10-05 Fujitsu Ltd 記憶装置、その制御方法及びプログラム
JP4343923B2 (ja) * 2006-06-02 2009-10-14 富士通株式会社 Dma回路およびデータ転送方法

Also Published As

Publication number Publication date
US20080195837A1 (en) 2008-08-14
US7921265B2 (en) 2011-04-05
JP2008197804A (ja) 2008-08-28

Similar Documents

Publication Publication Date Title
US7480850B2 (en) Method of writing data and channel adapter
US6981171B2 (en) Data storage array employing block verification information to invoke initialization procedures
US7984325B2 (en) Storage control device, data recovery device, and storage system
US9135112B2 (en) Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
JP4901968B2 (ja) 半導体記憶装置
US7606971B2 (en) Storage control apparatus and external storage apparatus
JP4362134B2 (ja) データアクセス方法、チャネルアダプタ、データアクセス制御装置およびデータアクセスプログラム
US7849258B2 (en) Storage apparatus and data verification method for the same
US20100077252A1 (en) Systems and Methods for Detection, Isolation, and Recovery of Faults in a Fail-in-Place Storage Array
KR101547317B1 (ko) 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템
JP2012128660A (ja) 半導体記憶装置
US20140026013A1 (en) Storage control apparatus and error correction method
JP2006139478A (ja) ディスクアレイシステム
US20080222500A1 (en) Data relay apparatus, data relay method and data relay integrated circuit
US7552249B2 (en) Direct memory access circuit and disk array device using same
US7996712B2 (en) Data transfer controller, data consistency determination method and storage controller
US8041850B2 (en) Storage apparatus and data integrity assurance method
JP4394533B2 (ja) ディスクアレイシステム
JP4572859B2 (ja) キャッシュメモリ制御装置、方法及びプログラム並びにディスクアレイ装置
US7765452B2 (en) Disk controller
JP5146357B2 (ja) データ診断装置、データ診断システム、データ診断方法及びデータ診断プログラム
JP6318769B2 (ja) ストレージ制御装置、制御プログラム、および制御方法
WO2022204971A1 (zh) 存储方法及存储控制器
JP2006146633A (ja) ディスクアレイ制御装置及び方法並びにディスクアレイシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090406

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090814

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120821

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120821

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130821

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees