JP4394533B2 - ディスクアレイシステム - Google Patents

ディスクアレイシステム Download PDF

Info

Publication number
JP4394533B2
JP4394533B2 JP2004220025A JP2004220025A JP4394533B2 JP 4394533 B2 JP4394533 B2 JP 4394533B2 JP 2004220025 A JP2004220025 A JP 2004220025A JP 2004220025 A JP2004220025 A JP 2004220025A JP 4394533 B2 JP4394533 B2 JP 4394533B2
Authority
JP
Japan
Prior art keywords
data
host
input
cache
output
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
JP2004220025A
Other languages
English (en)
Other versions
JP2006040011A (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
Priority to JP2004220025A priority Critical patent/JP4394533B2/ja
Priority to US10/959,982 priority patent/US7293139B2/en
Publication of JP2006040011A publication Critical patent/JP2006040011A/ja
Application granted granted Critical
Publication of JP4394533B2 publication Critical patent/JP4394533B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1007Addressing errors, i.e. silent errors in RAID, e.g. sector slipping and addressing errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity

Landscapes

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

Description

本発明はディスクアレイシステムに関し、特に、データ保証コードの生成技術に関する。
ディスクアレイシステムは、複数のディスク装置をアレイ状に配置したRAID(Redundant Arrays of Inexpensive Disks)構成をとり、ホストからのリード要求(データの読み出し要求)およびライト要求(データの書き込み要求)をディスクの並列動作によって高速に処理するとともに、冗長データを付加してディスク装置に記憶することによって信頼性を向上させている。
ホストからのライト要求時には、ディスクアレイ内部では、ホストから受け取ったデータを一時的にキャッシュに格納後、ディスク装置へと並列に書込む。また、ホストからのリード要求時には、データをディスク装置から並列に読み出してキャッシュへと格納し、さらにキャッシュから読み出したデータをホストへ転送する。
RAID構成のディスクアレイにおいては、ディスク装置の障害時にもデータを復元できるように冗長データをディスク装置に保存している。さらに、ディスクに格納したデータが正しいことを保証する目的で、各論理データブロックごとにデータ保証コードを付加することが知られている。データ保証コードを付加する方法としては、ホスト入出力手段は、MPUが作成したLAを含む転送リストにしたがい、ホストとキャッシュとの間でデータを送受信し、ホスト情報保持手段の中のLA保持手段は、ホスト入出力手段とキャッシュの間でデータが送受信される際にLAを獲得・保持し、LA付加手段は、LA保持手段に格納したLAをキャッシュに書き込まれるデータに付加する技術が提案されている。
特開2000−347815号公報
前述した従来のディスクアレイシステムでは、論理データブロックが複数続く転送の場合、LA付加手段は、LA保持手段に取りこんだLA値をカウンタによりインクリメントして、LAを付加していた。
しかし、ホスト入出力手段とホスト間のデータ転送においてデータが消失した場合、消失したデータは、再度キャッシュから読み出されて再送されるので、論理データブロックの順序が入れ替わって転送されるアウトオブオーダが発生する。このとき、従来のように転送されたデータ量をカウントしてLAを生成すると、正常なLAを生成することができず、LA検査においてLAエラーとなってしまう。例えば、iSCSIのように、ネットワーク上で消失したパケットを再送する場合には、アウトオブオーダが発生してしまう。
本発明は、アウトオブオーダーが発生した場合もLAを正しく生成することを目的とする。
本発明は、データが入出力される複数のディスクと、ホストからの要求に基づいて前記ディスクへのデータの入出力を制御する制御部とを含むディスクアレイシステムであって;前記制御部は、ディスクアレイシステムに接続された前記ホストとの間でデータや制御信号を送受信するホスト入出力部と、前記ディスクとの間でデータや制御信号を送受信するディスク入出力部と、前記ホスト入出力部と前記ディスク入出力部との間で転送されるデータを所定サイズのブロックが複数集合して構成されるセグメントを単位として一時的に記憶するキャッシュメモリと、制御プログラムを実行することによって前記制御部の動作を制御するMPUと、前記キャッシュメモリに対するデータの入出力を制御するキャッシュコントローラと、を備え;前記ホスト入出力部は、当該転送に係るセグメントの先頭ブロックの保証コードが含まれる転送情報を前記キャッシュコントローラに転送する。
本発明によると、前記ホスト入出力部からキャッシュコントローラに転送される情報に基づいて保証コードを生成するので、論理データブロックの順序が入れ替わって転送されるアウトオブオーダが発生した場合も保証コードを正しく生成することができる。また、データ読み出し時にも適切なLA検査をすることができる。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明の実施の形態のディスクアレイシステムの構成を示すブロック図である。
ホスト101、102、103は、CPU、メモリ、記憶装置、インターフェース、入力装置及び表示装置が備わるコンピュータ装置であり、アプリケーションプログラムが動作している。アプリケーションプログラムは、ディスクアレイシステム105から提供されるデータを利用して、データベースサービスやウェブサービス等を利用可能にする。ホスト101、102、103は、ホストケーブルで接続されたバススイッチ104を介して、ホストケーブルで接続されたディスクアレイシステム105の中のホスト入出力部106、107、108に接続されている。なお、ホスト101、102、103は、少なくとも一つ以上設けられていればよい。
ホスト101、102、103とディスクアレイシステム105が接続されるホストケーブル及びスイッチ104によってSAN(Storage Area Network)が構成されている。このSANは、例えばファイバチャネル(Fibre Channel)やiSCSI(internet SCSI)のような、データの転送に適するプロトコルで通信可能なネットワークである。このSANで用いられるプロトコルは、ホスト101等及びホスト入出力部106によって定まり、ホスト入出力部識別プログラム115によって識別される。
ディスクアレイシステム105は、ホスト入出力部106、107、108と、ディスク入出力部133、134、135と、ディスク装置群140、141、142と、キャッシュ122と、ディスクアレイ全体の制御を行なうMPU125と、メモリ126と、キャッシュコントローラ111とから構成されている。
ホスト入出力部106、107、108は、ホスト101、102、103とキャッシュコントローラ111との間でデータを転送しており、ホスト側内部バス110を介してキャッシュコントローラ111に接続されている。ホスト側内部バス110には、例えばPCIバスを用い、データを転送することができる。ホスト入出力部106は、ホスト側内部バス110上のデータを転送するDMA(Direct Memory Access)109を備えている。なお、DMA109はメモリ126へアクセスすることもできる。
ホスト入出力部107、108も、ホスト入出力部106と同様の機能を有している。なお、ホスト入出力部106、107、108は、少なくとも一つ以上設けられていればよい。
ディスク装置群140、141、142は、各々が少なくとも1台以上のディスク装置から構成される。例えば、ディスク装置群140は、ディスク装置143、144、145から構成される。なお、ディスク装置群140、141、142は、少なくとも一つ以上設けられていればよい。
ディスク入出力部133、134、135は、ディスク装置群140とキャッシュコントローラ111との間でデータを転送しており、ディスクケーブル137を介してディスク装置群140と接続される。また、ディスク入出力部133等は、ディスク側内部バス132によってキャッシュコントローラ111と接続されている。ディスク側内部バス132には、例えば、ファイバチャネルを用いることができる。ディスク入出力部133は、ディスク側内部バス132上のデータを転送するDMA136を有している。DMA136はメモリ126へアクセスすることもできる。
ディスク入出力部134、135も、ディスク入出力部133と同様に、各々ディスクケーブル138、139によって、ディスク装置群141、142と接続されており、ディスク側内部バス132を介してキャッシュコントローラ111と接続されている。ディスク入出力部134、135も、ディスク入出力部133と同様の機能を有している。なお、ディスク入出力部133、134、135は、少なくとも一つ以上設けられていればよい。
キャッシュコントローラ111は、ホスト側内部バスバッファ112、LA付加プログラム113、ホスト情報保持部114、ホスト入出力部識別プログラム115、ディスク情報保持部116、LA削除プログラム117、LA検査プログラムA118、キャッシュ制御プログラム119、LA検査プログラムB120、及びディスク側内部バスバッファ121を備えている。
ホスト側内部バスバッファ112は、ホスト入出力部106、107、108とキャッシュ122との間で転送されるデータを一時的に記憶する。ディスク側内部バスバッファ121は、ディスク入出力部133、134、135とキャッシュ122との間で転送されるデータを一時的に記憶する。
LA付加プログラム113は、ホスト入出力部106、107、108からキャッシュ122に転送されるデータにLAを付加する(この動作は図3を用いて詳述する)。
ホスト情報保持部114は、ホスト入出力部106、107、108とキャッシュ122との間でデータが転送される際に、取得したホスト側内部バス転送リスト(図6)に基づいてホストの転送情報パラメータを格納する(この構成は図8を用いて詳述する)。
ホスト入出力部識別プログラム115は、ホスト入出力部106が使用する通信プロトコルを識別する。すなわち、ホスト入出力部識別プログラム115が、ホスト入出力部106によって用いられる通信プロトコルがiSCSIであると判定すると、論理データブロックの転送順序が入れ替わるアウトオブオーダが発生する可能性があることが分かる。
ディスク情報保持部116は、ディスク入出力部133、134、135とキャッシュ122との間でデータが転送される際に、取得したディスク側内部バス転送リストに基づいて、ディスクの転送情報パラメータを格納する。ディスク情報保持部116は、LA保持部、LUN保持部、チャンネル番号保持部、ディスク番号保持部、タグ番号保持部、LA有効情報保持部、及び転送アドレス保持部によって構成されている。
LA保持部は、LAの期待値を保持する。LUN保持部は、ホストから見たディスクアレイの論理ユニット番号(LUN)を保持する。チャンネル番号保持部は、転送に使用するディスク入出力部133、134、135を識別するチャンネル番号を保持する。ディスク番号保持部は、転送要求を出したディスクを識別するディスク番号を保持する。タグ番号保持部は、ディスクに対するコマンドを識別するタグ番号を保持する。LA有効情報保持部は、LAの付加、検査、削除を論理データブロックに対して行なうかを識別するLA有効情報を保持する。転送アドレス保持部は、転送するキャッシュ122のアドレスを保持する。
LA削除プログラム117は、ディスクアレイシステム105からホスト101等へのデータ読み出し時(ディスクアレイリード時)に、キャッシュ122からホスト入出力部106、107、108に転送されるデータに付加されているLAを削除する。LA削除プログラム117は、カウンタと、バッファ値削除プログラムを備えている。
ディスクアレイリード時に、キャッシュ制御プログラム119によってキャッシュ122から転送されたデータは、ホスト側内部バスバッファ112に一時的に記憶される。カウンタは、ホスト側内部バスバッファ112に記憶されたデータ数を計数し、LAを削除する値に達したときにバッファ値削除プログラムに通知する。バッファ値削除プログラムは、カウンタからの通知を受けたタイミングでホスト側内部バスバッファ112内のデータに付加されているLAを削除する。
LA検査プログラムA118は、キャッシュ122からホスト入出力部106、107、108へ転送されるデータに付加されているLAと、ホスト情報保持部114に格納されている情報に基づいて生成されるLAの期待値とを比較し、両者が同一であるか否かの検査をする(この動作は図4を用いて詳述)。
キャッシュ制御プログラム119は、キャッシュコントローラ111とキャッシュ122との間のデータの転送を制御する。
LA検査プログラムB120は、ディスク入出力部133、134、135とキャッシュ122との間で転送されるデータに付加されているLAと、ディスク情報保持部116に格納されている情報に基づいて生成されるLAの期待値とを比較し、両者が同一であるか否かを検査する(この動作は図5を用いて詳述)。
本実施の形態ではキャッシュコントローラ111の各部をプログラム(ソフトウェア)で構成したが、キャッシュコントローラ111をLSIの回路(ハードウェア)によって構成してもよい。
キャッシュ122は、ホスト入出力部106等とディスク入出力部133等との間で転送されるデータが一時的に記憶されるメモリであり、セグメント単位でデータが記憶される。本実施の形態では1ブロックが512バイトで、1セグメントは4ブロック(2048バイト)の固定値で構成されている。また、キャッシュ122は、キャッシュバス131によって、キャッシュコントローラ111と接続されている。
キャッシュ122には、ホスト側LA情報格納部123及びディスク側LA情報格納部124が設けられており、コマンドの先頭ブロックのLAが格納される。
メモリ126は、MPUの動作に必要なプログラムやデータを記憶するものであり、ディスクアレイ制御プログラム126、LA設定プログラム127、転送リスト格納部128及びコマンド情報格納部129が記憶されている。
ディスクアレイ制御プログラム127は、MPU125の処理によってディスクアレイ内のデータの転送を制御する。
LA設定プログラム128は、キャッシュコントローラ111におけるLAの算出、付加、検査及び削除を制御する。
転送リスト格納部129は、MPU125によって生成された、ホスト側内部バス転送リスト及びディスク側内部バス転送リストが格納される。ホスト入出力部106等は、転送リスト格納部129に格納された転送リストに基づいて、キャッシュ122をアクセスする。なお、転送リスト格納部129に格納された転送リスト(セグメント情報等)は、アドレス情報(例えば、PCIアドレス)として、ホスト側内部バス110及びディスク側内部バス132に送出される。
コマンド情報格納部130は、ホスト入出力部106等が受信したホストライトコマンド及びホストリードコマンドの内容が格納される。格納されたコマンドの内容は、ホスト入出力部106等が発行する割込を契機として、MPU125によって読み出される。
図2は、本発明の実施の形態のキャッシュ122のデータ格納フォーマットの説明図であり、データ保証コードの格納状態を示す。
論理データブロック204、205、206は、ホスト101がディスクアレイシステム105にデータを転送するときのホストデータの一部であり、論理データブロック204、205、206の順に連続したデータである。論理データブロック204、205、206の最後尾にはデータ保証コードが格納されるLA・LRC部201、202、203が付加されている。LA・LRC部201、202、203は、それぞれ論理データブロック204、205、206に対応する。
拡張データ207は論理データブロック204とLA・LRC部201を結合したものであり、拡張データ208は論理データブロック205とLA・LRC部202を結合したものであり、拡張データ209は論理データブロック206とLA・LRC部203を結合したものである。すなわち、論理データブロック204、LA・LRC部201、論理データブロック205、LA・LRC部202、論理データブロック206、LA・LRC部203の順に連続したデータとなる。
データ保証コードはLA(Logical Address)と、LRC(Longitudinal Redundancy Check)で構成される。LAは、2バイトの論理ユニット番号(LUN)と2バイトの論理データブロックアドレス(LBA)から生成される。論理ブロックデータ毎に、読み書きすべき論理データブロックのアドレスを識別可能なLAを付加し、読み書きしたアドレスが正しいことを確認することによってシステムの信頼性を向上させることができる。
LRCは、各論理データブロックの排他的論理和演算を算出して求めた4バイトのデータである。LRCによってディスクアレイ内部でのデータ転送中のデータビットエラーを検査することができ、システムの信頼性を向上させることができる。
図3は、本発明の実施の形態のLA付加プログラム113の構成図である。
LA付加プログラム113は、バッファ値設定サブプログラム1001及びLA期待値生成サブプログラム1002を備えており、ディスクアレイライト時に、ホスト入出力部106等からキャッシュ122に転送されるデータにLAを付加する。
ホスト入出力部106がホスト101等からライトコマンドを受信し、さらにライトデータを受信すると、ディスクアレイライト時にホスト入出力部106から転送されたデータは、ホスト側内部バスバッファ112に記憶される。キャッシュ制御プログラム119が、ホスト側内部バスバッファ112に対して、ホスト側内部バスバッファ112からデータを読み出す指示をすると、ホスト側内部バスバッファ112はLA期待値生成サブプログラム1002に制御信号を送信する。LA期待値生成サブプログラム1002は、ホスト側内部バスバッファ112から送信された制御信号を検出すると、ホスト情報保持部114に格納された情報を用いて、当該ブロックのLAを生成し、バッファ値設定サブプログラム1001にLAを送出する。
バッファ値設定サブプログラム1001は、ホスト側内部バスバッファ112に記憶されたデータ(論理データブロック204)にLAを付加する。LAが付加されたデータには、さらにLRCが付加されて、キャッシュ制御プログラム119によってキャッシュ122に転送される。
図4は、本発明の実施の形態のLA検査プログラムA118の構成図である。
LA検査プログラムA118は、バッファ値取得サブプログラム1101、比較部1102及びLA期待値生成サブプログラム1103を備えており、ディスクアレイリード時に、キャッシュ122からホスト入出力部106等に転送されるデータに付加されているLAと、期待されるLAとを比較し、両者が同一であるか否かを検査する。
ディスクアレイリード時にキャッシュ制御プログラム119によってキャッシュ122から転送された1ブロックのデータのうち、論理データブロック204(512バイト)はホスト側内部バスバッファ112に記憶される。また、1ブロックのデータのうち、LA・LRC部(8バイト)に記憶されているデータ保証コードはバッファ値取得サブプログラム1101に送られる。
バッファ値取得サブプログラム1101は、取得したデータ保証コードからLAを抽出し、比較部1102に送出する。
また、ホスト側内部バスバッファ112はキャッシュ122から1ブロックのデータを読み出すと、LA期待値生成サブプログラム1103に制御信号を送信する。LA期待値生成サブプログラム1103は、ホスト側内部バスバッファ112から送信された制御信号を検出すると、ホスト情報保持部114に格納されている情報に基づいて、当該ブロックのLAを生成し、比較部1102に送出する。
比較部1102は、LA期待値生成サブプログラム1103から取得したLAと、バッファ値取得サブプログラム1101から取得したLAとが同一であるか否かを比較する。その結果、両LAが一致しない場合は、キャッシュ122から読み出したデータに異常があると判定し、LA検査プログラム118はMPU125にエラーを通知する。一方、両LAが一致する場合は、キャッシュ122から読み出したデータは正常であると判定し、ホスト側内部バスバッファ112はホスト入出力手段106にデータを転送する。
図5は、本発明の実施の形態のLA検査プログラムB120の構成図である。
LA検査プログラムB120は、カウンタ1104と、バッファ値取得サブプログラム1105と、比較部1106とを備えている。LA検査プログラムB120は、ディスクアレイリード時に、ディスク入出力部133等からキャッシュ122に転送されるデータに付加されているLAと、期待されるLAとを比較し、両者が同一であるか否かを検査する。また、ディスクアレイライト時に、キャッシュ122からディスク入出力部133等に転送されるデータに付加されているLAと、期待されるLAとを比較し、両者が同一であるか否かを検査する。
ホスト101等からディスクアレイシステム105へのデータ書き込み時(ディスクアレイライト時)には、キャッシュ制御プログラム119によってキャッシュ122から転送されたデータは、ディスク側内部バスバッファ121に一時的に記憶される。また、ディスクアレイリード時には、ディスク入出力部133から転送されたデータは、ディスク側内部バスバッファ121にバッファされる。
カウンタ1104は、ディスク側内部バスバッファ121に一時的に記憶されたデータ数をカウントし、LAを取得するカウント値に達したときにバッファ値取得サブプログラム1105に通知する。バッファ値取得サブプログラム1105は、カウンタからの通知を受けたタイミングで、ディスク側内部バスバッファ121内のデータに付加されているLAを取得し、比較部1106に送出する。比較部1106は、ディスク情報保持部116のLA保持部からLAを取得し、バッファ値取得サブプログラム1105が取得したLAと同一であるか否かを比較する。比較の結果LAが同一でない場合は、LA検査プログラムB120は、MPU125にエラーを通知する。
なお、論理データブロックが複数続く転送の場合は、LA検査プログラムB120は、ディスク入出力部133等とキャッシュ122との間で転送されるデータに付されたLAと、LA保持部から取得したLA値をカウンタによって加算することによって生成されたLAの期待値とを比較して、連続してLAを検査する。
このように、ホスト101からディスクアレイシステム105にデータを転送する場合には、論理データブロックアドレスを指定して書き込む。このとき、ディスクアレイライト時にキャッシュ122にデータを書き込む際に、論理データブロックにデータ保証コードを付加する。なお、キャッシュ122から読み出してディスク装置143に書き込む際、論理データブロックに付加されているデータ保証コードと、生成したデータ保証コードの期待値を比較し検査する。
また、ディスクアレイリード時に、ディスク装置143から読み出してキャッシュ122に転送する際、及び、キャッシュ122から読み出したデータをホスト101に転送する際に、論理データブロックに付加されているデータ保証コードと、生成したデータ保証コードの期待値を比較し検査する。論理データブロックに付加されているデータ保証コードは、ホスト101に転送する際に削除し、元のデータの状態に戻す。なお、ディスク装置143から読み出してキャッシュ122に書き込む際にもデータ保証コードが検査される。
図6は、本発明の実施の形態のホスト側内部バス転送リストの構成図である。
ホスト側内部バス転送リストは、MPU125が作成し、転送リスト格納部129に格納される。
ホスト側内部バス転送リストは、ホスト入出力部106がデータ転送を実行するためにDMA109を用いて取得する。ディスク側内部バス転送リストは、ディスク入出力部133がデータ転送を実行するためにDMA136を用いて取得する。
ホスト入出力部106、107、108は、ホスト側内部バス転送リストを用いることによって、DMAによるデータ転送を行うことができる。また、ディスク入出力部133、134、135は、ディスク側内部バス転送リストを用いることによって、DMAによるデータ転送を実行することができる。キャッシュコントローラ111は、ホスト入出力部106、107、108、及びディスク入出力部133、134、135から受け取った転送コマンドに従ってデータを送受信する。ホスト入出力部106とディスク入出力部133とが転送リスト獲得処理及びデータ転送処理を行うので、MPU125はデータ転送が終了するまで介在する必要がない。
ホスト側内部バス転送リストは、キャッシュ122のアドレスを指定するホスト側内部バス転送アドレス701と、データの転送サイズを指定するホスト側内部バス転送サイズ702をそれぞれm個(mは自然数)格納する。
ホスト側内部バス転送アドレス701には、ホスト転送パラメータとして、セグメント情報703、チャンネル番号704、タグ番号705及び転送アドレス706(ADR)が含まれる。また、ホスト側内部バス転送サイズ702には、転送されるデータのサイズ707が含まれる。
セグメント情報703には、キャッシュ内の当該セグメントに格納される複数の論理ブロックのうち当該セグメントの先頭に格納される論理ブロックのLA(以下、「当該セグメントの先頭ブロックのLA」(LA_SEG)と呼ぶ)が格納される。この他に、第2の実施の形態に示すように、当該セグメントが当該コマンドの中の何番目のセグメントかを表す通し番号(SEG_NUM)を格納してもよい。チャンネル番号704には、データ入出力要求時を受信したホスト入出力部106等の識別番号が格納される。タグ番号705には、ホスト101等によって発行されたコマンドの識別番号が格納され、ホスト側LA情報格納部(図7)のタグ番号801や、ホスト情報保持部(図8)のタグ番号906に対応している。転送アドレス706には、データの転送元又は転送先であるキャッシュ122のアドレスが格納される。
キャッシュコントローラ111が転送アドレス706を受けると、タグ番号705に従って該当するコマンドを特定し、対応するLA情報をキャッシュ122のホスト側LA情報格納部123から読み出す。ホスト側LA情報格納部123には、コマンドの先頭ブロックのLAが格納されている。
また、ホスト側内部バス転送リストとディスク側内部バス転送リストは、複数個存在してもよい。
図7は、本発明の実施の形態のホスト側LA情報格納部123の構成図である。
ホスト側LA情報格納部123は、MPU125がキャッシュ122に格納するホスト入出力部からキャッシュへ転送される論理ブロックのLA情報であって、キャッシュコントローラ111はLAの期待値を求めるために、転送リストに指定されたタグ番号に基づいて、このテーブルを参照して必要な情報を取得する。キャッシュコントローラ111が取得した情報は、ホスト情報保持部114に保持される。
ホスト側LA情報格納部123には、タグ番号801、ホストから受信したコマンドに基づき転送される複数の論理ブロックのうち先頭ブロックのLA802(以下、「当該先頭ブロックのLA」と呼ぶ)、ホストから受信したコマンドの先頭ブロックが格納されるキャッシュ内のセグメントの先頭に格納される論理ブロックのLA803(以下、「当該コマンドの先頭ブロックが属するセグメントの先頭LA」と呼ぶ)、LUN804及び転送アドレス805を含んでいる。
タグ番号801は、ホスト101等が発行するコマンドの識別番号であり、ホスト側内部バス転送リスト(図6)のタグ番号と同じものである。ホスト側LA情報格納部123には、ディスクアレイシステム105が同時に処理することができるコマンド数のエントリが設けられており、タグ番号801で識別されている。
該当コマンドの先頭ブロックが属するセグメントの先頭LA803には、例えば図14に示す場合において、該当コマンドの先頭ブロックがLBAn+1であるときに、LBAのLAが保持される。
セグメント内には、論理ブロックが連結して格納される。MPU125は、セグメント長、当該コマンドの先頭ブロックが格納されるキャッシュのアドレス、及び、論理ブロックを用いて、この値を求めることができる。
LUN804には、データの転送に係る(転送されるデータの書き込み先又は読み出し元の)論理ユニットの番号が保持される。転送アドレス805には、当該コマンドによるデータの転送先又は転送元のキャッシュアドレスが保持される。
図8は、本発明の実施の形態のホスト情報保持部114の構成図である。
このホスト情報保持部114は、ホスト側LA情報格納部123(図7)及びホスト入出力部106等からホスト側内部バス110に送出された転送アドレスに格納された情報を保持するもので、転送が起動され、入出力アドレスを取得した後に、キャッシュコントローラ111によってエントリが生成される。
ホスト情報保持部114は、エントリ番号901、該当コマンドの先頭ブロックのLA902、該当コマンドの先頭ブロックが属するセグメントの先頭LA903、LUN904、チャンネル番号905、タグ番号906、LA有効情報907及び転送アドレス908を含んでいる。
該当コマンドの先頭ブロックが属するセグメントの先頭LA903は、後述する第2の実施の形態で用いられる情報で、例えば図14に示す場合において、該当コマンドの先頭ブロックがLBAn+1であるときに、LBAのLAが保持される。
該当コマンドの先頭ブロックのLA902、該当コマンドの先頭ブロックが属するセグメントの先頭LA903、LUN904及びチャンネル番号905は、各々、ホスト側LA情報格納部123(図7)の、当該コマンドの先頭ブロックのLA802、当該コマンドの先頭ブロックが属するセグメントの先頭LA803及びLUN804に対応する。これらの情報は、ホスト側LA情報格納部123から取得される。
LUN904には、データの転送に係る(転送されるデータの書き込み先又は読み出し元の)論理ユニットの番号が保持される。
チャンネル番号905には、データ入出力要求を受信したホスト入出力部106等の識別番号が保持される。タグ番号906には、ホスト101等が発行するコマンドの識別番号が保持される。LA有効情報907には、このエントリが有効であるか、無効であるか、すなわち、LAの付加、検査、削除を論理データブロックに対して行なうかを識別するLA有効情報が保持されている。転送アドレス908には、データ転送に係るキャッシュ122のアドレスが保持される。
図9は、本発明の第1の実施の形態のホスト101からディスクアレイシステム105へのデータ書き込み時(ディスクアレイライト時)のデータ転送処理のシーケンス図である。
ホスト101等において動作するアプリケーションプログラムからデータ書き込み要求が発行されると、ホスト入出力部106等はホストライトコマンドを受信する(1201)。そして、ホスト入出力部106等は、該コマンドの内容をメモリ126内のコマンド情報格納部130に転送し(1202)、MPU125に転送リストを作成させるために、割込信号を発行してコマンドを受信したことを通知する(1203)。
MPU125は、割込信号を受信すると(1204)、コマンド情報格納部130に格納されているホストライトコマンドの内容を解析し、該コマンドから論理データブロックアドレスを抽出し、該論理データブロックアドレスを物理データブロックアドレスへ変換する、ディスクアレイ特有のアドレス変換を行なう(1205)。そして、MPU125は、ライトデータをキャッシュに書き込むための転送コマンドを作成する(1206)。この転送コマンドは、コマンド情報格納部130に格納され、ホスト入出力部106(DMA109)によって使用される。そして、論理ユニット番号と論理データブロックアドレスからLAを生成して、ホスト側LA情報格納部123にエントリを追加する。そして、ホスト101から送られてくるデータをキャッシュ122に分割して転送するためのホスト側内部バス転送リストを作成して、転送リスト格納部129に格納する(1207)。その後、MPU125は、ホスト入出力部106に転送を起動させる。
一方、ホスト入出力部106は、MPU125によって転送が起動されると、転送リスト129を読み出して、リストの全エントリに対するライトデータを指定されたキャッシュアドレスに格納する。まず、ホスト側内部バス転送リストが格納されていれば(1208)、ホスト入出力部106は、DMA109によって転送リスト格納部129からホスト側内部バス転送リストを取得する(1209)。その後、キャッシュコントローラ111に対するライトコマンド(転送コマンド)をホスト側内部バス110に送出する(1210)。このライトコマンドは、キャッシュに記憶されているデータの転送を求める転送コマンドであって、転送リストの情報がPCIアドレスとして含まれている。
一方、キャッシュコントローラ111は、ホスト入出力部106からライトコマンド(転送コマンド)を受信すると(1215)、受信したライトコマンド(転送コマンド)のホスト側内部バス転送アドレスからLAを取得し、ホスト情報保持部114に保持する(1216)。
一方、ホスト入出力部106がホスト側内部バス110にライトコマンド(転送コマンド)を送出(1210)した後、DMA109は、ホスト側内部バス110に書き込みデータを送出する(1211)。
キャッシュコントローラ111は、ホスト入出力部106から書き込みデータを受信すると、LAを生成し、そのデータに付加して(1218)、キャッシュ122にデータを送信する(1219)。本発明では、分割されたデータは、キャッシュ122の物理的に連続した領域に記憶されても、不連続な領域に記憶されてもよい。
また、ホスト入出力部106は、ホスト側内部バス110に書き込みデータを送出する(1211)。そして、データ転送が終了すると、MPU125に割込信号を発行する(1212)。
MPU125は、割込信号を受信すると(1213)、終了処理を行う(1214)。
このように、ディスクアレイライト時に分割されたデータを転送する際に、論理データブロックにデータ保証コードを付加して、システムとしての信頼性を向上させている。
なお、図示は省略するが、MPU125は、その後、キャッシュ122に分割して記憶されたデータをディスク装置143に書き込むための転送リストを作成する。ディスク入出力部133は、この転送リストに従って、分割されたデータをキャッシュ122からディスク装置143に転送する。なお、この転送リストは、転送するすべてのディスク装置に対して作成する。
図10は、本発明の第1の実施の形態のLA生成・付加処理(図9のステップ1218)のフローチャートであり、LA付加プログラム113のLA期待値生成サブプログラム1002による処理を示す。
まず、ホスト入出力部106から受信したライトコマンド(転送コマンド)から書き込み対象のキャッシュアドレス(ADR)を取得する(1502)。
その後、ホスト入出力部106がキャッシュをアウトオブオーダアクセスするか否かを判定する(1503)。この判定は、ホスト入出力部識別プログラム115が、ホスト入出力部106がホスト101との通信に用いる通信プロトコルに基づいて行う。例えば、ホスト側内部バス110にファイバチャネルを用いている場合には、アウトオブオーダアクセスが生じないが、iSCSIを用いている場合には、アウトオブオーダアクセスが生じると判定する。
ステップ1503において、キャッシュに対するアウトオブオーダアクセスが生じないと判定したら、1ブロック分のデータを受信する毎に、ホスト情報保持部114に格納されている当該コマンドの先頭ブロックのLA(902)に1ブロック分のアドレスを加算してLAを生成し(1504)、ステップ1508に進む。
一方、ステップ1503において、キャッシュに対するアウトオブオーダアクセスが生じると判定したら、ホスト入出力部106から転送される内部バスアドレス中の当該セグメントの先頭ブロックLAをセグメントLA(LA_SEG)に設定する(1505)。このセグメントLAは、ホスト側内部バス転送リスト(図6)のセグメント情報703に設定される。
そして、キャッシュアドレス(ADR)を含むセグメントの先頭キャッシュアドレスをセグメントアドレス(ADR_SEG)に設定する(1506)。具体的には、ADR_SEGは、ホスト側内部バス110におけるアドレス(PCIアドレス)をブロック長(512byte)で除算することによって求める。。
そして、((ADR-ADR_SEG)/512)+LA_SEG によってLA(NEW_LA)を算出する(1507)。なお、このとき、((ADR-ADR_SEG)/512)に剰余が生じれば、商のみを用いる。
図11は、NEW_LAの算出の説明図である。キャッシュアドレス(ADR)がセグメント1のブロック5中にある場合に、ブロック5の先頭アドレスをブロックアドレス(ADR_BLK)に設定し、セグメント1の先頭アドレスをセグメントアドレス(ADR_SEG)に設定し、セグメント1の先頭ブロックのLAをセグメントLA(LA_SEG)に設定する。
そして、当該セグメントの先頭ブロックからのブロック数 ((ADR-ADR_SEG)/512)+LA_SEG を、当該セグメントの先頭ブロックのLAに加算して、当該ブロックのLA(LAn+5)を求める。
NEW_LAを算出した後、キャッシュアドレスが512バイトのブロックの末尾アドレスであるか否かを判定する(1508)。キャッシュアドレスが512バイトのブロックの末尾アドレスであれば、ステップ1507で算出された NEW_LA を当該ブロックに対するLAとして、バッファ値設定サブプログラム1001に転送する(1509)。
図12は、本発明の第1の実施の形態のディスクからキャッシュに読み出されたデータをホスト入出力部に転送する処理のシーケンス図である。
ホスト101等において動作するアプリケーションプログラムからデータ読み出し要求が発行されると、ホスト入出力部106等はホストリードコマンドを受信する(1301)。そして、ホスト入出力部106等は、該コマンドの内容をメモリ126内のコマンド情報格納部130に転送し(1302)、MPU125に転送リストを作成させるために、割込信号を発行してコマンドを受信したことを通知する(1303)。
MPU125は、割込信号を受信すると(1304)、コマンド情報格納部130に格納されているホストリードコマンドの内容を解析し、該コマンドから論理データブロックアドレスを抽出し、論理データブロックアドレスを物理データブロックアドレスへ変換する、ディスクアレイ特有のアドレス変換を行なう(1305)。そして、MPU125は、変換された物理データブロックアドレスの全てからデータを読み出す転送コマンドを作成する(1306)。この転送コマンドは、コマンド情報格納部130に格納され、ホスト入出力部106(DMA109)によって使用される。そして、論理ユニット番号と論理データブロックアドレスからLAを生成して、ホスト側LA情報格納部123にエントリを追加する。そして、読み出しが必要な全てのディスク装置に対応したホスト側内部バス転送リストを作成して、転送リスト格納部129に格納する(1307)。その後、MPU125は、ホスト入出力部106に転送を起動させる。
一方、ホスト入出力部106は、MPU125によって転送が起動されると、転送リスト129を読み出して、リストの全エントリに対するリードデータを指定されたキャッシュアドレスに格納する。まず、ホスト側内部バス転送リストが格納されていれば(1308)、ホスト入出力部106は、DMA109によって転送リスト格納部129からホスト側内部バス転送リストを取得する(1309)。その後、キャッシュコントローラ111に対するリードコマンドをホスト側内部バス110に送出する(1310)。このリードコマンドは、キャッシュに記憶されているデータの転送を求める転送コマンドであって、転送リストの情報がPCIアドレスとして含まれている。
一方、キャッシュコントローラ111は、ホスト入出力部106からリードコマンド(転送コマンド)を受信すると(1315)、受信したリードコマンド(転送コマンド)のホスト側内部バス転送アドレスからLAを取得し、ホスト情報保持部114に保持する(1316)。そして、キャッシュ122からデータを受信する(1317)。そして、受信したキャッシュデータに付与されたLAと、ホスト情報保持部114に保持されたデータを用いて生成されたLAとを比較して、受信したキャッシュデータのLAを検査する(1318)。
LAの検査が終了したら、受信したキャッシュデータからLAを削除して、論理データブロックのみにした後(1319)、キャッシュデータをホスト側内部バス110に送信する(1320)。
ホスト入出力部106は、キャッシュデータを受信すると(1311)、ホストリードコマンドを送信したホストにデータを送信する。そして、データ転送が終了すると、MPU125に割込信号を発行する(1312)。
MPU125は、割込信号受信すると(1313)、終了処理を行う(1314)。
このように、ディスクアレイリード時に分割されたデータを転送する際に、論理データブロックにデータ保証コードを付加して、キャッシュ122の正常なアドレスからデータが読み出されたことを監視して、システムとしての信頼性を向上させている。
なお、ディスク装置群140等に分割して格納されたデータは、MPU125が作成した転送リストに基づいて、ディスク入出力部133等が発行するデータ転送コマンドに従って、ディスク入出力部133からキャッシュコントローラ111に送信され、キャッシュ122に書き込まれてキャッシュデータとなっている。
図13は、本発明の第1の実施の形態の期待値LA生成・LA検査処理(図12のステップ1318)のフローチャートであり、LA検査プログラムA118のLA期待値生成サブプログラム1002による処理を示す。
まず、リードコマンドから書き込み対象のキャッシュアドレス(ADR)を取得する(1602)。
その後、ホスト入出力部106がキャッシュをアウトオブオーダアクセスするか否かを判定する(1603)。この判定は、ホスト入出力部識別プログラム115が、ホスト入出力部106がホスト101との通信に用いる通信プロトコルに基づいて行う。例えば、ホスト側内部バス110にファイバチャネルを用いている場合には、アウトオブオーダアクセスが生じないが、iSCSIを用いている場合には、アウトオブオーダアクセスが生じると判定される。
ステップ1603において、キャッシュに対するアウトオブオーダアクセスが生じないと判定したら、1ブロック分のデータを受信する毎に、ホスト情報保持部114に格納されている当該コマンドの先頭ブロックのLA(902)に1ブロック分のアドレスを加算してLAを生成し(1607)、ステップ1608に進む。
一方、ステップ1603において、キャッシュに対するアウトオブオーダアクセスが生じると判定したら、ホスト入出力部106から転送される内部バスアドレス中の当該セグメントの先頭ブロックLAをセグメントLA(LA_SEG)に設定する(1604)。
そして、キャッシュアドレス(ADR)を含むセグメントの先頭キャッシュアドレスをセグメントアドレス(ADR_SEG)に設定する(1605)。
そして、(ADR-ADR_SEG)/512)+LA_SEG をLA(NEW_LA)に設定する(1606)。
その後、キャッシュアドレスが512バイトのブロックの末尾アドレスであるか否かを判定する(1608)。キャッシュアドレスが512バイトのブロックの末尾アドレスであれば、バッファ値取得サブプログラム1101によってキャッシュ122から取得した512バイトのデータに付加されているLAを変数 REAL_LA に設定する(1609)。
そして、ステップ1606で算出された NEW_LA と、ステップ1609で設定された REAL_LA とを比較する(1610)。そして、両者が一致すればLAは正常であると判定し(1611)、両者が一致しなければLAは不正であると判定して、MPU125に対する割込によって異常を通知する(1612)。
次に、本発明の第1の実施の形態の効果について説明する。
図14は、従来のインオーダーアクセス時のキャッシュアクセスの説明図である。すなわち、アウトオブオーダーアクセスが発生しない場合のキャッシュからホスト入出力部へのデータの転送を示す。
なお、本図では、1ブロックが512バイトで、4ブロックが連続して1セグメント(2kバイト)の記憶領域が構成される場合を示すが、1セグメントが他の数のブロック(例えば、32ブロックで16kバイト)で構成されてもよい。また、8ブロック分のデータを転送する場合について示す。
ホスト入出力部106がホスト101からデータ書き込み要求を受けると、その要求から抽出された書き込みデータの容量をキャッシュコントローラ111に送出する。
キャッシュコントローラ111は、書き込むデータの容量を受信すると、キャッシュ122の管理情報を検索して、データを書き込むキャッシュ122の領域を確保して、その確保した領域のセグメント(アドレス)をMPU125に送信する。キャッシュ122の記憶領域はセグメント単位で管理されているので、ホストから送られるデータが格納されるキャッシュ122のアドレスはセグメント単位に不連続となる場合がある。
そして、ホスト入出力部106は、MPU125によって作成された転送リストに従ってホストが送信したデータをキャッシュコントローラ111に転送する。キャッシュコントローラ111は、データ保証コード(図中斜線で示す)を付してデータをキャッシュ122に格納する。
また、ホスト入出力部106がホスト101からデータ読み出し要求を受けると、その要求から抽出された論理データブロックアドレスをキャッシュコントローラ111に送出する。
キャッシュコントローラ111は、読み出すデータの論理データブロックアドレスを受信すると、キャッシュ122の管理情報を検索して、読み出すデータが記憶されているセグメント(アドレス)をMPU125に送信する。キャッシュ122の記憶領域はセグメント単位で管理されているので、ホストから指定される論理データブロックアドレスは連続していたとしても、データを読み出すキャッシュ122のアドレスはセグメント単位に不連続となる場合がある。
そして、ホスト入出力部106は、MPU125によって作成された転送リストに従ってキャッシュ122に記憶されたデータにアクセスし、キャッシュコントローラ111からホスト入出力部106にデータが転送される。キャッシュ122に格納されているデータにはデータ保証コード(図中斜線で示す)が付されている。本図に示すデータ転送時にはホスト入出力部が当該読み出し対象のデータが格納されたブロックをLBAから順にLBAn+7まで順に読み出している。
このように、ホスト101とホスト入出力部106の間の接続にファイバチャネルを用いる従来の構成では、ホスト入出力部106は論理データブロックアドレス順にデータを受け取る。よって、論理データブロックが複数続いて転送される場合でもブロックサイズ毎にLAを加算してLAの期待値を生成すれば、正しいLAを算出することができ、正確な検査をすることができる。
図15は、本発明の実施の形態のアウトオブオーダライト発生時のキャッシュアクセスの説明図である。
ホスト入出力部106がホスト101からデータ読み出し要求を受けると、前述した従来のデータ転送(図14)と同様に、ホスト入出力部106は、MPU125によって作成された転送リストに従ってキャッシュ122に記憶されたデータにアクセスし、キャッシュコントローラ111からホスト入出力部106にデータが転送される。
このとき、ホスト入出力部106は、ブロック単位でなくパケット単位でホスト101からデータを受信する。例えば、図示するように、3ブロックのデータでパケットが構成されてデータを転送する場合に、ホスト入出力部106がパケットを受信する順序は論理データブロックアドレスの順序と一致するとは限らない。
すなわち、ホスト入出力部106が、パケット1、パケット0、パケット2の順でデータを受信した場合、ホスト入出力部106は受信したパケット順にキャッシュのデータを取得し、ホスト入出力部106によるアクセス順序はLBAn+3〜LBAn+5、LBA〜LBAn+2、LBAn+6〜LBAn+7の順となる。このとき、複数の論理データブロックが連続して転送されるが、ブロックサイズ毎にLAを加算してLAの期待値を生成すると、カウンタ値とデータが書き込まれるアドレスが一致しないことから、正しいLAを算出することができず、誤ったLAが付されたデータがキャッシュ122に格納される。よって、データ読み出し時のLA検査において、正常なデータを誤っていると判定してしまう。
図16は、本発明の実施の形態ののアウトオブオーダーリード時のキャッシュアクセスの説明図である。
ホスト入出力部106がホスト101からデータ読み出し要求を受けると、前述した従来のデータ転送(図14)と同様に、ホスト入出力部106は、MPU125によって作成された転送リストに従ってキャッシュ122に記憶されたデータにアクセスし、キャッシュコントローラ111からホスト入出力部106にデータが転送される。
このとき、ホスト入出力部106は、ブロック単位でなくパケット単位でネットワークを介して、ホスト101にデータを転送する。例えば、ホスト入出力部106が、パケット0、パケット1、パケット2の順にデータを送信したとき、パケット0がネットワーク上で消失すると(図中×で示す)、ホスト101はホスト入出力部106にパケット0の再送を要求する。このパケット0の再送要求は、キャッシュコントローラ111に送られる。
すなわち、キャッシュコントローラ111は、LBA〜LBAn+7のデータを読み出した後、パケット0の再送要求に対応するLBA〜LBAn+2のデータを再度読み出す。このとき、複数の論理データブロックが連続して読み出されるが、ブロックサイズ毎にLAを加算してLAの期待値を生成すると、カウンタ値とデータが読み出されるアドレスが一致しないことから、パケット0の再送要求に対応するLBA〜LBAn+2のデータの読み出しの際に正しいLAを算出することができず、誤ったLAが付されたデータがキャッシュ122に格納される。よって、データ読み出し時のLA検査において、正常なデータを誤っていると判定してしまう。
しかし、第1の実施の形態によれば、図15、図16のようなアウトオブオーダアクセスが発生する場合であっても、当該転送コマンドに係る先頭アドレスからの当該セグメントのアドレスの差(ADR-ADR_SEG)を用いてLA値を求めるので、正確なLA値を付加することができ、データ読み出し時のLA検査によって正常な判定をすることができる。
次に、本発明の第2の実施の形態について説明する。第2の実施の形態は、前述した第1の実施の形態と、LA生成・付加処理(1218)及び期待値LA生成・検査処理(1318)の詳細が異なるが、他の構成は同じなので、それらの説明は省略する。
図17は、本発明の第2の実施の形態のLA生成・付加処理(図9のステップ1218)のフローチャートである。
まず、ライトコマンド(転送コマンド)から書き込み対象のキャッシュアドレス(ADR)を取得する(1902)。
その後、ホスト入出力部106がキャッシュをアウトオブオーダアクセスするか否かを判定する(1903)。この判定は、前述した第1の実施の形態と同様に、ホスト入出力部106がホスト101との通信に用いる通信プロトコルに基づいて、ホスト入出力部識別プログラム115が行う。
ステップ1903において、キャッシュに対するアウトオブオーダアクセスが生じないと判定したら、1ブロック分のデータを受信する毎に、ホスト情報保持部に格納されている当該コマンドの先頭ブロックのLAに1ブロック分のアドレスを加算してLAを生成して(1909)、ステップ1910に進む。
一方、ステップ1903において、キャッシュに対するアウトオブオーダアクセスが生じると判定したら、ホスト情報保持部114から当該ライトコマンドの先頭ブロックが属するセグメントの先頭ブロックのLA(LA_FIRST_SEG)を取得する(1904)。
その後、ホスト入出力部106から転送される内部バスアドレス中の当該セグメントの通し番号(SEG_NUM)を取得する(1905)。このセグメントの通し番号は、第2の実施の形態では、ホスト側内部バス転送リスト(図6)のセグメント情報703に格納されている。
そして、先頭セグメントLA(LA_FIRST_SEG)に、セグメント内の最大ブロック数×セグメントの通し番号(SEG_NUM)を加算して、セグメントLA(LA_SEG)に設定する(1906)。
そして、キャッシュアドレス(ADR)を含むセグメントの先頭キャッシュアドレスをセグメントアドレス(ADR_SEG)に設定する(1907)。
そして、((ADR-ADR_SEG)/512)+LA_SEG によってLA(NEW_LA)を算出する(1908)。
図18は、NEW_LAの算出の説明図である。キャッシュアドレス(ADR)がセグメント1のブロック5中にある場合に、ブロック5の先頭アドレスをブロックアドレス(ADR_BLK)に設定し、セグメント1の先頭アドレスをセグメントアドレス(ADR_SEG)に設定し、セグメント0の先頭のブロック0のLAを先頭セグメントLA(LA_FIRST_SEG)に設定し、先頭セグメント(セグメント0)からセグメントの通し番号(SEG_NUM)分進んだセグメント(セグメント1)の先頭のLAをセグメントLA(LA_SEG)に設定する。
そして、当該セグメントの先頭ブロックからのブロック数を、当該セグメントの先頭ブロックのLAに加算して、当該ブロックのLA(LAn+5)を求める。
NEW_LAを算出した後、キャッシュアドレスが512バイトのブロックの末尾アドレスであるか否かを判定する(1910)。キャッシュアドレスが512バイトのブロックの末尾アドレスであれば、ステップ1908で算出された NEW_LA を当該ブロックに対するLAとして、バッファ値設定サブプログラム1001に転送する(1911)。
図19は、本発明の第2の実施の形態の期待値LA生成・検査処理(図12のステップ1318)のフローチャートであり、LA検査プログラムA118のLA期待値生成サブプログラム1002による処理を示す。
まず、リードコマンドから書き込み対象のキャッシュアドレス(ADR)を取得する(2002)。
その後、ホスト入出力部106がキャッシュをアウトオブオーダするか否かを判定する(2003)。この判定は、前述した第1の実施の形態と同様に、ホスト入出力部106がホスト101との通信に用いる通信プロトコルに基づいて、ホスト入出力部識別プログラム115が行う。
ステップ2003において、キャッシュに対するアウトオブオーダアクセスが生じないと判定したら、1ブロック分のデータを受信する毎に、当該コマンドの先頭ブロックのLAに1ブロック分のアドレスを加算してLAを生成し(2010)、ステップ2011に進む。
一方、ステップ2003において、キャッシュに対するアウトオブオーダアクセスが生じると判定したら、ホスト情報保持部114から当該リードコマンドの先頭ブロックが属するセグメントの先頭ブロックのLA(LA_FIRST_SEG)を取得する(2004)。
その後、ホスト入出力部106から転送される内部バスアドレス中の当該セグメントの通し番号(SEG_NUM)を取得する(2005)。このセグメントの通し番号は、第2の実施の形態では、ホスト側内部バス転送リスト(図6)のセグメント情報703に格納されている。
そして、先頭セグメントLA(LA_FIRST_SEG)に、セグメント内の最大ブロック数×セグメントの通し番号(SEG_NUM)を加算して、セグメントLA(LA_SEG)に設定する(2006)。
そして、キャッシュアドレス(ADR)を含むセグメントの先頭キャッシュアドレスをセグメントアドレス(ADR_SEG)に設定する(2007)。
そして、((ADR-ADR_SEG)/512)+LA_SEG をNEW_LAとして算出する(2008)。
その後、キャッシュアドレスが512バイトのブロックの末尾アドレスであるか否かを判定する(2009)。キャッシュアドレスが512バイトのブロックの末尾アドレスであれば、バッファ値取得サブプログラム1101によってキャッシュ122から取得した512バイトのデータに付加されているLAを変数 REAL_LA に設定する(2011)。
そして、ステップ1508で算出された NEW_LA と、ステップ1610で設定された REAL_LA とを比較する(2012)。そして、両者が一致すればLAは正常であると判定し(2013)、両者が一致しなければLAは不正であると判定して、MPU125に対して割込によって異常を通知する(2014)。
以上説明したように、第2の実施の形態によれば、アウトオブオーダアクセスが発生する場合であっても、当該データアクセス要求に係る先頭ブロックからのセグメントの通し番号(SEG_NUM)を用いてLA値を求めるので、正確なLA値を付加することができ、データ読み出し時のLA検査によって正常な判定をすることができる。
本発明の実施の形態のディスクアレイシステムの構成を示すブロック図である。 本発明の実施の形態のキャッシュのデータ格納フォーマットの説明図である。 本発明の第1の実施の形態のLA付加プログラムの構成図である。 本発明の第1の実施の形態のLA検査プログラムAの構成図である。 本発明の第1の実施の形態のLA検査プログラムBの構成図である。 本発明の第1の実施の形態のホスト側内部バス転送リストの構成図である。 本発明の第1の実施の形態のホスト側LA情報格納部の構成図である。 本発明の第1の実施の形態のホスト情報保持部の構成図である。 本発明の第1の実施の形態のディスクアレイライト時のデータ転送処理のシーケンス図である。 本発明の第1の実施の形態のLA生成・付加処理のフローチャートである。 本発明の第1の実施の形態のLAの算出の説明図である。 本発明の第1の実施の形態のディスクアレイリード時のデータ転送処理のシーケンス図である。 本発明の第1の実施の形態の期待値LA生成・LA検査処理のフローチャートである。 従来のインオーダーリード/ライト時のキャッシュアクセスの説明図である。 本発明の第1の実施の形態のアウトオブオーダーライト時のキャッシュアクセスの説明図である。 本発明の第1の実施の形態のアウトオブオーダーリード時のキャッシュアクセスの説明図である。 本発明の第2の実施の形態のLA生成・付加処理のフローチャートである。 本発明の第2の実施の形態のLAの算出の説明図である。 本発明の第2の実施の形態の期待値LA生成・LA検査処理のフローチャートである。
符号の説明
101、102、103 ホスト
104 バススイッチ
105 ディスクアレイ
106、107、108 ホスト入出力部
109、136 DMA
111 キャッシュコントローラ
112 ホスト側内部バスバッファ
113 LA付加プログラム
114 ホスト情報保持部
115 ホスト入出力部識別プログラム
116 ディスク情報保持部
117 LA削除プログラム
118 LA検査プログラムA
119 キャッシュ制御プログラム
120 LA検査プログラムB
121 ディスク側内部バスバッファ
122 キャッシュ
123 ホスト側LA情報格納部
124 ディスク側LA情報格納部
125 MPU
126 メモリ
127 ディスクアレイ制御プログラム
128 LA設定プログラム
129 転送リスト格納部
130 コマンド情報格納部
133、134、135 ディスク入出力部
140、141、142 ディスク装置群
143、144、145 ディスク装置
201、202、203 LA・LRC部
204、205、206 論理データブロック
207、208、209 拡張データ

Claims (2)

  1. データが入出力される複数のディスクと、ホストからの要求に基づいて前記ディスクへのデータの入出力を制御する制御部とを含むディスクアレイシステムであって;
    前記制御部は、
    ディスクアレイシステムに接続された前記ホストとの間でデータや制御信号を送受信するホスト入出力部と、
    前記ディスクとの間でデータや制御信号を送受信するディスク入出力部と、
    前記ホスト入出力部と前記ディスク入出力部との間で転送されるデータを所定サイズのブロックが複数集合して構成されるセグメントを単位として一時的に記憶するキャッシュメモリと、
    制御プログラムを実行することによって前記制御部の動作を制御するMPUと、
    前記キャッシュメモリに対するデータの入出力を制御するキャッシュコントローラと、を備え;
    前記MPUは、前記ホスト入出力部と前記キャッシュメモリとの間のデータ転送に係る情報として、当該転送に係るセグメントの先頭ブロックの保証コード(LA_SEG)、データ入出力要求を受信したホスト入出力部の識別番号、当該データ入出力要求の識別番号、当該データの入出力に係るキャッシュメモリのアドレス(ADR)を含むホスト側内部バス転送リストを生成し;
    前記制御部は、
    前記データ入出力に係るキャッシュメモリのアドレス(ADR)と、
    前記データ入出力に係るキャッシュメモリのアドレス(ADR)を含むセグメントの先頭キャッシュアドレス(ADR_SEG)と、
    前記ブロックのサイズ(BLK_SIZE)と、
    前記転送に係るセグメントの先頭ブロックの保証コード(LA_SEG)と、を用い、
    LA=((ADR−ADR_SEG)/BLK_SIZE)+LA_SEG によって、当該ブロックの保証コードを算出し、
    前記ホストからのデータ書き込み要求時には、前記保証コードを付したデータを前記キャッシュメモリに記憶し、
    前記ホストからのデータ読み出し要求時には、前記キャッシュメモリから読み出されたデータに付されている保証コードと、前記算出された保証コードとを比較して、データを検査するディスクアレイシステム。
  2. データが入出力される複数のディスクと、ホストからの要求に基づいて前記ディスクへのデータの入出力を制御する制御部とを含むディスクアレイシステムであって;
    前記制御部は、
    ディスクアレイシステムに接続された前記ホストとの間でデータや制御信号を送受信するホスト入出力部と、
    前記ディスクとの間でデータや制御信号を送受信するディスク入出力部と、
    前記ホスト入出力部と前記ディスク入出力部との間で転送されるデータを所定サイズのブロックが複数集合して構成されるセグメントを単位として一時的に記憶するキャッシュメモリと、
    制御プログラムを実行することによって前記制御部の動作を制御するMPUと、
    前記キャッシュメモリに対するデータの入出力を制御するキャッシュコントローラと、を備え;
    前記MPUは、前記ホスト入出力部と前記キャッシュメモリとの間のデータ転送に係る情報として、当該セグメントが当該転送に係るセグメントの順序を表す通し番号(SEG_NUM)、データ入出力要求を受信したホスト入出力部の識別番号、当該データ入出力要求の識別番号、当該データの入出力に係るキャッシュメモリのアドレス(ADR)を含むホスト側内部バス転送リストを生成し;
    前記制御部は、
    データ入出力に係るキャッシュメモリのアドレス(ADR)と、
    前記セグメント内のブロック数(SEG_SIZE)と、
    前記転送に係る先頭セグメントの先頭ブロックの保証コード(LA_FIRST_SEG)と、
    前記転送に係る先頭セグメントからの当該セグメントの通し番号(SEG_NUM)と、
    前記データ入出力に係るキャッシュメモリのアドレス(ADR)を含むブロックの先頭キャッシュアドレス(ADR_SEG)と、を用い、
    LA_SEG=LA_FIRST_SEG+(SEG_SIZE×SEG_NUM)、及び、LA=((ADR−ADR_SEG)/SEG_SIZE)+LA_SEG によって、当該ブロックの保証コードを算出し、
    前記ホストからのデータ書き込み要求時には、前記保証コードを付したデータを前記キャッシュメモリに記憶し、
    前記ホストからのデータ読み出し要求時には、前記キャッシュメモリから読み出されたデータに付されている保証コードと、前記算出された保証コードとを比較して、データを検査するディスクアレイシステム。
JP2004220025A 2004-07-28 2004-07-28 ディスクアレイシステム Expired - Fee Related JP4394533B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004220025A JP4394533B2 (ja) 2004-07-28 2004-07-28 ディスクアレイシステム
US10/959,982 US7293139B2 (en) 2004-07-28 2004-10-08 Disk array system generating a data guarantee code on data transferring

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004220025A JP4394533B2 (ja) 2004-07-28 2004-07-28 ディスクアレイシステム

Publications (2)

Publication Number Publication Date
JP2006040011A JP2006040011A (ja) 2006-02-09
JP4394533B2 true JP4394533B2 (ja) 2010-01-06

Family

ID=35733731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004220025A Expired - Fee Related JP4394533B2 (ja) 2004-07-28 2004-07-28 ディスクアレイシステム

Country Status (2)

Country Link
US (1) US7293139B2 (ja)
JP (1) JP4394533B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008117253A (ja) 2006-11-07 2008-05-22 Hitachi Ltd 記憶装置システムと計算機システムおよびその処理方法
JP2008225558A (ja) * 2007-03-08 2008-09-25 Fujitsu Ltd データ中継集積回路、データ中継装置およびデータ中継方法
JP5331323B2 (ja) * 2007-09-26 2013-10-30 株式会社日立製作所 ストレージサブシステム及びその制御方法
KR101347285B1 (ko) * 2007-09-28 2014-01-07 삼성전자주식회사 하드디스크 드라이브의 선반입 방법, 이에 적합한 기록매체 그리고 이에 적합한 장치
JP4977583B2 (ja) * 2007-11-22 2012-07-18 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法
JP2009199266A (ja) 2008-02-20 2009-09-03 Hitachi Ltd データ転送制御装置、データ整合性判定方法及び記憶制御装置
JP2009282708A (ja) * 2008-05-21 2009-12-03 Fujitsu Ltd ディスクアレイ装置の制御方法及び制御装置
US8539309B2 (en) * 2009-09-17 2013-09-17 International Business Machines Corporation System and method for responding to error detection
CA2920121C (en) * 2014-09-15 2019-07-16 Huawei Technologies Co., Ltd. Write data request processing method and storage array
US10579304B2 (en) 2015-12-10 2020-03-03 Hitachi, Ltd. Storage apparatus and information processing program

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993023803A1 (fr) * 1992-05-21 1993-11-25 Fujitsu Limited Appareil de commande pour pile de disques
JP2000347815A (ja) 1999-06-07 2000-12-15 Hitachi Ltd ディスクアレイシステム
JP2001034427A (ja) * 1999-07-23 2001-02-09 Fujitsu Ltd デバイス制御装置及び制御方法
JP4391170B2 (ja) * 2003-09-05 2009-12-24 株式会社日立製作所 データ転送装置の制御方法、データ転送回路、及びディスクアレイ装置
JP4426261B2 (ja) * 2003-11-25 2010-03-03 株式会社日立製作所 チャネルアダプタ及びディスクアレイ装置

