JP5089901B2 - 記憶制御装置及び記憶制御装置の制御方法 - Google Patents

記憶制御装置及び記憶制御装置の制御方法 Download PDF

Info

Publication number
JP5089901B2
JP5089901B2 JP2006087513A JP2006087513A JP5089901B2 JP 5089901 B2 JP5089901 B2 JP 5089901B2 JP 2006087513 A JP2006087513 A JP 2006087513A JP 2006087513 A JP2006087513 A JP 2006087513A JP 5089901 B2 JP5089901 B2 JP 5089901B2
Authority
JP
Japan
Prior art keywords
data
block
write
size
unit
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
JP2006087513A
Other languages
English (en)
Other versions
JP2007264917A (ja
JP2007264917A5 (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 JP2006087513A priority Critical patent/JP5089901B2/ja
Priority to US11/448,950 priority patent/US7472250B2/en
Priority to EP06255219A priority patent/EP1840719A3/en
Publication of JP2007264917A publication Critical patent/JP2007264917A/ja
Priority to US12/324,277 priority patent/US7865664B2/en
Publication of JP2007264917A5 publication Critical patent/JP2007264917A5/ja
Application granted granted Critical
Publication of JP5089901B2 publication Critical patent/JP5089901B2/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

本発明は、記憶制御装置及び記憶制御装置の制御方法に関し、例えば、データ入出力の管理単位が異なる記憶装置との間でデータ入出力を行う記憶制御装置及び記憶制御装置の制御方法に関する。
サーバやメインフレームマシン等のホストコンピュータ(以下、「ホスト」)に接続されるストレージシステムの一種としては、ディスクアレイシステムが知られている。ディスクアレイシステムは、RAID(Redundant Array of Inexpensive Disks)システムとも呼ばれ、アレイ状に配置された複数のディスクドライブ及びそれらを制御する制御部を備えている。
ディスクアレイシステムでは、データのリード要求及びライト要求を、複数のディスクドライブの並列動作によって、高速に処理することができる。また、RAID1〜RAID5として知られているように、ディスクアレイシステムでは、データに冗長性を付加することもできる(非特許文献1)。
このように、ディスクアレイシステムでは、ディスクドライブに障害が生じた場合でもデータを復元できるように、冗長データを作成し、この冗長データをデータとは異なるディスクドライブに保存している。
RAID構成に加えて、さらに、保証コードを使用するディスクアレイシステムも知られている(特許文献1,特許文献2,特許文献3)。一つの従来技術では、保証コードとして、ホストコンピュータがアクセス先として指定する論理ブロックの論理アドレス(以下、「LA(Logical Address)」)、及び、論理ブロックのデータについて排他的論理和演算を実施して求められるLRC(Longitudinal Redundancy Check)を論理ブロックに付加し、保証コードと論理ブロックとをディスクドライブに保存させる。LAは、論理ブロックのデータが書き込まれる記憶領域のアドレスの誤りを検出するために用いられる。LRCは、論理ブロックのデータの誤りを検出するための誤り検出符号として用いられる。
特開2000−347815号公報 米国特許第5,819,054号公報 米国特許第5,706,298号公報 ディー・パターソン(D.Patterson)、外2名、「ケース・フォー・リダンダント・アレイ・オブ・インエクスペンシブ・ディスク(A Case for Redundant Arrays of Inexpensive Disks(RAID))」、エー.シー.エム.シグモッド コンファレンスプロシーディング(ACM SIGMOD Conference Proceeding)、1988年6月、p.109-116
従来技術では、RAID及び保証コードによって、ストレージシステムの信頼性向上を図っている。ところで、例えば、ATA(AT Attachment)ディスク等のような、ブロック長(セクタ長)が固定されている記録媒体をストレージシステムに用いる場合、ストレージシステムの制御部が記録媒体に対してデータを入出力する際のデータ単位と、記録媒体がデータの入出力処理を行う際のデータ単位とが異なる可能性がある。この場合、記録媒体にデータを入出力するのは、難しくなる。
なお、記録媒体の扱うデータ単位が固定されていない場合でも、制御部が記録媒体に対してデータの入出力処理を行う際のデータ単位と、記録媒体が扱うデータ単位とを同一サイズにできない場合には、上記同様の問題が生じ得る。
また、ホストがデータを取り扱う場合の単位である論理ブロックのサイズと、ディスクドライブのセクタ長とが一致しても、ストレージシステムの制御部が、ホストから受信した論理ブロックに保証コードを付加する場合は、上記同様の問題を生じる。保証コードを用いるストレージシステムでは、ディスクドライブへの書込み対象は、論理ブロック及び保証コードとなる。従って、ディスクドライブへの書込み対象となるデータのサイズと、ディスクドライブのセクタ長とが一致しなくなる。
上述のように、保証コードの付加された論理ブロックを、異なるサイズのセクタにそのまま記録させるのは難しい。しかし、保証コードを検査することにより、データの内容の誤り及び書込み先の間違いを検出することができるため、保証コードの付加された論理ブロックを、異なるセクタ長を有する記録媒体に容易に入出力できるようにした技術開発が求められている。
本発明は、上記の問題点に鑑みてなされたもので、その目的は、記憶制御装置内でのデータ入出力処理に使用される第1ブロックのサイズと、記憶装置内に設けられる複数の第2ブロックのサイズとがそれぞれ異なる場合でも、データを効率的に入出力できるようにした記憶制御装置及び記憶制御装置の制御方法を提供することにある。本発明の他の目的は、記憶制御装置内におけるデータ入出力処理に用いられるデータ管理単位と記憶装置内に記憶されるデータの管理単位とが異なる場合でも、保証コードを用いて信頼性を向上できるようにした記憶制御装置及び記憶制御装置の制御方法を提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明に従う記憶制御装置では、記憶制御装置内におけるデータ入出力処理のデータ管理単位と、記憶装置内に格納されるデータの管理単位とが異なる場合に、ライト対象範囲のデータを、ライトデータの両端側まで拡大した後、記憶装置内のデータ管理単位に合わせて縮小させる。
即ち、本発明の一つの観点に従う記憶制御装置は、上位装置と記憶装置との間のデータ入出力を制御するための記憶制御装置であって、記憶制御装置内でのデータ入出力処理に使用される第1ブロックのサイズと、記憶装置内に設けられる複数の第2ブロックのサイズとはそれぞれ異なっており、第1ブロック単位のライトデータの一端または他端のいずれか一方が、各第2ブロック間の境界と不一致の場合は、不一致の端部に連続する他の第1ブロックのデータを取得し、この他の第1ブロックのデータとライトデータとを結合させて、結合データを生成する結合データ生成部と、ライトデータに結合された他の第1ブロックのデータの端部が各第2ブロック間の境界に一致するように、他の第1ブロックのデータの一部を破棄することにより、結合データのサイズを第2ブロックのサイズの整数倍に調整するデータサイズ調整部と、サイズの調整された結合データを記憶装置に書き込ませる書込み部と、を備える。
本発明の他の観点に従う記憶制御装置は、上位装置と記憶装置との間のデータ入出力を制御するための記憶制御装置であって、記憶制御装置内でのデータ入出力処理に使用される第1ブロックのサイズと、記憶装置内に設けられている複数の第2ブロックのサイズとはそれぞれ異なっており、上位装置の要求に応じて、上位装置からライトデータを受信するライトデータ受信部と、記憶装置からデータを読み出す読出し部と、受信されたライトデータについて、第2ブロックのサイズのデータ毎に、データ内容を保証するための保証コードをそれぞれ設定することにより、ライトデータを第1ブロック単位のライトデータに変換する保証コード設定部と、第1ブロック単位のライトデータを記憶するキャッシュメモリと、キャッシュメモリに記憶されたライトデータの一端または他端のいずれか一方が、各第2ブロック間の境界と不一致の場合は、不一致の端部に連続する他の第1ブロックのデータを読出し部を介して記憶装置から取得し、この取得された他の第1ブロックのデータとライトデータとを結合させて、結合データを生成する結合データ生成部と、結合データに含まれる各保証コードに基づいて、結合データの内容が正常であるか否かを検査する検査部と、検査部により正常であるとの検査結果が得られた場合には、ライトデータに結合された他の第1ブロックのデータの端部が各第2ブロック間の境界に一致するように、他の第1ブロックのデータの一部を破棄することにより、結合データのサイズを第2サイズの整数倍に調整するデータサイズ調整部と、サイズの調整された結合データを記憶装置に書き込ませる書込み部と、を備える。
本発明の実施形態では、記憶装置によって、冗長データを用いる冗長記憶構造が提供されており、さらに、受信されたライトデータに関して、第1ブロック単位の冗長データを生成する冗長データ生成部を備え、結合データ生成部と、検査部と、データサイズ調整部及び書込み部は、冗長データをライトデータと同様に処理する。
本発明の実施形態では、記憶装置は、冗長データを用いる冗長記憶構造を提供するものであり、さらに、受信されたライトデータに関して、第1ブロック単位の冗長データを生成する冗長データ生成部とを備え、結合データ生成部と、検査部と、データサイズ調整部及び書込み部は、冗長データを、ライトデータと同様に処理し、さらに、結合データ生成部が結合データを生成するよりも前に、ライトデータにより更新される第1ブロック単位の旧データ及びこの旧データに連続する他の第1ブロックのデータを、記憶装置からそれぞれ予め読み出してキャッシュメモリに記憶させる旧データ読出し部と、結合データ生成部が新たな冗長データに関する結合データを生成するよりも前に、新たな冗長データにより更新される第1ブロック単位の旧冗長データ及びこの旧冗長データに連続する他の第1ブロックのデータを、記憶装置からそれぞれ予め読み出してキャッシュメモリに記憶させる旧冗長データ読出し部と、を備える。
本発明の実施形態では、さらに、キャッシュメモリへのデータ入出力を制御するキャッシュコントローラを備えており、保証コード設定部と、検査部と、データサイズ調整部とは、キャッシュコントローラ内にそれぞれ設けられている。
本発明の実施形態では、さらに、データ入出力処理を制御するマイクロプロセッサを備えており、保証コード設定部と、検査部と、結合データ生成部及びデータサイズ調整部とは、マイクロプロセッサによってそれぞれ実現される。
本発明の実施形態では、保証コードには、第2サイズ毎のデータの誤りを検出するための誤り検出符号が含まれている。
本発明の実施形態では、保証コードには、第2サイズ毎のデータの書込み先アドレスの誤りを検出するためのアドレス情報が含まれている。
本発明の実施形態では、保証コードには、第2サイズ毎のデータの誤りを検出するための誤り検出符号と、第2サイズ毎のデータの書込み先アドレスの誤りを検出するためのアドレス情報とが含まれている。
本発明の別の観点に従う記憶制御装置の制御方法は、上位装置と記憶装置との間のデータ入出力を行う記憶制御装置を制御するための方法であって、記憶制御装置内でのデータ入出力処理に使用される第1ブロックのサイズと、記憶装置内に設けられる複数の第2ブロックのサイズとはそれぞれ異なっており、上位装置から受信したライトデータをキャッシュメモリに記憶させるライトデータ受信ステップと、キャッシュメモリに記憶されたライトデータの一端または他端のいずれか一方が、第2ブロック間の境界と不一致であるか否かをそれぞれ判定し、不一致の場合は、この不一致の端部に連続して隣接する他の第1ブロックのデータを記憶装置から取得する隣接ブロック取得ステップと、取得された隣接ブロックとライトデータとを結合させて、結合データを生成する結合データ生成ステップと、ライトデータに結合された他の第1ブロックのデータの端部が各第2ブロック間の境界に一致するように、他の第1ブロックのデータの一部を破棄することにより、結合データのサイズを第2サイズの整数倍に調整するデータサイズ調整ステップと、サイズの調整された結合データを記憶装置に書き込ませる書込みステップと、を実行させる。
また、ライトデータ受信ステップと隣接ブロック取得ステップとの間に保証コード設定ステップを設け、かつ、結合データ生成ステップとデータサイズ調整ステップとの間に検査ステップを設け、保証コード設定ステップでは、受信されたライトデータについて、第2ブロックのサイズのデータ毎に、データ内容を保証するための保証コードをそれぞれ設定することにより、ライトデータを第1ブロック単位のライトデータに変換し、検査ステップでは、結合データに含まれる各保証コードに基づいて、結合データの内容が正常であるか否かを検査することもできる。
本発明の各部または各ステップの少なくとも一部は、コンピュータプログラムとして構成される場合がある。このコンピュータプログラムは、記録媒体に固定して配布したり、ネットワークを介して配信することができる。
以下、図面に基づいて、本発明の実施の形態を説明する。まず最初に、本発明の概念を説明し、その次に、具体的な実施例について説明する。図1は、本発明の概念を模式的に示す説明図である。
ストレージシステムは、例えば、記憶制御装置1及び記憶装置2を備えて構成することができる。記憶制御装置1は、ホストHから発行されたリード要求またはライト要求に従って、記憶装置2からデータを読み出したり、または、記憶装置2にデータを書き込んだりする。記憶装置2は、例えば、ハードディスクドライブ等の記憶デバイスを少なくとも1つ以上備えており、ホストHによって使用されるデータを格納している。
ここで、記憶制御装置1の内部でデータを取り扱う場合のデータ管理単位と、記憶装置2内に記憶されるデータの管理単位とは異なっている。記憶制御装置1は、例えば、520バイトのサイズBS1を有する拡張論理ブロック3を用いて、データ入出力処理を行うようになっている。
拡張論理ブロックとは、例えば、512バイトのサイズBS2を有する論理ブロックに、8バイトの保証コード5を付加することにより生成されるブロックである。論理ブロックとは、ホストHが記憶装置2を使用する場合のデータ入出力単位である。保証コード5とは、各論理ブロック毎にそれぞれ生成されて付加されるもので、例えば、論理ブロックの内容の誤りを検出するための情報(LRC)及び論理ブロックの書込み先の誤りを検出するための情報(LA)等を含んでいる。
保証コード5は、例えば、LRC及びLAの両方を含んでもよいし、LRCまたはLAのいずれか一方のみを含んでもよい。なお、LRC及びLAは、保証コードに含まれる情報の一例であり、LRC及びLAに類する他の情報を含んでもよく、LRC及びLA以外の他の情報を含んでもよい。
記憶制御装置1が520バイトの拡張論理ブロック3を用いるのに対して、記憶装置2では、例えば、512バイトのサイズBS2を有する物理ブロック4の単位で、データを入出力させる。物理ブロック4とは、例えば、ハードディスク、フレキシブルディスク、光ディスク等のような記録媒体に設けられる「セクタ」に該当する。このように、ホストHと記憶制御装置1との間で使用される論理ブロックのサイズと、記憶装置2内で管理される物理ブロック4のサイズとは、一致する。換言すれば、本実施形態では、記憶制御装置1内で保証コード5を付加するため、記憶制御装置1内のデータ管理単位(拡張論理ブロック3)と記憶装置2内のデータ管理単位(物理ブロック4)とが一致しない。
記憶制御装置1の備えるデータ処理機能を説明する。記憶制御装置1は、例えば、ライト要求受信部1Aと、保証コード設定部1Bと、ライト対象範囲生成部1Cと、保証コード検査部1Dと、ブロックサイズ調整部1E及びライト対象範囲書込み部1Fとを備えることができる。
ライト要求受信部1Aは、ホストHから発行されたライト要求を受信するためのものである。ライト要求受信部1Aは、ホストHからのライト要求を受信すると、ライトデータWDを記憶するための領域をキャッシュメモリに確保し、ホストHから受信したライトデータWDをキャッシュメモリに記憶させる。ここで、ライトデータWDは、一つまたは複数の論理ブロックから構成されている。
保証コード設定部1Bは、ライトデータWDの各論理ブロック毎にそれぞれ保証コード5を生成して、各論理ブロックにそれぞれ付加するものである。論理ブロックに保証コードを付加することにより、論理ブロックよりもサイズの大きい拡張論理ブロック3が形成される(拡張論理ブロック=論理ブロック+保証コード)。これにより、ライトデータWDは、拡張論理ブロック単位で構成されるライトデータ3Wとなる(ライトデータ3W=ライトデータWD+保証コード5)。
ライト対象範囲生成部1Cは、「結合データ生成部」に対応する。ライト対象範囲生成部1Cは、拡張ブロック単位のデータとして構成されたライトデータ3Wを、その両端側まで拡大して、ライト対象範囲を生成する。
ライト対象範囲生成部1Cは、拡張ブロック単位のライトデータ3Wの両端にそれぞれ連続して隣接する他の拡張論理ブロック3F,3Bを、記憶装置2内からそれぞれ取得し、これら拡張論理ブロック3F,3Bをライトデータ3Wと結合させる。これにより、ライト対象範囲(結合データ)が生成される。拡張論理ブロック3F,3Bを、以下の説明では、隣接ブロック3F,3Bと呼ぶ場合がある。
一方の隣接ブロック3Fは、ライトデータ3Wの先頭側に隣接する拡張論理ブロックである。他方の隣接ブロック3Bは、ライトデータ3Wの終端側に隣接する拡張論理ブロックである。
記憶制御装置1は、記憶装置2内の各物理ブロック4と、記憶制御装置1の管理する各拡張論理ブロック3との対応関係を把握している。従って、ライト対象範囲生成部1Cは、各隣接ブロック3F,3Bのデータを記憶している物理ブロック4を記憶装置2内からそれぞれ読出し、この読み出した各物理ブロック4の中から、隣接ブロック3F,3Bのデータをそれぞれ取得する。
先頭側の隣接ブロック3Fをライトデータ3Wの先頭側に配置し、終端側の隣接ブロック3Bをライトデータ3Wの終端側に配置することにより、記憶装置2へのライト対象となるデータの範囲は、ライトデータ3Wの前後方向に拡大される。
後述の実施例で述べるように、常に、2つの隣接ブロック3F,3Bが記憶装置2からそれぞれ読み出されて、ライトデータ3Wに結合されるとは限らない。拡張論理ブロック単位で再構成されたライトデータ3Wの先頭側または終端側のいずれか一方の端部が、各物理ブロック4間の境界に一致しない場合にのみ、その不一致の端部に連続して隣接する拡張論理ブロック(3Fまたは3B)が取得され、ライトデータ3Wと結合される。
換言すれば、一つまたは複数の拡張論理ブロックから構成されるライトデータ3Wの先頭側または終端側が、物理ブロック4間の境界に一致する場合、この一致する端部に連続して隣接する拡張論理ブロックは、記憶装置2から取得されない。
保証コード検査部1Dは、ライト対象範囲(=3F+3W+3B)に含まれる各保証コード5をそれぞれ検査する。これにより、ライト対象範囲のデータについて、各拡張論理ブロック毎に、内容の誤りの有無や書込み先アドレスの誤りの有無を、それぞれ検出することができる。図1に示す例では、各拡張論理ブロック3F,3W,3B毎に、それぞれのブロックに付加されている保証コードが検査される。
ブロックサイズ調整部1Eは、書込み先デバイスである記憶装置2の管理単位に合わせて、ライト対象範囲のデータのサイズを調整するものである。ブロックサイズ調整部1Eは、保証コード検査部1Dによる検査に合格したライト対象範囲について、その両端のいずれか一方または両方に位置するデータを一部破棄することにより、ライト対象範囲のサイズを物理ブロック4の整数倍のサイズに調整する。
図1に示す例では、先頭側の隣接ブロック3Fについて、各物理ブロック4間の境界から外側にはみ出した部分のデータは、切り捨てられる。同様に、終端側の隣接ブロック3Bについても、各物理ブロック4間の境界から外側にはみ出した部分のデータは、切り捨てられる。なお、拡張論理ブロック単位に再構成されたライトデータ3Wについては、データの部分的破棄は行われない。ライトデータ3Wの両側に結合されたデータ(3F,3B)のみが、部分的破棄の対象となる。
ライト対象範囲のサイズは、N×BS2となる。ここで、Nは、正の整数である。例えば、ライトデータ3Wに含まれる論理ブロックの数をN1、ライトデータ3Wに接続される隣接ブロックの数をN2とすると、N=N1+N2として表現可能である。
ライト対象範囲書込み部1Fは、ブロックサイズの調整されたライト対象範囲のデータを、記憶装置2の所定の場所に書き込むものである。
このように、本実施形態では、記憶制御装置1内におけるデータ入出力の単位である拡張論理ブロック3のサイズBS1と、記憶装置2内に設けられる物理ブロック4のサイズBS2とが異なる場合でも、ライト対象範囲となるデータのサイズを、物理ブロック4のサイズに合わせて調整し、記憶装置2に書き込むことができる。
また、本実施形態では、ライトデータ3Wに隣接する拡張論理ブロック3F,3Bを読み出して、ライトデータ3Wに結合させることにより、ライト対象範囲を生成する。従って、各拡張論理ブロック3F,3W,3Bについて、それぞれの保証コード5を検査してから、記憶装置2に記憶させることができ、信頼性を高めることができる。以下、本実施形態を詳述する。
図1は、本実施例に係るストレージシステム10の全体構成を示す説明図である。このストレージシステム10は、例えば、コントローラ100及び記憶部200を備えて構成される。ストレージシステム10は、ホスト20に、例えば、RAID1〜RAID6のような冗長化された記憶領域を提供することができる。なお、本発明は、冗長化されていない記憶領域を提供するストレージシステム10にも適用することができる。本発明の範囲は、以下に述べるストレージシステム10の構成に限定されない。ストレージシステム10は、図2に示す以外に種々の形態で構成可能である。
(1)システム構成
ホスト20は、例えば、サーバコンピュータやメインフレームコンピュータ等のようなコンピュータとして構成される。ホスト20は、例えば、LAN(Local Area Network)やSAN(Storage Area Network)等の通信経路CN1を介して、ストレージシステム10に接続されている。説明の都合上、ホスト20を一つだけ図示するが、複数のホスト20をストレージシステム10にそれぞれ接続してもよい。
ストレージシステム10は、ホスト20によって利用されるデータを、記憶部200内に記憶させている。記憶部200へのデータの入出力(データの読出し及びデータの書込み)は、コントローラ100によって制御される。
コントローラ100は、例えば、キャッシュコントローラ110と、ホスト通信部120(以下、「ホストI/F120」)と、ディスク通信部130(以下、「ディスクI/F130」)と、キャッシュメモリ140と、プログラムメモリ150と、マイクロプロセッサ160(以下、「MPU160」)及びバスブリッジ170を備えて構成される。なお、コントローラ100の構成は一例であって、本発明はこれに限定されない。例えば、それぞれ独立した制御モジュールとして構成されるチャネルアダプタ及びディスクアダプタと、キャッシュメモリ及び共有メモリ等から、コントローラ100を構成してもよい。
キャッシュコントローラ110は、キャッシュメモリ140へのデータ入出力等を制御するものである。キャッシュコントローラ110は、例えば、保証コード付加/削除回路111と、保証コード検査回路112と、冗長データ生成回路113と、ブロックサイズ変換回路114とを備えることができる。
各回路111〜114の動作は後述するが、簡単に説明すると、保証コード付加/削除回路111は、データに保証コードを付加したり、あるいは、データから保証コードを削除するための回路である。保証コード検査回路112は、データに付加された保証コードを用いて、データの内容等を検査するための回路である。冗長データ生成回路113は、パリティデータ等のような冗長データを生成するための回路である。ブロックサイズ変換回路114は、記憶部200の物理フォーマットに合わせて、ライトデータを含むライト対象範囲のデータのサイズを調整する。
ホストI/F120は、ホスト20との間で送受信を行うためのものである。ディスクI/F130は、記憶部200内の各ディスクドライブ210との間で送受信を行うためのものである。図中では、説明の便宜上、ホストI/F120及びディスクI/F130をそれぞれ一つずつ示すが、複数のI/F120,130を設けることもできる。
キャッシュメモリ140は、ホスト20からアクセスされるデータを一時的に記憶するためのメモリである。プログラムメモリ150は、例えば、ディスクアレイ制御プログラム151等の制御プログラムや、制御情報を記憶するためのメモリである。なお、例えば、メモリの一部の領域に制御プログラムや制御情報を記憶し、残りの領域をキャッシュ領域として使用する構成でもよい。
MPU160は、ストレージシステム10の動作を制御するものである。MPU160は、例えば、ディスクアレイ制御プログラム151を読み込んで実行することにり、ストレージシステム10の動作を制御する。
バスブリッジ170は、MPU160及びプログラムメモリ150を、キャッシュコントローラ110に接続させる。キャッシュコントローラ110は、ホストI/F120,ディスクI/F130及びキャッシュメモリ140に接続されている。
記憶部200は、少なくとも一つ以上のディスクドライブ210を備えている。ディスクドライブ210としては、例えば、ハードディスクドライブ、フレキシブルディスクドライブ、光ディスクドライブ等を挙げることができる。本実施例では、例えば、ATAディスクのような固定サイズのセクタが設けられるディスクドライブを使用する。しかし、本発明はこれに限らず、セクタサイズ(物理ブロックサイズ)を可変に設定可能なディスクドライブの場合でも適用可能である。
ディスクドライブ210の有する物理的な記憶領域の全部または一部を用いることにより、ホスト20からのアクセス対象となる論理ボリューム(LU:Logical Unit)220が形成される。LU220は、物理的な記憶領域上に設定される論理的な記憶領域であり、論理的記憶デバイスと呼ぶこともできる。
例えば、正ディスクドライブ及び副ディスクドライブのペアによって、RAID1のLU220を構成することができる。また、例えば、複数のデータディスクドライブと一つまたは複数のパリティディスクドライブとにより、RAID5等のような冗長性を備えるLU220を構成することもできる。以下の説明では、パリティデータを冗長データと呼ぶ場合がある。なお、冗長データを記憶するディスクドライブは、固定されている必要はなく、RAIDグループを構成する各ディスクドライブに、所定の順番で、冗長データを分散して記憶させることもできる。
(2)ブロックサイズの対応関係
図3は、コントローラ100が扱うデータの単位と、ディスクドライブ210が扱うデータの単位との対応関係を模式的に示す説明図である。
図3の上段は、コントローラ100がディスクドライブ210にデータを入出力する際に扱うデータの単位を示す。コントローラ100がデータを取り扱う単位を、本明細書では、「拡張論理ブロック300」と定義する。
拡張論理ブロック300は、例えば、520バイトのサイズを有する。拡張論理ブロック300は、論理ブロック310及び保証コード320から構成される。論理ブロック310は、ホスト20がストレージシステム10にデータを入出力する際の単位であり、512バイトのデータから構成される。
保証コード320は、論理ブロック310の記憶内容や論理ブロック310の格納先を保証する情報であり、LAやLRCを含む8バイトのデータとして構成される。従って、拡張論理ブロック300のサイズは、512バイトに8バイトを加えた値である520バイトとなる。なお、保証コード320の全バイトが使用されている必要はなく、例えば、2バイト程度の領域が空き領域であってもよい。
図3の下段は、ディスクドライブ210がデータ入出力を行う際のデータの単位を示している。ディスクドライブ210がデータを取り扱う単位を、本明細書では、「物理ブロック400」と定義する。物理ブロック400は、512バイトのサイズを有する。
さらに、本明細書では、拡張論理ブロック300間の境界を「拡張論理ブロック境界B1」と定義する。同様に、物理ブロック400間の境界を「物理ブロック境界B2」と定義する。
図3に示す例では、拡張論理ブロック300は、物理ブロック400と比較して、そのサイズが8バイトだけ大きい。従って、拡張論理ブロック300を64個連続して配置し、物理ブロック400を65個連続して配置すると、両ブロック300,400間のサイズの差分(8バイト)の合計値が、物理ブロック400のサイズと等しい512バイトとなる。従って、拡張論理ブロック300を64個(M1個)連続して並べた場合の合計サイズと、物理ブロック400を65個(M2個)連続して並べた場合の合計サイズとは、一致する。
拡張論理ブロック300の合計サイズと物理ブロック400の合計サイズが一致する場合の拡張論理ブロック300の個数をM1、拡張論理ブロック300のサイズをBS1、物理ブロック400のサイズをBS2とすると、M1=BS2/(BS1−BS2)となる。
この場合、拡張論理ブロック境界B1と物理ブロック境界B2とは、一致する。即ち、64個連続して並べられた拡張論理ブロック300群の先頭から終端までの合計サイズと、65連続して並べられた物理ブロック400群の先頭から終端までの合計サイズとは、等しい。従って、拡張論理ブロック300群の両端と物理ブロック400群の両端とは、それぞれ一致する。つまり、この場合、拡張論理ブロック300群の両端に位置する拡張論理ブロック境界B1は、物理ブロック400群の両端に位置する物理ブロック境界B2にそれぞれ一致する。このように、拡張論理ブロック境界B1と物理ブロック境界B2とが一致する状態を、本明細書では、「ブロック境界一致」と定義する。
なお、拡張論理ブロック300のサイズを520バイトと、物理ブロック400のサイズを512バイトとして述べたが、これらの値は例示であって、本発明は、他の場合にも適用できる。本発明は、拡張論理ブロック300のサイズと物理ブロック400のサイズとが異なる場合に適用することができる。従って、拡張論理ブロック300が、保証コード320を備えていない場合であっても、拡張論理ブロック300のサイズが物理ブロック400のサイズと異なるのであれば、本発明を適用可能である。
(3)リード処理
図4のフローチャートを参照して、ホスト20から発行されたリード要求を処理する方法を説明する。以下の各フローチャートは、本発明の理解及び実施に必要な範囲内で、処理の概要を示しており、実際のコンピュータプログラムとは異なる場合がある。また、説明の便宜上、「ステップ」を「S」と略記する場合がある。
図4に示すリード処理は、コントローラ100のMPU160がディスクアレイ制御プログラム151を実行することによって、実現される。しかし、説明の便宜上、主として、コントローラ100を動作の主体として説明する。
ホスト20は、リード対象のデータを記憶しているLU220の番号(ボリューム番号)を特定し、さらに、読出し先の先頭アドレス(先頭LA)及び論理ブロック数を指定することにより、リード要求(リードコマンド)を発行する。先頭LAに続く論理ブロック数は、リード対象データのサイズを示している。
コントローラ100は、ホスト20からのリード要求を受信すると、先頭LA及び論理ブロック数を確認する(S11)。また、コントローラ100は、先頭LAおよび論理ブロック数に基づいて、ディスクドライブ210から読み出すべき論理ブロックと、この論理ブロックに付与されている保証コードとを、それぞれ特定する(S11)。
そして、コントローラ100は、特定された論理ブロック及び保証コード(即ち、拡張論理ブロック300のデータ)が記憶されている物理ブロック400を特定し、いずれのディスクドライブ210からデータを読み出すかを決定する(S12)。
コントローラ100は、拡張論理ブロック300と物理ブロック400との対応関係を把握しているため、このブロック間の対応関係に基づいて、データを読み出すべき物理ブロック400を決定することができる。
例えば、リード対象の拡張論理ブロック300が一つであって、この一つの拡張論理ブロック300が2つの連続する物理ブロック400に跨って記憶されている場合、コントローラ100は、これら2つの連続する物理ブロック400が、データ読出し元の物理ブロック400となる。コントローラ100は、データ読出し元の物理ブロック400を有するディスクドライブを、読出し元のディスクドライブとして特定する。
なお、コントローラ100は、リード対象のデータを記憶する物理ブロック400以外に、他の物理ブロック400も一緒に読み出すこともできる。即ち、リード対象のデータを記憶するリード対象の物理ブロック400に加えて、このリード対象の物理ブロック400以外の他の物理ブロック400についても一緒に、一回のリードコマンドで読み出すことができる。これにより、コントローラ100からディスクドライブ210へのデータ読出し回数を低減することができる。この場合、ディスクドライブ210から余分に読み出されたデータの中から、必要なデータのみを使用すればよい。
例えば、リード対象のデータが、飛び飛びの論理ブロックに分散して記憶されている場合を考える。この場合、この飛び飛びの論理ブロックを含むようにして、連続する複数の物理ブロック400を、一回のリードコマンドで一度に読み出す構成でもよい。これにより、コントローラ100がディスクドライブ210にアクセスする頻度を低減させることができ、ストレージシステム10の応答性能が改善される。
次に、コントローラ100は、ディスクドライブ210から読み出される論理ブロック310のデータ及び保証コード320を記憶させるための記憶領域を、キャッシュメモリ140に確保する(S13)。
コントローラ100は、読出し元の物理ブロック400を明示して、ディスクI/F130に指示を出す。ディスクI/F130は、コントローラ100から指定されたディスクドライブ210に、指定された物理ブロック400のデータを読み出させるためのコマンドを発行する。ディスクI/F130は、ディスクドライブ210から読み出したデータを、S13で確保されたキャッシュメモリ140上の領域に記憶させる(S14)。
コントローラ100の保証コード検査回路112は、キャッシュメモリ140に記憶された保証コード320を検査する(S15)。これにより、ディスクドライブ210から読み出された論理ブロック310の内容に誤りの無いことを確認できる。保証コード320の検査によって誤りが発見された場合、エラー処理が行われる。エラー処理では、例えば、データの再読出しや、データの自動修復、ホスト20へのエラー発生通知等を行うことができる。
ディスクドライブ210から読み出したデータにエラーの無いことを確認すると、コントローラ100は、ホストI/F120を介して、論理ブロック310のデータのみをホスト20に送信する(S15)。即ち、保証コード320は、コントローラ100からホスト20に送信されない。保証コード320は、ストレージシステム10の内部で使用される情報である。
(4)ライト処理
次に、ホスト20から発行されたライト要求を処理する方法について説明する。まず、図5は、ライトデータがキャッシュメモリ140に記憶されている状態を示す。本明細書では、ライトデータを記憶する論理ブロック310及びその保証コード320を有する拡張論理ブロック300を「ライトデータブロック301」と定義する。また、本明細書では、ライトデータブロック301の前後にそれぞれ隣接する拡張論理ブロック300を「隣接ブロック302」と定義する。隣接ブロック302のうち、ライトデータブロック301の先頭側に隣接するものは、先頭側隣接ブロック302Fと呼び、ライトデータブロック301の終端側に隣接するものを終端側隣接ブロック302Bと呼ぶ。
ライトデータのサイズによっては、連続する複数の連続するライトデータブロック301に、ライトデータ及びその保証コードがそれぞれ格納される。連続するライトデータブロック301の前後それぞれに、隣接ブロック302が存在する。一方の隣接ブロック302Fは、連続するライトデータブロック301の最も先頭に位置するライトデータブロック301の一つ前の拡張論理ブロック300である。他方の隣接ブロック302Bは、連続するライトデータブロック301の終端のライトデータブロック301の一つ後ろの拡張論理ブロック300である。前者の隣接ブロック302Fを先頭側隣接ブロックと、後者の隣接ブロック302Bを終端側隣接ブロックと、それぞれ定義する。
このように、ディスクドライブ210への書込みを行う前に、キャッシュメモリ140上には、少なくとも一つ以上のライトデータブロック301と、隣接ブロック302とがそれぞれ読み出されて記憶されている。そして、後述のように、隣接ブロック302のうち余分なデータを破棄して、ライト対象範囲となるデータのサイズを調整した後、ディスクドライブ210への書込みが行われる。
図6は、ライト処理を示すフローチャートである。ホスト20は、書込み先アドレス等を指定してライトコマンドを発行する。ホスト20がストレージシステム10にライトコマンドを発行すると、コントローラ100は、ホストI/F120によって、ライトコマンドを受領する(S21)。
ここで、ホスト20は、512バイト長の論理ブロック310を1単位として、論理ブロックのm倍(mは1以上の整数)分のデータを書き込むことを明示して、ライトコマンドを発行する。ライトコマンドには、ライトコマンドによって書き込まれるデータの先頭LAと、ライトデータのサイズ(論理ブロック何個分のデータであるかを示す論理ブロック数)とが含まれている。
コントローラ100は、ライトコマンドに含まれる書込み先の先頭LAに基づいて、ライトデータを書き込むべきディスクドライブ210を特定する(S22)。また、コントローラ100は、ライトデータを一時的に記憶させるための記憶領域及びこのライトデータについて生成される冗長データを一時的に記憶させるための記憶領域を、キャッシュメモリ140内にそれぞれ確保する(S23)。なお、この際、コントローラ100は、保証コード付加/削除回路111によってライトデータに付加される保証コード320を記憶するための記憶領域も、キャッシュメモリ140内に確保する(S23)。
コントローラ100は、ホストI/F120を介して、データの受信準備が完了した旨をホスト20に通知する(S24)。ホスト20は、ライトコマンドで指定した論理ブロック数分のライトデータを、ホストI/F120に送信する。
コントローラ100は、ホストI/F120を介して、ホスト20からのライトデータを受信する(S25)。なお、コントローラ100は、ライトデータの受信を完了した時点で、ライト要求の処理が完了した旨を、ホスト20に通知することができる。
受信されたライトデータは、キャッシュコントローラ110に転送される。キャッシュコントローラ110内の保証コード付加/削除回路111は、各論理ブロック310毎に、保証コード320(即ち、当該論理ブロックの先頭LA及びLRC)をそれぞれ生成し、各論理ブロック310に保証コード320をそれぞれ設定して、キャッシュメモリ140に記憶させる(S26)。なお、ホスト20から受信したライトデータが論理ブロック1個分のサイズの場合は、この一つの論理ブロック310について、一つの保証コード320が生成される。
コントローラ100は、ライトデータが拡張論理ブロック300の形態でキャッシュメモリ140に記憶されると、即ち、図5に示したライトデータブロック301がキャッシュメモリ140に記憶されると、冗長データを生成する(S27)。
より詳しくは、ライトデータの受信完了をホストI/F120がMPU160に通知すると、MPU160は、ディスクアレイ制御プログラム151を用いて、冗長データ生成回路113を制御する。これにより、冗長データ生成回路113は、キャッシュメモリ140に記憶されたライトデータに対応する冗長データを生成する。生成された冗長データは、S23で確保されたキャッシュメモリ140内の記憶領域に記憶される(S27)。なお、例えば、RAID5等のようなパリティデータを用いる場合の詳細については、別の実施例で説明する。
コントローラ100のディスクI/F130は、MPU160からの指示に従って、キャッシュメモリ140に格納されているライトデータ及び保証コード320、あるいは、冗長データを、S22で特定されたディスクドライブ210に書き込む(S28)。
この際、キャッシュメモリ140上のライトデータは、保証コード320の付加された520バイトの拡張論理ブロック300として構成されている。これに対し、キャッシュメモリ140上のデータの書き込み先であるディスクドライブ210は、512バイトの物理ブロック400で構成されている。
このように、ディスクドライブ210に書き込もうとしているライトデータは、520バイトの拡張論理ブロック300として構成され、書込み先のディスクドライブ210は、512バイト単位でデータを記憶する。従って、拡張論理ブロック300として構成されたライトデータのサイズを物理ブロック400のサイズに適合させる必要がある。本明細書では、このブロックサイズを変換してからディスクドライブ210へデータを書き込む処理を「ブロックサイズ変換を伴うライト処理」と呼ぶ(S28)。
なお、後述のように、ディスクドライブ210にライトデータブロック301のデータを書き込む前に、書き込もうとするライトデータの内容(LRC)及び書込み先(LA)が正しいか否かについて、保証コード検査回路112による検査が行われる。
図7は、図6中のS28に示す「ブロックサイズ変換を伴うライト処理」を示すフローチャートである。このブロックサイズ変換を伴うライト処理(S28)は、図7に示すように、隣接ブロックのリード処理(S31)とディスクへのライト処理(S32)とに大別することができる。
S31,S32の詳細は、それぞれ後述する。先に簡単に説明すると、隣接ブロックのリード処理(S31)では、コントローラ100は、ライトデータブロック301に隣接するブロック302のデータを、書込み先として特定されたディスクドライブ210から読出して、キャッシュメモリ140に記憶させる。図5と共に述べたように、ライトデータブロック301及び隣接ブロック302は、キャッシュメモリ140にそれぞれ記憶される。但し、常に、複数の隣接ブロック302,302Bが読み出されるわけではなく、いずれか一方の隣接ブロック302のみが読み出される場合もあるし、隣接ブロック302F,302Bのいずれも読み出されない場合もある。
ディスクへのライト処理(S32)では、コントローラ100は、ライトデータブロック301及び隣接ブロック302を、書込み先として特定されたディスクドライブ210に書き込む。この書込みの際に、MPU160は保証コード検査回路112を制御し、ライトデータブロック301及び隣接ブロック302の保証コード320をそれぞれ検査させる。
さらに、MPU160は、ブロックサイズ変換回路114を制御することにより、ライトデータブロック301と隣接ブロック302とをマージした結果(ライト対象範囲)が、物理ブロック400のブロックサイズの整数倍となるように、隣接ブロック302のサイズを調整させる。ライトデータブロック301のサイズに変更はない。
図8は、図7中のS31で示す隣接ブロックのリード処理の詳細を示すフローチャートである。まず、コントローラ100は、キャッシュメモリ140に記憶されているライトデータブロック301の先頭側の拡張論理ブロック境界B1が、物理ブロック境界B2と一致するか否かを判定する(S41)。複数のライトデータブロック301が連続する場合、最も先頭のライトデータブロック301の先頭側の境界B1が物理ブロック境界B2に一致するか否かを判定する。
拡張論理ブロック境界B1と物理ブロック境界B2とが一致するか否かは、ホスト20から受信したライトコマンドに基づいて行うことができる。上述のように、ライトコマンドには、ライトデータの先頭アドレスに加えて、ライトデータの総サイズを示す論理ブロック数が含まれている。
論理ブロック310のサイズは512バイトであるから、論理ブロック数が64の倍数であれば、キャッシュメモリ140に格納されたライトデータブロック301の両端の拡張論理ブロック境界B1は、物理ブロック境界B2にそれぞれ一致し、「ブロック境界一致」の状態であると判断できる。
さて、コントローラ100は、ライトデータブロック301の先頭側の拡張論理ブロック境界B1が、物理ブロック境界B2と一致するか否かを判定し(S41)、ブロック境界一致の状態でない場合(S41:NO)、先頭側隣接ブロック302Fをディスクドライブ210から読み出して、キャッシュメモリ140に記憶させる(S42)。この先頭側隣接ブロック302Fの取得には、図4と共に述べたリード処理が用いられる。なお、ライトデータブロック301の先頭側の拡張論理ブロック境界B1が物理ブロック境界B2に一致する場合(S41:YES)、S42はスキップされてS43に移る。即ち、両境界B1,B2が一致する場合(S41:YES)、先頭側隣接ブロック302Fは読み出されない。
次に、コントローラ100は、ライトデータブロック301の終端側の拡張論理ブロック境界B1が、物理ブロック境界B2と一致するか否かを判定する。(S43)。前記同様に、複数のライトデータブロック301が連続する場合、最も終端のライトデータブロック301の終端側の境界B1が物理ブロック境界B2に一致するか否かを判定する。
両境界B1,B2が一致しない場合(S43:NO)、コントローラ100は、ライトデータブロック301の終端側の隣接ブロック302Bを、前記リード処理を用いてディスクドライブ210から読出し、キャッシュメモリ140に記憶させる。(S44)。ライトデータブロック301の終端側の境界B1が物理ブロック境界B2に一致する場合(S43:YES)、S44はスキップされる。終端側の境界B1が物理ブロック境界B2に一致する場合(S43:YES)、終端側隣接ブロック302Bは読み出されない。
なお、ディスクドライブ210から読み出された隣接ブロック302は、キャッシュメモリ140に記憶されるだけであり、隣接ブロック302のデータをホスト20に送信する必要はない。
図9は、図7中のS32で示す「ディスクへのライト処理」の詳細を示すフローチャートである。
コントローラ100は、ライトデータブロック301に隣接する隣接ブロック302が読み出されたか否かを判定する(S51)。隣接ブロック302がディスクドライブ210から読み出されてキャッシュメモリ140に記憶されたか否かの判定(S51)は、先頭側隣接ブロック302F及び終端側隣接ブロック302Bのそれぞれについて、個別に行われる。
隣接ブロック302が、キャッシュメモリ140に記憶されている場合(S51:YES)、コントローラ100は、隣接ブロック302とライトデータブロック301とを、「ライト対象範囲」のデータとする。ライト対象範囲とは、ディスクドライブ210へ書き込まれるデータを意味する。隣接ブロック302が読み出された場合(S51:YES)、ライト対象範囲には、ライトデータブロック301のみならず、ライトデータブロック301以外の他のデータ(隣接ブロック302のデータ)が含まれる。
隣接ブロック302が、キャッシュメモリ140に記憶されていない場合(S51:NO)、コントローラ100は、ライトデータブロック301のみを「ライト対象範囲」とする(S53)。
従って、先頭側隣接ブロック302F及び終端側隣接ブロック302Bの両方がキャッシュメモリ140に記憶されている場合、ディスクドライブ210へ書き込まれるデータ範囲は、ライトデータブロック301と先頭側隣接ブロック302F及び終端側隣接ブロック302Bとなる。先頭側隣接ブロック302F及び終端側隣接ブロック302Bのいずれもキャッシュメモリ140に記憶されていない場合、ディスクドライブ210へ書き込まれるデータ範囲は、ライトデータブロック301のみとなる。先頭側隣接ブロック302Fまたは終端側隣接ブロック302Bのいずれか一方のみがキャッシュメモリ140に記憶されている場合、ディスクドライブ210へ書き込まれるデータ範囲は、ライトデータブロック301と、先頭側隣接ブロック302Fまたは終端側隣接ブロック302Bのいずれか一方となる。
このようにしてライト対象範囲を決定した後、コントローラ100は、保証コード検査回路112を用いて、決定されたライト対象範囲の保証コードを検査する。コントローラ100は、ライト対象範囲として選択されたライトデータブロック301,隣接ブロック302がそれぞれ有する保証コードを、それぞれ検査させる。
検査の結果、もしもエラーが検出された場合は、上述のように、エラー修復等のエラー処理を行うことができる。保証コードを用いた検査方法及びエラー検出時のエラー処理については、本発明の要旨ではなく、公知技術であるから、説明を省略する。
保証コードの検査結果が正常である場合、コントローラ100は、S55〜S59で述べる通り、ブロックサイズ変換回路114を用いて、隣接ブロック302から余分なデータを破棄させる。これにより、コントローラ100は、ライト対象範囲のデータのサイズを、物理ブロック400の整数倍(1以上)に変換させる。
まず、コントローラ100は、ライト対象範囲の先頭の境界B1が物理ブロック境界B2に一致するか否かを判定する(S55)。先頭側の境界B1が物理ブロック境界B2に一致しない場合(S55:NO)、コントローラ100は、先頭側隣接ブロック302Fのうち、物理ブロック境界B2からはみ出した部分のデータを、破棄する(S56)。
同様に、コントローラ100は、ライト対象範囲の終端の境界B1が物理ブロック境界B2に一致するか否かを判定する(S57)。終端側の境界B1が物理ブロック境界B2に一致しない場合(S57:NO)、コントローラ100は、終端側隣接ブロック302Bのうち、物理ブロック境界B2からはみ出した部分のデータを、破棄する(S58)。
このようにして、コントローラ100は、ライト対象範囲の両端を物理ブロック境界B2にそれぞれ一致させた後、このライト対象範囲のデータをディスクI/F130を介して、ディスクドライブ210に書き込ませる(S59)。
図10は、図9の処理を模式的に示す説明図である。図10(a)は、ライトデータブロック301の前後の隣接ブロック302F,302Bがそれぞれキャッシュメモリ140に読み出された場合を示す。
コントローラ100は、先頭側隣接ブロック302Fのうち、物理ブロック境界B2からはみ出した部分DA1のデータを破棄する。これにより、ライト対象範囲の先頭側、つまり、先頭側隣接ブロック302Fの先頭は、物理ブロック境界B2に一致する。
コントローラ100は、終端側隣接ブロック302Bのうち、物理ブロック境界B2からはみ出した部分DA2のデータを破棄する。これにより、ライト対象範囲の終端側、即ち、終端側隣接ブロック302Bの終端は、物理ブロック境界B2に一致する。
破棄されるデータDA1,DA2は、例えば、「破棄データ」と呼ぶこともできる。なお、これら破棄データDA1,DA2を破棄する前に、S54において、コントローラ100は、保証コード320を検査している。従って、破棄される範囲に保証コード320が含まれている場合でも、既に検査は完了しているため、何ら不都合を生じない。
図10(b)に示すように、隣接ブロック302F,302Bから余分なデータDA1,DA2をそれぞれ破棄(切除)することにより、ライト対象範囲の両端は、物理ブロック境界B2にそれぞれ一致する。この場合、ライト対象範囲のデータサイズは、物理ブロック400のサイズの整数倍となっている。
図10(c)に示すように、コントローラ100は、サイズ調整後のライト対象範囲のデータを、ディスクドライブ210に書き込む。ライト対象範囲のデータは、上述のように、ライトデータブロック301と、破棄データDA1,DA2が除かれた隣接ブロック302F,302Bとから構成されており、物理ブロック400のサイズの整数倍のサイズとなっている。従って、コントローラ100は、ライト対象範囲のデータをディスクドライブ210に書き込むことができる。
また、本実施例のコントローラ100は、ライトデータブロック301の両端に隣接するブロック302F,302Bをそれぞれ一つずつ読み出して、ライト対象範囲のサイズを調整する。従って、例えば、拡張論理ブロック300のサイズと物理ブロック400のサイズとの最小公倍数のデータサイズをライト対象範囲とする場合に比較して、ライト対象範囲のサイズを小さくすることができる。この結果、各ブロック300,400の最小公倍数をライト対象範囲の単位として使用する場合に比べて、より効率的にライト処理を行うことができる。
図11は、終端側隣接ブロック302Bのみが読み出されてキャッシュメモリ140に記憶された場合を示す。図11(a)に示すように、終端側隣接ブロック302Bの後側は、物理ブロック境界B2からDA2だけ、外側にはみ出している。この場合、ライト対象範囲の先頭は、ライトデータブロック301の先頭であり、物理ブロック境界B2に一致している。従って、先頭側隣接ブロック302Fは、ディスクドライブ210から読み出されない。
図11(b)に示すように、コントローラ100は、このはみ出した部分DA2のデータを破棄することにより、ライト対象範囲のサイズが物理ブロック400の整数倍となるように調整する。そして、図11(c)に示すように、コントローラ100は、サイズを調整したライト対象範囲のデータを、ディスクドライブ210に書き込む。
図11に示す例とは逆に、ライトデータブロック301の終端が物理ブロック境界B2に一致する場合、先頭側隣接ブロック302Fのみが読み出されてキャッシュメモリ140に記憶される。終端側隣接ブロック302Bは読み出されない。この場合、コントローラ100は、先頭側隣接ブロック302Fのうち、物理ブロック境界B2からはみ出した部分DA1のデータを破棄して、ディスクドライブ210に書き込む。先頭側隣接ブロック302Fのみが読み出される場合の処理例は、図11に示す処理例から容易に理解されるので、その図示を省略する。
図12は、ライトデータブロック301の最先頭及び最終端が、それぞれ物理ブロック境界B2に一致する場合を示す。図12に示す例は、連続する複数のライトデータブロック301の合計サイズが、拡張論理ブロック300のサイズと物理ブロック400のサイズの最小公倍数に等しい場合を示す。
図12(a)に示すように、この場合は、先頭側隣接ブロック302F及び終端側隣接ブロック302Bのいずれも、ディスクドライブ210から読み出されない。従って、図12(b)に示すように、この場合、余分なデータDA1,DA2は存在しないため、これらの余分なデータDA1,DA2の破棄も行われない。そこで、図12(c)に示すように、コントローラ100は、ライトデータブロック301をそのままディスクドライブ210に書き込む。
なお、後述の実施例からも明らかなように、コントローラ100は、ホスト20から受信したライトデータに関する冗長データについても、ライトデータと同様の方法で、ディスクドライブ210に書き込む。つまり、ライトデータと冗長データを特に区別することなく、コントローラ100は、冗長データのブロックサイズを調整してから、ディスクドライブ210に書き込むことができる。この場合の具体的な処理方法は、後述の実施例で説明する。
本実施例は、上述のように、ストレージシステム10内(コントローラ100内)におけるデータ入出力の単位である拡張論理ブロック300のサイズと、ディスクドライブ210内のデータ入出力単位である物理ブロック400のサイズとが異なる場合でも、ライト対象範囲のデータのサイズを、物理ブロック400の整数倍に調整して、ディスクドライブ210に書き込むことができる。
本実施例では、ライトデータブロック301に隣接するブロック302F,302Bを読み出してライトデータブロック301にマージすることにより、ライト対象範囲のデータを生成する。従って、各拡張論理ブロック300に含まれている保証コード320を用いてデータ内容等を検査することができ、検査を完了してからディスクドライブ210に書き込むことができる。これにより、サイズの異なるブロック間でデータを入出力する場合の信頼性を向上させることができる。
本実施例では、ライトデータブロック301の両端がそれぞれ物理ブロック境界B2に一致しない場合でも、ライトデータブロック301の両端に隣接するブロック302F,302Bをそれぞれ一つだけ読み出して、ライト対象範囲のサイズを調整する。従って、拡張論理ブロック300のサイズと物理ブロック400のサイズとの最小公倍数のデータサイズをライト対象範囲とする場合に比較して、ライト対象範囲のサイズを小さくすることができ、より効率的にライト処理を行うことができる。
図13〜図17に基づいて、本発明の第2実施例を説明する。本実施例は、前記第1実施例の変形例に該当する。本実施例では、サイズの異なるブロック間で、冗長データをディスクドライブ210に書き込む方法を説明する。本実施例では、冗長データを用いるRAID構成の一例として、RAID5で構成されたLU220を例に挙げる。これに限らず、例えば、RAID3やRAID6等の他のRAID構成であってもよい。
(1)RAID5によるライト処理
図13は、RAID5で構成されるLU220にライトデータ及び冗長データ(パリティデータ)を書き込む場合の概要を模式的に示す説明図である。図13に示す例では、データD1〜D3の排他的論理和を演算することにより、冗長データとしての「旧パリティ」が算出されている。以下の説明では、冗長データを「パリティ」と略す場合がある。
もしも、ホスト20から発行されたライトコマンドが、全データD1〜D3の更新を命じるものである場合、コントローラ100は、新たに受信する新データ(新D1〜新D3)のみに基づいて、新たなパリティを生成することができる。
これに対し、パリティの生成に関わる各データD1〜D3のうち、一部のデータについてのみホスト20が更新を要求する場合は、旧データの読出し処理と、新パリティの生成処理と、新データ及び新パリティの書込み処理とが行われる。
即ち、コントローラ100は、ホスト20から新データD1を受信すると(S61)、新パリティを算出するために、新データD1によって更新される旧データD1をディスクドライブ210から読み出す(S62)。同様に、コントローラ100は、新パリティを算出するために、旧パリティを別のディスクドライブ210から読み出す(S63)。
そして、コントローラ100は、新データD1と、旧データD1と、旧パリティとを用いて排他的論理和を演算することにより、新パリティを生成する(S64)。新パリティの生成後に、コントローラ100は、新データD1をディスクドライブ210に書込み(S65)、また、新パリティを別のディスクドライブ210に書き込む(S66)。
(2)ブロックサイズ変換を伴うライト処理の一例
図14は、上述したRAID5構成のLU220にライトデータを書き込む処理において、第1実施例で述べた保証コード320の付加及びブロックサイズの調整を行う場合のフローチャートである。なお、説明の便宜上、図14では、一つのフローチャートにまとめて説明する。
コントローラ100は、ホスト20から受信した新データに保証コードを付加して、キャッシュメモリ140に記憶させる(S71)。保証コードの付加は、キャッシュコントローラ110内の保証コード付加/削除回路111によって、各論理ブロック毎にそれぞれ行われる。新データに保証コードが付加されることにより、ライトデータブロック301が生成されることになる。
コントローラ100は、新データに対応する旧データ及び保証コードをディスクドライブ210から読み出す(S72)。即ち、コントローラ100は、旧データ及び保証コードを記憶する複数の物理ブロック400をディスクドライブ210から読出し、この読み出した物理ブロック400のデータのうち、旧データ及び保証コードのみを取り出して、キャッシュメモリ140に記憶させる。
同様に、コントローラ100は、旧パリティ及び保証コードをディスクドライブ210から読み出してキャッシュメモリ140に記憶させる(S73)。コントローラ100は、冗長データ生成回路113を用いて、新データと旧データ及び旧パリティから、新パリティを算出させる(S74)。算出された新パリティは、キャッシュメモリ140に記憶される(S75)。この新パリティにも保証コードが設定されている。
次に、コントローラ100は、新データの書込み先であるディスクドライブ210から、新データに隣接するブロック302を読み出して、キャッシュメモリ140に記憶させる(S76)。なお、第1実施例で述べた通り、常に、隣接ブロック302F,302Bの両方が読み出されるとは限らない。新データの端部が物理ブロック境界B2に一致する場合、その端部に隣接するブロック302は読み出されない。
コントローラ100は、新データを含むライトデータブロック301及び隣接ブロック302に基づいて、ライト対象範囲を決定する(S77)。コントローラ100は、ライト対象範囲に含まれる保証コードを用いて、ライト対象範囲のデータの記憶先や記憶内容を検査する(S78)。
検査の結果が正常である場合、コントローラ100は、ライト対象範囲の両端が、物理ブロック境界B2にそれぞれ一致するように、物理ブロック境界B2からはみ出した部分のデータを破棄することにより、ライト対象範囲のサイズを調整する(S79)。コントローラ100は、物理ブロック400の整数倍のサイズに調整されたライト対象範囲のデータを、ディスクドライブ210に書き込む(S80)。
続いて、コントローラ100は、新パリティについても、新データと同様の処理(S81〜S85)を実行する。即ち、コントローラ100は、新パリティの書込み先ディスクドライブ210から、新パリティに隣接するブロック302を読出す(S81)。コントローラ100は、新パリティ及びその保証コードと、隣接ブロック302のデータとを結合させることにより、ライト対象範囲を決定し(S82)、ライト対象範囲に含まれる保証コードを用いて、ライト対象範囲のデータを検査する(S83)。なお、新パリティ及びその保証コードを含むブロックの最先頭または最終端が、物理ブロック境界B2に一致する場合、その一致する端部に隣接するブロック302は読み出されない。
検査結果が正常な場合、コントローラ100は、ライト対象範囲に含まれる隣接ブロック302から余分なデータを破棄することにより、ライト対象範囲のサイズが物理ブロック400のサイズの整数倍となるように調整する(S84)。そして、コントローラ100は、ライト対象範囲のデータをディスクドライブ210に書き込む(S85)。
図15は、ライト処理を実行する際に、コントローラ100がディスクドライブ210にアクセスする様子を示す模式図である。データを記憶するディスクドライブ210をデータディスクと、パリティを記憶するディスクをパリティディスクと呼ぶ。なお、RAID5等の場合、パリティは特定のディスクドライブにのみ記憶されるのではなく、各ディスクドライブに順番に分散されて記憶されていく。
コントローラ100によるデータディスクへのアクセスを先に説明する。RAID5構成のLU220にライトデータを書き込む場合、コントローラ100は、データディスクから旧データ及び隣接ブロック302をそれぞれ別々のアクセスで読出し(S72,S76)、そして、データディスクに新データ(詳しくは、新データを含むライト対象範囲のデータ)を書き込む(S80)。従って、データディスクに対しては、2回のリードアクセスと1回のライトアクセスとが行われる。
コントローラ100によるパリティディスクへのアクセスに着目すると、コントローラ100は、旧パリティ及び隣接ブロック302をそれぞれ別々のアクセスで読出し(S73,S81)、新パリティをパリティディスクに書き込む(S85)。正確には、コントローラ100は、新パリティを含むライト対象範囲のデータを、パリティディスクに書き込む。従って、パリティディスクに対しても、2回のリードアクセス及び1回のライトアクセスが行われることになる。
図16,図17に基づいて、本発明の第3実施例を説明する。本実施例では、旧データ等をディスクドライブ210から読み出す際に、一緒に隣接ブロック302を読み出すことにより、コントローラ100によるディスクドライブ210へのアクセス回数を低減している。
前記第2実施例では、図15に示すように、データディスク及びパリティディスクの両方についてそれぞれ3回ずつ、合計6回のアクセスを行う必要がある。従って、前記第2実施例では、ストレージシステム10の応答性が低下する可能性がある。
そこで、本実施例では、隣接ブロック302を読み出すタイミングを工夫することにより、リードアクセスの回数を低減する。図16は、本実施例によるブロックサイズ変換を伴うライト処理を示すフローチャートである。
このフローチャートは、図14に示すフローチャートと共通のステップS71,S74,S75,S77〜S80,S82〜S85を備えている。即ち、図16のフローチャートでは、図14中に示すS76及びS81を備えていない。
図16に示すフローチャートでは、コントローラ100は、旧データ及びその保証コードをディスクドライブ210から読み出す際に、旧データ及びその保証コードに隣接するブロック302を一緒に読み出す(S72A)。
旧データ及びその保証コードと、新データ及びその保証コードとは同一サイズであるから、隣接ブロック302は、新データ及びその保証コード(即ち、ライトデータブロック301)に隣接するブロックでもある。
同様に、コントローラ100は、旧パリティ及びその保証コードをディスクドライブ210から読み出す際に、旧パリティ及びその保証コードに隣接するブロック302を一緒に読み出す(S73A)。
この結果、本実施例では、ライトデータ及びパリティに関する隣接ブロック302を別のリードアクセスで読み出す必要がない。従って、図17の模式図に示すように、コントローラ100によるディスクドライブ210へのアクセス回数を合計4回に低減することができる。
従って、本実施例では、アクセス回数を増大させることなく、異なるサイズのブロック間で効率的にデータを入出力させることができ、また、保証コードを用いた信頼性を確保することができる。
図18は、本発明の第4実施例に係るストレージシステム10のブロック図である。本実施例では、プログラムメモリ150A内に、保証コード付加/削除プログラム152と、保証コード検査プログラム153と、冗長データ生成プログラム154及びブロックサイズ変換プログラム155を記憶させている。
保証コード付加/削除プログラム152は、第1実施例で述べた保証コード付加/削除回路111の機能を、MPU160が実現するためのプログラムである。以下同様に、保証コード検査プログラム153は保証コード検査回路112の機能を、冗長データ生成プログラム154は冗長データ生成回路113の機能を、ブロックサイズ変換プログラム155はブロックサイズ変換回路114の機能を、それぞれMPU160によって実現させるためのプログラムである。
このように、MPU160に保証コードやブロックサイズの変換等を行わせることもできる。
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
例えば、冗長データを利用するRAID構成としてRAID5を例に挙げたが、これに限らず、RAID6等の他のRAID構成にも、本発明を適用することができる。
また、保証コードの付加やプログラムサイズの変換等の各機能を、キャッシュコントローラ110内のハードウェア回路、または、コンピュータプログラムのいずれかで全て実現する場合を説明した。しかし、本発明はこれに限らず、一部の機能をハードウェア回路で実現し、残りの機能をコンピュータプログラムで実現してもよい。
さらに、前記実施例では、物理ブロックサイズが固定化されたATAディスクを例に挙げて説明したが、本発明は、ATAディスクに限定されるものではなく、その他の種類のディスクドライブにも適用することができる。また、ディスクドライブの取り扱うデータの単位とコントローラの取り扱うデータの単位とが異なっていれば、本発明を適用することができる。
本発明の全体概念を示す説明図である。 本発明の実施例によるストレージシステムの全体構成を示すブロック図である。 キャッシュメモリに記憶された拡張論理ブロックとディスクドライブ内の物理ブロックとの関係を模式的に示す説明図である。 リード処理を示すフローチャートである。 ライトデータブロックと該ライトデータに隣接するブロックとを結合させて、ライト対象範囲のデータを得る様子を示す説明図である。 ライト処理の全体を示すフローチャートである。 図6中のS28の詳細を示すフローチャートである。 図7中のS31の詳細を示すフローチャートである。 図7中のS32の詳細を示すフローチャートである。 ライト対象範囲の両端から余分なデータをそれぞれ破棄して、物理ブロックのサイズに調整する様子を示す説明図である。 ライト対象範囲のいずれか一方の端部から余分なデータを破棄して、物理ブロックのサイズに調整する様子を示す説明図である。 ライト対象範囲の両端が物理ブロック間の境界にそれぞれ一致する場合の書込み方法を示す説明図である。 第2実施例によるライト処理の全体概要を示す説明図である。 ブロックサイズ変換を伴うライト処理を示すフローチャートである。 ディスクドライブへのアクセス状況を模式的に示す説明図である。 第3実施例によるライト処理を示すフローチャートである。 ディスクドライブへのアクセス状況を模式的に示す説明図である。 第4実施例によるストレージシステムの構成を示すブロック図である。
符号の説明
1…記憶制御装置、1A…ライト要求受信部、1B…保証コード設定部、1C…ライト対象範囲生成部、1D…保証コード検査部、1E…ブロックサイズ調整部、1F…ライト対象範囲書込み部、2…記憶装置、3…拡張論理ブロック、3B…終端側隣接ブロック、3F…先頭側隣接ブロック、3W…ライトデータブロック、4…物理ブロック、5…保証コード、10…ストレージシステム、20…ホスト、100…コントローラ(ストレージコントローラ)、110…キャッシュコントローラ、111…保証コード付加/削除回路、112…保証コード検査回路、113…冗長データ生成回路、114…ブロックサイズ変換回路、120…ホスト通信部、130…ディスク通信部、140…キャッシュメモリ、150,150A…プログラムメモリ、151…ディスクアレイ制御プログラム、152…保証コード付加/削除プログラム、153…保証コード検査プログラム、154…冗長データ生成プログラム、155…ブロックサイズ変換プログラム、160…マイクロプロセッサ、170…バスブリッジ、200…記憶部、210…ディスクドライブ、300…拡張論理ブロック、301…ライトデータブロック、302…隣接ブロック、302B…終端側隣接ブロック、302F…先頭側隣接ブロック、310…論理ブロック、320…保証コード、400…物理ブロック、B1…拡張論理ブロック境界、B2…物理ブロック境界、DA1,DA2…破棄データ

Claims (10)

  1. 上位装置と記憶装置との間のデータ入出力を制御するための記憶制御装置であって、
    前記記憶制御装置複数の第2ブロックが設けられた前記記憶装置に対し、前記第2ブロックのサイズのデータと、前記第2ブロックのサイズのデータ毎に設定される保証コードとからなる第1ブロックの単位でデータ入出力処理を行うものであり
    1以上の前記第1ブロックのデータを含むライトデータの一端または他端のいずれか一方が、前記記憶装置内の第2ブロック間の境界と不一致の場合は、前記不一致の端部に連続する他の第1ブロックのデータを前記記憶装置より取得し、この他の第1ブロックのデータと前記ライトデータとを結合させて、結合データを生成する結合データ生成部と、
    前記結合データにおける前記ライトデータに含まれる各々の前記第1ブロックのデータ及び前記他の第1ブロックのデータに含まれる各々の前記保証コードに基づいて、前記ライトデータ及び前記他の第1ブロックのデータのそれぞれの内容が正常であるか否かを検査する検査部と、
    前記検査部により正常であるとの検査結果が得られた場合に、前記ライトデータに結合された前記他の第1ブロックのデータの端部が前記記憶装置内の第2ブロック間の境界に一致するように、前記他の第1ブロックのデータの一部を破棄することにより、前記結合データのサイズを前記第2ブロックのサイズの整数倍に調整するデータサイズ調整部と、
    前記サイズの調整された結合データを前記記憶装置に書き込ませる書込み部と、
    を備えた記憶制御装置。
  2. 上位装置と記憶装置との間のデータ入出力を制御するための記憶制御装置であって、
    記憶制御装置内でのデータ入出力処理に使用される第1ブロックのサイズと、前記記憶装置内に設けられている複数の第2ブロックのサイズとはそれぞれ異なっており、
    前記上位装置の要求に応じて、前記上位装置からライトデータを受信するライトデータ受信部と、
    前記記憶装置からデータを読み出す読出し部と、
    前記受信されたライトデータについて、前記第2ブロックのサイズのデータ毎に、データ内容を保証するための保証コードをそれぞれ設定することにより、前記ライトデータを、前記第2ブロックのサイズのデータと前記保証コードとからなる前記第1ブロックのデータを1以上含むライトデータに変換する保証コード設定部と、
    記変換されたライトデータを記憶するキャッシュメモリと、
    前記キャッシュメモリに記憶された前記変換されたライトデータの一端または他端のいずれか一方が、前記記憶装置内の第2ブロック間の境界と不一致の場合は、前記不一致の端部に連続する他のデータであって前記第2ブロックのサイズのデータと前記保証コードを含む他の第1ブロックのデータを前記読出し部を介して前記記憶装置から取得し、この取得された他の第1ブロックのデータと前記変換されたライトデータとを結合させて、結合データを生成する結合データ生成部と、
    前記結合データに含まれる前記変換されたライトデータにおける各々の前記第1ブロックのデータに含まれる各々の記保証コード及び前記他の第1ブロックのデータに含まれる前記保証コードに基づいて、前記結合データにおける前記変換されたライトデータ及び前記他の第1ブロックのデータの内容が正常であるか否かを検査する検査部と、
    前記検査部により正常であるとの検査結果が得られた場合に、前記変換されたライトデータに結合された前記他の第1ブロックのデータの端部が前記記憶装置内の第2ブロック間の境界に一致するように、前記他の第1ブロックのデータの一部を破棄することにより、前記結合データのサイズを前記第2ブロックのサイズの整数倍に調整するデータサイズ調整部と、
    前記サイズの調整された結合データを前記記憶装置に書き込ませる書込み部と、
    を備えた記憶制御装置。
  3. 前記記憶装置によって、冗長データを用いる冗長記憶構造が提供されており、
    さらに、前記受信されたライトデータに関して、前記第1ブロック単位の冗長データを生成する冗長データ生成部を備え、
    前記結合データ生成部と、前記検査部と、前記データサイズ調整部及び前記書込み部は、前記冗長データを前記ライトデータと同様に処理するものである請求項2に記載の記憶制御装置。
  4. 前記記憶装置は、冗長データを用いる冗長記憶構造を提供するものであり、
    さらに、前記受信されたライトデータに関して、前記第1ブロック単位の冗長データを生成する冗長データ生成部とを備え、
    前記結合データ生成部と、前記検査部と、前記データサイズ調整部及び前記書込み部は、前記冗長データを、前記ライトデータと同様に処理し、
    さらに、前記結合データ生成部が前記結合データを生成するよりも前に、前記ライトデータにより更新される前記第1ブロック単位の旧データ及びこの旧データに連続する他の第1ブロックのデータを、前記記憶装置からそれぞれ予め読み出して前記キャッシュメモリに記憶させる旧データ読出し部と、
    前記結合データ生成部が前記新たな冗長データに関する結合データを生成するよりも前に、前記新たな冗長データにより更新される前記第1ブロック単位の旧冗長データ及びこの旧冗長データに連続する他の第1ブロックのデータを、前記記憶装置からそれぞれ予め読み出して前記キャッシュメモリに記憶させる旧冗長データ読出し部と、
    を備えた請求項2に記載の記憶制御装置。
  5. さらに、前記キャッシュメモリへのデータ入出力を制御するキャッシュコントローラを備えており、
    前記保証コード設定部と、前記検査部と、前記データサイズ調整部とは、前記キャッシュコントローラ内にそれぞれ設けられている請求項2に記載の記憶制御装置。
  6. さらに、データ入出力処理を制御するマイクロプロセッサを備えており、
    前記保証コード設定部と、前記検査部と、前記結合データ生成部及び前記データサイズ調整部とは、前記マイクロプロセッサによってそれぞれ実現される請求項2に記載の記憶制御装置。
  7. 前記保証コードには、前記第2サイズ毎のデータの誤りを検出するための誤り検出符号が含まれている請求項2に記載の記憶制御装置。
  8. 前記保証コードには、前記第2サイズ毎のデータの書込み先アドレスの誤りを検出するためのアドレス情報が含まれている請求項2に記載の記憶制御装置。
  9. 前記保証コードには、前記第2サイズ毎のデータの誤りを検出するための誤り検出符号と、前記第2サイズ毎のデータの書込み先アドレスの誤りを検出するためのアドレス情報とが含まれている請求項2に記載の記憶制御装置。
  10. 上位装置と記憶装置との間のデータ入出力を行う記憶制御装置を制御するための方法であって、
    前記記憶制御装置内でのデータ入出力処理に使用される第1ブロックのサイズと、前記記憶装置内に設けられる複数の第2ブロックのサイズとはそれぞれ異なっており、
    前記上位装置からライトデータを受信するライトデータ受信ステップと、
    受信した前記ライトデータについて、前記第2ブロックのサイズのデータ毎に、データ内容を保証するための保証コードをそれぞれ設定することにより、前記ライトデータを、前記第2ブロックのサイズのデータと前記保証コードとからなる第1ブロックのデータを1以上含むライトデータに変換するライトデータ変換ステップと、
    前記変換したライトデータをキャッシュメモリに記憶させるライトデータキャッシュステップと、
    前記キャッシュメモリに記憶された前記変換されたライトデータの一端または他端のいずれか一方が、前記記憶装置内の第2ブロック間の境界と不一致であるか否かをそれぞれ判定し、不一致の場合は、この不一致の端部に連続して隣接する他のデータであって前記第2ブロックのサイズのデータと前記保証コードを含む他の第1ブロックのデータを前記記憶装置から取得する隣接ブロック取得ステップと、
    前記取得された他の第1ブロックのデータと前記変換されたライトデータとを結合させて、結合データを生成する結合データ生成ステップと、
    前記結合データにおける前記変換されたライトデータに含まれる各々の前記第1ブロックのデータに含まれる各々の前記保証コード及び前記他の第1ブロックのデータに含まれる前記保証コードに基づいて、前記結合データにおける前記変換されたライトデータ及び前記他の第1ブロックのデータの内容が正常であるか否かを検査するライトデータ検査ステップと、
    前記ライトデータ検査ステップにて正常であるとの検査結果が得られた場合に、前記変換されたライトデータに結合された前記他の第1ブロックのデータの端部が前記記憶装置内の第2ブロック間の境界に一致するように、前記他の第1ブロックのデータの一部を破棄することにより、前記結合データのサイズを前記第2ブロックのサイズの整数倍に調整するデータサイズ調整ステップと、
    前記サイズの調整された結合データを前記記憶装置に書き込ませる書込みステップと、
    を実行させる記憶制御装置の制御方法。
JP2006087513A 2006-03-28 2006-03-28 記憶制御装置及び記憶制御装置の制御方法 Expired - Fee Related JP5089901B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006087513A JP5089901B2 (ja) 2006-03-28 2006-03-28 記憶制御装置及び記憶制御装置の制御方法
US11/448,950 US7472250B2 (en) 2006-03-28 2006-06-06 Storage control device, and control method for storage control device
EP06255219A EP1840719A3 (en) 2006-03-28 2006-10-11 Storage control device, and control method for storage control device
US12/324,277 US7865664B2 (en) 2006-03-28 2008-11-26 Storage control device, and control method for storage control device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006087513A JP5089901B2 (ja) 2006-03-28 2006-03-28 記憶制御装置及び記憶制御装置の制御方法

Publications (3)

Publication Number Publication Date
JP2007264917A JP2007264917A (ja) 2007-10-11
JP2007264917A5 JP2007264917A5 (ja) 2009-02-12
JP5089901B2 true JP5089901B2 (ja) 2012-12-05

Family

ID=38179550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006087513A Expired - Fee Related JP5089901B2 (ja) 2006-03-28 2006-03-28 記憶制御装置及び記憶制御装置の制御方法

Country Status (3)

Country Link
US (2) US7472250B2 (ja)
EP (1) EP1840719A3 (ja)
JP (1) JP5089901B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006009746B3 (de) * 2006-03-02 2007-04-26 Infineon Technologies Ag Speicherzellenanordnung
US9164941B2 (en) 2007-10-24 2015-10-20 Hitachi, Ltd. Storage system group
US8285953B2 (en) 2007-10-24 2012-10-09 Hitachi, Ltd. Storage system group
JP5275691B2 (ja) * 2007-10-24 2013-08-28 株式会社日立製作所 ストレージシステム
JP4505520B2 (ja) * 2008-06-27 2010-07-21 富士通株式会社 ディスクアレイ装置並びにその制御装置,制御方法および制御プログラム
US8407400B2 (en) * 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
WO2011001468A1 (ja) * 2009-07-01 2011-01-06 富士通株式会社 コンテンツの処理方法、記録装置、プログラム、及び記録媒体
US8255661B2 (en) * 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
TW201124836A (en) * 2010-01-06 2011-07-16 Promise Technology Inc Raid system
CN102141896A (zh) * 2010-01-28 2011-08-03 乔鼎资讯股份有限公司 磁盘阵列系统
US8667218B2 (en) * 2010-03-08 2014-03-04 Hitachi, Ltd. Storage apparatus comprising RAID groups of RAID 1 series and control method of writing to RAID group of RAID 1 series
US9213645B2 (en) * 2011-12-29 2015-12-15 Sandisk Technologies Inc. Command aware partial page programming
JP5638022B2 (ja) * 2012-03-30 2014-12-10 株式会社東芝 ディスクアレイ装置
US9043572B2 (en) * 2012-07-16 2015-05-26 International Business Machines Corporation Automatically preventing large block writes from starving small block writes in a storage device
US9183217B2 (en) * 2012-10-18 2015-11-10 Hitachi, Ltd. Method for decompressing data in storage system for write requests that cross compressed data boundaries
JP6112193B2 (ja) * 2013-03-22 2017-04-12 富士通株式会社 アクセス制御プログラム、ディスク装置及びアクセス制御方法
JP6164003B2 (ja) * 2013-09-25 2017-07-19 富士通株式会社 メモリ制御装置、情報処理装置、及び情報処理装置の制御方法
JP2016028319A (ja) * 2014-07-08 2016-02-25 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
KR102699949B1 (ko) * 2019-08-07 2024-08-28 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 동작 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809273A (en) 1987-01-29 1989-02-28 International Business Machines Corporation Device for verifying operation of a checking code generator
JP3264465B2 (ja) 1993-06-30 2002-03-11 株式会社日立製作所 記憶システム
JP3604466B2 (ja) 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
US5706298A (en) 1995-11-09 1998-01-06 Emc Corporation Method and apparatus for calculating the longitudinal redundancy check in a mixed stream channel
US6324604B1 (en) 1998-07-07 2001-11-27 Emc Corporation Magnetic disk storage for storing data in disk block size from fixed length of host block in non-integer multiple of the disk block size
AU5331599A (en) * 1998-08-31 2000-03-21 Unisys Corporation Improved method for providing variable sector-format operation to a computer system
JP2000347815A (ja) * 1999-06-07 2000-12-15 Hitachi Ltd ディスクアレイシステム
US6571362B1 (en) 2000-06-26 2003-05-27 Storage Technology Corporation Method and system of reformatting data blocks for storage as larger size data blocks
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US6751757B2 (en) 2000-12-07 2004-06-15 3Ware Disk drive data protection using clusters containing error detection sectors
US7167929B2 (en) 2003-01-13 2007-01-23 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays, and a storage-shelf-interface tunneling method and system
US7634614B2 (en) 2003-01-13 2009-12-15 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves and that support virtual disk formatting
US8095704B2 (en) 2003-01-13 2012-01-10 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays
US7353321B2 (en) 2003-01-13 2008-04-01 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays
US7240242B2 (en) * 2004-08-05 2007-07-03 International Business Machines Corporation Apparatus and method to convert data payloads from a first sector format to a second sector format
JP4634157B2 (ja) 2005-01-17 2011-02-16 株式会社日立製作所 ストレージシステム

Also Published As

Publication number Publication date
EP1840719A2 (en) 2007-10-03
US7472250B2 (en) 2008-12-30
EP1840719A3 (en) 2009-09-30
US7865664B2 (en) 2011-01-04
JP2007264917A (ja) 2007-10-11
US20070233944A1 (en) 2007-10-04
US20090150756A1 (en) 2009-06-11

Similar Documents

Publication Publication Date Title
JP5089901B2 (ja) 記憶制御装置及び記憶制御装置の制御方法
JP4634157B2 (ja) ストレージシステム
KR20060133892A (ko) 메모리 미러링 장치 및 방법
JP2006139478A (ja) ディスクアレイシステム
US20080155369A1 (en) Information processing apparatus, history management method
JP2007122476A (ja) データストレージシステム、データストレージ制御装置及びそのディスクのライト抜け診断方法
JP2007207062A (ja) データ信頼性向上方法及びその方法を用いた情報処理装置
US20100293418A1 (en) Memory device, data transfer control device, data transfer method, and computer program product
JP5565340B2 (ja) 試験方法,試験プログラム,及び試験装置
US9658922B2 (en) Computer-readable recording medium having stored therein program for write inspection, information processing device, and method for write inspection
WO2018113322A1 (zh) 数据读取方法及设备
US20030163757A1 (en) RAID subsystem and data input/output and recovery method in disk error mode
JP2006072435A (ja) ストレージシステムおよびデータ記録方法
US8041850B2 (en) Storage apparatus and data integrity assurance method
JP4394533B2 (ja) ディスクアレイシステム
JP6052288B2 (ja) ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム
JP2007048017A (ja) ストレージシステム及び記憶制御方法
US20120011317A1 (en) Disk array apparatus and disk array control method
JP5213061B2 (ja) ミラーリング制御装置、ミラーリング制御回路、ミラーリング制御方法およびそのプログラム
JP5218147B2 (ja) ストレージ制御装置,ストレージ制御方法およびストレージ制御プログラム
US20100325373A1 (en) Duplexing Apparatus and Duplexing Control Method
JP4848533B2 (ja) ディスクアレイ装置、ディスクアレイ制御方法およびプログラム
JP2005346212A (ja) ディスクアレイコントローラおよび情報処理装置
JP4580743B2 (ja) ディスクアレイコントローラ、コンピュータシステム、およびディスクアレイの整合性検査エラーログ記録方法
JP2000172570A5 (ja) 情報記録装置並びにこの装置におけるデータの入出力方法及び再構築方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120326

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

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

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

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5089901

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees