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

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

Info

Publication number
JP2009129201A
JP2009129201A JP2007303672A JP2007303672A JP2009129201A JP 2009129201 A JP2009129201 A JP 2009129201A JP 2007303672 A JP2007303672 A JP 2007303672A JP 2007303672 A JP2007303672 A JP 2007303672A JP 2009129201 A JP2009129201 A JP 2009129201A
Authority
JP
Japan
Prior art keywords
data
memory
storage device
track
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007303672A
Other languages
English (en)
Other versions
JP4977583B2 (ja
Inventor
Eiju Katsuragi
栄寿 葛城
Mikio Fukuoka
幹夫 福岡
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 JP2007303672A priority Critical patent/JP4977583B2/ja
Priority to US12/068,515 priority patent/US7966471B2/en
Publication of JP2009129201A publication Critical patent/JP2009129201A/ja
Application granted granted Critical
Publication of JP4977583B2 publication Critical patent/JP4977583B2/ja
Active 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/0656Data buffering 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
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • 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/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】本発明の記憶制御装置は、ホストの管理単位であるトラックサイズと記憶デバイスのブロックサイズとが整合しない場合でも、データを入出力させることができる。
【解決手段】バウンダリ補正部4Bは、トラック5の境界と記憶デバイス2内のブロック6の境界とが一致するように、ギャップサイズδに対応するギャップデータをバッファメモリ4A上のデータに付加する。ホスト3から受信された各論理ブロック6には、それぞれ保証コード7が付加されて、キャッシュメモリ1Cに記憶される。116個の拡張論理ブロック毎に、記憶デバイス2上にギャップδを設けることにより、トラック5の先頭ブロックの開始位置と記憶デバイス2の論理ブロック6の開始位置とを一致させる。
【選択図】図1

Description

本発明は、記憶制御装置及び記憶制御装置の制御方法に関する。
記憶制御装置は、例えば、メインフレーム等のホストコンピュータ(以下、「ホスト」)に接続される。記憶制御装置は、RAID(Redundant Array of Inexpensive Disks)に基づく記憶領域をホストに提供する。
記憶制御装置では、例えば、RAID1〜RAID6として知られているように、データに冗長性を付加することもできる。記憶制御装置は、データにパリティデータを付加したり、あるいは、データのコピーを別のディスクドライブにも書き込むことにより、ディスクドライブの障害発生時に備えている。
さらに、保証コードを使用する記憶制御装置も知られている(特許文献1,特許文献2,特許文献3)。一つの従来技術では、保証コードとして、ホストコンピュータがアクセス先として指定する論理ブロックの論理アドレス(以下、「LA(Logical Address)」)、及び、論理ブロックのデータについて排他的論理和演算を実施して求められるLRC(Longitudinal Redundancy Check)を、論理ブロックにそれぞれ付加し、この保証コードと論理ブロックとをディスクドライブに保存させる。
LAは、論理ブロックのデータが書き込まれる記憶領域のアドレスの誤りを検出するために用いられる。LRCは、論理ブロックのデータの誤りを検出するための誤り検出符号として用いられる。
論理ブロックに前記保証コードを付加すると、記憶制御装置の内部で取り扱われるデータの管理単位と、ディスクドライブ内のデータ管理単位とが異なる可能性がある。例えば、ブロック長(セクタ長)が論理ブロックのサイズに固定されているディスクドライブでは、論理ブロック単位でデータを記憶する。従って、論理ブロックに保証コードを付加してブロックサイズを大きくすると、ディスクドライブのフォーマットによっては、保証コード付きの論理ブロックをそのままでは記憶させることができない場合がある。
そこで、この問題を解決するために、第4の文献には、論理ブロックのサイズと保証コード付き論理ブロックのサイズとの最小公倍数を、ディスクドライブにデータを入出力する際の値として固定する技術が提案されている(特許文献4)。
特開2000−347815号公報 米国特許第5,819,054号公報 米国特許第5,706,298号公報 特開2006−195851号公報
前記第4文献に記載されているように、論理ブロックのサイズと保証コード付き論理ブロックのサイズとの最小公倍数を、記憶制御装置がディスクドライブにデータを書き込む場合の基本単位として設定することにより、セクタ長が固定されているディスクドライブに、保証コードの付加された論理ブロックを書き込むことができる。以下、保証コードの付加によってサイズが大きくなる論理ブロックを、拡張論理ブロックと称する。
例えば、論理ブロックのサイズを512バイト、保証コードのサイズを8バイトとすると、拡張論理ブロックのサイズは520バイトとなる。512バイトと520バイトの最小公倍数は、33280バイトとなる。ホストコンピュータから受信した64個の論理ブロックについて、各論理ブロック毎にそれぞれ8バイトの保証コードを付与することにより、全体のデータサイズは、33280バイトとなる。この値は、65個分の論理ブロックのサイズに等しい(33280=512×65)。
この場合、64個の拡張論理ブロックから構成されるデータの両端と、65個の論理ブロックの両端とは一致する。従って、64個の拡張論理ブロックを、65個の論理ブロックとして、ディスクドライブに記憶させることができる。論理ブロックのサイズと拡張論理ブロックのサイズとの最小公倍数のサイズでデータを読み書きする方法を、本明細書では、便宜上、例えば、最小公倍数単位のデータアクセスと呼ぶ。
記憶装置に記憶されている旧データを読出し、この旧データと新データとをマージした後で、記憶装置に書き戻す処理を、リードモディファイライト処理と呼ぶ。
ところで、ホストコンピュータがメインフレームの場合、メインフレームは、トラックと呼ばれる単位でデータを管理する。一つのトラックは、例えば、96個または116個の論理ブロックから構成される。
更新対象の論理ブロックが、トラックの先頭ブロックから64番目の論理ブロックまでのトラック前半領域に存在する場合は、最小公倍数単位のデータアクセスを用いて、リードモディファイライト処理を行うことができる。しかし、更新対象の論理ブロックが、65番目以降のトラック後半領域に存在する場合、最小公倍数単位のデータアクセスを用いると、2つのトラックに跨った処理が行われる。この場合、65番目から128番目までの論理ブロックに対応するデータを記憶装置から読み出す必要がある。しかし、117番目から128番目までの論理ブロックは、別のトラックを構成している。
このように、更新対象のブロック位置がトラック後半領域に存在する場合、隣接する複数のトラックに跨った処理を行う必要がある。更新対象のブロックを含むトラックに隣接する他のトラックについて、リード処理またはライト処理が行われている場合、更新に必要なデータを直ちに読み出すことができず、待ち時間を生じる可能性がある。待ち時間が生じると、記憶制御装置の処理性能が低下する。
さらに、隣接する他のトラックのデータを受け入れるためのキャッシュ領域を確保しなければならないため、約2倍のキャッシュメモリが必要になる。この結果、キャッシュのヒット率が低下し、記憶制御装置の処理性能が低下する。
本発明は、上記の問題点に鑑みてなされたもので、その目的は、ホストコンピュータ及び記憶デバイスで使用される第1ブロックのサイズと、記憶制御装置内で使用される第2ブロックのサイズとが異なる場合でも、性能低下を抑制することができるようにした記憶制御装置及び記憶制御装置の制御方法を提供することにある。本発明の他の目的は、拡張された複数の論理ブロックから構成されるトラックの境界と、記憶装置内の物理ブロックの境界とを一致させることができるようにした記憶制御装置及び記憶制御装置の制御情報を提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明の第1観点に従う記憶制御装置は、ホストコンピュータとデータを記憶する記憶装置との間のデータ入出力を制御する記憶制御装置であって、ホストコンピュータとの間でデータを送受信する第1通信制御部であって、第1サイズを有する第1ブロック単位で、ホストコンピュータとデータを送受信する第1通信制御部と、ホストコンピュータから受信したデータについて、第1ブロック毎に所定の第1データをそれぞれ付加することにより、第1サイズよりも大きい第2サイズを有する第2ブロックを生成する第1データ付加部と、第1ブロック単位でデータを記憶する記憶装置との間でデータを送受信する第2通信制御部と、第1通信制御部と第2通信制御部との間に設けられる第1メモリであって、第2ブロック単位でデータを管理する第1メモリと、第1メモリと記憶装置との間に設けられる第2メモリと、ホストコンピュータによるデータの管理単位であるトラックの境界と記憶装置内の第1ブロックの境界とを一致させる境界補正部であって、(1)第1メモリから第2メモリに転送されるデータに、所定サイズの第2データを付加することにより、トラックの境界と記憶装置内の第1ブロックの境界とを一致させ、(2)第2メモリから第1メモリに転送されるデータから第2データを取り除くことにより、トラックの境界と第1メモリ内の第2ブロックの境界とを一致させる、境界補正部と、を備える。
第2観点では、第1観点において、境界補正部は、第1メモリから第2メモリに転送されるデータを構成する各第2ブロックのうち先頭の第2ブロックの開始位置と、記憶装置内の第1ブロックの開始位置とを一致させる。
第3観点では、第1観点または第2観点のいずれかにおいて、境界補正部は、第1メモリから第2メモリに転送されるデータに第2データを付加することにより、このデータを第1サイズの整数倍のデータにする。
第4観点では、第1観点〜第3観点のいずれかにおいて、第2データは、ビット0から構成されるパディングデータ、または、不定データのいずれかである。
第5観点では、第1観点〜第4観点のいずれかにおいて、境界補正部は、ホストコンピュータにより更新される第2ブロックの、トラック上の位置に応じて、記憶装置から第2メモリに読み出すデータの範囲を決定する。
第5観点では、第1観点〜第4観点のいずれかにおいて、境界補正部は、ホストコンピュータにより更新されるブロックの、トラックの上の位置が、(C1)トラックの先頭から、第1サイズと第2サイズとの最小公倍数として求められるデータサイズまでのトラック前半領域よりも以降の、トラック後半領域にのみ存在する第1ケースと、(C2)トラック前半領域及びトラック後半領域の両方にそれぞれ存在する第2ケースと、(C3)トラック前半領域にのみ存在する第3ケースとの、いずれのケースに該当するかを判別し、判別されたケースに応じて、第2メモリと記憶装置との間のデータ転送サイズを決定する。
第7観点では、第1観点〜第6観点のいずれかにおいて、境界補正部及び第2メモリは、第2通信制御部にそれぞれ設けられている。
第8観点では、第1観点〜第6観点のいずれかにおいて、境界補正部及び第2メモリは、記憶装置にそれぞれ設けられている。
第9観点に従う記憶制御装置の制御方法は、ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置を制御するための方法であって、ホストコンピュータから、第1サイズを有する第1ブロック単位で、更新対象データを受信するステップと、更新対象データの第1ブロック毎に所定の第1データをそれぞれ付加し、第1サイズよりも大きい第2サイズを有する第2ブロックを生成するステップと、第2ブロック単位のデータに変換された更新対象データを第1メモリに記憶させるステップと、記憶装置から更新対象データを含む所定範囲の所定データを読出して、第2メモリに記憶させるステップと、第2メモリに記憶された所定データから第2データを取り除いて、所定データを第2サイズの整数倍のデータに変換し、この変換されたデータを第1メモリに転送させるステップと、第1メモリに転送された所定データと第1メモリに記憶された更新対象データとを第1メモリ上でマージさせ、マージ済データを生成するステップと、マージ済データを第2メモリに転送させるステップと、第2メモリ上において、マージ済データの末尾に所定サイズの第2データを付加することにより、マージ済データを第1サイズの整数倍のデータに変換させるステップと、変換されたマージ済データを記憶装置内に書き込むステップと、をそれぞれ実行する。
第10観点では、第9観点において、更新対象データのトラック上の位置が、(C1)トラックの先頭から、第1サイズと第2サイズとの最小公倍数として求められるデータサイズまでのトラック前半領域よりも以降の、トラック後半領域にのみ存在する第1ケースにおいては、トラック後半領域のデータを所定範囲のデータとして記憶装置から読出し、(C2)トラック前半領域及びトラック後半領域の両方にそれぞれ存在する第2ケースにおいては、トラックの全体を所定範囲のデータとして記憶装置から読出し、(C3)前半領域にのみ存在する第3ケースにおいては、トラック前半領域のデータを所定範囲のデータとして記憶装置から読み出す。
本発明の各部または各ステップの少なくとも一部は、コンピュータプログラムとして構成される場合がある。このコンピュータプログラムは、記録媒体に固定して配布したり、ネットワークを介して配信することができる。
以下、図面に基づいて、本発明の実施の形態を説明する。まず最初に、本発明の概念を説明し、その次に、具体的な実施例について説明する。図1は、本発明の概念を模式的に示す説明図である。図1及び図1に関する以下の記載は、本発明の理解及び実施に必要な程度で、本発明の概要を示しており、本発明の範囲を図1に記載された範囲に限定するものではない。
図1(a)は、本発明に従う記憶制御装置を含むストレージシステムの全体構成を示している。このストレージシステムは、例えば、記憶制御装置1と、記憶デバイス2と、ホスト3とを備える。
記憶デバイス2は、例えば、SATA(Serial AT Attachment)ディスクやSAS(Serial Attached SCSI)ディスクのような、セクタ長が論理ブロックのサイズに固定されたハードディスクデバイスとして構成される。なお、以下の説明では、記憶デバイス内の物理ブロックを、便宜上、論理ブロックと呼ぶ。
しかし、本発明は、SATAディスクやSASディスクに限らず、セクタ長が論理ブロックのサイズに固定された記憶デバイスであれば、例えば、フラッシュメモリデバイスのような他の種類の記憶デバイスも使用可能である。さらに、後述の実施例から明らかとなるように、セクタ長を拡張論理ブロックのサイズに一致させることのできる、FCディスクを用いることもできる。
ホスト3は、メインフレームコンピュータとして構成される。ホスト3と記憶制御装置1とは、例えば、FICON(Fibre Connection:登録商標)、ESCON(Enterprise System Connection:登録商標)、ACONARC(Advanced Connection Architecture:登録商標)、FIBARC(Fibre Connection Architecture:登録商標)等の通信プロトコルに従って、データ通信を行う。ホスト3は、例えば、96個または116個の論理ブロック6から構成されるトラック5の単位で、データを管理することができる。
記憶制御装置1は、ホスト3と記憶デバイス2との間に設けられており、ホスト3と記憶デバイス2との間のデータ転送を制御する。記憶制御装置1は、例えば、ホスト通信制御部1Aと、デバイス通信制御部1Bと、キャッシュメモリ1Cと、保証コード制御部1Dと、境界制御部4とを備えて構成される。
ホスト通信制御部1Aは、「第1通信制御部」に該当する。ホスト通信制御部1Aは、ホスト3からコマンドやデータを受信し、コマンドの処理結果等をホスト3に送信するものである。
デバイス通信制御部1Bは、「第2通信制御部」に該当する。デバイス通信制御部1Bは、記憶デバイス2にデータを書き込んだり、記憶デバイス2からデータを読み出したりするものである。
キャッシュメモリ1Cは、「第1メモリ」に該当し、ホスト3から受信したデータや、記憶デバイス2から読み出されたデータが記憶される。
境界制御部4は、キャッシュメモリ1Cとデバイス通信制御部1Bとの間に設けられている。境界制御部4は、例えば、バッファメモリ4Aとバウンダリ補正部4Bとを備えている。
保証コード制御部1Dは、「第1データ付加部」に該当する。保証コード制御部1Dは、各論理ブロック6毎にそれぞれ保証コード7を付加する。保証コード7は、「第1データ」に該当する。保証コード7は、例えば、論理アドレス(LA)やLRCから構成することができる。
バッファメモリ4Aは、「第2メモリ」に該当する。バッファメモリ4Aは、キャッシュメモリ1Cとデバイス通信制御部1Bとの間に設けられている。キャッシュメモリ1Cと記憶デバイス2とは、バッファメモリ4Aを介してデータを送受する。
バウンダリ補正部4Bは、「境界補正部」に該当する。バウンダリ補正部4Bは、図1(b)で後述するように、トラック5の境界と記憶デバイス2内のブロック6の境界とが一致するように、ギャップサイズδに対応するギャップデータを付加する。ギャップデータは、「第2データ」に該当する。
図1(b)は、トラック5の境界と記憶デバイス2内のブロック6の境界とを一致させるための処理方法を示す。ホスト3は、トラック単位でデータを管理しており、各トラック5は、例えば、96個または116個の論理ブロック6から構成される。以下、一つのトラック5が116個の論理ブロック6から構成される場合を例に挙げて説明する。
論理ブロック6のサイズDL6は、例えば、512バイトである。この論理ブロック6は「第1ブロック」に該当する。保証コード制御部1Dによって、論理ブロック6に保証コード7が付加される。保証コード7のサイズDL7は、例えば、8バイトである。
512バイトの論理ブロック6に8バイトの保証コード7を付加することにより、拡張論理ブロック8が生成される。拡張論理ブロック8は「第2ブロック」に該当する。拡張論理ブロック8のサイズDL8は、520バイトとなる(DL8=DL6+DL7=512+8)。
ホスト3から受信された各論理ブロック6には、それぞれ保証コード7が付加されて、キャッシュメモリ1Cに記憶される。図1(b)の上側は、キャッシュメモリ1C内の様子を示し、図1(b)の下側は、記憶デバイス2内の様子を示す。
キャッシュメモリ1Cに記憶される拡張論理ブロック8のサイズと、記憶デバイス2に記憶される論理ブロック6のサイズとは異なるため、拡張論理ブロック8の境界B2と論理ブロックの境界B1とは一致しない。
しかし、キャッシュメモリ1Cに記憶されるデータのサイズと記憶デバイス2に記憶されるデータのサイズとが、論理ブロック6のサイズDL6と拡張論理ブロック8のサイズDL8との最小公倍数の値DL5A(LCM)になった場合、両者の境界B3とB2とは一致する。具体的には、64個の拡張論理ブロック8からなる一方のデータサイズと65個の論理ブロック6からなる他方のデータサイズとは一致する。従って、一方のデータサイズの両端の境界と他方のデータサイズの両端の境界とは一致する。
図1(b)の上部左側に示すように、ある一つのトラック5は、0番目から115番目までの合計116個の拡張論理ブロック8によって構成される。太い黒枠で示すように、ホスト3が、114番目のブロック8について更新要求を発行した場合を考える。
記憶制御装置1は、更新要求を処理するために、旧データを記憶デバイス2から読み出して、旧データに新データをマージする必要がある。そのために、もしも、64番目の拡張論理ブロック8を先頭にして64個の拡張論理ブロック8に対応するデータを記憶デバイス2から読み出すと、隣のトラック(116番目以降の拡張論理ブロック8から構成されるトラック)に対応するブロック6まで読み出すことになる。
つまり、65番目の論理ブロック6から129番目の論理ブロック6までの合計65個の論理ブロック6を記憶デバイス2から読み出すことになる。しかし、この65個の論理ブロック6の中には、隣のトラック5に関するデータのみを記憶する論理ブロックが含まれている。従って、もしも、ホスト3が隣のトラック5にアクセスしている場合、そのアクセスが終了するまで、114番目の拡張論理ブロック8に関する更新要求を処理できないことになる。
そこで、本実施形態では、116個の拡張論理ブロック毎に、記憶デバイス2上にギャップδを設けることにより、トラック5の先頭ブロックの開始位置と記憶デバイス2の論理ブロック6の開始位置とを一致させる。即ち、本実施形態では、各トラック毎に、そのトラックの終端にサイズδ分のギャップデータを付加することにより、各トラックの先頭位置を論理ブロック6の境界B1に一致させる。
上述のように、本実施形態では、記憶デバイス2上において、前のトラック5の終端B3と隣のトラック5の始端B3との間に、所定サイズ(この場合は、96バイト)のギャップδが形成される。
記憶制御装置1は、65番目の論理ブロック6から117番目の論理ブロック6までの合計53個の論理ブロック6のデータを記憶デバイス2から読み出して、バッファメモリ4Aに記憶させる。記憶デバイス2からバッファメモリ4Aに転送されるデータには、上述したギャップデータが含まれている。
バウンダリ補正部4Bは、バッファメモリ4Aに記憶されたデータからギャップデータを除いた部分だけを、キャッシュメモリ1Cに転送させる。ギャップデータを取り除くことにより、そのデータは、拡張論理ブロック8のサイズDL8の整数倍のサイズを有するデータとなる。つまり、64番目の拡張論理ブロック8から115番目の拡張論理ブロック8までのデータが、キャッシュメモリ1Cに記憶される。
上述の通り、バッファメモリ4Aからキャッシュメモリ1Cに、ギャップデータは転送されないため、記憶デバイス2上のギャップδにどのようなデータが記憶されていても、コマンド処理に影響は全く無い。
記憶制御装置1は、バッファメモリ4Aからキャッシュメモリ1Cに転送された、64番目から115番目までの拡張論理ブロック8に関する旧データと、ホスト3から受信した114番目の拡張論理ブロック8に関する新データとを、キャッシュメモリ1C上でマージする。
マージ済のデータは、キャッシュメモリ1Cからバッファメモリ4Aに転送される。バウンダリ補正部4Bは、バッファメモリ4A上において、マージ済データの終端にギャップデータを付加する。これにより、マージ済データは、論理ブロック6のサイズDL6の整数倍のサイズを有するデータとなる。ギャップデータの付加されたマージ済データは、65番目から117番目までの論理ブロック6に記憶される。
以上の説明は、ホスト3によって更新される拡張論理ブロック8の位置が、トラック5の後半領域に存在する場合の説明である。本実施形態では、更新されるブロックの位置によって、バッファメモリ4Aとキャッシュメモリ1Cとの間で転送されるデータのサイズを制御する。
トラック5は、前半領域DL5Aと後半領域DL5Bとに大別できる。前半領域DL5Aは「トラック前半領域」に、後半領域DL5Bは「トラック後半領域」に、それぞれ該当する。
例えば、前半領域DL5Aは、トラック5の先頭から最小公倍数単位でのデータアクセスが可能なサイズの領域として定義可能である。後半領域DL5Bは、前半領域DL5Aの終端からトラック5の終端までの領域として定義することができる。
ホスト3による更新対象のブロックが前半領域DL5Aに位置する場合は、最小公倍数(L.C.M.)単位でのデータアクセスを行うことができるため、65個の論理ブロック6を記憶デバイス2から読み出せばよい。前半領域DL5Aの両端は、記憶デバイス2の論理ブロック6の境界に一致するため、ギャップデータを付加する必要は無い。
これに対し、ホスト3による更新対象のブロックが後半領域DL5Bに位置する場合、最小公倍数単位でのデータアクセスを行うことができない。保証コード7の付加された後のトラックサイズDL5は、論理ブロック6のサイズと拡張論理ブロック8のサイズとの最小公倍数の値の整数倍ではないためである。従って、後半領域DL5Bに位置するブロックを更新する場合は、上述の通り、後半領域DL5Bに属する拡張論理ブロック8の末尾にギャップデータを付加し、記憶デバイス2に書き込む。
ホスト3による更新対象のブロックが前半領域DL5A及び後半領域DL5Bのそれぞれに位置する場合、ギャップデータを付加することにより、トラック単位でリードモディファイライト処理を行うことができる。
このように構成される本実施形態によれば、ブロックサイズが512バイトに固定された記憶デバイス2に、保証コード7の付加された拡張論理ブロック8を記憶させることができる。
さらに、本実施形態では、論理ブロック6のサイズと拡張論理ブロック8のサイズとの最小公倍数が、ホスト3の管理単位であるトラックサイズと一致しない場合、更新対象のブロックを有するトラックに対応するデータのみでライト処理を行うことができ、隣接する複数のトラックに跨ったライト処理を行う必要がない。従って、本実施形態では、隣接トラックに関するコマンド処理が完了するまで待機する必要はない。さらに、本実施形態では、キャッシュメモリ1Cの使用量が増大するのを防止し、キャッシュヒット率の低下を抑制することができる。待ち時間の解消及びキャッシュヒット率の低下防止により、記憶制御装置1の処理性能が低下するのを防止することができる。以下、本実施形態を詳細に説明する。
図2は、本実施例に係る記憶制御装置10を含むストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、少なくとも一つの記憶制御装置10と、一つまたは複数のホスト20と、少なくとも一つの管理端末30とを含んで構成することができる。
先に図1で述べた実施形態との対応関係を説明する。記憶制御装置10は図1中の記憶制御装置1に、記憶デバイス210は図1中の記憶デバイス2に、ホスト20は図1中のホスト3に、チャネルアダプタ110は図1中のホスト通信制御部1Aに、ディスクアダプタ120は図1中のデバイス通信制御部1Bに、キャッシュメモリ130は図1中のキャッシュメモリ1Cに、それぞれ対応する。
図3に示す保証コード回路112Aは図1中の保証コード制御部1Dに、図3に示すDMA回路122は図1中の境界制御部4に、図3に示すバッファメモリ122Aは図1中のバッファメモリ4Aに、それぞれ対応する。図1中のバウンダリ補正部4Bは、DMA回路122内のプロセッサが、DMA回路122内のメモリに記憶されたマイクロプログラムを実行することにより、実現される。バウンダリ補正の方法については、図を改めて後述する。
先に、ホスト20及び管理端末30について説明し、次に記憶制御装置10について説明する。ホスト20は、例えば、メインフレームコンピュータとして構成され、通信ネットワークCN1を介して記憶制御装置10に接続されている。通信ネットワークCN1は、例えば、FC−SAN(Fibre Channel-Storage Area Network)のような通信ネットワークとして構成することができる。
ホスト20は、例えば、96個または116個の論理ブロックから構成されるトラックを、データを管理するための単位として使用する。なお、論理ブロックのサイズと拡張論理ブロックのサイズとの最小公倍数の整数倍ではないサイズでデータを管理するコンピュータであれば、本発明を適用可能である。ホスト20は、記憶制御装置10にリードコマンドやライトコマンドを発行し、その処理結果を記憶制御装置10から受領する。
管理端末30は、記憶制御装置10内のサービスプロセッサ160と通信ネットワークCN2を介して接続される。通信ネットワークCN3は、例えば、LAN(Local Area Network)のような通信ネットワークとして構成される。管理端末30は、サービスプロセッサ(以下、SVP)160を介して、記憶制御装置10内の各種情報を収集する。管理端末30は、SVP160を介して、記憶制御装置10内の各種設定を指示することができる。
記憶制御装置10の構成を説明する。記憶制御装置10は、コントローラ100と、記憶デバイス搭載部200とに大別することができる。コントローラ100は、例えば、少なくとも一つ以上のチャネルアダプタ(以下、CHA)110と、少なくとも一つ以上のディスクアダプタ(以下、DKA)120と、少なくとも一つ以上のキャッシュメモリ130と、少なくとも一つ以上の共有メモリ140と、接続部(図中「SW」)150と、SVP160とを備えて構成される。なお、複数のコントローラ100をスイッチを介して連結する構成でもよい。例えば、複数のコントローラ100からクラスタを構成することもできる。
CHA110は、ホスト20との間のデータ通信を制御するためのもので、例えば、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。各CHA110は、少なくとも一つ以上の通信ポートを備えている。
DKA120は、各記憶デバイス210との間のデータ通信を制御するためのもので、CHA110と同様に、マイクロプロセッサやローカルメモリ等を備えたコンピュータ装置として構成される。
各DKA120と各記憶デバイス210とは、例えば、ファイバチャネルプロトコルに従う通信経路CN2を介して接続されている。各DKA120と各記憶デバイス210とは、ブロック単位のデータ転送を行う。
コントローラ100が各記憶デバイス210にアクセスするための経路は、冗長化されている。いずれか一方のDKA120や通信経路CN2に障害が発生した場合でも、コントローラ100は、他方のDKA120や通信経路CN2を用いて、記憶デバイス210にアクセス可能である。同様に、ホスト20とコントローラ100との間の経路も冗長化することができる。CHA110及びDKA120の構成は、図3で後述する。
CHA110及びDKA120の動作を簡単に説明する。CHA110は、ホスト20から発行されたリードコマンドを受信すると、このリードコマンドを共有メモリ140に記憶させる。DKA120は、共有メモリ140を随時参照しており、未処理のリードコマンドを発見すると、記憶デバイス210からデータを読み出して、キャッシュメモリ130に記憶させる。CHA110は、キャッシュメモリ130に移されたデータを読み出し、ホスト20に送信する。
一方、CHA110は、ホスト20から発行されたライトコマンドを受信すると、このライトコマンドを共有メモリ140に記憶させる。また、CHA110は、受信したライトデータをキャッシュメモリ130に記憶させる。CHA110は、キャッシュメモリ130にライトデータを記憶させた後、ホスト20に書込み完了を報告する。DKA120は、共有メモリ140に記憶されたライトコマンドに従って、キャッシュメモリ130に記憶されたデータを読出し、所定の記憶デバイス210に記憶させる。
キャッシュメモリ130は、例えば、ホスト20から受信したユーザデータ等を記憶するものである。キャッシュメモリ130は、例えば、揮発性メモリまたは不揮発性メモリから構成される。共有メモリ140は、例えば、不揮発メモリから構成される。共有メモリ140には、後述する各種テーブルTや管理情報等が記憶される。
共有メモリ140及びキャッシュメモリ130は、同一のメモリ基板上に混在して設けることができる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
接続部150は、各CHA110と、各DKA120と、キャッシュメモリ130及び共有メモリ140をそれぞれ接続させる。これにより、全てのCHA110,DKA120は、キャッシュメモリ130及び共有メモリ140にそれぞれアクセス可能である。接続部150は、例えばクロスバスイッチ等として構成することができる。
SVP160は、LAN等の内部ネットワークCN4を介して、各CHA110及び各DKA120とそれぞれ接続されている。また、SVP160は、通信ネットワークCN3を介して、管理端末30に接続される。SVP160は、記憶制御装置10内部の各種状態を収集し、管理端末30に提供する。なお、SVP160は、CHA110またはDKA120のいずれか一方にのみ接続されてもよい。SVP160は、共有メモリ140を介して、各種のステータス情報を収集可能だからである。
コントローラ100の構成は、上述した構成に限定されない。例えば、一つまたは複数の制御基板上に、ホスト20との間のデータ通信を行う機能と、記憶デバイス210との間のデータ通信を行う機能と、データを一時的に保存する機能と、各種テーブル類を書換可能に保存する機能とを、それぞれ設ける構成でもよい。
記憶デバイス搭載部200の構成について説明する。記憶デバイス搭載部200は、複数の記憶デバイス210を備えている。各記憶デバイス210は、例えば、ハードディスクデバイスとして構成される。ハードディスクデバイスに限らず、フラッシュメモリデバイス、光磁気記憶デバイス、ホログラフィックメモリデバイス等を用いることができる場合もある。
RAID構成等によっても相違するが、例えば、2個1組や4個1組等の所定数の記憶デバイス210によって、パリティグループ220が構成される。パリティグループ220は、パリティグループ220内の各記憶デバイス210がそれぞれ有する物理的記憶領域を仮想化したものである。
従って、パリティグループ220は、仮想化された物理的記憶デバイス(VDEV)である。パリティグループ220の有する物理的記憶領域には、論理デバイス(LDEV)230を一つまたは複数設定することができる。論理デバイス230は、LUN(Logical Unit Number )に対応付けられて、ホスト20に提供される。
本実施例では、記憶デバイス210として、ハードディスクデバイスを例に挙げて説明する。しかし、上述のように、本発明は、ハードディスクデバイス以外の記憶デバイスでも適用可能である。また、理解に資するために、フローチャート中では、記憶デバイスを「ディスク」と表現する。
図3は、CHA110及びDKA120の構成を示すブロック図である。CHA110は、例えば、プロトコルチップ111と、DMA回路112と、マイクロプロセッサ113とを備えている。プロトコルチップ111は、ホスト20との通信を行うための回路である。マイクロプロセッサ113は、CHA110の全体動作を制御する。
DMA回路112は、プロトコルチップ111とキャッシュメモリ130との間のデータ転送をDMA(Direct Memory Access)方式で行うための回路である。DMA回路112は、保証コード回路112Aを備える。保証コード回路112Aは、ホスト20から受信した論理ブロックに保証コードを設定して拡張論理ブロックを生成する。さらに、保証コード回路112Aは、キャッシュメモリ130から読み込まれた拡張論理ブロックから保証コードを除去して、論理ブロックに戻す。
DKA120は、CHA110と同様に、例えば、プロトコルチップ121と、DMA回路112とマイクロプロセッサ123を備える。さらに、DKA120は、パリティ生成回路124も備えている。
プロトコルチップ121は、各記憶デバイス210と通信するための回路である。マイクロプロセッサ123は、DKA120の全体動作を制御する。パリティ生成回路124は、キャッシュメモリ130に記憶されたデータに基づいて所定の論理演算を行うことにより、パリティデータを生成する回路である。
DMA回路122は、記憶デバイス210とキャッシュメモリ130との間のデータ転送を、DMA方式で行うための回路である。DMA回路122は、バッファメモリ(以下、バッファとも呼ぶ)122Aを備えており、このバッファメモリ122Aを介してDMA転送を実行する。即ち、キャッシュメモリ130と記憶デバイス210とは、バッファメモリ122Aを介してデータを送受する。後述のように、バッファメモリ122A上において、データのバウンダリが調整される。
図4は、キャッシュメモリ130の管理方法を模式的に示す説明図である。図4の上側に示すように、ホスト20から記憶制御装置10に向けて送信されるデータは、一つまたは複数のスロットに分割することができる。
ホスト20から受信したデータを所定のブロック数で分割したものを、スロット300と呼ぶ。メインフレームの場合、トラックという、メインフレーム独自の管理単位が存在し、トラックは、96個または116個の論理ブロック301から構成される。一つの論理ブロック301のサイズは、例えば512バイトである。
メインフレームの場合、スロットサイズをトラックサイズに一致させる。メインフレームの場合、トラック番号を指定してコマンドを発行するため、スロットサイズをトラックサイズに一致させるほうが、処理し易いためである。従って、本実施例において、図4に示すスロットは、トラックと考えて差し支えない。
キャッシュメモリ130は、複数のセグメント131から構成される。一つのセグメント131のサイズは、例えば、64KBである。ホスト20からのデータは、スロット単位で割り当てられるセグメント131に、記憶される。
スロット管理テーブルT10は、スロット300とセグメント131との対応関係等を管理する(以下、スロット管理テーブルT10をSLCBとも呼ぶ)。スロット管理テーブルT10は、例えば、スロット番号と、VDEV番号と、セグメントアドレスと、ダーティビットマップと、スロットステータスとを対応付けて管理する。
スロット番号とは、対象となるスロット300を特定するための識別情報である。VDEV番号とは、対象のスロット300に対応付けられるVDEV220を特定するための識別情報である。セグメントアドレスとは、その特定されたスロットに割り当てられるセグメントを識別するための情報である。即ち、セグメントアドレスとは、そのスロットのデータの格納先アドレスを示す。スロットにセグメントが割り当てられていない場合、セグメントアドレスの値には”0”が設定される。
ダーティビットマップとは、そのスロット300内の更新位置を特定するための更新位置管理情報である。スロットを構成する各論理ブロック毎にそれぞれ1ビットが割り当てられる。更新された論理ブロックには”1”が設定され、更新されない論理ブロックには”0”が設定される。従って、ダーティビットマップを参照することにより、そのスロットのどの論理ブロックが更新対象の論理ブロックであるかを知ることができる。
スロットステータスとは、そのスロットのステータスを示す情報である。ステータスとしては、ダーティ状態、クリーン状態、フリー状態を挙げることができる。ダーティ状態とは、ダーティビットマップに一つ以上”1”が設定されている状態を示す。即ち、ダーティ状態とは、更新対象の論理ブロックが含まれているスロットを示す。クリーン状態とは、スロット内の更新対象データが記憶デバイス210に書き込まれて、デステージ処理が完了した状態を示す。フリー状態とは、そのスロットに割り当てられたセグメントを解放して、他のスロットに割当て可能な状態を示す。
スロット管理テーブルT10を用いることにより、ホスト20から受信したデータがキャッシュメモリ130のどの領域に記憶されているか、更新データの有無、更新データの位置等を容易に管理できる。
図5は、デバイスID−VDEV対応関係管理テーブルT20と、VDEV管理テーブルT30とをそれぞれ示す説明図である。これら各テーブルT20,T30は、共有メモリ140に記憶される。CHA110,DKA120は、各テーブルT20,T30の少なくとも一部を、CHA110,DKA120内のメモリにコピーして使用することができる。
デバイスID−VDEV対応関係管理テーブルT20は、論理デバイス230と仮想的な中間デバイスVDEV220との対応関係を管理するテーブルである。このテーブルT20は、デバイスID_C21と、VDEV番号C22とを対応付けて管理する。デバイスID_C21は、論理デバイス230を識別するための情報である。VDEV番号C22は、VDEV220を識別する情報である。
VDEV管理テーブルT30は、各VDEVの構成を管理するテーブルである。VDEV管理テーブルT30は、例えば、VDEV番号C31と、スロットサイズC32と、RAIDレベルC33と、データドライブ数C34と、パリティサイクル内スロット数C34と、ディスクタイプC36とを対応付けて管理する。
VDEV番号C31とは、各VDEV220を識別情報である。スロットサイズC32とは、そのVDEVに対応付けられるスロットを構成する論理ブロックの数を示す。RAIDレベルC33とは、RAID1〜RAID6のような、RAIDの種類を示す。データドライブ数C34とは、データを記憶する記憶デバイスの数を示す。
パリティサイクル内スロット数C34とは、一つのパリティサイクルに含まれるスロットの数を示す。ディスクタイプC36とは、そのVDEV220を構成する記憶デバイス210の種類を示す。
図6は、スロット300と記憶デバイス210とのマッピング状態を模式的に示す説明図である。図6(a)はRAID5の場合を、図6(b)はRAID1の場合をそれぞれ示す。
図6(a)は、3個のデータディスク(#0,#1,#2)と1個のパリティディスク(#3)とから、3D+1PのRAID5を構成する場合を示す。データディスク(#0)にはスロット#0〜スロット#7が、データディスク(#1)にはスロット#8〜スロット#15が、データディスク(#2)にはスロット#16〜スロット#23が、右側のパリティディスク(#3)にはパリティ#0〜#7が、それぞれ配置される。即ち、各データディスクには、それぞれ連続する8個のスロットが配置される。
パリティが8スロット分(#0〜#7)のサイズを、パリティサイクルと呼ぶ。図示するパリティサイクルの次のパリティサイクルでは、ディスク(#3)の左隣のディスク(#2)にパリティが記憶される。さらに次のパリティサイクルでは、ディスク(#1)にパリティが記憶される。このように、パリティデータを記憶するディスクは、パリティサイクル毎に移動する。図6(a)からわかるように、一つのパリティサイクルに含まれるスロットの数(テーブルT30内のC35)は、データディスクの数に8を乗ずることにより求められる。
図6(b)は、RAID1の場合を示す。RAID1では、正ディスク及び副ディスクの両方に、それぞれ同一のデータが記憶される。RAID1の場合、パリティサイクルに含まれるスロットの数は、8となる。
上述の通り、スロットと記憶デバイスとのマッピング状態は、RAIDレベル(C33)及びデータドライブ数(C34)とから求めることができる。従って、ホスト20から受信したデータの格納先を、上記マッピング状態に基づいて算出できる。
図7は、論理ブロック及び拡張論理ブロックの関係を示す説明図である。図7(a)に示すように、論理ブロック301は、512バイトのサイズを有する。ホスト20及び記憶デバイス210は、論理ブロック301を最小管理単位として使用する。
図7(b)に示すように、CHA110は、ホスト20から受信したデータについて、各論理ブロック301毎に、それぞれ8バイトの保証コード310を付加する。保証コード310には、例えば、LA及びLRCが含まれる。512バイトの論理ブロック301に8バイトの保証コード310を付加することにより、拡張論理ブロック320が生成される。拡張論理ブロック320は、キャッシュメモリ130に記憶される。CHA110からホスト20にデータを送信する場合、拡張論理ブロック320から保証コード310が取り除かれ、論理ブロック301としてホスト20に送信される。
図7(c)に示すように、FCディスクのように、520バイト単位のフォーマットに設定可能な記憶デバイス210の場合、拡張論理ブロック320をそのまま記憶させることができる。
図8は、SASディスクやSATAディスクのように、セクタ長が512バイトに固定されるディスクに、拡張論理ブロック320のデータを記憶させる様子を模式的に示す説明図である。
図8(a)に示すように、ホスト20から受信したデータは、各論理ブロック301毎に保証コード310が付加され、拡張論理ブロック320が形成される。拡張論理ブロックの形式に変換されたデータは、キャッシュメモリ130に記憶される。
図8(b)に示すように、SASディスクやSATAディスクのような記憶デバイス210は、512バイト単位でデータを読み書きする。従って、520バイトの拡張論理ブロック320を、そのまま記憶デバイスに書き込むことはできない。
そこで、論理ブロック301のサイズ(512バイト)と拡張論理ブロック320のサイズ(520バイト)との最小公倍数(33280バイト)を、記憶デバイス210へのデータ入出力サイズとする。64個の拡張論理ブロック320の合計サイズ(64×520=33280)は、65個の論理ブロック301の合計サイズ(65×512=33280)に一致する。従って、64個の拡張論理ブロック320を一塊りとして、記憶デバイス210に書き込んだり、記憶デバイス210から読み出すことができる。
以上を前提として、最小公倍数単位でのデータアクセスを利用したリードモディファイライト処理を説明する。図8(c)に示すように、ホスト20から更新データの入った論理ブロック(NEW)を受信すると、図8(d)に示すように、CHA110は、更新データの論理ブロック301に保証コード310を付加して、拡張論理ブロック320を生成する。以下、更新対象のブロックを更新ブロックと呼ぶ場合がある。
図8(e)に示すように、DKA120は、記憶デバイス210から旧データ(OLD)を読出して、キャッシュメモリ130に記憶させる。上述の通り、65個の論理ブロックからなるデータは、64個の拡張論理ブロックからなるデータに等しい。従って、DKA120は、記憶デバイス210から連続する65個の論理ブロック301を読み出すことにより、拡張論理ブロック64個分のデータを得ることができる。
図8(f)に示すように、キャッシュメモリ130上において、更新対象の拡張論理ブロック320に新データが配置される。その後、図8(g)に示すように、新データの格納された64個の拡張論理ブロック320は、65個の論理ブロック301として記憶デバイス210に書き込まれる。
RAID1の場合、旧データの書き込まれている論理ブロック320は、新データが記憶されている論理ブロック320に単純に置き換えられる。RAID5等のようにパリティを使用する場合、旧データと新データ及び旧パリティから新パリティを生成する。パリティは、データと同様に、64個の拡張論理ブロック単位で記憶デバイス210に書き込まれる。
図9は、ホスト20の基本的管理単位であるトラックのサイズと、論理ブロックサイズと拡張論理ブロックサイズとの最小公倍数とが整合しない場合を示す説明図である。ホスト20は、論理ブロック301単位でデータを更新することができるが、ホスト20上でデータを管理する基本単位は、トラックである。一つのトラックは、96個または116個の論理ブロック301から構成される。トラックが116個の論理ブロックから構成されており、114番目のブロックが更新される場合を例に挙げて説明する。
図9(a)に示すように、キャッシュメモリ130には、拡張論理ブロック320の形式でデータが記憶される。ブロック数は116個のままで変化はしないが、保証コード310が付加されるため、データサイズは大きくなる。
リードモディファイライト処理を行うためには、更新対象ブロックの旧データをキャッシュメモリ130に読み出す必要がある。最小公倍数単位でのデータアクセスを利用して、旧データを含む65個の論理ブロック301を記憶デバイス210から読み出す場合を考える。
図9(b)に示すように、旧データを読み出すために、65番目から129番目までの論理ブロック301を記憶デバイス210から読み出すことになる。しかし、117番目から129番目の論理ブロック301は、トラック#1に対応している。即ち、更新対象の論理ブロック301(#114)の存在するトラック#0と、このトラック#0に隣接するトラック#1との境界は、記憶デバイス210内の論理ブロック301の境界と一致していない。
従って、最小公倍数単位でのデータアクセスを利用して、トラック#0の後半領域(64番目〜115番目までの拡張論理ブロック320)に存在するデータを、記憶デバイス210から読み出そうとすると、隣接する2つのトラック#0,#1に跨った処理を行うことになる。
図10は、本実施例による記憶デバイス210へのアクセス方法を示す。本実施例では、論理ブロック116個毎に、記憶デバイス210上に所定サイズのギャップδを設けることにより、各トラックの先頭ブロックの開始位置と、記憶デバイス210内の論理ブロックの開始位置とを一致させる。図10に示す例では、ギャップδのサイズは、96バイトとなる。
図11〜図13を参照して、本実施例によるリードモディファイライト処理の様子を説明する。以下、RAID1の場合を主に説明する。
図11(1)に示すように、トラック#0の114番目の拡張論理ブロック320を更新する場合、後半領域(BAS2)のデータを記憶デバイス210から読み出して、バッファメモリ122Aに記憶させる。図1(1)中、斜線で示すデータの末尾には、サイズδのギャップデータ340が格納されている。
図11(2)に示すように、DKA120は、バッファメモリ122Aに記憶されたデータのうち、更新対象データに対応する旧データとギャップデータ340とを除いた部分のデータのみを、キャッシュメモリ130に転送する。図11(2)の(b)において、バッファメモリ122Aからキャッシュメモリ130に転送されない範囲は、点線で示されている。
図12(3)に示すように、キャッシュメモリ130上において、更新対象データ(#114の拡張論理ブロックのデータ)と、記憶デバイス210から読み出されたデータとがマージされる。
図12(4)に示すように、マージ後のデータは、キャッシュメモリ130からバッファメモリ122Aに転送される。
図13(5)に示すように、バッファメモリ122A上において、マージ後のデータの終端に、ギャップδ分のデータ340が付加される。つまり、マージ後のデータの境界(図中右端の境界)が、論理ブロック301の終了位置に一致するように、ギャップデータ340が付加される。
図13(6)に示すように、バッファメモリ122Aから記憶デバイス210に、ギャップデータ340の付加されたデータが転送され、記憶デバイス210の各論理ブロック301(#65〜#117)に書き込まれる。
以上述べたように、本実施例では、トラックの終端が記憶デバイス210内の論理ブロック301の境界と一致するように、バッファメモリ122A上でギャップデータ340を付加する。
記憶デバイス210からデータを読み出す場合、図11(1)で述べたように、ギャップデータ340もバッファメモリ122Aに転送される。しかし、図11(2)で述べたように、ギャップデータ340は、バッファメモリ122A上に留まり、キャッシュメモリ130には転送されない。ギャップデータ340は、キャッシュメモリ130に転送されないため、ホスト20によって利用されることもない。従って、ギャップデータ340の値は、全て”0”としてもよいし、特に値を定めなくてもよい。
図14〜図18に基づいて、本実施例の動作を説明する。図14は、ライトコマンドの処理を示すフローチャートである。この処理は、CHA110によって実行される。
CHA110は、ホスト20からライトコマンドを受信すると(S10)、書込み開始アドレスをVDEV番号とスロット番号の組合せに変換する(S11)。ライトコマンドは、論理デバイスID、書込み開始アドレス、書込みサイズを指定している。従って、CHA110は、指定されるデバイスIDに基づいて、デバイスID−VDEV対応関係管理テーブルT20を参照することにより、書込先のVDEV番号を特定する。さらに、CHA110は、特定されたVDEV番号に基づいて、VDEV管理テーブルT30を参照することにより、書込み先のスロット番号を検出することができる。
CHA110は、転送終了スロット番号を算出する(S12)。転送終了スロット番号とは、ライトデータの最後のスロット番号である。CHA110は、書込み開始アドレスに書込みサイズを加算した値を、スロットサイズで除算することにより、そのライトデータの最後のスロットの番号を求めることができる。
CHA110は、書込み対象のスロットに対応するSLCBが既に存在するか否かを判定する(S13)。即ち、CHA110は、書込み対象スロットに、キャッシュメモリ130のセグメント131が割り当てられているか否かを判定する(S13)。
書込み対象スロットにSLCBが未だ割り当てられていない場合(S13:NO)、CHA110は、その書込み対象スロットにSLCBを一つ割当てる(S14)。CHA110は、その割り当てたSLCBに、空いているセグメント131のアドレスを設定する(S15)。これにより、書込み対象スロットとセグメントとが対応付けられ、書込み対象スロットのデータをキャッシュメモリ130に記憶させるための準備が整う。
書込み対象スロットにSLCBが既に割り当てられている場合(S13:YES)、S14及びS15はスキップされ、S16に移る。
CHA110は、ライトデータの受信に先立って、書込み対象スロットのスロットステータスをダーティ状態に設定する(S16)。次に、CHA110は、ホスト20から受信したライトデータ(書込み対象スロットのデータ)を、書込み対象スロットに割り当てられているセグメントアドレスに転送する(S17)。これにより、ホスト20から受信したライトデータは、キャッシュメモリ130内の所定セグメントに記憶される。
なお、ホスト20から受信したライトデータをキャッシュメモリ130内の所定セグメントに転送して記憶させる際に、そのライトデータには各論理ブロック301毎にそれぞれ保証コード310が付加される。従って、キャッシュメモリ130には、拡張論理ブロック320の形式でライトデータが記憶される。
CHA110は、ライトデータによって更新された論理ブロック301について、ダーティビットマップをオン状態(”1”)に設定する(S18)。これにより、その書込み対象スロット内のどの論理ブロック301に、更新データが格納されているかを管理することができる。
CHA110は、本処理の対象とするスロットの番号が、S12で求めた転送終了スロット番号に一致するか否かを判定する(S19)。処理対象のスロット番号と転送終了スロット番号とが不一致の場合(S19:NO)、CHA110は、処理対象のスロット番号を一つ増加させて(S20)、S13に戻る。両方のスロット番号が一致すると(S19:YES)、本処理は終了する。
ホスト20が、連続する複数スロットによってライトデータを書き込む場合、即ち、ホスト20がシーケンシャルライトを行う場合、S13〜S19がスロット数に応じて繰り返し実行される。ホスト20が、一つのスロット内の一つ又は複数の論理ブロック301を更新しようとする場合、S13〜S19がそれぞれ一回だけ実行される。
図15に基づいて、デステージ処理を説明する。デステージ処理とは、キャッシュメモリ130上のデータを記憶デバイス210に書き込む処理である。デステージ処理は、DKA120によって実行される。
デステージ処理では、図11〜図13を用いて述べたように、更新対象トラック(更新対象スロット)の旧データを読出し(図11)、ホスト20から受信した更新データと旧データとをマージし(図12)、このマージしたデータを記憶デバイス210に書き込む(図13)。
記憶デバイス210とキャッシュメモリ130との間のデータ転送には、バッファメモリ122Aが使用される。このバッファメモリ122Aにおいて、データの境界を揃えるためのバウンダリ補正処理が実施される。従って、バウンダリ補正処理は、記憶デバイス210からキャッシュメモリ130に旧データを転送する場合(第1バウンダリ補正処理)と、キャッシュメモリ130から記憶デバイス210にマージされたデータを転送する場合(第2バウンダリ補正処理)とで、それぞれ実行されることになる。
なお、更新対象トラックの全ブロックが更新される場合、記憶デバイス210から旧データを読み出す必要はない。ここでは、トラック内の幾つかのブロックが更新される場合を例に挙げて説明する。
DKA120は、共有メモリ140内のSLCBにアクセスし、スロットステータスがダーティ状態に設定されているSLCBが存在するか否かを確認する。DKA120は、スロットステータスがダーティ状態に設定されたSLCBを検出すると(S30)、そのSLCBからスロット番号及びVDEV番号を取得する(S31)。
DKA120は、VDEV番号に基づいてVDEV管理テーブルT30を参照することにより、そのVDEVのディスクタイプを取得する。DKA120は、そのディスクタイプがFCディスクであるか否かを判定する(S32)。
ディスクタイプがFCディスクではない場合(S32:NO)、キャッシュメモリ130内の拡張論理ブロック320のサイズと記憶デバイス210内の論理ブロック301のサイズとは、一致しない。
そこで、DKA120は、記憶デバイス210から読み出される旧データの境界を、キャッシュメモリ130内の拡張論理ブロック320の境界に一致させるべく、第1バウンダリ補正処理を実行する(S33)。この第1バウンダリ補正処理の詳細は、図16で後述する。
DKA120は、第1バウンダリ補正処理の終了後に、正ディスク(正記憶デバイス)及び副ディスク(副記憶デバイス)の両方についてデステージ処理を行う(S34)。このデステージ処理では、キャッシュメモリ130からバッファメモリ122Aを経由して記憶デバイス210にデータが書き込まれる。バッファメモリ122Aから記憶デバイス210にデータを転送する際に、第2バウンダリ補正処理が実行される。デステージ処理(S34)の詳細は、図18で後述する。
ところで、ディスクタイプがFCディスクの場合(S32:YES)、DKA120は、FCディスク用のデステージ処理を実行する(S35)。図7で述べたように、FCディスクは、セクタ長を520バイトに設定できる。
従って、キャッシュメモリ130内のデータ管理単位である拡張論理ブロック320のサイズと、FCディスク210のデータ入出力単位とは一致する。このため、FCディスクとキャッシュメモリ130との間では、バウンダリ補正処理を行うことなく、データを転送することができる。従って、FCディスク用のデステージ処理については、これ以上の説明を省略する。
なお、後述する別の実施例では、記憶デバイス210内でバウンダリ補正処理を行うことにより、FCディスク以外のディスク(SASディスクやSATAディスク等)をFCディスクと同様に使用する。
図16は、図15中にS33で示すバウンダリ補正処理の詳細を示すフローチャートである。このバウンダリ補正処理では、記憶デバイス210からキャッシュメモリ130にデータを転送する際に、データの境界を補正する。
DKA120は、スロットを構成する論理ブロックの数を確認し(S50)、一つのスロットを構成する論理ブロックの数が116個または96個のいずれかであるかを判定する(S51)。
上述のように、メインフレームでは、一つのスロット(トラック)を96個または116個の論理ブロックから構成する。オープン系ホストの場合、一つのスロットを128個または512個で構成する。
1スロットを構成する論理ブロックの数が96個でも116個でもない場合(S51:NO)、DKA120は、論理ブロック301のサイズと拡張論理ブロック320のサイズとの最小公倍数に基づいて、DMA122の転送パラメータを設定する(S52)。即ち、DKA120は、65個の論理ブロック301を一塊りとして、記憶デバイス210からキャッシュメモリ130へデータを転送する(S58)。
1スロットを構成する論理ブロックの数が96個または116個のいずれかである場合(S51:YES)、DKA120は、転送対象スロットのSLCBを参照し、そのSLCBに設定されているダーティビットマップの状態を確認する(S53)。
DKA120は、ダーティビットマップの状態に基づいて、記憶デバイス210からキャッシュメモリ130へのデータ転送が、予め設定された複数のケースのいずれに該当するかを判別する(S54)。
図17を参照する。図17は、ケースに応じてDMA122の転送パラメータを設定する様子を示す説明図である。図17(a)は、更新対象ブロックの位置に応じて分類される複数のケースを示す。
上述の通り、トラックは、最小公倍数単位でのデータアクセスが可能な前半領域(BAS1)と、前半領域の後に続く後半領域(BAS2)とに大別できる。そこで、本実施例では、更新対象の論理ブロックが、トラックのどこに存在するかに応じて、ケースを分けて対応する。
ケース1は、トラックの後半領域(#64〜#115)にのみ、更新対象の論理ブロックが存在する場合である。ケース2は、トラックの前半領域(#0〜#63)及び後半領域のそれぞれに、更新対象の論理ブロックが存在する場合である。ケース3は、トラックの前半領域にのみ、更新対象の論理ブロックが存在する場合である。
本実施例では、記憶デバイス210内のブロック境界とトラックの先頭とを一致させるために、トラックの最終ブロックにギャップデータ340を付加している。従って、ケース1及びケース2では、このギャップデータ340の存在を考慮する必要がある。これに対し、ケース3では、トラックの前半領域にのみ更新対象ブロックが存在するため、ギャップデータ340を考慮する必要がなく、最小公倍数単位でのデータアクセスによって、データを転送することができる。
図17(b)は、各ケース毎にDMA122に設定される転送パラメータを管理するためのテーブルT41〜T43を示す説明図である。テーブルT41はケース1用の転送パラメータを、テーブルT42はケース2用の転送パラメータを、テーブルT43はケース3用の転送パラメータを、それぞれ管理するテーブルである。以下の説明では、1スロットが116ブロックから構成される場合を主に説明する。
テーブルT41は、1スロットを構成するブロック数に応じて、読出し先の先頭LBAと、転送ブロック数とを管理する。LBAとは、論理ブロックアドレスである。1スロットが96ブロックから構成される場合、読出し先の先頭LBAは、スロット番号に98を乗じた値に65を加算して決定される。1スロットが116ブロックから構成される場合、読出し先の先頭LBAは、スロット番号に118を乗じた値に65を加えることにより求められる。
1スロットが116個の拡張論理ブロックから構成される場合、このスロットに対応する記憶デバイス210内の論理ブロックの数は118個である。そして、65個の論理ブロック301が64個の拡張論理ブロック320に対応する。
トラックの後半領域に更新対象ブロックが存在するケース1の場合、後半領域の先頭からデータを読み出す必要がある。後半領域は、記憶デバイス内において、#65の論理ブロックから始まり、#117の論理ブロックで終了する。従って、スロット番号に118を乗じて65を加えることにより、目的とするトラックの後半領域の先頭LBAを求めることができる。
例えば、最初のトラック#0の後半領域の先頭LBAは、0×118+65=65として求められる。2つめのトラック#1の後半領域の先頭LBAは、1×118+65=183として求められる。
ケース1の場合、後半領域のデータを記憶デバイス210からキャッシュメモリ130に転送する。後半領域のサイズは、記憶デバイス210内において、53個の論理ブロック301から構成されるため、転送ブロック数には53が設定される。
トラックの前半領域及び後半領域のそれぞれに更新対象ブロックが存在するケース2の場合、読出し先の先頭LBAは、スロット番号に、そのスロットを構成する論理ブロック数を乗じた値として設定される。1スロットが116個の拡張論理ブロックから構成される場合、先頭LBAは、スロット番号に118を乗じて求められる。ケース2では、トラック全体のデータをキャッシュメモリ130に転送する必要があるため、転送ブロック数は118に設定される。
トラックの前半領域にのみ更新対象ブロックが存在するケース3では、前半領域のデータを記憶デバイス210から読み出してキャッシュメモリ130に転送する。従って、先頭LBAは、トラックに対応する論理ブロックの数にスロット番号を乗じることにより、求められる。トラックの前半領域のデータのみを読み出せばよいので、転送ブロック数は65に設定される。
このように本実施例では、トラックの更新位置に応じてケースを分けて考え、DMA転送に用いる転送パラメータを予め用意している。
図16に戻る。ケースを判別した後(S54)、DKA120は、判別されたケースに応じて、記憶デバイス210にリード要求を発行する(S55)。DKA120は、読出し先の先頭LBA及び転送ブロック数を指定して、記憶デバイス210にデータの読出しを要求する。
DKA120は、記憶デバイス210からバッファメモリ122Aにデータを転送するためのパラメータをDMA122に設定する(S56)。DKA120は、例えば、データ転送先のアドレス(バッファメモリのアドレス)と転送バイト数とを、DMA122に設定する。転送バイト数は、転送ブロック数に512を乗じた値となる。
DMA120は、バッファメモリ122Aからキャッシュメモリ130にデータを転送するためのパラメータをDMA122に設定する(S57)。DKA120は、例えば、転送元となるバッファメモリ122Aのアドレスと、転送先となるキャッシュメモリ130のアドレス(セグメントアドレス)と、転送バイト数と、ダーティビットマップの状態とを、DMA122にそれぞれ設定する。
1スロットが116ブロックから構成される場合の転送バイト数は、ケース1では(52×520)バイト、ケース2では(116×520)バイト、ケース3では(64×520)バイトとなる。1スロットが96ブロックから構成される場合の転送バイト数は、ケース1では(32×520)バイト、ケース2では(96×520)バイト、ケース3では(64×520)バイトとなる。
上記のように転送バイト数を設定することにより、図11(2),図12(3)に示すように、ギャップデータ340は、バッファメモリ122Aからキャッシュメモリ130に転送されない。
ダーティビットマップの状態をDMA122に設定するのは、更新される範囲のデータをバッファメモリ122Aからキャッシュメモリ130に転送させないためである。即ち、ホスト20から受信した新データが、記憶デバイス210から読み出される旧データによって上書きされるのを防止するためである。従って、DMA122は、ダーティビットマップに”1”が設定されたブロックについては、バッファメモリ122Aからキャッシュメモリ130にデータを転送しない。
なお、後述のRAID5の場合、新しいパリティを生成するために必要なため、旧データもバッファメモリ122Aからキャッシュメモリ130に転送される。従って、RAID5の場合は、ダーティビットマップの状態をDMA122に設定する必要はない。
S56及びS57によって、転送パラメータがDMA122に設定されると、DMA転送が開始される(S58)。DKA120は、バッファメモリ122Aからキャッシュメモリ130へのDMA転送が終了するまで待機する(S59)。DMA転送が終了すると(S59:YES)、バウンダリ補正処理は終了する。
図18は、図15中にS34で示すデステージ処理の詳細を示す。このデステージ処理では、キャッシュメモリ130からバッファメモリ122Aを経由して記憶デバイス210にデータを転送する。
DKA120は、1スロットを構成する拡張論理ブロック数を確認し(S70)、1スロットが96個または116個の拡張論理ブロックから構成されているか否かを判定する(S71)。1スロットを構成するブロック数が96個または116個のいずれでもない場合(S71:NO)、DKA120は、最小公倍数単位でのデータアクセスに基づいて、転送用のパラメータをDMA122に設定する(S72)。1スロットが128ブロックまたは512ブロックから構成される場合(S71:NO)、最小公倍数単位でデータを転送できるためである。
1スロットが96個または116個の拡張論理ブロックから構成される場合(S71:YES)、DKA120は、キャッシュメモリ130からバッファメモリ122Aにデータを転送するためのパラメータを、DMA122に設定する(S73)。DKA120は、例えば、転送元のキャッシュアドレスと、転送先のバッファメモリのアドレスと、転送バイト数とをDMA122に設定する。ダーティビットマップの状態を、DMA122に設定する必要はない。
1スロットが116ブロックから構成される場合の転送バイト数は、ケース1では(52×520)バイト、ケース2では(116×520)バイト、ケース3では(64×520)バイトとなる。1スロットが96ブロックから構成される場合の転送バイト数は、ケース1では(32×520)バイト、ケース2では(96×520)バイト、ケース3では(64×520)バイトとなる。
DKA120は、バッファメモリ122Aから記憶デバイス210へデータを転送するためのパラメータをDMA122に設定する(S74)。DKA120は、転送元のバッファメモリ122Aのアドレスと、転送先の記憶デバイス上のアドレスと、転送ブロック数とをDMA122に設定する。
転送先の記憶デバイス上のアドレスは、図17で述べた読出し先の先頭LBAと同一の値に設定される。転送ブロック数も、図17で述べた転送ブロック数と同一の値に設定される(S74)。
転送ブロック数を図17で述べたと同様に設定することにより、図13(5),(6)で示すように、データの末尾にギャップデータ340を付加して、記憶デバイス210に書き込むことができる。ギャップデータ340は、全ビットが0であってもよいし(0パディング)、不定の値であってもよい。
ギャップデータ340は、トラックの先頭ブロックの開始位置と記憶デバイス内の論理ブロックの開始位置とを一致させるだけのために使用されるデータであり、キャッシュメモリ130に転送されることはないためである。
DKA120は、DMA122への設定が完了すると、正ディスク(正記憶デバイス210)にライト要求を発行する(S75)。DKA120は、DMA122によって、バッファメモリ122Aから正記憶デバイス210にデータが転送されるまで、待機する(S76)。
正記憶デバイス210へのデータ転送が完了すると(S76:YES)、DKA120は、S70〜S76を繰り返して、副記憶デバイス210に同一データを転送する。副記憶デバイス210へのデータ転送が完了すると(S77:YES)、デステージ処理は終了する。
副記憶デバイス210にキャッシュメモリ130内のデータをデステージする場合、図15のS33で述べた処理を行う必要はない。正副の各記憶デバイス210には、それぞれ同一データを書き込むためである。
このように構成される本実施例によれば、ブロックサイズが512バイトに固定された記憶デバイス210に、保証コード310の付加された拡張論理ブロック320を記憶させることができる。
さらに、本実施例では、論理ブロック301のサイズと拡張論理ブロック320のサイズとの最小公倍数が、ホスト20の管理単位であるトラックサイズと一致しない場合、更新対象のブロックを有するトラックに対応するデータのみで、ライト処理を行うことができ、隣接する複数のトラックに跨ったライト処理を行う必要がない。
従って、本実施例では、隣接トラックに関するコマンド処理が完了するまで待機する必要はない。さらに、本実施例では、キャッシュメモリ130の使用量が増大するのを防止し、キャッシュヒット率の低下を抑制することができる。待ち時間の解消及びキャッシュヒット率の低下防止により、記憶制御装置10の処理性能の低下を防止できる。
本実施例では、DKA120内のDMA122及びバッファメモリ122Aを用いて、バウンダリ補正を行うため、キャッシュメモリ130上でバウンダリ補正を行う場合よりも効率的に処理することができる。
図19〜図22に基づいて、本発明の第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に該当する。本実施例では、複数の連続するトラックを処理する場合を説明する。
図19は、キャッシュメモリ130から記憶デバイス210に、連続する複数のトラックのデータを転送する様子を示す。図19(1)の(b)に示すように、バッファメモリ122A上において、トラック#0の末尾にギャップデータ340が挿入される。従って、図19(2)の(c)に示すように、記憶デバイス210の論理ブロック301にギャップデータ340も書き込まれる。これにより、トラック#1の先頭ブロックの開始位置は、論理ブロックの開始位置に一致する。
図20は、記憶デバイス210からキャッシュメモリ130に連続する複数のトラックのデータを転送する様子を示す。図20(1)に示すように、記憶デバイス210からは、複数のトラックのデータがバッファメモリ122Aに転送される。このデータには、ギャップデータ340が含まれている。
図20(2)に示すように、バッファメモリ122Aからキャッシュメモリ130には、ギャップデータ340の取り除かれたデータが転送される。転送元のアドレス及び転送バイト数を適切な値に設定することにより、ギャップデータ340をキャッシュメモリ130に転送せず、正味のデータのみをキャッシュメモリ130に転送できる。
図21は、シーケンシャルリード処理を示すフローチャートである。CHA110は、ホスト20によるアクセスのパターンを監視し、ホスト20のアクセス履歴をアクセス履歴管理テーブルT50に記憶させる(S90)。アクセス履歴管理テーブルT50は、例えば、ホストID、デバイスID、アクセス時刻、コマンド種別、スロット数(トラック数)等を管理する。
CHA110は、アクセスパターンの学習結果に基づいて、先読みするか否かを判定する(S91)。先読みとは、ホスト20から要求されるよりも前に、データを記憶デバイス210から読み出してキャッシュメモリ130に記憶させる処理である。連続してデータが読み出されるであろうと予測できる場合、CHA110は先読み処理の実行を決定し(S91:YES)、DKA120に先読み処理の開始を指示する(S92)。
CHA110からDKA120への指示には、例えば、読出しを開始する先頭スロット番号とVDEV番号とが含まれている。
DKA120は、CHA110からの指示を受領すると(S100)、指定されたVDEV番号に基づいてVDEV管理テーブルT30を参照することにより、テーブルRAIDレベル及びディスクタイプを検出する(S101)。
DKA120は、先読み対象の記憶デバイス210がFCディスクであるか否かを判定する(S102)。FCディスクの場合(S102:YES)、DKA120は、FCディスク用の先読み処理を実行する(S103)。上述の通り、FCディスクは、セクタ長を拡張論理ブロック320のサイズに一致させることができるため、データのバウンダリを補正する必要がない。
先読み対象のディスクがFCディスクではない場合(S102:NO)、DKA120は、先読み対象のスロット数に16を設定し(S104)、読出しの開始を正記憶デバイス及び副記憶デバイスのそれぞれに指示する(S105)。DKA120は、先読み対象のスロット数を分割し、正副の各記憶デバイスからそれぞれ8個ずつのスロットのデータを読み出して、キャッシュメモリ130に転送させる(S106)。
図22は、図21中にS106で示される、ディスクからキャッシュメモリへの転送処理の詳細を示すフローチャートである。この処理は、正記憶デバイス及び副記憶デバイスのそれぞれについて実行される。即ち、先読み処理は、正記憶デバイス及び副記憶デバイスでそれぞれ同時に実行される。
DKA120は、リード対象データを格納するためのSLCB及びキャッシュセグメント131を用意する(S110)。DKA120は、記憶デバイス210にリード要求を発行する(S111)。このリード要求には、読出し開始先のLBA及び読出しブロック数が含まれている。
DKA120は、記憶デバイス210からバッファメモリ122Aにデータを転送するためのパラメータをDMA122に設定する(S112)。DKA120は、例えば、記憶デバイス210からバッファメモリ122Aに転送するバイト数、及び、転送先のバッファアドレスをDMA122に設定する。これにより、記憶デバイス210からバッファメモリ122Aに、8スロット分のデータが転送される。
1スロットが116個の拡張論理ブロックで構成される場合、各スロットに対応する論理ブロックの数は118個である。従って、読出し開始LBAで指定された論理ブロックから(118×8)個分の論理ブロックが記憶デバイス210から読み出されて、バッファメモリ122Aに転送される。
記憶デバイス210からバッファメモリ122Aへのデータ転送が完了すると(S113:YES)、DKA120は、バッファメモリ122Aからキャッシュメモリ130にデータを転送するために用いるパラメータをDMA122に設定する(S114)。DKA120は、例えば、転送元のバッファアドレスと、転送バイト数と、転送先のセグメントアドレスとをDMA122に設定する。この設定は、8個のスロットのそれぞれについて行われる。即ち、バッファメモリ122Aからキャッシュメモリ130へのデータ転送は、各スロット毎に行われる。
DKA120は、バッファメモリ122Aからキャッシュメモリ130への1個分のスロットのデータ転送が完了するまで待機する(S115)。1個分のスロットについてデータ転送が終了すると(S115:YES)、DKA120は、8個全部のスロットについてデータ転送が完了したか否かを判定する(S116)。
8個のスロットについて、バッファメモリ122Aからキャッシュメモリ130にデータ転送が完了するまで、S114〜S115が繰り返し実行される。8個のスロットについてデータ転送が完了すると(S116:YES)、本処理を終了する。
このように構成される本実施例も第1実施例と同様の効果を奏する。これに加えて、本実施例では、連続する複数のトラックのデータも効率的に取り扱うことができる。
図23,図24に基づいて第3実施例を説明する。本実施例では、ランダムリード処理を行う場合を説明する。図23は、ランダムリード処理のフローチャートを示す。
CHA110は、ホスト20からリードコマンドを受領すると(S120)、DKA120にデータの読出しを指示する(S121)。この指示には、例えば、スロット番号と、VDEV番号と、読出し対象の先頭ブロック番号と、ブロック数とが含まれる。
DKA120は、CHA110からの指示を受領すると(S130)、VDEV番号に基づいて、RAIDレベル及びディスクタイプをVDEV管理テーブルT30から取得する(S131)。
DKA120は、ディスクタイプがFCディスクであるか否かを判定し(S132)、FCディスクであると判定した場合(S132:YES)、FCディスク用のリード処理を実行する(S133)。
読出し先の記憶デバイス210がFCディスク以外のディスクの場合(S132:NO)、DKA120は、読出し先の記憶デバイス210を特定し(S134)、リードデータを格納するためのSLCB及びキャッシュセグメント131を用意する(S135)。そして、DKA120は、記憶デバイス210からキャッシュメモリ130へのデータ転送を実行する(S135)。
図24は、図23中にS136として示される、記憶デバイス210からキャッシュメモリ130へのデータ転送を行う処理のフローチャートである。DKA120は、1スロットを構成するブロック数が96または116のいずれかであるか否かを判定する(S140)。
1スロットを構成するブロック数が96でも116でもない場合(S140:NO)、DKA120は、最小公倍数単位でのデータアクセスによって、記憶デバイス210からキャッシュメモリ130へデータを転送する(S141)。
1スロットを構成するブロック数が96または116のいずれかの場合(S140:YES)、DKA120は、SLCB内のダーティビットマップの状態に基づいて、上述したケース1〜ケース3のいずれに該当するかを判定する(S142)。即ち、DKA120は、読出し対象ブロックのトラック上の位置に応じて、転送バイト数を決定するために、ケースを判別する。
DKA120は、判別されたケースに応じて、記憶デバイス210にリード要求を発行する(S143)。DKA120は、記憶デバイス210からバッファメモリ122Aにデータを転送するためのパラメータをDMA122に設定する(S144)。例えば、DKA120は、読出し先のアドレス、転送先のバッファアドレス、転送バイト数をDMA122に設定する。これにより、記憶デバイス210からバッファメモリ122AへのDMA転送が開始される。
DKA120は、記憶デバイス210からバッファメモリ122Aへのデータ転送が終了するまで待機する(S145)。転送が終了した場合(S145:YES)、DKA120は、バッファメモリ122Aからキャッシュメモリ130にデータを転送するためのパラメータをDMA122に設定する(S146)。例えば、DKA120は、転送元のバッファアドレスと、転送先のセグメントアドレスと、転送バイト数をDMA122にそれぞれ設定する。これにより、バッファメモリ122Aからキャッシュメモリ130へのデータ転送が開始される。なお、上述の通り、記憶デバイス210から読み出されたギャップデータ340は、キャッシュメモリ130に転送されない。
バッファメモリ122Aからキャッシュメモリ130へのデータ転送が完了すると(S147:YES)、DKA120は、リード要求の処理が完了した旨をCHA110に報告する(S148)。この報告を受けて、CHA110は、キャッシュメモリ130に転送されたデータを、ホスト20に送信する。
なお、ホスト20に送信されるデータからは、保証コード310が取り除かれる。このように構成される本実施例も第1実施例と同様の効果を奏する。
図25に基づいて第4実施例を説明する。本実施例では、RAID5に適用する場合を説明する。上述の各実施例では、RAID1の場合を主に説明した。しかし、本発明は、RAID1に限らず、RAID5を含む他のRAIDレベルにも適用できる。
図25は、RAID5の場合において、バッファメモリ122Aからキャッシュメモリ130にデータを転送する様子を示す説明図である。RAID5の場合は、キャッシュメモリ130に、リード面とライト面とが用意される。リード面とは、記憶デバイス210から読み出されたデータを格納するためのキャッシュ領域である。ライト面とは、ホスト20から受信したデータを格納するためのキャッシュ領域である。
RAID5の場合、ホスト20から受信する新データと、記憶デバイス210から読み出される旧データ及び旧パリティに基づいて、新パリティを算出する。従って、RAID1の場合とは異なり、バッファメモリ122Aに読み出された旧データの全体が、リード面に転送される。
RAID5の場合、パリティを使用するため、パリティの生成及びパリティの転送の点で、RAID1と異なる。しかし、旧パリティをバッファメモリ122Aを介して記憶デバイス210から読み出す処理、新パリティをバッファメモリ122Aを介して記憶デバイス210に書き込む処理は、データの場合と同様に行うことができる。
本明細書及び図面に開示された内容に基づいて、RAID6のような他のRAIDレベルにも本発明を適用できることは、いわゆる当業者であれば容易に理解することができるであろう。
図26に基づいて第5実施例を説明する。本実施例では、記憶デバイス210側で、バウンダリ補正処理を実行する。図26は、本実施例による記憶制御装置の要部を示すブロックである。
本実施例では、DKA120のDMA122からバッファメモリやバウンダリ補正プログラムが除かれている。また、プロトコルチップ121Aは、FCディスク専用のプロトコルチップとして構成されている。
プロトコルチップ121Aには、ディスクタイプの異なる複数の記憶デバイス210A〜210Cが接続されている。例えば、記憶デバイス210AはSATAディスクであり、記憶デバイス210BはSASディスクであり、記憶デバイス210CはFCディスクである。
FCディスクである記憶デバイス210Cは、そのままプロトコルチップ121Aに接続される。これに対し、FCディスク以外の記憶デバイス210A,210Bは、それぞれ変換回路400を介して、プロトコルチップ121Aに接続される。記憶デバイス210A,記憶デバイス210Bの各変換回路400は、それぞれ例えば、バッファメモリ401及びバウンダリ補正部402を備えている。これら変換回路400は、記憶デバイス210内の制御回路に接続される。
バッファメモリ401は、DKA120から記憶デバイス210に転送されるデータや記憶デバイス210からDKA120に転送されるデータを一時的に記憶する。バウンダリ補正部402は、記憶デバイス210からDKA120にデータを転送する際のバウンダリ補正処理とDKA120から記憶デバイス210にデータを転送する際のバウンダリ補正処理とを行うものである。それぞれのバウンダリ補正処理については、第1実施例で述べたので説明を省略する。
DKA120は、その配下の全記憶デバイス210を、FCディスクとして扱うことができる。DKA120は、FCディスクに対する指示と同様に、520バイトの拡張論理ブロック320を単位としてリードコマンドやライトコマンドを発行する。DKA120の内部でバウンダリ補正を行う必要は無い。バウンダリ補正処理は、変換回路400によって行われる。
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、記憶デバイス210に設ける変換回路400によって、バウンダリ補正を行うため、DKA120の処理を簡素化できる。また、SATAディスクやSASディスクをFCディスクとして扱うことができるため、既存の記憶デバイス210を有効に利用することができる。
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。当業者であれば、前記各実施例を適宜組み合わせることもできる。例えば、第5実施例では、3種類の記憶デバイスを示しているが、これに代えて、SATAディスクのみの構成、またはSASディスクのみの構成としてもよい。
本発明の実施形態の全体概念を示す説明図である。 ストレージシステムの全体構成を示すブロック図である。 コントローラの構成を示すブロック図である。 スロットとキャッシュの関係を示す説明図である。 デバイスIDとVDEVとの対応関係を管理するテーブル及びVDEVの構成を管理するテーブルをそれぞれ示す説明図である。 記憶デバイスに配置されるスロットの様子を示す説明図である。 論理ブロックに保証コードを付加して拡張論理ブロックを生成する様子を示す説明図である。 論理ブロックのサイズと拡張論理ブロックのサイズとの最小公倍数に基づいて、記憶デバイスに記憶されたデータを更新する様子を示す説明図である。 記憶デバイス上にギャップを設けない場合に、隣接する複数のトラックに跨って処理が行われる様子を示す説明図である。 所定個数の論理ブロック毎に所定サイズのギャップを設けることにより、各トラックの先頭ブロックの開始位置と記憶デバイス内の論理ブロックの開始位置とが一致する様子を示す説明図である。 記憶デバイスからバッファメモリを経由してキャッシュメモリにデータを転送する様子を示す説明図である。 キャッシュメモリ上でマージされたデータをバッファメモリに転送する様子を示す説明図である。 バッファメモリから記憶デバイスにデータを転送する様子を示す説明図である。 ライト処理を示すフローチャートである。 RAID1の場合のデステージ処理を示すフローチャートである。 図15中のS33の詳細を示すフローチャートである。 トラック内の更新位置に応じてケースを分け、各ケースに応じて転送パラメータを決定する様子を示す説明図である。 図15中のS34の詳細を示すフローチャートである。 第2実施例に係る記憶制御装置において、連続するトラックのデータをキャッシュメモリからバッファメモリを介して記憶デバイスに転送する様子を示す説明図である。 連続するトラックのデータを記憶デバイスからバッファメモリを介してキャッシュメモリに転送する様子を示す説明図である。 シーケンシャルリード処理を示すフローチャートである。 図21中のS106の詳細を示すフローチャートである。 第3実施例に係る記憶制御装置で実行される、ランダムリード処理のフローチャートである。 図23中のS136の詳細を示すフローチャートである。 第4実施例に係る記憶制御装置において、RAID5に適用した場合を模式的に示す説明図である。 第5実施例に係る記憶制御装置の要部を示すブロック図である。
符号の説明
1:記憶制御装置、1A:ホスト通信制御部、1B:デバイス通信制御部、1C:キャッシュメモリ、1D:保証コード制御部、2:記憶デバイス、3:ホスト、4:バウンダリ制御部、4A:バッファメモリ、4B:バウンダリ補正部、5:トラック、6:論理ブロック、7:保証コード、8:拡張論理ブロック、10:記憶制御装置、20:ホスト、30:管理端末、δ:ギャップ、100:コントローラ、110:チャネルアダプタ、111:プロトコルチップ、112:DMA回路、112A:保証コード回路、113:マイクロプロセッサ、120:ディスクアダプタ、121,121A:プロトコルチップ、122:DMA回路、122A:バッファメモリ、123:マイクロプロセッサ、124:パリティ生成回路、130:キャッシュメモリ、131:キャッシュセグメント、140:共有メモリ、150:接続部、160:サービスプロセッサ、200:記憶デバイス搭載部、210,210A,210B,210C:記憶デバイス、220:パリティグループ(VDEV)、230:論理デバイス、300:スロット、301:論理ブロック、310:保証コード、320:拡張論理ブロック、340:ギャップデータ、400:変換回路、401:バッファメモリ、402:バウンダリ補正部。

Claims (10)

  1. ホストコンピュータとデータを記憶する記憶装置との間のデータ入出力を制御する記憶制御装置であって、
    前記ホストコンピュータとの間でデータを送受信する第1通信制御部であって、第1サイズを有する第1ブロック単位で、前記ホストコンピュータとデータを送受信する第1通信制御部と、
    前記ホストコンピュータから受信したデータについて、前記第1ブロック毎に所定の第1データをそれぞれ付加することにより、前記第1サイズよりも大きい第2サイズを有する第2ブロックを生成する第1データ付加部と、
    前記第1ブロック単位でデータを記憶する前記記憶装置との間でデータを送受信する第2通信制御部と、
    前記第1通信制御部と前記第2通信制御部との間に設けられる第1メモリであって、前記第2ブロック単位でデータを管理する第1メモリと、
    前記第1メモリと前記記憶装置との間に設けられる第2メモリと、
    前記ホストコンピュータによるデータの管理単位であるトラックの境界と前記記憶装置内の前記第1ブロックの境界とを一致させる境界補正部であって、(1)前記第1メモリから前記第2メモリに転送されるデータに、所定サイズの第2データを付加することにより、前記トラックの境界と前記記憶装置内の前記第1ブロックの境界とを一致させ、(2)前記第2メモリから前記第1メモリに転送されるデータから前記第2データを取り除くことにより、前記トラックの境界と前記第1メモリ内の前記第2ブロックの境界とを一致させる、境界補正部と、
    を備える記憶制御装置。
  2. 前記境界補正部は、前記第1メモリから前記第2メモリに転送されるデータを構成する前記各第2ブロックのうち先頭の第2ブロックの開始位置と、前記記憶装置内の前記第1ブロックの開始位置とを一致させる、請求項1に記載の記憶制御装置。
  3. 前記境界補正部は、前記第1メモリから前記第2メモリに転送されるデータに前記第2データを付加することにより、このデータを前記第1サイズの整数倍のデータにする、請求項1または請求項2のいずれかに記載の記憶制御装置。
  4. 前記第2データは、ビット0から構成されるパディングデータ、または、不定データのいずれかである請求項1〜請求項3のいずれかに記載の記憶制御装置。
  5. 前記境界補正部は、前記ホストコンピュータにより更新される前記第2ブロックの、前記トラック上の位置に応じて、前記記憶装置から前記第2メモリに読み出すデータの範囲を決定する、請求項1〜請求項4のいずれかに記載の記憶制御装置。
  6. 前記境界補正部は、前記ホストコンピュータにより更新される前記ブロックの、前記トラックの上の位置が、
    (C1)前記トラックの先頭から、前記第1サイズと前記第2サイズとの最小公倍数として求められるデータサイズまでのトラック前半領域よりも以降の、トラック後半領域にのみ存在する第1ケースと、
    (C2)前記トラック前半領域及び前記トラック後半領域の両方にそれぞれ存在する第2ケースと、
    (C3)前記トラック前半領域にのみ存在する第3ケースとの、
    いずれのケースに該当するかを判別し、判別されたケースに応じて、前記第2メモリと前記記憶装置との間のデータ転送サイズを決定する、請求項1〜請求項4のいずれかに記載の記憶制御装置。
  7. 前記境界補正部及び前記第2メモリは、前記第2通信制御部にそれぞれ設けられている、請求項1〜請求項6のいずれかに記載の記憶制御装置。
  8. 前記境界補正部及び前記第2メモリは、前記記憶装置にそれぞれ設けられている、請求項1〜請求項6のいずれかに記載の記憶制御装置。
  9. ホストコンピュータと記憶装置との間のデータ入出力を制御する記憶制御装置を制御するための方法であって、
    前記ホストコンピュータから、第1サイズを有する第1ブロック単位で、更新対象データを受信するステップと、
    前記更新対象データの前記第1ブロック毎に所定の第1データをそれぞれ付加し、前記第1サイズよりも大きい第2サイズを有する第2ブロックを生成するステップと、
    前記第2ブロック単位のデータに変換された更新対象データを第1メモリに記憶させるステップと、
    前記記憶装置から前記更新対象データを含む所定範囲の所定データを読出して、第2メモリに記憶させるステップと、
    前記第2メモリに記憶された前記所定データから第2データを取り除いて、前記所定データを前記第2サイズの整数倍のデータに変換し、この変換されたデータを前記第1メモリに転送させるステップと、
    前記第1メモリに転送された前記所定データと前記第1メモリに記憶された前記更新対象データとを前記第1メモリ上でマージさせ、マージ済データを生成するステップと、
    前記マージ済データを前記第2メモリに転送させるステップと、
    前記第2メモリ上において、前記マージ済データの末尾に所定サイズの第2データを付加することにより、前記マージ済データを前記第1サイズの整数倍のデータに変換させるステップと、
    前記変換されたマージ済データを前記記憶装置内に書き込むステップと、
    をそれぞれ実行する、記憶制御装置の制御方法。
  10. 前記更新対象データのトラック上の位置が、(C1)前記トラックの先頭から、前記第1サイズと前記第2サイズとの最小公倍数として求められるデータサイズまでのトラック前半領域よりも以降の、トラック後半領域にのみ存在する第1ケースにおいては、前記トラック後半領域のデータを前記所定範囲のデータとして前記記憶装置から読出し、
    (C2)前記トラック前半領域及び前記トラック後半領域の両方にそれぞれ存在する第2ケースにおいては、前記トラックの全体を前記所定範囲のデータとして前記記憶装置から読出し、
    (C3)前記前半領域にのみ存在する第3ケースにおいては、前記トラック前半領域のデータを前記所定範囲のデータとして前記記憶装置から読み出す、
    請求項9に記載の記憶制御装置の制御方法。
JP2007303672A 2007-11-22 2007-11-22 記憶制御装置及び記憶制御装置の制御方法 Active JP4977583B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007303672A JP4977583B2 (ja) 2007-11-22 2007-11-22 記憶制御装置及び記憶制御装置の制御方法
US12/068,515 US7966471B2 (en) 2007-11-22 2008-02-07 Storage controller and method for control of a data storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007303672A JP4977583B2 (ja) 2007-11-22 2007-11-22 記憶制御装置及び記憶制御装置の制御方法

Publications (2)

Publication Number Publication Date
JP2009129201A true JP2009129201A (ja) 2009-06-11
JP4977583B2 JP4977583B2 (ja) 2012-07-18

Family

ID=40670742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007303672A Active JP4977583B2 (ja) 2007-11-22 2007-11-22 記憶制御装置及び記憶制御装置の制御方法

Country Status (2)

Country Link
US (1) US7966471B2 (ja)
JP (1) JP4977583B2 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011111089A1 (ja) * 2010-03-08 2011-09-15 株式会社日立製作所 Raid1系のraidグループを有するストレージ装置、及び、raid1系のraidグループへの書込みの制御方法
WO2012137256A1 (en) 2011-04-06 2012-10-11 Hitachi, Ltd. Disk array apparatus and control method thereof
WO2012137252A1 (en) 2011-04-06 2012-10-11 Hitachi, Ltd. Storage apparatus and its data processing method
JP2012198704A (ja) * 2011-03-18 2012-10-18 Fujitsu Ltd ストレージ装置、制御装置およびストレージ装置制御方法
JP2013524304A (ja) * 2010-09-10 2013-06-17 株式会社日立製作所 ストレージシステム及びストレージシステムのデータ転送方法
JP2013205913A (ja) * 2012-03-27 2013-10-07 Nec Corp 記憶デバイスの制御装置及びその制御方法、並びにコンピュータ・プログラム
US8868865B1 (en) 2013-05-14 2014-10-21 Hitachi, Ltd. Computer system, server module, and storage module
JP2015043226A (ja) * 2014-10-15 2015-03-05 株式会社日立製作所 ストレージシステム及びストレージシステムのデータ転送方法
JP2016192037A (ja) * 2015-03-31 2016-11-10 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
WO2017216887A1 (ja) * 2016-06-15 2017-12-21 株式会社日立製作所 情報処理システム
JP2019109950A (ja) * 2017-12-18 2019-07-04 Necプラットフォームズ株式会社 制御装置、制御プログラム、及び制御方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4693893B2 (ja) * 2008-11-25 2011-06-01 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法
US8566496B2 (en) 2010-12-03 2013-10-22 Lsi Corporation Data prefetch in SAS expanders
US9213486B2 (en) * 2012-02-22 2015-12-15 International Business Machines Corporation Writing new data of a first block size to a second block size using a write-write mode
US20140258808A1 (en) * 2013-03-11 2014-09-11 Kabushiki Kaisha Toshiba Memory device and memory controller
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
US10055279B2 (en) * 2014-04-02 2018-08-21 Hitachi, Ltd. Semiconductor integrated circuit for communication, storage apparatus, and method for managing failure in storage apparatus
US9888077B2 (en) * 2014-04-22 2018-02-06 Western Digital Technologies, Inc. Metadata based data alignment in data storage systems
CN110018784B (zh) 2018-01-09 2023-01-10 阿里巴巴集团控股有限公司 数据处理方法、装置及计算设备
CN114879584B (zh) * 2022-07-05 2022-10-28 成都智明达电子股份有限公司 一种基于fpga的dma控制器边界对齐方法及其电路

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04325923A (ja) * 1991-04-26 1992-11-16 Fujitsu Ltd 光ディスク装置のアクセス制御方式
JPH11162106A (ja) * 1997-11-21 1999-06-18 Matsushita Electric Ind Co Ltd 記録再生装置
JP2003323262A (ja) * 1996-01-19 2003-11-14 Hitachi Ltd 計算機システム
JP2005025919A (ja) * 2003-05-30 2005-01-27 Canon Inc 記録装置及び記録方法
JP2006040011A (ja) * 2004-07-28 2006-02-09 Hitachi Ltd ディスクアレイシステム
JP2006195851A (ja) * 2005-01-17 2006-07-27 Hitachi Ltd ストレージシステム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3264465B2 (ja) * 1993-06-30 2002-03-11 株式会社日立製作所 記憶システム
US5706298A (en) * 1995-11-09 1998-01-06 Emc Corporation Method and apparatus for calculating the longitudinal redundancy check in a mixed stream channel
JP2000347815A (ja) 1999-06-07 2000-12-15 Hitachi Ltd ディスクアレイシステム
US6191712B1 (en) * 1999-06-28 2001-02-20 International Business Machines Corporation Circuit for aligning logical sectors with physical sectors in a disk storage system
JP4202658B2 (ja) * 2002-02-22 2008-12-24 富士通マイクロエレクトロニクス株式会社 データ書き込み装置及びdvdフォーマットデータ生成方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04325923A (ja) * 1991-04-26 1992-11-16 Fujitsu Ltd 光ディスク装置のアクセス制御方式
JP2003323262A (ja) * 1996-01-19 2003-11-14 Hitachi Ltd 計算機システム
JPH11162106A (ja) * 1997-11-21 1999-06-18 Matsushita Electric Ind Co Ltd 記録再生装置
JP2005025919A (ja) * 2003-05-30 2005-01-27 Canon Inc 記録装置及び記録方法
JP2006040011A (ja) * 2004-07-28 2006-02-09 Hitachi Ltd ディスクアレイシステム
JP2006195851A (ja) * 2005-01-17 2006-07-27 Hitachi Ltd ストレージシステム

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP5438820B2 (ja) * 2010-03-08 2014-03-12 株式会社日立製作所 Raid1系のraidグループを有するストレージ装置、及び、raid1系のraidグループへの書込みの制御方法
WO2011111089A1 (ja) * 2010-03-08 2011-09-15 株式会社日立製作所 Raid1系のraidグループを有するストレージ装置、及び、raid1系のraidグループへの書込みの制御方法
JP2013524304A (ja) * 2010-09-10 2013-06-17 株式会社日立製作所 ストレージシステム及びストレージシステムのデータ転送方法
US8782337B2 (en) 2010-09-10 2014-07-15 Hitachi, Ltd. Storage system and data transfer method of storage system
US9304710B2 (en) 2010-09-10 2016-04-05 Hitachi, Ltd. Storage system and data transfer method of storage system
US9146803B2 (en) 2011-03-18 2015-09-29 Fujitsu Limited Storage apparatus, control apparatus, and storage apparatus control method
JP2012198704A (ja) * 2011-03-18 2012-10-18 Fujitsu Ltd ストレージ装置、制御装置およびストレージ装置制御方法
WO2012137256A1 (en) 2011-04-06 2012-10-11 Hitachi, Ltd. Disk array apparatus and control method thereof
WO2012137252A1 (en) 2011-04-06 2012-10-11 Hitachi, Ltd. Storage apparatus and its data processing method
US8694602B2 (en) 2011-04-06 2014-04-08 Hitachi, Ltd. Storage apparatus and its data processing method
JP2013205913A (ja) * 2012-03-27 2013-10-07 Nec Corp 記憶デバイスの制御装置及びその制御方法、並びにコンピュータ・プログラム
US8868865B1 (en) 2013-05-14 2014-10-21 Hitachi, Ltd. Computer system, server module, and storage module
US8959302B2 (en) 2013-05-14 2015-02-17 Hitachi, Ltd. Computer system, server module, and storage module
US9189418B2 (en) 2013-05-14 2015-11-17 Hitachi, Ltd. Computer system, server module, and storage module
JP2014222426A (ja) * 2013-05-14 2014-11-27 株式会社日立製作所 計算機システム、サーバモジュール及びストレージモジュール
JP2015043226A (ja) * 2014-10-15 2015-03-05 株式会社日立製作所 ストレージシステム及びストレージシステムのデータ転送方法
JP2016192037A (ja) * 2015-03-31 2016-11-10 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
WO2017216887A1 (ja) * 2016-06-15 2017-12-21 株式会社日立製作所 情報処理システム
JPWO2017216887A1 (ja) * 2016-06-15 2019-01-17 株式会社日立製作所 情報処理システム
US10853268B2 (en) 2016-06-15 2020-12-01 Hitachi, Ltd. Parity generating information processing system
JP2019109950A (ja) * 2017-12-18 2019-07-04 Necプラットフォームズ株式会社 制御装置、制御プログラム、及び制御方法
JP7056867B2 (ja) 2017-12-18 2022-04-19 Necプラットフォームズ株式会社 制御装置、制御プログラム、及び制御方法

Also Published As

Publication number Publication date
JP4977583B2 (ja) 2012-07-18
US20090138672A1 (en) 2009-05-28
US7966471B2 (en) 2011-06-21

Similar Documents

Publication Publication Date Title
JP4977583B2 (ja) 記憶制御装置及び記憶制御装置の制御方法
JP4693893B2 (ja) 記憶制御装置及び記憶制御装置の制御方法
JP5807458B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP6279620B2 (ja) ストレージ装置
US20150269025A1 (en) Write redirection in redundant array of independent disks systems
US10691339B2 (en) Methods for reducing initialization duration and performance impact during configuration of storage drives
US20050229033A1 (en) Disk array controller and information processing apparatus
JP5102915B2 (ja) ストレージ装置及びそのデータ検証方法
JP2007156597A (ja) ストレージ装置
US9009395B2 (en) Storage subsystem and its data processing method for reducing the amount of data to be stored in nonvolatile memory
JP2006134064A (ja) 記憶メディアへの書込みエラーを検出する記憶制御装置及び方法
JP2004326759A (ja) Raidストレージ・システム用にメモリを構成すること
US8180952B2 (en) Storage system and data guarantee method
JP5031392B2 (ja) 記憶制御装置及びストレージシステム
JP6011153B2 (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
EP1477898B1 (en) A disk array system based on disks with a fixed-length unit of access
JP2006268673A (ja) 記憶制御装置及び記憶デバイスのエラー制御方法
JP2009026240A (ja) 記憶制御システムおよび記憶制御方法
US7174476B2 (en) Methods and structure for improved fault tolerance during initialization of a RAID logical unit
JP5236072B2 (ja) ストレージ装置、及びデータ保証方法
JP6318769B2 (ja) ストレージ制御装置、制御プログラム、および制御方法
US8762646B2 (en) Destaging of write ahead data set tracks
JP2005346212A (ja) ディスクアレイコントローラおよび情報処理装置
JP2016192037A (ja) ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120123

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4977583

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150420

Year of fee payment: 3