Also Published As

Publication number Publication date
US7293139B2 (en) 2007-11-06
US20060026345A1 (en) 2006-02-02
JP2006040011A (ja) 2006-02-09

Similar Documents

Publication Publication Date Title
US8209587B1 (en) System and method for eliminating zeroing of disk drives in RAID arrays
US7036066B2 (en) Error detection using data block mapping
US6748486B2 (en) Method, system, and data structures for superimposing data records in a first data format to memory in a second data format
JP5102915B2 (ja) ストレージ装置及びそのデータ検証方法
US7725805B2 (en) Method and information apparatus for improving data reliability
US10102060B2 (en) Storage apparatus and data control method of storing data with an error correction code
JP5076488B2 (ja) 情報処理装置、履歴管理方法、履歴管理プログラム
JP2006252530A (ja) ディスクライト抜け検出装置およびディスクライト抜け検出方法
US20180113635A1 (en) Memory controller utilizing scatter gather list techniques
JP2007122476A (ja) データストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法
JP4884721B2 (ja) 記憶装置のフォーマットを不要としたストレージシステム及び記憶制御方法
US20140304482A1 (en) Storage system and data transfer method of storage system
JP2006139478A (ja) ディスクアレイシステム
US7039758B2 (en) Disk array system based on disks with a fixed-length unit of access
JP6426838B2 (ja) ストレージシステム、及び、記憶制御方法
JP4394533B2 (ja) ディスクアレイシステム
WO2020087930A1 (zh) 一种数据保护方法、装置及系统
US20080222500A1 (en) Data relay apparatus, data relay method and data relay integrated circuit
US7996712B2 (en) Data transfer controller, data consistency determination method and storage controller
JP2000347815A (ja) ディスクアレイシステム
JP2019204463A (ja) ストレージシステム及びその制御方法
US9891992B2 (en) Information processing apparatus, information processing method, storage system and non-transitory computer readable storage media
US8041850B2 (en) Storage apparatus and data integrity assurance method
US20150339184A1 (en) Storage apparatus and storage apparatus control method
JP2016059012A (ja) 受信装置、送信装置およびデータ転送システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090421

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090612

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

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

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131023

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees