JPWO2016135872A1 - ストレージ装置及び記憶デバイス - Google Patents

ストレージ装置及び記憶デバイス Download PDF

Info

Publication number
JPWO2016135872A1
JPWO2016135872A1 JP2017501618A JP2017501618A JPWO2016135872A1 JP WO2016135872 A1 JPWO2016135872 A1 JP WO2016135872A1 JP 2017501618 A JP2017501618 A JP 2017501618A JP 2017501618 A JP2017501618 A JP 2017501618A JP WO2016135872 A1 JPWO2016135872 A1 JP WO2016135872A1
Authority
JP
Japan
Prior art keywords
data
storage
storage device
raid
controller
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
JP2017501618A
Other languages
English (en)
Other versions
JP6228347B2 (ja
Inventor
岡田 光弘
岡田  光弘
彬史 鈴木
彬史 鈴木
賢志 森下
賢志 森下
山本 彰
山本  彰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2016135872A1 publication Critical patent/JPWO2016135872A1/ja
Application granted granted Critical
Publication of JP6228347B2 publication Critical patent/JP6228347B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

ストレージコントローラがリビルド処理を行うと、ストレージコントローラ処理が集中するため、ストレージコントローラの負荷が大きい。ストレージ装置は、RAIDグループを構成し、同一バスに接続され、相互に通信する複数の記憶デバイスを備える。複数の記憶デバイスのそれぞれは、デバイスコントローラと、記憶媒体と、を有する。複数の記憶デバイスは、RAIDストライプに含まれる、複数のデータ及び複数のデータに基づいて生成されるパリティのそれぞれを格納する。RAIDグループに含まれる第一記憶デバイスの第一デバイスコントローラは、RAIDグループに含まれる第一記憶デバイス以外の複数の記憶デバイスにRAIDストライプに含まれる複数のデータ及び/又は前記パリティの転送指示を送信し、転送された複数のデータ及び前記パリティに基づいてRAIDストライプの第一記憶デバイスに対応するデータ又はパリティを復元する。

Description

ストレージ装置及び記憶デバイスに関する。
近年、ストレージ装置に搭載される記憶デバイスとして、NAND型フラッシュメモリ(FM)を記憶媒体として用いたSSD(Solid State Drive)に代表される、HDD(Hard Disk Drive)よりも高速にアクセス可能な記憶デバイスが普及している。さらに、ReRAM(Resistance Random Access Memory)やPCM(Phase Change Memory)等の、フラッシュメモリよりも高速にアクセス可能な半導体記憶媒体を備えた記憶デバイスの実用化に向けた開発が行われている。
ストレージ装置においては、RAID(Redundant Array of Inexpensive/Independent Disks)技術を用いて、システムを高可用化しているものが多い。RAID技術とは、ストレージ装置のコントローラ(ストレージコントローラ)がホスト計算機などの上位装置から受け付けたライトデータからパリティなどの冗長データを生成し、ライトデータとパリティとをそれぞれ異なる記憶デバイスに分散格納する技術である。RAID技術を採用することで、一部の記憶デバイスに障害が発生し、その記憶デバイスからデータを読み出せなくなった場合でも、その他の記憶デバイスに格納されている情報を用いて、データを復元することができる。
例えば、特許文献1には、記憶デバイスの1つが故障した場合に、ストレージコントローラが故障した記憶デバイス以外の記憶デバイスからデータ及びパリティをリードし、ストレージコントローラがデータを復元し、新しい記憶デバイスに復元したデータをライトするという技術が開示されている。
特開2007−94994
特許文献1に記載のリビルド処理を行うと、ストレージコントローラが複数の記憶デバイスからデータ/パリティを読み出し、データを復元し、復元したデータを新しい記憶デバイスに書き込むという処理が発生し、ストレージコントローラにデータが集中するため、ストレージコントローラの負荷が大きく、リビルド時の性能が低下するという課題がある。
例えば、ストレージコントローラの負荷が高いと、通常のIO処理性能が低下する。特に、SSDはHDDと比べて高速アクセス可能であるが、ストレージコントローラがネックになると、SSDの性能を活かすことができず、ストレージ装置の性能は低下する。
ストレージ装置は、RAIDグループを構成し、同一バスに接続され、相互に通信を行う複数の記憶デバイスを備える。複数の記憶デバイスのそれぞれは、デバイスコントローラと、データを格納する記憶媒体と、を有する。複数の記憶デバイスは、RAIDストライプに含まれる、複数のデータ及び複数のデータに基づいて生成されるパリティのそれぞれを格納する。RAIDグループに含まれる第一記憶デバイスの第一デバイスコントローラは、RAIDグループに含まれる第一記憶デバイス以外の複数の記憶デバイスにRAIDストライプに含まれる複数のデータ及び/又は前記パリティの転送指示を送信し、転送された複数のデータ及び前記パリティに基づいてRAIDストライプの第一記憶デバイスに対応するデータ又はパリティを復元する。
本発明によれば、データ復元処理における復元後データの転送が不要になるため、データの転送回数が削減され、データの復元処理が高速になる。また、ストレージコントローラがデータ復元処理する際の負荷を低減できるため、データ復元処理中のストレージ装置の性能を向上することができる。
本実施形態の概要を示す。 ストレージシステムの物理構成を示す。 論理ボリュームとRAIDグループ(RAID5)の対応関係を示す。 PCIeバスのアドレスマップを示す。 RAID構成情報を示す。 記憶デバイスの外観を示す。 記憶デバイスの物理構成を示す。 FMチップの構成を示す。 記憶デバイスのアドレス変換テーブルを示す。 ライト要求の動作フローを示す。 リード要求の動作フローを示す。 ストレージ装置におけるリビルド処理の動作フローを示す。 記憶デバイスにおけるリビルド処理の動作フローを示す。 リビルド中のLBAの状態を示す。 リビルド中のリード要求の動作フローを示す。 リビルド中のライト要求の動作フローを示す。 I/Oインターフェイスのアクセス要求キューを示す。 記憶デバイスにおけるリビルド処理の動作フローを示す。 論理ボリュームとRAIDグループ(RAID1)の対応関係を示す。 初期化シーケンスを示す。
図1は、本実施形態の概要を示す。ストレージ装置10は、ストレージコントローラ100と、記憶デバイス310〜340を備える。記憶デバイス310〜340はそれぞれが相互に通信可能な同一バスに接続されている。
ストレージコントローラ100は、ストレージ装置10の外部の計算機などからリード要求やライト要求を受信し、要求に従って記憶デバイスにアクセスする。
記憶デバイス310〜340のそれぞれは、デバイスコントローラ410と記憶媒体(不図示)を備える。デバイスコントローラ410は、記憶デバイスの外部の装置から受信したデータを記憶媒体に格納し、記憶媒体からデータを読み出して記憶デバイスの外部の装置に転送する。記憶媒体は、不揮発性半導体メモリであり、例えばフラッシュメモリである。
本実施形態では4台の記憶デバイスに基づいてRAID5(3Data+1Parity)のRAIDグループが構成されているものとする。RAID5ではRAIDストライプ毎に所定の規則でパリティが生成される。RAIDストライプ0では、Data0とData1とData2に基づいてParity0が生成されている。例えば、Data0とData1とData2の排他的論理和演算(以下、XOR演算)によりParity0が生成される。Data0、Data1、Data2、Parity0は、記憶デバイス310〜340に1つずつ分散格納される。記憶デバイスの障害等によりData1が読み出せなくなった場合、Data0とData2とParity0のXOR演算によりData1が復元される。データの復元は、データの生成と言ってもよい。
次に本実施形態におけるデータ復元の処理を説明する。本実施形態ではデバイスコントローラ410は、XOR演算の機能を備える。RAIDストライプ0に属するData1を復元する場合、記憶デバイス320のデバイスコントローラ410は、RAIDグループ内の他の記憶デバイス310、330、340に対して、RAIDストライプ0に属するデータ及びパリティの転送を指示する。そして、記憶デバイス320のデバイスコントローラ410は、転送されたData0とData1とParity0のXOR演算を実行し、Data1を復元する。
よって、データ復元に必要なデータ及びパリティデータを記憶デバイスに転送すれば記憶デバイスがデータを復元できるため、復元後のデータの転送が不要になる。これにより、データの復元処理が高速になる。また、ストレージコントローラ100に負荷をかけることなくデータの復元を行うことができる。ストレージコントローラ100の負荷を低減することでストレージ装置の性能が向上する。
図2〜5を用いて、ストレージ装置の構成を説明する。
図2は、本発明の実施例に係るストレージシステムの物理構成の一例である。本ストレージシステムは、ストレージ装置10に、ホスト計算機(以下、ホスト)20が接続される。ストレージ装置10とホスト20は、ネットワーク170を介して通信可能である。ネットワーク170は、例えば、SAN(Storage Area Network)、LAN(Local Area Network)などである。
ストレージ装置10は、記憶装置300と、記憶装置300に接続されたストレージコントローラ100とを有する。記憶装置300は、複数の記憶デバイス(例えば、SSD)310〜340と、複数の記憶デバイス310〜340それぞれと内部バス(例えば、PCI-Express(PCIe)バス)によって接続されるスイッチ390を有する。複数の記憶デバイス310〜340はスイッチ390を介して相互に接続されており、記憶デバイス間でEnd−to−End通信が可能である。複数の記憶デバイス310〜340のそれぞれはスイッチ390を介してストレージコントローラ100と接続される。ストレージコントローラ100は、リード/ライト要求を記憶デバイスに振り分けるルータ等であってもよい。
ストレージコントローラ100は、ホスト20と通信を行うデバイスであるホストインターフェイス110、ストレージ装置10全体の動作制御を行うCPU(Central Processing Unit)120、CPU120がデータ転送時に使用するストレージ管理情報やホスト20からライトされるデータや記憶装置300からリードされたデータを一時的に記憶するメモリ130、記憶装置300と通信を行うデバイスであるストレージインターフェイス140、及び、それらに内部バス(例えば、PCI-Express(PCIe)バス、AXI(Advanced eXtensible Interface)バス)160を通じて接続されるスイッチ150を有する。ここでは、全ての内部バス160には同一の記号が付されているが、それらの内部バスは、同一のバス規格のバスで構成されていてもよいし、異なるバス規格のバスを含んでいてもよい。また、ストレージコントローラ100内のストレージインターフェイス140は、PCIeバス180を介して複数の記憶デバイス300と接続される。
ストレージコントローラ100は、ホスト20にVOL(論理ボリューム)を提供する。本実施例のVOLは、複数の記憶デバイス310〜340でRAIDグループを構築しているVOLを想定している。ストレージコントローラ100は、ホスト20からアクセス先情報を含んだアクセス要求を受ける。アクセス要求は、例えばリード要求又はライト要求である。アクセス要求に従うデータとは、リード要求に従ってVOLからリードされるリード対象データ、又は、ライト要求に従ってVOLにライトされるライト対象データである。アクセス先情報は、例えばアクセス先(リード元又はライト先)のVOLのIDとそのVOLのアクセス先の論理アドレス(ホストLBA(Logical Block Address)を含む。
本実施例では、記憶デバイス310〜340の4台を用いてRAID5(3Data+1Parity)を構築したときの例を説明する。
図20に本実施例における、初期化シーケンスを示す。図20のように初期化時はCPU120が記憶デバイス310〜340各々にデバイス情報(例えば、論理記憶空間サイズと通信用空間サイズ)の他に「リビルド機能の有無」問い合わせる。各記憶デバイス310〜340は、CPU120からの問い合わせに応じて、論理記憶空間サイズ、通信用空間サイズ及びリビルド機能の有無をCPU120に送信する。
このリビルド機能の有無とは、以降実施例1〜3に記載のリビルド処理方法に対応しているか否かを示すフラグであり、RAIDグループを構成する全ての記憶デバイス310〜340から、リビルド機能「有」の返答があった場合に本発明のリビルド処理が有効になる。そして、CPU120は、後述のRAID構成情報810を各記憶デバイス310〜340に送信する。
これにより、RAIDグループ内に一つでもリビルド機能が持たない記憶デバイスがある場合に、本実施例の機能をオフにして、通常通りストレージコントローラ100がリビルド処理を行うことができる。
図3に本実施例におけるVOL200とRAIDグループ210の関係を示す。ホスト20からはVOL200が見えており、本実施例では、ホストLBAは、16KB単位に管理するため、Data0、Data1、・・・は全て16KBのデータである。また、記憶デバイス310〜340の4台は、それぞれデバイス#を0、1、2、3とする。RAIDグループ210のデバイス#とデバイス内アドレスはホストLBAの値を用いて以下の計算によって一意に決めることができる。具体的には、デバイス#はホストLBAの値をRAIDグループのデバイス数4台で割った余りとなる。また、デバイス内アドレスは、ホストLBAの値をRAIDストライプ中のデータの個数3で割った値(端数切捨て)で求めることができる。ここで、RAIDストライプとは、Data0、Data1、Data2とData0〜2の16KBをビット毎にXOR演算したパリティデータとを一つにまとめた単位のことを指す。
次に具体例としてホスト20のライトデータをVOL200のホストLBA「0x0000_000E」に書き込む例を説明する。この場合、デバイス#は14÷4の余りで2、デバイス内アドレスは、14÷3で端数を切り捨てて4となり、RAIDグループのデバイス数とRAIDストライプ当りのデータ個数が分かれば、計算で一意に求めることが可能となる。
また、ライトデータを書き込む際、対応するRAIDストライプ内のパリティが更新される。Data14が更新される場合は、ライトデータによる更新前データ、更新後データ、更新前のParity4の3つのXOR演算により更新後のPairty4が生成される。
図4にPCIeバスのアドレスマップの一例を示す。このアドレスマップは、次のように作成される。まず、記憶デバイスの初期化時または、ストレージコントローラ100が新たに記憶デバイスを認識したときに、ストレージコントローラ100は各記憶デバイスにどのようなアドレス空間が設定されているかを問い合わせる。各記憶デバイスは、ストレージコントローラ100に、アドレス空間の範囲(デバイス内アドレス)と論理記憶空間及び通信用空間それぞれのサイズを応答する。ストレージコントローラ100は、その応答結果を用いて論理記憶空間上で記憶デバイスそれぞれを識別できるようにアドレスオフセットを設定してアドレスマップを作成する。そして、ストレージコントローラ100は、アドレスマップをPCIeのルートコンプレックス(ストレージインターフェイス140)とスイッチ390に設定する。例えば、スイッチ内のメモリにアドレスマップが格納される。これにより、複数の記憶デバイスを備えたストレージ装置において各記憶デバイスのアドレスを一意に識別することが可能になり、スイッチ390は対応するアドレスにパケットをルーティングすることが可能となる。
図4では、デバイス#0〜3の論理記憶空間のアドレスオフセットはそれぞれ「0x0000_0000」「0x1000_0000」「0x2000_0000」「0x3000_0000」、デバイス#0〜3の通信用空間のアドレスオフセットはそれぞれ「0x0FF0_0000」「0x1FF0_0000」「0x2FF0_0000」「0x3FF0_0000」が設定されている。ここで、通信用空間は、各記憶デバイス310〜340のプロセッサ415のレジスタやデータバッファ416の一部または全てをマッピングしている。この通信用空間のアドレスを用いることで、ストレージコントローラ100との制御情報のやり取り、他の記録デバイスからリードしたデータの格納などを通信することができる。
図5にストレージコントローラ100が各記憶デバイスにアクセスするために設定するRAID構成情報810を示す。RAID構成情報810は、ストレージ装置10のメモリ130に格納されている。
RAIDグループ#811は、ストレージ装置10内でRAIDグループを一意に識別するための情報である。RAIDレベル812は、そのRAIDグループのRAID制御の方式を示す。RAIDレベルは、例えば、RAID1、RAID5、RAID6、RAID10等である。RAID構成813は、そのRAIDグループにおけるRAIDストライプ内のデータの数とパリティの数を示す。例えば、1つのRAIDストライプに対して、3つの記憶デバイスがデータを格納し、1つの記憶デバイスがパリティを格納する場合、RAID構成は「3D1P」と表わされる。ストライプサイズ814は、RAIDストライプ内でのデータ及びパリティそれぞれ1つあたりのサイズである。デバイス#815は、RAIDグループ内でデバイスを一意に識別する情報である。デバイスオフセット816は、複数の記憶デバイスを1つの論理記憶空間として使用する場合において、その論理アドレス空間における各記憶デバイスのアドレスの開始位置を示す。デバイスサイズ817は記憶デバイスの論理記憶空間のサイズを示しており、デバイスオフセット816からデバイスサイズ817分のアドレス空間が、各記憶デバイス内のアクセス可能な論理記憶空間となる。
ストレージコントローラ100は前述のデバイス内アドレスだけでは、記憶デバイスを区別できないため、デバイス#毎にアドレスオフセットを設定し、アドレスオフセットにデバイス内アドレスを足した値(デバイスLBA)を用いることで、PCIeバスにつながった記憶デバイス310〜340の任意の記憶デバイスの記憶領域に一意にアクセスすることが可能となる。本発明では、初期化時、または新たにデバイスを認識したときに、同一RAIDグループにある記憶デバイスの情報を全て含めたRAID構成情報810とリード/ライトコマンドのやり取りをするのに必要な通信用空間情報をそのRAIDグループ内の全ての記憶デバイスに通知する。本実施例では、通信用空間情報とは、各記憶デバイスの通信用空間のアドレスである。これにより、各記憶デバイスは、RAIDグループ内の他の記憶デバイスにアクセスすることが可能となる。
また、RAID構成情報810は各記憶デバイスについてリビルド処理中かを示す情報を備えてもよい。
本実施例では、RAID構成情報810として、RAIDグループ#811、RAIDレベル812、RAID構成813、ストライプサイズ814、デバイス#、デバイスオフセット816、デバイスサイズ817の例を記載したが、この情報に限定されず、実施例1〜3に記述するリビルド機能を備えた記憶デバイスがリビルド処理をするために、他の記憶デバイスにデータまたはパリティの転送指示ができるような情報であれば良い。例えば、ストレージコントローラ100は、デバイスオフセット816とデバイスサイズ817の代わりに、デバイススタートアドレスとデバイスエンドアドレスを通知しても良いし、後述のバスにSASを利用した例で説明するが、デバイスを識別するデバイスアドレスとデバイスサイズを通知しても良い。本実施例では、デバイスオフセット816とデバイスサイズ817、デバイススタートアドレスとデバイスエンドアドレス、デバイスアドレスとデバイスサイズは、複数の記憶デバイスそれぞれの記憶領域を一意に識別する情報であり、記憶デバイス識別情報と呼ぶ。
次に図6〜9を用いて、記憶デバイスの構成について説明する。本実施例では、記憶デバイスに同一の機能を持った記憶デバイス310〜340を用いるため、記憶デバイス310を例にとり説明する。
図6は、記憶デバイス310の外観を示す。図6は、記憶デバイスがPCIeカードの形状で実装された際のイメージを示している。本図では、外観全体が記憶デバイスにあたり、デバイスコントローラ410を備える。デバイスコントローラ410には、ハードウェアロジック409がLSI(FPGAやASICの形態を含む)として実装され、RAM413も備えている。カードはこの他に、フラッシュメモリ(FM)421が実装されており、また、外部の装置とはカードエッジ408を通じて接続される。具体的にはPCIeコアがLSIに実装され、信号線がカードエッジ408に向けて配線されている。なお、カードエッジ408はコネクタ形状でも構わない。また、図には示さないが、同装置のRAM413の揮発を保護するためにバッテリまたは同等の役割を果たすスーパーキャパシタが搭載されることもある。
本実施形態では、記憶媒体はフラッシュメモリとするが、他の種類の不揮発性半導体メモリである相変化メモリ(PCM:Phase Change Memory)、磁気抵抗メモリ(MRAM:Magnetoresistive Random Access Memory)、抵抗変化型メモリ(ReRAM:Resistance Random Access Memory)、又は強誘電体メモリ(FeRAM:Ferroelectric Random Access Memory)等であってもよい。
図7は、記憶デバイス310の構成例である。
記憶デバイス310は、記憶媒体であるFM421と、デバイスコントローラ410とを有する。デバイスコントローラ410は、FM421と接続されており、FM421に対するデータのリード/ライト等のアクセスを制御する。
FM421は、複数(例えば32個)のFMチップ420で構成される。FM421は、例えばNAND型のFMである。各FMチップ420は、図8に示すように、複数のブロック(物理ブロック)を有し、各ブロックは、複数のページ(物理ページ)を有する。FM421では、ブロック単位でデータが消去され、ページ単位でデータがリード/ライトされる。本実施例では、ページ単位を16KBとして説明するが、ページは使用するFMチップ420により異なるため、そのサイズは限定されない。
デバイスコントローラ410は、RAM(Random Access Memory)413、リビルド処理部418、データバッファ416、I/Oインターフェイス411、FMインターフェイス417、プロセッサ415、及びそれらのデータ転送を中継するスイッチ414を有する。
RAM413は、例えばDRAM(Dynamic Random Access Memory)であり、主にFM管理情報を記憶する。FM管理情報は、例えば、一部のFMチップ420に格納されていて、その一部のFMチップ420から読み出されてRAM413に格納されてよい。なお、データバッファ416の役割の一部または全てをRAM413が有してもよい。ストレージコントローラ100から受け取ったRAID構成情報810は、このRAM413に格納される。
I/Oインターフェイス411は、バス180を介してストレージコントローラ100と接続され、ストレージコントローラ100内の構成要素と通信するデバイスである。
プロセッサ415は、RAM413に記憶されたFM管理情報を基にデバイスコントローラ410全体を制御する。また、プロセッサ415は、同一RAIDグループ内の他の記憶デバイスにリードを実行し、リビルド処理を行う。この処理の具体例は、後述する。
データバッファ416は、デバイスコントローラ410でのデータ転送処理途中のデータを一時的に格納する。
FMインターフェイス417は、複数(例えば8)のバスによってFMチップ420と接続する。各バスには、複数(例えば4)のFMチップ420が接続される。
リビルド処理部418は、XOR演算を行うハードウエア回路である。本実施例は、リビルド処理部418はハードウエア回路と説明したが、デバイスコントローラ410がリビルド処理の機能を備えていればよく、ハードウエアが行ってもプロセッサ415がプログラムを実行することで行ってもよい。
スイッチ414、I/Oインターフェイス411、プロセッサ415、データバッファ416、FMインターフェイス417及びリビルド処理部418は、ASICやFPGA(Field Programmable Gate Array)として、一つの半導体素子内で構成されてもよいし、複数の個別専用IC(Integrated Circuit)を相互に接続した構成であってもよい。
続いて、本実施例において記憶デバイス310がストレージコントローラ100に提供する論理記憶空間について説明する。論理記憶空間は、複数の論理領域で構成され、各論理領域には論理アドレスが対応付けられている。ストレージコントローラ100(CPU120)は、論理アドレスを指定したアクセスコマンドを記憶デバイス310に発行することにより、指定した論理アドレスに対応する論理領域のデータをリード/ライトできる。複数のFMチップ420により構成される物理記憶空間を構成する複数の物理領域の各々には、記憶デバイス310内部のみで用いる物理アドレスが対応付けられている。本実施例において、記憶デバイス310の物理領域の位置を表す物理アドレスを「PBA」(PBAは、Physical Block Addressの略)と呼び、記憶デバイス310の論理領域の位置を表す論理アドレスを「デバイスLBA」(LBAは、Logical Block Addressの略)と呼ぶ。PBAは、FMのページサイズである16KB単位の位置を表す。本実施例では、FMのページサイズとPBAの管理単位は同じ例を記載するが、異なっていても良い。記憶デバイス310は、PBAとデバイスLBAとの対応付けを例えば次のアドレス変換テーブルで管理する。
図9は、アドレス変換テーブル710の構成例を示す。
アドレス変換テーブル710は、記憶デバイス310内のRAM413内に格納されており、記憶デバイス310が提供する論理記憶空間の論理領域毎に、レコードを有する。各レコードは、デバイスLBA711、PBA712を有する。
デバイスLBA711は、記憶デバイス310が提供する論理記憶空間を所定サイズの論理領域に区切った論理領域の先頭アドレスを表す。本実施例では、前記論理領域サイズを16KBにした例を記載する。これは、FM210へのアクセスできる単位であるページ単位(本実施例では16KB)と同じとすることで、1対1で対応させることができるので、FM210へのアクセス制御が容易になる。
なお、この論理領域サイズは、記憶デバイス310が提供する論理記憶空間のサイズより小さいサイズであれば任意に決めても良い。
PBA712は、物理領域の位置を表すPBAである。前述したように、本実施例では、記憶デバイス310の物理記憶空間は、16KB毎に分割して管理される。図9の例では、デバイスLBA「0x0000_0000」にPBA「0x0000_0010」が対応付けられている。これにより、リードコマンドで指定されたデバイスLBAが「0x0000_0000」の場合、デバイスコントローラ410は、PBA「0x0000_0010」が表すページからデータをリードする。
なお、デバイスLBAにPBAが対応付けられていない場合、デバイスLBAに対応したPBA712のレコードは「未割当」が格納される。
「未割当」とは、そのLBAに対してデータが格納されていない状態を示す。つまり、LBAにPBAが割り当てられていない状態である。記憶デバイスが、例えばゼロデータがFMに書き込まれることによりフォーマットされている場合、その状態を「未割当」として管理してもよい。
また、例えばゼロデータがFMに書き込まれてフォーマットされている場合、LBAにゼロデータが格納されているPBAが割り当てられることになるため、割当済みの状態として管理してもよい。
図10を用いてストレージ装置10がホスト20からライト要求を受けた場合の動作フローを説明する。点線の矢印は、制御情報のやり取りを、実線の矢印は、データのやり取りを示している。
まず、ホスト20がストレージ装置10にライト要求を発行する。ライト要求にはライト先の論理ボリュームのIDとホストLBA「0x000_0000」とライトデータサイズ「48KB」の情報が含まれる。ライト要求を受けたストレージ装置10のCPU120は、メモリ130上にライトデータのサイズ分のメモリ領域を確保し、確保したメモリ領域のアドレス情報を含んだライトデータメモリ転送指示をホスト計算機20に行う。ライトデータメモリ転送指示受けたホスト計算機20は、指示されたメモリ領域にライトデータを転送し、データ転送が完了したら、CPU120にライトデータメモリ転送完了を通知する。ライトデータメモリ転送完了通知を受けたCPU120は、メモリからライトデータを読み出してパリティデータを作成し、ライト先のデバイス#とデバイス内アドレスを計算する。前記デバイス#とデバイス内アドレス情報をもとに対象の複数の記憶デバイス310〜340を決定してライトデータ記憶デバイス転送指示を発行する。本実施例では、図3のData0、Data1、Data2、Parity0を転送する指示をそれぞれ、記録デバイス310、記憶デバイス320、記憶デバイス330、記憶デバイス340に発行する。ライトデータ記憶デバイス転送指示には、それぞれData0、Data1、Data2、Parity0が格納されているメモリ130のアドレス、ライトデータまたはパリティデータが格納されるデバイス内アドレスが含まれる。
ライトデータ記憶デバイス転送指示を受け取った各記憶デバイス310〜340のデバイスコントローラ410は、指定されたメモリ130のアドレスに基づいてメモリ130からライトデータまたはパリティデータを読み出して、指定されたデバイス内アドレスの領域に保存する。保存が完了した記憶デバイスは、ライトデータ記憶デバイス転送完了をCPU120に通知する。発行した全てのライトデータ記憶デバイス転送完了通知を受け取ったCPU120は、ホストにライト要求完了を通知する。
図11を用いて、ストレージ装置10がホスト20からリード要求を受けた場合の動作フローを説明する。リード要求として、ホストLBA「0x0000_0000」、データサイズ「48KB」を読み出す例を記載する。
まず、ホスト20がストレージ装置10にリード要求を発行する。リード要求を受けたCPU120は、デバイス#とデバイス内アドレスを計算した結果を用いて、対象の記憶デバイスにリードデータメモリ転送指示を行う。リードデータメモリ転送指示には、リードデータを格納するメモリ130のアドレスが含まれる。
本実施例では、計算によりデバイス#0の「0x0000_0000」、デバイス#1の「0x0000_0000」、デバイス#2の「0x0000_0000」のデータを読み出す。
リードデータメモリ転送指示を受けた記憶デバイス310、320、330は、それぞれ指示されたデータを指示されたメモリ130のアドレスに書込みを実施し、書込みが終了したら、リードデータメモリ転送完了をCPU120に通知する。全てのリードデータメモリ転送完了通知を受け取ったら、ホスト20にメモリの領域情報を含んだリードデータホスト転送指示を行う。リードデータホスト転送指示には、リードデータが格納されているメモリ130の領域(アドレス)が含まれる。リードデータホスト転送指示を受け取ったホスト20は、対象のメモリ領域から、リードデータを読み出してホストのメモリ転送し、完了したら、リード要求完了をCPU120に通知する。通知を受けたCPU120は、対象のメモリ領域を開放して、リード要求の完了処理を行う。
本発明の実施例1として、図1における記憶デバイス320が故障して筺体から取り外されて記憶デバイス320を認識しなくなった状態から、新しい記憶デバイス350をストレージ装置100に接続したときのリビルド処理の動作フローを図12及び13を用いて説明する。
記憶デバイス350がPCIeバス180に接続されると、ストレージコントローラ100のCPU120に通知される。これにより、CPU120は、故障していた記憶デバイス320が新しい記憶デバイス350に交換されたことを認識する。CPU120は、記憶デバイス350のデバイス情報(例えば、論理記憶空間サイズと通信用空間サイズ)およびデバイスリビルド機能の有無を問い合わせる。そして、CPU120は、デバイス情報が故障した記憶デバイス320と同じで機能を持つことを確認する。ここで、ストレージコントローラ100は、記憶デバイス320と同じ機能を持たない場合は、管理計算機の画面やアラームで保守員に交換した記憶デバイスの機能が異なることを知らせることで、ストレージシステム10がエラー状態で動作することを防ぐことができる。その後、CPU120は、図9のCPIeバスのアドレスマップに登録する。本実施例では、故障した記憶デバイス320と同一のデバイス#を「1」、アドレスオフセットを「0x1000_0000」とする。
次に、RAID構成情報810を記憶デバイス350に通知して、リビルド処理開始指示を記憶デバイス350に発行する。本実施例では、図5の情報をRAID構成情報としたが、RAID構成が分かる情報であれば何でもよい。例えば、RAIDストライプ中のデータ数を初期テーブルとして記憶デバイスが決めておくとすれば、RAID構成813の情報を送らなくても良い。
このRAID構成情報を取得した、記憶デバイス350のプロセッサ415は、記憶デバイス350のデータバッファ416に対応する通信用空間のデバイスLBAを転送先に指定して、各記憶デバイス310、330、340に、リード対象デバイスLBAの情報を含むリードデータバッファ転送指示を発行する。これにより、記憶デバイス310、330,340のプロセッサ415は、記憶デバイス350上に通信用空間としてマッピングされているデータバッファ416にデータを転送することができる。リードデータバッファ転送指示に指示したデバイスLBAのPBAが未割当のところは、データが格納されていないため、データは返さずにリードデータバッファ転送完了通知のときに未割当であることを通知する。これにより、記憶デバイス350のアドレス変換テーブル710の未割当状態を復元することができる。RAIDストライプのデータのリードデータ転送完了通知が全て返ってくる毎にデータ復元処理を行い、復元したデータをFMに格納する。
プロセッサ415は、全てのデバイス内アドレスで繰り返し実行し、全てのデバイス内アドレスのリビルド処理が完了したら、プロセッサ415は、リビルド完了通知をCPU120にすることで、リビルド処理が完了する。
図13は、記憶デバイス350のリビルド処理における動作フローである。
記憶デバイス350がストレージ装置100に接続された後、記憶デバイス350はストレージコントローラ100からRAID構成情報810を受信する(ステップ1301)。プロセッサ415は、受信したRAID構成情報810をRAM413に格納する。
次にプロセッサ415は、リビルド開始指示を受信し(ステップ1302)、リビルド処理を開始する。リビルド開始指示には、リビルドの範囲(デバイス内アドレスの範囲)の指示が含まれてよいが、図13では記憶デバイス350の全範囲をリビルドするものとする。
プロセッサ415は、RAID構成情報810のRAIDレベル812及びRAID構成813を参照し、データ復元に必要なデータ/パリティを読み出すべきデバイス#を特定する。本実施例では、RAID5で3D1Pであるから、プロセッサ415は、デバイス#0(記憶デバイス310)、#2(記憶デバイス330)、#3(記憶デバイス340)それぞれからデータ/パリティを読み出す必要があると判断する。次にプロセッサ415は、デバイスLBAの先頭から順にデバイスLBAを選択し、選択されたデバイスLBAに対応するRAIDストライプの記憶デバイス310、330、340におけるデバイスLBA(リード対象デバイスLBA)を特定する。例えば、記憶デバイス350のデバイスLBAが「0x1000_0000」であれば、他の記憶デバイスのデバイスLBAとして、記憶デバイス310の「0x0000_0000」、記憶デバイス330の「0x2000_0000」、記憶デバイス340の「0x3000_0000」を特定する。また、データのサイズはストライプサイズ814より、全て「16KB」である。2つ目以降のRAIDストライプに対応するデバイスLBAついては、ストライプサイズ(16KB)分ずつシフトさせれば求めることができる。特定されたデバイスLBAがデータ及び/又はパリティをリードする対象のデバイスLBAとなる。
次に記憶デバイス350のプロセッサ415は、リードされたデータ及び/又はパリティの格納先となるデータバッファ416の領域をそれぞれ決め、各領域に対応する記憶デバイス350の通信用空間のデバイスLBAを特定する。そして、記憶デバイス350のプロセッサ415は、RIADグループ内の他の記憶デバイスそれぞれに対するリードデータバッファ転送指示を作成する。リードデータバッファ転送指示の送信先としてリード対象デバイスLBAが指定され、リード対象データの格納先として通信用空間のデバイスLBAが指定される。そして、プロセッサ415は、リードデータバッファ転送指示を各記憶デバイスへ送信する(ステップ1303)。
リードデータバッファ転送指示を受信した記憶デバイス310、330、340それぞれのプロセッサ415は、アドレス変換テーブル710を参照して指定されたデバイスLBAに対応するPBAを特定し、データ/パリティをFMから読み出し、指定された記憶デバイス350の通信用空間のデバイスLBAに対してデータ/パリティを送信し、リードデータバッファ転送完了通知を送信する。指定されたデバイスLBAに対応するデータ/パリティがFMに格納されていない場合、つまりアドレス変換テーブル710が「未割当」の状態の場合、記憶デバイス310、330、340のそれぞれは、データ/パリティを送信することなく、リードデータバッファ転送完了通知に「未割当」であるという情報を含めて記憶デバイス350に送信する。また、指定されたデバイスLBAに対応するデータ/パリティがアンコレクタブルエラーにより読み出せない場合、記憶デバイス310、330、340それぞれのデバイスコントローラ410はリードデータバッファ転送完了通知に「エラー」であるという情報を含めて記憶デバイス350に送信する。
プロセッサ415は、各リードデータバッファ転送指示に対する完了通知があったかを管理しており、定期的に他の記憶デバイスすべてからリードデータバッファ転送完了通知を受信したか判断する(ステップ1304)。
他の記憶デバイスすべてからリードデータバッファ転送完了通知を受信した場合(ステップ1304:Yes)はステップ1305に進み、受信していない場合(ステップ1304:No)は所定時間後に再度ステップ1304の判定を行う。
プロセッサ415は、受信したリードデータバッファ転送完了通知をチェックする(ステップ1305)。
データバッファに416にデータが格納されている場合、プロセッサ415は、データバッファ416からデータ及びパリティを読み出してリビルド処理部418にXOR演算を実行させ、データを復元する(ステップ1306)。続いて、プロセッサ415は、復元したデータをFMに格納し、格納先のPBAをアドレス変換テーブル710のデバイスLBAに対応付けて記録する(ステップ1307)。
リードデータバッファ転送完了通知が「未割当」の場合、プロセッサ415は、アドレス変換テーブル710のデバイスLBAに対応するPBA欄に「未割当」と記録する。
ステップ1307またはステップ1308の処理が完了すると、プロセッサ415は、どこまでリビルド処理を完了したかを示す情報(リビルド処理完了アドレス情報)を更新し、全ストライプについて処理が完了したかをチェックし、未完了であれば(ステップ1309:No)、ステップ1303に戻る。完了していれば(ステップ1309:Yes)、プロセッサ415は、リビルド開始指示の送信元に対して、リビルド完了通知を送信し(ステップ1310)、処理を終了する。
ステップ1305において、リードデータバッファ転送完了通知が「エラー」の場合、プロセッサ415は、リビルド開始指示の送信元に対して、リビルド不可であることを示すエラー通知を送信し、処理を終了する。本実施例のようにRAID5であれば、リードデータバッファ転送完了通知がエラーである場合、RAIDストライプ内に2つ以上のアンコレクタブルエラーが発生していることになり、データを復元できないためである。
本実施例ではRAID構成情報及びリビルド開始指示の送信元をストレージコントローラ100とするが、ホスト計算機20などの上位装置に直接接続されている場合は、その上位装置から情報及び指示を受信することになり、完了通知もその上位装置に送ることになる。
以上、実施例1のようにリビルド処理をすることで、ストレージコントローラ100へリビルド処理に使うデータが入力されることがないため、ストレージコントローラ100に負荷がかからない。このため、リビルド処理によるストレージコントローラ100の性能低下を防ぐことが可能となり、リビルド中のストレージ装置の性能が向上する。
次にリビルド処理中の記憶デバイスへのアクセスについて説明する。
通常、ストレージコントローラ100は、リビルド処理中の記憶デバイスにはアクセスしない。例えばリード処理の場合、ストレージコントローラ100のCPU120は、記憶デバイス350にリビルド開始指示を送信してからリビルド処理完了通知を受信するまでは、記憶デバイス310、記憶デバイス330、記憶デバイス340からリード対象のデバイスLBAと同一のRAIDストライプのデータ及びパリティを読み出してメモリ130に転送し、ストレージコントローラ100内でデータ復元処理をしてホスト20に復元したデータを転送する。
しかし、この場合、複数の記憶デバイスからのデータ及びパリティの読み出しと、データ復元処理によりホスト20へのレスポンスが遅くなるという課題がある。このため、本実施例では、データ復元が完了している領域については、CPU120はリビルド処理中の記憶デバイス350へアクセスする。
ここで、記憶デバイスがリビルド処理を実行する場合、ストレージコントローラ100は、リビルド処理の進捗状況を把握することができない。このため本実施例では、記憶デバイス350のプロセッサ415は、例えば先頭アドレスから順にリビルド処理を行っていくが、リビルド処理完了アドレス情報をストレージコントローラ100に通知する。もしホストから、そのホストLBAに対してリード要求があった場合、CPU120は、リビルド処理完了通知を受ける前に、記憶デバイス350にリードデータメモリ転送指示を発行することができる。
図14はリビルド処理中のLBAの状態を図示した例である。本実施例では、デバイス#1をリビルド処理の対象としているため、リビルド対象のLBAは0x1000_0000〜0x1FEF_FFFFとなる。図14は0x1000_0000から0x1600_0000までデータ復元処理が完了していることを示し、0x1600_0000から0x1FEF_FFFFの範囲はデータ復元処理が行われていないことを示す。記憶デバイス350のプロセッサ415は、1つのRAIDストライプのデータ復元が完了すると、RAM413にデータ復元処理が完了したアドレスを格納する。また、記憶デバイス350は、CPU120にリビルド処理完了アドレス0x1600_0000が通知する。CPU120は、受信した記憶デバイス350のリビルド処理完了アドレスをメモリ130に格納する。
プロセッサ415は、リビルド処理完了アドレスを、1つのRAIDストライプについてデータ復元が完了するたびに通知してもよいし、2つ以上のRAIDストライプについてデータ復元が完了した際に通知してもよい。また、ストレージコントローラ120が記憶デバイス350に対してリビルド処理完了アドレスを送信するよう要求を発行し、それに応じて記憶デバイス350のプロセッサ415がリビルド処理完了アドレスをストレージコントローラ100に送信してもよい。
図15を用いて、図14のリビルド処理中の状態のときに、ホストからリード要求があった場合についてのストレージコントローラの処理フローを説明する。
まず、CPU120は、ホスト20からリード要求を受信すると、ホスト20からのリード要求の対象となるデータが格納されている対象記憶デバイス#と対象LBAを計算により求める(S1500)。次に、CPU120は、対象デバイスがリビルド中かを判定する(S1501)。RAID構成情報810でリビルド中か管理されている場合は、CPU120は、メモリ130のRAID構成情報810を参照して対象記憶デバイスがリビルド中かを判断する。
もし、リビルド中でなければ、CPU120は、通常通り対象記憶デバイスにリードデータメモリ転送指示を発行する(S1504)。もしリビルド中である場合は、CPU120は、メモリ130に格納されている対象記憶デバイスのリビルド処理完了アドレスを参照し、対象LBAがリビルド完了しているかを判定する(S1502)。対象LBAがリビルド完了している場合は、CPU120は、対象デバイスにリードデータメモリ転送指示を発行し、リード要求の対象となるデータを取得する(S1504)。もし、対象LBAがリビルド完了していなければ、CPU120は、同一のRAIDストライプの対象LBAに対応する記憶デバイス#及びLBAを特定し、各記憶デバイスにリードデータメモリ転送指示を発行する。そして、CPU120は、各記憶デバイスからのリードデータをメモリ130に転送してリード要求の対象となるデータの復元を行う(S1503)。そしてCPU120は、ホスト20にリード要求の対象データを転送する(S1505)。
これにより、ストレージコントローラ100は、記憶デバイス350がリビルド中であっても、すでにデータ復元された領域であればリードデータを記憶デバイス350から読み出すことができるのでホストへのリードデータ転送のレスポンスが早くなるという利点がある。
図16に図14のリビルド処理中の状態のときに、ホスト20からライト要求があった場合についてのストレージコントローラ100の処理フローを説明する。なお、ライトデータは、書き込むデータがデータの時とパリティの時で処理フローが変わる。
具体的には、CPU120は、ホスト20からライト要求を受信すると、ホスト20からのライト要求から対象記憶デバイス#と対象LBAを計算により求める(S1610)。その後ライト要求のデータのライト対象記憶デバイスがリビルド中かを判定する(S1611)。S1611の判定結果がYesの場合、CPU120は、メモリ130に格納されている対象記憶デバイスのリビルド処理完了アドレスを参照し、対象LBAはリビルドが完了しているかを判定する(S1612)。
S1612の判定結果がNoの場合、CPU120、同一RAIDストライプの更新後のパリティデータを生成し、更新前のパリティデータが格納されている記憶デバイスにライトデータ記憶デバイス転送指示を発行して書き込む(S1613)。パリティデータが更新されていれば、その後のデータ復元処理において、更新後のデータが復元される。このため、ライト要求のデータを対象記憶デバイスに書き込む必要はない。
またS1612の判定結果がYesの場合、CPU120は、通常のライト処理と同様に同一RAIDストライプの更新後のパリティデータを生成し、ライトデータ記憶デバイス転送指示により書き込む。さらにCPU120は、対象記憶デバイスへライトライトデータ記憶デバイス転送指示を発行する(S1614)。
次にS1611の判定結果がNoの場合を説明する。S1611の判定結果がNoの場合は、CPU120は、パリティデータのライト対象記憶デバイスがリビルド中かを判定する(S1615)。S1615の判定結果がNoの場合は、S1614と同様に通常のライト処理を行う(S1618)。S1615の判定結果がYesの場合は、対象LBAのデータ復元が完了しているかを判定する(S1616)。S1616の判定結果がYesの場合は、上述したS1614の処理を行う。S1616の判定結果がNoの場合は、対象デバイスへライトデータ記憶デバイス転送指示を発行する(S1617)。パリティデータを格納している記憶デバイスがリビルド中で対象LBAがリビルド完了していない場合、ライトデータが更新されていれば、その後のデータ復元処理において、更新後のパリティが復元される。このため、パリティデータを対象記憶デバイスに書き込む必要はない。
以上のように、リビルド中にホスト20からライト要求が来た場合は、リビルド処理が完了していないときに、ライトデータまたは、パリティデータを書き込む必要がなくなる(後でリビルド処理をするときにリビルド処理して書き込む)ため、リビルド処理が完了していないLBAに対しては、ライトデータ記憶デバイス転送指示を発行する必要がなくなる。これにより、リビルド中の記憶デバイスへのコマンドの発行を削減できる。よって、リビルド中の記憶デバイスの負荷が増加することによる、リビルド処理時間の増大を抑制できる。
本実施例では、記憶デバイスのリビルド処理中はストレージコントローラ100がリード要求/ライト要求時の動作を変更する例(図15、図16)を説明した。しかし、図12において、記憶デバイスがリビルド完了通知をリビルド開始指示の後に直ぐ(例えば、1つ目のRAIDストライプのデータ復元処理の開始前)に、ストレージコントローラ100に返し、デバイスコントローラが図15、16の処理を行ってもよい。この場合、リビルド処理完了アドレスはデバイスコントローラ410内で管理されているので、デバイスコントローラ410は、図15、16と同様にリビルド処理が完了しているところと完了していないところで動作を分けることが可能となる。これにより、記憶デバイスのリビルド中もストレージコントローラはリビルドが完了しているものとして記憶デバイスにアクセスすることができ、ストレージコントローラの負荷を低減することができる。
また、本実施例では、デバイス内アドレスの全範囲のリビルド処理をする例を述べたが、記憶デバイスが、ストレージコントローラ100から、データが有効なところを示す情報(データ有効情報)を貰って、有効なデバイス内アドレスのみをリビルド処理するとしても良い。こうすることにより、余計なリードコマンドを他の記憶デバイスに発行する必要がなくなるため、さらに高速にリビルド処理を行うことが可能となる。データ有効情報の具体例としては、例えば、図9のデバイス内アドレスの管理単位毎に「1」「0」のフラグをまとめた情報(ビットマップ情報)を送るとしても良いし、有効データの先頭アドレスとサイズのセットを複数まとめた情報(有効範囲情報)を通知するとしても良い。
図17に記憶デバイス340を用いてI/Oインターフェイスのアクセス要求キューの例を示す。図17のようにデバイス間通信用アクセス要求キュー450とストレージコントローラ用アクセス要求キュー451を別にすることで、ストレージコントローラ100からのアクセス要求の優先度を上げて処理することが可能となり、他の記憶デバイスがリビルド処理中でリード要求をたくさん発行していた場合でもホストからのライト要求またはリード要求の処理速度を落とすことなく実現可能となる。
本発明の実施例2として、記憶デバイス内でFMからのリードデータがアンコレクタブルエラーで正常に読み出すことができなかったときのリビルド処理の動作について説明する。
従来は、記憶デバイス内でFMからのリードデータがアンコレクタブルエラーであれば、記憶デバイスは、ストレージコントローラ100に対してアンコレクタブルエラーであることを通知し、ストレージコントローラ100がRAIDグループ内の他の記憶デバイスからデータ/パリティを読み出してアンコレクタブルエラーとなったデータを復元していた。本実施例では、記憶デバイスがアンコレクタブルエラーであることをストレージコントローラ100に報告することなく、記憶デバイスが記憶デバイス間での通信によりデータを復元する。これにより、ストレージコントローラの負荷が低減されとストレージコントローラと記憶デバイス間の通信回数が削減される。
図18は、記憶デバイスにおいてアンコレクタブルエラーが発生した場合のリビルド処理の動作フローを示す。
デバイスコントローラ410が、リードデータメモリ転送指示を受信する(ステップ1801)。リード要求の送信元は本実施例ではストレージコントローラ100とするが、ホスト計算機20などの上位装置に直接接続されている場合は、その上位装置からリードデータメモリ転送指示を受信することになる。例えば、記憶デバイス320がリードデータメモリ転送指示(デバイスLBA「0x1000_0003」、転送サイズ「16KB」)を受信したとして、以下の処理を説明する。
デバイスコントローラ410は、指示されたデバイスLBAに対応するPBAを特定し、FMからデータを読み出す(ステップ1802)。次にデバイスコントローラ410は、読み出したデータのエラーチェックを行い、アンコレクタブルエラーが発生しているか判定する(ステップ1803)。具体的には、デバイスコントローラ410のFMインターフェイス417はエラーチェック機能を持っており、エラーチェック機能でリードデータが正常に読み出すことができているかを判定する。S1803の判定結果がYesの場合、FMインターフェイス417はプロセッサ415にリードエラーを通知する。リードエラー通知を受けたプロセッサ415は、初期化時にストレージコントローラ100から設定された図5のRAID構成情報を元に、対象データのRAIDストライプを特定する。この例では、図3のデバイス内アドレス「0x000_0003」のRAIDストライプのデータが対象となる。よって、プロセッサ415は、デバイスLBA「0x0000_0003」、「0x2000_0003」、「0x3000_0003」、サイズは全て「16KB」でリードデータバッファ転送指示を送信する(ステップ1804)。プロセッサ415は全てのリードデータバッファ転送完了通知が帰ってきたら、リビルド処理(3つのリードデータの各ビットのXORを取る処理)を行ってデータを復元する(ステップ1806)。復元したデータをストレージコントローラ100に返却する(ステップ1807)。
これにより、ストレージコントローラ100に一切負荷を与えずに(ストレージコントローラ100が気づくことなく)アンコレクタブルエラーを回避することが可能となる。
さらに一度リビルド処理したデータは、デバイスLBA「0x1000_0003」にライト要求があったものとして、FMに書き込みアドレス変換テーブル710を更新する(ステップ1808)。これにより、次回同一デバイスLBAにリード要求がきたときに、データの復元処理をしなくてよくなる。ステップ1807とステップ1808は並行して実行してもよいし、順番が逆でもよい。
S1803の判定結果がNoの場合、プロセッサ415は、FMから読み出したデータをストレージコントローラ100に応答する(S1809)。
以上のように、リードデータメモリ転送指示の対象データにアンコレクタブルエラーが発生した場合、記憶デバイスがストレージコントローラにアンコレクタブルエラーの発生を通知する必要がない。よって、アンコレクタブルエラーが発生した場合も、ストレージコントローラの負荷が低減され、ストレージコントローラと記憶デバイス間の通信回数が削減される。
また、アンコレクタブルエラーをリビルド処理してデータを返却した場合は、コンプリションにアンコレクタブルエラーをリビルド処理したリードデータであることを含めて通知しても良い。その場合は、ストレージコントローラ100はアンコレクタブルエラーが発生したことを認識できる。アンコレクタブルエラーが何度も発生する記憶デバイスは、記憶デバイスそのものが故障する可能性が高い。このため、例えば、ストレージコントローラ100は、記憶デバイス毎にアンコレクタブルエラーの発生回数を管理し、アンコレクタブルエラーが所定の回数以上あった記憶デバイスについては、ストレージ管理者が管理する管理計算機に警告を通知し、管理計算機の画面に記憶デバイスの交換を勧めるメッセージを表示する。これにより、ストレージ管理者は早期に記憶デバイスの故障の可能性を知ることができ、故障する前に記憶デバイスの交換ができるため、計画的な保守が容易になる。
本発明の実施例3として、RAID1のRAID構成のときのリビルド処理の動作について説明する。
図19は、本実施例におけるVOL200とRAIDグループ211の関係を示す。本例では、記憶デバイス360と記憶デバイス370の2台でRAIDグループ211を構築している。ホスト20からホストLBA「0x0000_0003」にデータサイズ「16KB」のライト要求があった場合、記憶デバイス360、370のデバイス内アドレス「0x000_0003」に同一のデータが書き込まれる。
ここで、記憶デバイス370が故障して、新規記憶デバイスをPCIeバス180に接続した場合、実施例1と同様にストレージコントローラ100は新規記憶デバイスにRAID構成情報を通知して、リビルド処理開始指示をする。すると、新規記憶デバイスは同一のRAIDグループに保存されているデバイスLBAに対してリードデータバッファ転送指示を出して、リードしたリードデータをFMに格納することでリビルド処理が完了する。よって、実施例1と同一にストレージコントローラ100に一切負荷を与えることなく、高速にリビルド処理することができる。
実施例3では、リビルド処理の例を説明したが、コピー処理に応用可能である。例えば、リビルド構成情報の代わりにコピー情報として、アドレスとサイズなどを指定して、デバイスにコピー処理開始指示をするとストレージコントローラ100に一切負荷を与えずにコピー処理が可能となる。また、実施例1と同様にデバイス間通信用キューとストレージコントローラ用キューを設けておき、デバイス間通信用キューに要求を積むことで、ホストからのライト要求、リード要求に影響を与えることなくコピー処理を実現可能である。
以上の実施例1〜2の説明はRAID5でデータを格納する例で説明したが、RAID1、RAID6、RAID10、RAID50など、1つまたは複数の記憶デバイスが故障したときに修復可能なデータ格納形式であれば、RAID構成に特に制限を設けない。リビルド処理を行いたい記憶デバイスにRAID構成情報とリビルド処理開始指示をすることで、記憶デバイスでRAID構成に基づいてリビルド処理をすることができる。
また、4台の記憶デバイスの例を説明したが、記憶デバイスの台数は、2台以上で構成されていれば台数に限定はない。
また、本実施例では、PCIeバス180で記憶デバイスと通信する例を記載したが、これに限定されない。例えば、PCIeバス180にSASやInfiniBandを用いても良い。例えば、PCIeバスの変わりにSASを用いる場合の例を説明する。図7に記載のI/Oインターフェイス411がイニシエータとターゲット機能を切り替える機能を備えたSASコントローラとなる。図12を用いて、SASの場合の動作を説明する。リビルド対象の記憶デバイス350は、ストレージコントローラ100のCPU120から、RAID構成情報810と共にリビルド開始指示を受け付けたら、SASコントローラの機能をターゲットからイニシエータに変更する。その後、各記憶デバイス310〜340からデータ/パリティをリードして、リビルド処理を行う。リビルド処理が完了したらストレージコントローラ100にリビルド完了通知すると共にSASコントローラをイニシエータからターゲット機能に切り替える。ここで、SASの場合は、PCIeとは異なり、イニシエータとターゲットでコネクションを結んでから通信を行う方式のため、RAID構成情報810は、デバイスオフセット816の代わりにデバイスアドレスを用いる。このデバイスアドレスを用いて、特定の記憶デバイスとコネクションを結んだあとにデバイス内アドレスを用いてデータの通信を行う。以上のようにSASの場合でもPCIeと同様にリビルド処理を行うことが可能となる。
また、本実施例ではストレージコントローラからの指示でリビルド処理を行う例を記載したが、サーバ自体に記憶デバイス310〜340を挿して、サーバ上のプログラムでストレージコントローラと同等の処理を行っても良い。
また、本実施例では、バス構成として記憶装置のスイッチ390が一つの例を説明したが、スイッチ390が多段で接続される構成でも、ホストを介さないでデータ通信ができるバス構成であれば同一バス構成と呼んで良い。
10 ストレージ装置
20 ホスト計算機
100 ストレージコントローラ
120 CPU
130 メモリ
310 記憶デバイス
320 記憶デバイス
330 記憶デバイス
340 記憶デバイス

Claims (20)

  1. RAIDグループを構成し、同一バスに接続され、相互に通信を行う複数の記憶デバイスを備え、
    前記複数の記憶デバイスのそれぞれは、デバイスコントローラと、データを格納する記憶媒体と、を有し、
    前記複数の記憶デバイスには、RAIDストライプに含まれる、複数のデータ及び前記複数のデータに基づいて生成されるパリティのそれぞれが格納され、
    前記RAIDグループに含まれる第一記憶デバイスの第一デバイスコントローラは、
    前記RAIDグループに含まれる前記第一記憶デバイス以外の複数の記憶デバイスに前記RAIDストライプに含まれる前記複数のデータ及び/又は前記パリティの転送指示を送信し、転送された前記複数のデータ及び前記パリティに基づいて前記RAIDストライプの前記第一記憶デバイスに対応するデータ又はパリティを復元する
    ことを特徴とするストレージ装置。
  2. 前記複数の記憶デバイスそれぞれのデバイスコントローラは、
    RAID構成情報を受信し、
    前記RAID構成情報は、前記RAIDグループのRAIDレベル、前記RAIDストライプに含まれるデータの数及びパリティの数、前記RAIDストライプに含まれるデータ及びパリティの1つあたりのサイズ並びに前記複数の記憶デバイスそれぞれの記憶領域を一意に識別する記憶デバイス識別情報を含む
    ことを特徴とする請求項1に記載のストレージ装置。
  3. 前記第一デバイスコントローラは、
    前記RAID構成情報に基づいて前記転送指示の送信先の複数の記憶デバイスを特定し、前記転送指示に前記特定した複数の記憶デバイスの転送対象データが格納されている範囲を指定する情報を含める
    ことを特徴とする請求項2に記載のストレージ装置。
  4. 前記第一デバイスコントローラは、
    前記第一記憶デバイスのデータを復元する指示であるリビルド指示の受信に応じて、前記RAIDグループに含まれる前記第一記憶デバイス以外の複数の記憶デバイスに前記転送指示を送信する
    ことを特徴とする請求項3に記載のストレージ装置。
  5. 前記第一デバイスコントローラは、
    前記記憶媒体からデータを読み出し、前記読み出したデータにアンコレクタブルエラーが発生している場合、前記複数の記憶デバイスに対して、前記アンコレクタブルエラーが発生したデータに対応するRAIDストライプに含まれる前記複数のデータ及び/又は前記パリティの転送指示を送信し、転送された前記複数のデータ及び前記パリティに基づいて前記アンコレクタブルエラーが発生したデータを復元する
    ことを特徴とする請求項2に記載のストレージ装置。
  6. 前記第一デバイスコントローラは、前記復元したデータを前記記憶媒体に格納する
    ことを特徴とする請求項5に記載のストレージ装置。
  7. 前記複数の記憶デバイスのそれぞれの前記デバイスコントローラは、データ転送指示に応じて、前記記憶媒体に対するデータのリード及びライトを制御する
    ことを特徴とする請求項1に記載のストレージ装置。
  8. それぞれがデバイスコントローラと、データを格納する記憶媒体と、を有し、相互に通信を行う複数の記憶デバイスと、
    前記複数の記憶デバイスとバスで接続され、前記複数の記憶デバイスをRAIDグループとして制御するストレージコントローラと、
    を備え、
    前記複数の記憶デバイスには、RAIDストライプに含まれる、複数のデータ及び前記複数のデータに基づいて生成されるパリティのそれぞれが格納され、
    前記RAIDグループに含まれる第一記憶デバイスの第一デバイスコントローラは、
    前記RAIDグループに含まれる前記第一記憶デバイス以外の複数の記憶デバイスに前記RAIDストライプに含まれる前記複数のデータ及び/又は前記パリティの転送指示を送信し、転送された前記複数のデータ及び前記パリティに基づいて前記RAIDストライプの前記第一記憶デバイスに対応するデータ又はパリティを復元する
    ことを特徴とするストレージ装置。
  9. 前記ストレージコントローラは、第一記憶デバイスが接続されたことに応じて、
    前記第一記憶デバイスに、前記RAIDグループのRAIDレベル、前記RAIDストライプに含まれるデータの数及びパリティの数、前記RAIDストライプに含まれるデータ及びパリティの1つあたりのサイズ並びに前記複数の記憶デバイスそれぞれの記憶領域を一意に識別する記憶デバイス識別情報を含むRAID構成情報を送信する
    ことを特徴とする請求項8に記載のストレージ装置。
  10. 前記ストレージコントローラは、第一記憶デバイスに対してリードデータ転送指示を送信し、
    前記第一記憶デバイスの第一デバイスコントローラは、
    前記リードデータ転送指示によって指定されたデータを前記記憶媒体から読み出し、
    前記読み出したデータにアンコレクタブルエラーが発生している場合、前記複数の記憶デバイスに対して、前記アンコレクタブルエラーが発生したデータに対応するRAIDストライプに含まれる前記複数のデータ及び/又は前記パリティの転送指示を送信し、転送された前記複数のデータ及び前記パリティに基づいて前記アンコレクタブルエラーが発生したデータを復元し、前記復元したデータ及び前記アンコレクタブルエラーの発生を示すエラー情報を前記ストレージコントローラに転送する
    ことを特徴とする請求項9に記載のストレージ装置。
  11. 前記ストレージコントローラは、
    前記エラー情報に基づいて前記第一記憶デバイスのアンコレクタブルエラーの発生回数を管理し、
    前記アンコレクタブルエラーの発生回数が所定値以上となった場合、前記ストレージコントローラに接続されている計算機に警告を通知する
    ことを特徴とする請求項10に記載のストレージ装置。
  12. 前記ストレージコントローラは、さらに計算機に接続され、
    前記第一記憶デバイスに、前記第一記憶デバイスのデータを復元する指示であるリビルド指示を送信し、
    前記第一デバイスコントローラは、前記リビルド指示を受信すると、RAIDストライプ毎にデータを復元し、前記データの復元が完了した前記RAIDストライプに対応するデバイスの論理記憶空間(LBA)であるリビルド完了デバイスLBAを前記ストレージコントローラに送信し、
    前記ストレージコントローラは、
    前記計算機からリード要求を受信し、前記リード要求の対象LBAが前記第一記憶デバイスに対応する場合、前記リビルド完了デバイスLBAに基づいて、前記リード要求の対象LBAのデータ復元がされているかを判定し、
    前記リード要求の対象LBAのデータが復元されている場合、前記第一記憶デバイスにリードデータ転送指示を送信する
    ことを特徴とする請求項9に記載のストレージ装置。
  13. 前記ストレージコントローラは、
    前記計算機からライト要求を受信し、前記ライト要求の対象LBAが前記第一記憶デバイスに対応する場合、前記リビルド完了デバイスLBAに基づいて、前記ライト要求の対象LBAのデータ復元がされているかを判定し、
    前記ライト要求の対象LBAのデータが復元されていない場合、前記ライト要求の対象LBAを含むRAIDストライプの更新後パリティを生成し、
    前記更新後パリティを更新前パリティが格納されている第二記憶デバイスに書き込む
    ことを特徴とする請求項12に記載のストレージ装置。
  14. 前記複数の記憶デバイスのそれぞれの前記デバイスコントローラは、前記ストレージコントローラからのデータ転送指示に応じて、前記記憶媒体に対するデータのリード及びライトを制御する
    ことを特徴とする請求項8に記載のストレージ装置。
  15. デバイスコントローラと、データを格納する記憶媒体と、を有する記憶デバイスであって、
    前記デバイスコントローラは、
    複数の他の記憶デバイスと通信を行うように接続され、前記記憶デバイス及び前記複数の他の記憶デバイスがRAIDグループとして制御されている場合に、前記記憶媒体に、RAIDストライプに含まれる、複数のデータ及び前記複数のデータに基づいて生成されるパリティのうち1つを格納し、
    前記複数の他の記憶デバイスに対して、前記RAIDストライプに含まれる前記複数のデータ及び/又は前記パリティの転送指示を送信し、転送された前記複数のデータ及び前記パリティに基づいて前記RAIDストライプの前記記憶デバイスに対応するデータ又はパリティを復元する
    ことを特徴とする記憶デバイス。
  16. 前記デバイスコントローラは、
    RAID構成情報を受信し、
    前記RAID構成情報は、前記RAIDグループのRAIDレベル、前記RAIDストライプに含まれるデータの数及びパリティの数、前記RAIDストライプに含まれるデータ及びパリティの1つあたりのサイズ並びに前記複数の記憶デバイスそれぞれの記憶領域を一意に識別する記憶デバイス識別情報を含む
    ことを特徴とする請求項15に記載の記憶デバイス。
  17. 前記デバイスコントローラは、
    前記RAID構成情報に基づいて前記転送指示の送信先の複数の記憶デバイスを特定し、前記転送指示に前記特定した複数の記憶デバイスの転送対象データが格納されている範囲を指定する情報を含める
    ことを特徴とする請求項16に記載の記憶デバイス。
  18. 前記デバイスコントローラは、
    前記記憶デバイスのデータを復元する指示であるリビルド指示の受信に応じて、前記RAIDグループに含まれる前記他の複数の記憶デバイスに前記転送指示を送信する
    ことを特徴とする請求項17に記載の記憶デバイス。
  19. 前記デバイスコントローラは、
    前記記憶媒体からデータを読み出し、前記読み出したデータにアンコレクタブルエラーが発生している場合、前記他の複数の記憶デバイスに対して、前記アンコレクタブルエラーが発生したデータに対応するRAIDストライプに含まれる前記複数のデータ及び/又は前記パリティの転送指示を送信し、転送された前記複数のデータ及び前記パリティに基づいて前記アンコレクタブルエラーが発生したデータを復元する
    ことを特徴とする請求項17に記載の記憶デバイス。
  20. 前記記憶媒体は、フラッシュメモリチップであり、
    前記複数の記憶デバイスのそれぞれの前記デバイスコントローラは、前記フラッシュメモリチップに対するデータのリード及びライトを制御する
    ことを特徴とする請求項15に記載の記憶デバイス。
JP2017501618A 2015-02-25 2015-02-25 ストレージ装置及び記憶デバイス Active JP6228347B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/055312 WO2016135872A1 (ja) 2015-02-25 2015-02-25 ストレージ装置及び記憶デバイス

Publications (2)

Publication Number Publication Date
JPWO2016135872A1 true JPWO2016135872A1 (ja) 2017-08-03
JP6228347B2 JP6228347B2 (ja) 2017-11-08

Family

ID=56788041

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017501618A Active JP6228347B2 (ja) 2015-02-25 2015-02-25 ストレージ装置及び記憶デバイス

Country Status (3)

Country Link
US (1) US10725865B2 (ja)
JP (1) JP6228347B2 (ja)
WO (1) WO2016135872A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157112B2 (en) * 2015-09-03 2018-12-18 Toshiba Memory Corporation Storage device
KR102631351B1 (ko) * 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
US10459795B2 (en) * 2017-01-19 2019-10-29 International Business Machines Corporation RAID systems and methods for improved data recovery performance
JP2018163450A (ja) * 2017-03-24 2018-10-18 日本電気株式会社 データ記憶制御装置、データ記憶システム、データ記憶方法およびプログラム
US10725859B2 (en) 2017-05-25 2020-07-28 Western Digital Technologies, Inc. Parity generation offload using peer-to-peer data transfers in data storage system
US10761929B2 (en) * 2017-05-25 2020-09-01 Western Digital Technologies, Inc. Data storage drive rebuild with parity generation offload using peer-to-peer data transfers
US20190042133A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Technologies for providing adaptive data access request routing in a distributed storage system
US10585699B2 (en) * 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10649843B2 (en) * 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10901848B2 (en) * 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US11182258B2 (en) 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
US11435949B2 (en) * 2019-02-15 2022-09-06 Canon Kabushiki Kaisha Information processing apparatus and method for calculating a data size estimated to be written to a storage based on a write data size
GB201905209D0 (en) * 2019-04-12 2019-05-29 Vaion Ltd Method of strong items of data
JP2020177501A (ja) * 2019-04-19 2020-10-29 株式会社日立製作所 ストレージシステム、そのドライブ筐体、およびパリティ演算方法。
US11645013B2 (en) * 2019-11-25 2023-05-09 International Business Machines Corporation Managing dispersed storage network background tasks
CN113126887A (zh) * 2020-01-15 2021-07-16 伊姆西Ip控股有限责任公司 用于重建盘阵列的方法、电子设备和计算机程序产品
US11500719B1 (en) * 2020-03-31 2022-11-15 Amazon Technologies, Inc. Reliability improvements for memory technologies
US20210349780A1 (en) * 2020-05-11 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
KR102403477B1 (ko) 2021-11-12 2022-05-30 삼성전자주식회사 스토리지 장치와 이를 포함하는 호스트-스토리지 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009130848A1 (ja) * 2008-04-25 2009-10-29 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US20100115183A1 (en) * 2008-10-30 2010-05-06 Hitachi, Ltd. Storage Apparatus and Method of Managing Data Storage Area
JP2010224803A (ja) * 2009-03-23 2010-10-07 Nec Corp ディスクアレイ装置
US20130145209A1 (en) * 2011-12-05 2013-06-06 Buffalo Inc. Disk system, data retaining device, and disk device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4817783B2 (ja) 2005-09-30 2011-11-16 富士通株式会社 Raidシステム及びそのリビルド/コピーバック処理方法
WO2008070191A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
JP2009037304A (ja) * 2007-07-31 2009-02-19 Hitachi Ltd Raidレベルを変更する機能を有したストレージシステム
JP2009098996A (ja) * 2007-10-18 2009-05-07 Hitachi Ltd ストレージシステム
JP2009187139A (ja) * 2008-02-04 2009-08-20 Hitachi Ltd ストレージシステム
JP2009294901A (ja) * 2008-06-05 2009-12-17 Hitachi Ltd ストレージ装置及び障害復旧方法
WO2011052005A1 (en) * 2009-10-27 2011-05-05 Hitachi, Ltd. Storage controller and storage control method for dynamically assigning partial areas of pool area as data storage areas
US8832371B2 (en) * 2011-04-04 2014-09-09 Hitachi, Ltd. Storage system with multiple flash memory packages and data control method therefor
JP5887757B2 (ja) * 2011-08-17 2016-03-16 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP5776436B2 (ja) * 2011-08-22 2015-09-09 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法
WO2013076763A1 (en) * 2011-11-22 2013-05-30 Hitachi, Ltd. Storage system and control method of storage system
US8874829B2 (en) * 2012-03-30 2014-10-28 Hitachi, Ltd. Storage system and storage system control method
US8984374B2 (en) * 2012-04-27 2015-03-17 Hitachi, Ltd. Storage system and storage control apparatus
WO2014016860A1 (en) * 2012-07-23 2014-01-30 Hitachi, Ltd. Raid storage system and rebuild process
JP6212934B2 (ja) * 2013-05-07 2017-10-18 富士通株式会社 ストレージシステム、情報処理装置の制御プログラム、およびストレージシステムの制御方法
US10528272B2 (en) * 2015-02-20 2020-01-07 International Business Machines Corporation RAID array systems and operations using mapping information

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009130848A1 (ja) * 2008-04-25 2009-10-29 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US20090271564A1 (en) * 2008-04-25 2009-10-29 Hitachi, Ltd. Storage system
US20100115183A1 (en) * 2008-10-30 2010-05-06 Hitachi, Ltd. Storage Apparatus and Method of Managing Data Storage Area
JP2010108246A (ja) * 2008-10-30 2010-05-13 Hitachi Ltd 記憶装置及びデータ格納領域管理方法
JP2010224803A (ja) * 2009-03-23 2010-10-07 Nec Corp ディスクアレイ装置
US20130145209A1 (en) * 2011-12-05 2013-06-06 Buffalo Inc. Disk system, data retaining device, and disk device
JP2013117922A (ja) * 2011-12-05 2013-06-13 Buffalo Inc ディスクシステム、データ保持装置、及びディスクデバイス

Also Published As

Publication number Publication date
US20180018231A1 (en) 2018-01-18
US10725865B2 (en) 2020-07-28
JP6228347B2 (ja) 2017-11-08
WO2016135872A1 (ja) 2016-09-01

Similar Documents

Publication Publication Date Title
JP6228347B2 (ja) ストレージ装置及び記憶デバイス
US9684591B2 (en) Storage system and storage apparatus
US8176247B2 (en) Method and system for protecting against multiple failures in a RAID system
US9778986B2 (en) Storage system
JP4814617B2 (ja) ストレージシステム
US10102070B2 (en) Information processing system, storage apparatus and storage device
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US9292228B2 (en) Selective raid protection for cache memory
JP2010508604A (ja) ストレージシステムにおける書き込み処理を最適化するためのシステム、及び方法
US10102060B2 (en) Storage apparatus and data control method of storing data with an error correction code
US9223655B2 (en) Storage system and method for controlling storage system
WO2014190501A1 (zh) 数据恢复方法、存储设备和存储系统
CN110609659A (zh) 用于执行读取命令的NVMeoF RAID实现方法
US20130145209A1 (en) Disk system, data retaining device, and disk device
KR20100132413A (ko) 저장 어레이 어시스트 아키텍처
WO2014094250A1 (zh) 数据处理方法和设备
US10915405B2 (en) Methods for handling storage element failures to reduce storage device failure rates and devices thereof
US8880939B2 (en) Storage subsystem and method for recovering data in storage subsystem
EP2859553A1 (en) Memory system management
US20170097795A1 (en) Storage system
JP4936088B2 (ja) ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法
WO2016006108A1 (ja) ストレージおよびその制御方法
US11467930B2 (en) Distributed failover of a back-end storage director

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171012

R150 Certificate of patent or registration of utility model

Ref document number: 6228347

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150