JPWO2018051505A1 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JPWO2018051505A1
JPWO2018051505A1 JP2018539482A JP2018539482A JPWO2018051505A1 JP WO2018051505 A1 JPWO2018051505 A1 JP WO2018051505A1 JP 2018539482 A JP2018539482 A JP 2018539482A JP 2018539482 A JP2018539482 A JP 2018539482A JP WO2018051505 A1 JPWO2018051505 A1 JP WO2018051505A1
Authority
JP
Japan
Prior art keywords
address
parity
data
storage device
new
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
JP2018539482A
Other languages
English (en)
Other versions
JP6652647B2 (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 JPWO2018051505A1 publication Critical patent/JPWO2018051505A1/ja
Application granted granted Critical
Publication of JP6652647B2 publication Critical patent/JP6652647B2/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/0658Controller construction 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/0673Single storage device
    • 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/0688Non-volatile semiconductor memory arrays

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)
  • Detection And Correction Of Errors (AREA)

Abstract

コントローラは、ホストからライト要求を受信し、ライト要求が示す指定アドレスに対応する中間パリティ生成コマンドを、複数の記憶デバイスにおける第1記憶デバイスに、送信する。中間パリティ生成コマンドは、上記指定アドレスの新データと前記新データに更新される前データとから、中間パリティを生成することを指示する。中間パリティ生成コマンドは、新データを格納しているメモリ領域の第1アドレスと、中間パリティを格納するためのメモリ領域の第2アドレスとを含む。第1記憶デバイスは、中間パリティ生成コマンドを受信し、第1アドレスから新データを取得し、新データと、第1記憶デバイスに記憶されている前データと、から中間パリティを生成し、中間パリティを第2アドレスに格納する。

Description

本発明は、ストレージシステムに関する。
本開示の背景技術として、例えば、国際公開第2015/145724号が知られている。国際公開第2015/145724号は、例えば要約において、以下の構成を開示している。
ストレージシステムは記憶装置のストライプ内の複数の不連続領域に対してライトデータを格納する時、当該複数の不連続領域を特定する情報を含んだ新データ送信コマンドとライトデータを記憶装置に送信した後、記憶装置から複数のライトデータと当該複数のライトデータの更新前データから生成される、中間パリティを受信し、パリティを格納する記憶装置に中間パリティ送信コマンドと中間パリティとを送信する。その後複数の記憶装置に、複数の不連続領域を特定する情報を含んだデータ確定コマンドを送信すると、パリティを格納する記憶装置は、受信した中間パリティと、当該中間パリティに対応する更新前パリティとから更新後パリティを生成して、更新後パリティを記憶媒体に格納する。
国際公開第2015/145724号
上記ストレージシステムにおいて、ストレージコントローラと複数記憶装置とは、例えばSCSI規格で接続され、パリティ更新の際に以下のステップが実行される。(1)コントローラから記憶装置1へ新データ送信コマンドを発行(新データはコントローラから記憶装置1へ送信される)。(2)記憶装置1から新データ送信コマンドに対する完了応答(完了コマンド)を発行。(3)記憶装置1からコントローラへ中間パリティ送信コマンドを発行(中間パリティは記憶装置1からコントローラへ送信される)。
(4)コントローラから中間パリティ送信コマンドに対する完了応答(完了コマンド)を発行。(5)コントローラから記憶装置2へ中間パリティ送信コマンドを発行。(6)記憶装置2から中間パリティ送信コマンドに対する完了応答(完了コマンド)を発行。(7)記憶装置2からコントローラへの新パリティ生成完了応答(完了コマンド)を発行。
上記ストレージシステムは、ホストからのデータライトに伴うパリティ更新の度に、ステップ(1)〜(7)のコマンドを発行する。コマンド発行数が多いと、プロセッサの負荷となる。したがって、パリティ更新の際のプロセッサの負荷を抑制し、ストレージシステムの処理性能を向上するために、発行コマンド数の削減が望まれる。
本発明の代表的な一例は、メモリ領域を含む、コントローラと、それぞれが記憶媒体を含む複数の記憶デバイスと、を含むストレージシステムであって、前記コントローラは、ホストからライト要求を受信し、前記ライト要求が示す指定アドレスに対応する中間パリティ生成コマンドを、前記複数の記憶デバイスにおける第1記憶デバイスに、送信し、前記中間パリティ生成コマンドは、前記指定アドレスの新データと前記新データに更新される前データとから、中間パリティを生成することを指示し、前記中間パリティ生成コマンドは、前記新データを格納している前記キャッシュ領域の第1アドレスと、前記中間パリティを格納するための前記キャッシュ領域の第2アドレスとを含み、前記第1記憶デバイスは、前記中間パリティ生成コマンドを受信し、前記第1アドレスから前記新データを取得し、前記新データと、前記第1記憶デバイスに記憶されている前記前データと、から前記中間パリティを生成し、前記中間パリティを、前記第2アドレスに格納する。
本発明によれば、パリティ生成を効率化しプロセッサの負荷を抑制することで、ストレージシステムの性能向上を実現できる。
計算機システムの構成例を示す。 フラッシュパッケージの構成例を示す。 ホスト計算機からのライト要求に応じたデータ更新の正常シーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新の正常シーケンス例を示す。 ライト要求管理情報の構成例を示す。 中間パリティ生成コマンドの構成例を示す。 新パリティ生成コマンドの構成例を示す。 ホスト計算機からのライト要求に応じたデータ更新において、障害が発生した場合の、シーケンス例を示す。 リセットコマンドの構成例を示す。 リセットコマンドの構成例を示す。 ホスト計算機からのライト要求に応じたデータ更新において、障害が発生した場合の他のシーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新のシーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新において、障害が発生した場合の他のシーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新の他の正常シーケンス例を示す。 ホスト計算機からのライト要求に応じたデータ更新の他の正常シーケンス例を示す。 図13及び図14に示す正常シーケンスにおいて障害が発生した場合のシーケンス例を示す。
以下、図面を参照しながら実施例を説明する。ただし、本実施例は、発明を実現するための一例に過ぎず、発明の技術的範囲を限定するものではない。また、各図において共通の構成については、同一の参照番号が付されている。
なお、以後の説明では「テーブル」という表現にて本発明の情報を説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、「リスト」、「DB(データベース)」、「キュー」等のデータ構造やそれ以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等については、単に「情報」と呼ぶこともできる。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
以後の説明では「プログラム」を主語として説明を行うことがあるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよく、コントローラを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理装置や情報処理装置等の計算機が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
また、近年、計算機やストレージシステムでは、大量データの高速解析や高速I/O処理のために、大容量のメモリ領域を必要としている。例えば計算機ではインメモリDBのようなアプリケーションである。しかしながら、装置に搭載可能なDRAM容量は、コスト上の理由や電気的な実装制約によって限られていた。このため、緩和手段として、DRAMよりは遅いもののHDDに比べれば高速なNANDフラッシュメモリといった半導体記憶媒体を利用する動きが出てきている。
これらの半導体記憶媒体はSSD(Solide State Drive)という名前で呼ばれており、SATA(Seiral ATA)やSAS(Serial Attached SCSI)といったディスクI/Oインターフェイス接続とそのプロトコルを介して計算機やストレージコントローラに接続され、利用されてきた。
しかし、計算機の性能向上に対し、これらのディスクI/Oインターフェイスとプロトコルを介してのアクセスは、オーバヘッドが大きくレイテンシが大きい。そこで、より近年ではプロセッサに直結できる汎用バスであるPCI−Express(PCIe)上に搭載でき、かつ、その高速性を活かすために新たに策定されたNVMe(Non Volatile Memory Express)プロトコルを用いて、低レイテンシでアクセス可能なPCIe接続型SSD(PCIe−SSD又はPCIe−Flash)が登場してきている。
本実施形態は、例えば、パリティ生成において、記憶デバイスからコントローラ上のメモリに直接アクセス可能とするNVMeコマンドを使用する。NVMeでは、データ送受信のためのサポートするI/Oコマンドは非常に簡素であり、サポート必須コマンドは、Write、Read、Flushの3つのみである。また、SASなどの従来ディスクI/Oプロトコルでは、ホストが主体となって、コマンドやデータを装置側へ送信していたのに対し、NVMeでは、干すトからはコマンドが作成されたことのみを装置に通知し、コマンドそのものの取得やデータの転送、装置側が主体となって実施される。
すなわち装置側からのアクションに置き換えられて実施される。例えば装置が取得したコマンドの内容がWriteだった場合、従来であればホストが装置に向けてWriteデータを送信するが、NVMeでは、装置がホストのデータをReadする動作によって実現される。逆に、コマンドの内容がReadだった場合、Readコマンドの処理は、装置がホストのメモリへデータをWriteする動作によって実現される。
すなわち、NVMeでは、コマンドの受領、データのリード・ライト転送共に、動作契機は装置側が握っているので、ホストからの要求をいつでも受け付けるための余計なリソース確保が不要となる。
よって、本実施例では、発行コマンドにコントローラのアドレス情報、ストレージデバイスのアドレス情報を含めることで、パリティ生成を効率化し、プロセッサの負荷を抑制することで、ストレージシステムの処理性能を向上させる。
図1は、実施形態に係る計算機システム100の構成例を示す。計算機システム100は、ホスト計算機101、管理装置102、ストレージシステム104、を含む。ホスト計算機101、管理装置102、ストレージシステム104は、ネットワーク103で互いに接続される。ネットワーク103は、例えば、Storage Area Network(SAN)である。管理装置102はネットワーク103とは別の管理ネットワークを介し他の装置と接続されてもよい。
ホスト計算機101は、アプリケーションプログラムを実行する計算機であり、ストレージシステム104の論理的な記憶領域にネットワーク103経由でアクセスする。ホスト計算機101は、例えば、入力デバイス、出力デバイス、CPU(CentralProcessing Unit)、メモリ、ディスクアダプタ、ネットワークアダプタ、及び、二次記憶デバイスを含む(不図示)。
ホスト計算機101は、ユーザが使用するアプリケーションプログラム、ストレージシステム104とのインターフェイス制御をおこなうストレージシステム制御プログラムを実行する。ホスト計算機101は、ストレージシステム104が提供するボリュームを使用する。ホスト計算機101は提供されたボリュームに対して、リードコマンドやライト要求を発行することで、ボリュームに格納されたデータにアクセスする。
管理装置102は、ストレージシステム104を管理し、例えばストレージシステム104の記憶領域の構成を行う。管理装置102は、ストレージシステム104の管理を行うための管理プログラムを実行する。管理装置102は、汎用のコンピュータと同様に、キーボードやディスプレイ等の入出力デバイス、CPU、メモリ、ネットワークアダプタ、及び、二次記憶デバイスを有する。
ストレージシステム104は、システムコントローラ105と複数のフラッシュパッケージ113を含む。ストレージシステム104は、フラッシュパッケージ113の記憶領域にデータを格納する。ストレージシステム104は、ホスト計算機101に対して1以上のボリュームを提供する。
システムコントローラ105は、ホストインターフェイス(I/F)106、保守I/F、ドライブI/F108、MP(Micro Processor)109、メモリユニット119、複数のフラッシュパッケージ113を含む。これら構成要素は、バス112によって相互接続されている。
ホストI/F106は、ストレージシステム104がホスト計算機101のイニシエータと通信するために用いられる、インターフェイスデバイスである。ホスト計算機101がボリュームにアクセスするために発行する要求(リード要求、ライト要求等)は、ホストI/F106に到来する。ストレージシステム104は、ホスト計算機101に、ホストI/F106から情報(例えばリードデータ)を返却する。
保守I/F107は、ストレージシステム104が管理装置102と通信するためのインターフェイスデバイスである。管理装置102からのコマンドは保守I/F107に到来する。ストレージシステム104は、管理装置102に、保守I/F107から情報を返す。
図1は、ホストI/F106と保守I/F107がいずれもネットワーク103に接続された構成を示すが、ホストI/F106が接続されるネットワークと、保守I/F107が接続されるネットワークが、異なるネットワークであってもよい。
MP109は、システムコントローラ105内に1又は複数含まれ、ストレージシステム104の各種制御を行うためのプログラムを実行する。メモリユニット119は、キャッシュメモリ110、共有メモリ111、ローカルメモリ118で構成される。キャッシュメモリ110、共有メモリ111、ローカルメモリ118は、物理的に一つのメモリ内で領域を分割して使用されてもよいし、それぞれが物理的に別個のメモリで構成されてもよい。
キャッシュメモリ110は、キャッシュ領域を提供する。キャッシュメモリ110は、例えばRAM(Random Access Memory)で構成され、フラッシュパッケージ113に読み書きされるデータを一時的に格納する。共有メモリ111は、ハードディスクやフラッシュメモリ、RAM等で構成され、ストレージコントローラで動作するプログラムや構成情報等を格納する。ローカルメモリ118は、MP109が実行するプログラムや、MP109が使用する情報を一時的に保存するために用いられる。
キャッシュメモリ110は、ボリューム(記憶デバイス)に対するライトデータ、またはボリューム(記憶デバイス)から読み出されたデータ(リードデータ)を一時的に記憶する一時記憶領域として用いられる。
具体的には、例えば、キャッシュメモリ110に記憶されたリードデータがホスト計算機101に返却された後も、当該リードデータは消去せずにキャッシュメモリ110に記憶されたままでもよい。
また、例えば、リードデータがホスト計算機101に返却された後は、当該リードデータがキャッシュメモリ110から削除されてもよい。キャッシュメモリ110には、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等の揮発性記憶媒体が用いられるが、キャッシュメモリ110に不揮発性メモリが用いられてもよい。
共有メモリ111は、MP109が使用する管理情報を格納するための共有記憶領域を提供する。キャッシュメモリ110と同様、共有メモリ111には、DRAM、SRAM等の揮発性記憶媒体が用いられるが、不揮発性記憶媒体が用いられてもよい。
フラッシュパッケージ113は、ホスト計算機101からのライトデータを記憶するための不揮発性記憶媒体を有する記憶デバイスである。フラッシュパッケージ113は記憶媒体として、フラッシュメモリ等の不揮発性半導体メモリ又は他の記憶媒体を用いる。フラッシュパッケージ113の一例は、SSDである。
高信頼化のため、複数のフラッシュパッケージ113が、RAID(Redundant Array of Independent Disks)グループ115を構成する。MP109は、一台のフラッシュパッケージ113が故障しても、そのフラッシュパッケージ113のデータを回復できるRAID機能を有する。
RAIDグループ115において、一つ以上の論理ボリュームが作成される。一つの論理ボリュームは、RAIDグループ115を構成するフラッシュパッケージ113が有する物理的な記憶領域と関連付けられる。
RAID機能は、ホスト計算機101から受信したライトデータと冗長データのセットを、RAIDグループ115のフラッシュパッケージ113に分散して格納する。複数のRAIDレベルが知られている。例えば、RAID1は、ライトデータ及びそのコピーを、異なるフラッシュパッケージ113に格納する。
その他、RAID5は、ライトデータ及び一つのパリティからなる冗長データセットを異なるフラッシュパッケージ113に分散して格納し、RAID5は、ライトデータ及び二つのパリティからなる冗長データを異なるフラッシュパッケージ113に分散して格納する。
なお、本実施例ではホスト計算機101がネットワークを介してシステムコントローラ12に接続されている例を示すが、ストレージシステム42のハードウェア構成は、サーバと同様の構成であってもよい。たとえば本実施例のストレージシステム104に代えて、パーソナルコンピュータ等の汎用のコンピュータ(以下、これを単に「コンピュータ」と呼ぶ)に複数のフラッシュパッケージ113を搭載(または接続)し、コンピュータ上で、各種プログラムを実行させてもよい。この場合、コンピュータがサーバからI/O要求を受け付けて、フラッシュパッケージ113へのデータの格納、またはフラッシュパッケージ113からのデータの読み出しを行う。
また、コンピュータ上で各種プログラムを実行させる構成の場合、ストレージシステム上で実行される各種プログラムとサーバで実行されるプログラムがいずれも、同一コンピュータ上で実行されるように構成されていてもよい。この場合、たとえば仮想マシンを形成するハイパーバイザプログラムをコンピュータ上で実行することで、コンピュータ上に少なくとも、サーバで実行されるプログラムを実行するサーバ仮想マシンと、ストレージシステム上で各種プログラムを実行するストレージ仮想マシンとを形成すればよく、リード要求またはライト要求は、サーバ仮想マシンから発行される。よって、以降のホスト計算機101は「サーバ仮想マシン」と置き換えてもよい。
図2は、フラッシュパッケージ113の構成例を示す。フラッシュパッケージ113は、デバイスコントローラ210と、ホスト計算機101からのライトデータを記憶するための記憶媒体であるフラッシュメモリ280を有する。デバイスコントローラ210は、ドライブI/F211、デバイスプロセッサ213、メモリ214、フラッシュI/F215、ロジック回路216を有し、これらは内部ネットワーク212を介して相互接続されている。ロジック回路216は、例えば、パリティ演算や、暗号処理や圧縮処理を行う。
ドライブI/F211は、システムコントローラ105と通信するためのインターフェイスデバイスである。フラッシュI/F215は、デバイスコントローラ210がフラッシュメモリ280と通信するためのインターフェイスデバイスである。
デバイスプロセッサ213は、フラッシュパッケージ113の制御を行うためのプログラムを実行する。本例では、以下で説明するフラッシュパッケージ113が行う処理は、デバイスプロセッサ213がプログラムを実行することにより行われる。
メモリ214は、デバイスプロセッサ213が実行するプログラムや、デバイスプロセッサ213が使用する制御情報等を格納するためのものである。フラッシュメモリ280に読み書きされるデータを一時的に格納する一時格納領域も備える。
デバイスプロセッサ213は、MP109から要求を受け付け、受けたコマンドに従う処理を実行する。例えば、デバイスプロセッサ213デバイスデバイスプロセッサ213は、MP109からライトコマンドを受信し、そのライトコマンドのデータをフラッシュメモリ280に書き込む。デバイスプロセッサ213は、メモリ214内の一時格納領域又はフラッシュメモリ280にデータを書込んだ後、ライトコマンドの完了応答(応答コマンド)をMP109に返す。
デバイスプロセッサ213は、MP109からリードコマンドを受信し、そのリードコマンドのデータをメモリ214内の一時格納領域又はフラッシュメモリ280から読み出して、MPパッケージ109に返す。MP109からフラッシュパッケージ113へのコマンド及びコマンドに対するフラッシュパッケージ113の処理の詳細は後述する。
ストレージシステム104は、例えば、ログ構造ファイルシステムのように、新データを記憶媒体であるフラッシュパッケージ113内のフラッシュメモリ280に追記する。ストレージシステム104は、ホスト計算機101からの要求が示す論理アドレスで特定されるデータに更新要求があると、更新データを前データに上書きすることなく、フラッシュメモリ280において、前データと異なる記憶領域に追記する。フラッシュメモリ280は、ホスト計算機101からの要求が示す論理アドレスの過去データと現在データと、を保持する。
また、ストレージシステム104は、例えばフラッシュパッケージ113のメモリ214にマッピング情報を有する。マッピング情報とは、論理アドレスと物理アドレスを対応づけて管理する情報である。論理アドレスとは、ホスト計算機101がアクセスするためのアドレス空間におけるアドレスであり、ボリュームへのI/Oアドレス(ボリューム識別子とボリューム内アドレス)である。物理アドレスとは、フラッシュメモリ280内でデータが実際に格納されるアドレスである。
ホスト計算機101からデータの更新要求があった場合、ストレージシステム104は、更新要求が示す論理アドレスに対応付けられていた前データが格納されていた物理アドレスから、更新データが格納された物理アドレスに対応付けを変更することでマッピング情報の更新を行う。マッピング情報は、更新データの物理アドレスのみを保持しておく構成でも、更新データの物理アドレスおよび前データの物理アドレスの双方を保持してもよい。
マッピング情報が更新データの物理アドレスのみを保持する場合は、ストレージシステム104は、更新データをフラッシュメモリ280に格納した際に前データの物理アドレスと論理アドレスの対応付けを解除、すなわち、前データの物理アドレスを削除して更新データの物理アドレスを論理アドレスに対応づけることで、マッピング情報の更新を行ってもよい。
マッピング情報が、更新データと前データの物理アドレスを両方保持する場合は、ストレージシステム104は、更新データをフラッシュメモリ280に格納した後の所定の期間は、更新データの物理アドレス及び前データの物理アドレスの両方を、論理アドレスに対応付けておいてもよい。さらに、所定の期間の経過後、ストレージシステム104は、論理アドレスと前データの物理アドレスとの対応付けを解除する、すなわち、前データの物理アドレスを削除してもよい。対応付け解除の契機は、時間の経過に限らず、所定のコマンドまたは所定の完了応答を受領した後でもよい。
データの追記により、書き込み速度、特に、NANDフラッシュを使用するフラッシュパッケージ113における書き込み速度を向上する。フラッシュパッケージ113又はMP109が、追記のためのアドレス管理を行う。
図3及び図4は、ホスト計算機101からのライト要求に応じたデータ更新の正常シーケンス例を示す。システムコントローラ(図中、CTL)105は、ライト要求及び新データ301をホスト計算機101から受信する。本実施例では、ライト要求のアドレスに応じて当該ライト要求を処理するMP109が予め定められている。本例において、MP_A109Aが、予め定められた処理MPである。
MP_A109Aは、ライト要求管理情報331に、受信したライト要求についての情報を登録する(S11)。図5は、ライト要求管理情報331の構成例を示す。ライト要求管理情報331は、共有メモリ111に格納され、ライト要求、当該ライト要求を処理するMP及び当該ライト要求の処理におけるフェーズを示す。具体的には、ライト要求管理情報331は、要求ID、処理MP、フェーズ、及び論理アドレスの欄を有する。
要求ID欄は、ライト要求の識別子を示す。新たなライト要求に対して一意の値が付与される。処理MP欄は、当該ライト要求を処理するMPの識別子を示す。フェーズ欄は、当該ライト要求の処理におけるフェーズを示す。具体的には、「パリティ生成前」又は「パリティ生成後」のいずれかのフェーズを示す。新たなライト要求を受けた場合は、「パリティ生成前」で登録される。論理アドレス欄は、ライト要求が示すライト先である論理アドレスを示す。
ホスト計算機101からのライト要求に係るデータ(新データ)は、キャッシュメモリ110に格納される。MP_A109Aは、ホスト計算機101から受信したライト要求から、中間パリティ生成コマンドを生成する。MP_A109Aは、中間パリティ生成コマンドを、前データ302を格納するフラッシュパッケージ(データノード)113Aに送信する。
中間パリティ生成コマンドは、新データ301を格納し、さらに、新データ301と前データ302とから、中間パリティ303を生成することを指示する。図6は、中間パリティ生成コマンド341の構成例を示す。中間パリティ生成コマンド341は、OPECODEフィールド、アドレス情報1フィールド、アドレス情報2フィールド、コマンド詳細フィールド、及び、アドレス情報3フィールドを有する。
OPECODEフィールドはオペレーションの種類を示し、本例において、ホスト計算機101からのライト要求の処理を示す。アドレス情報1フィールドは、キャッシュメモリ110において新データ301を格納しているアドレスを示す。アドレス情報2フィールドは、キャッシュメモリ110において、新たに生成される中間パリティ303を格納するためのアドレスを示す。
コマンド詳細フィールドは、本コマンドが中間パリティ生成コマンドであることを示す。アドレス情報3フィールドは、新データ301の論理アドレスを示す。当該論理アドレスは、前データ302の論理アドレスでもある。
MP_A109Aは、マッピング情報を参照して、ライト要求が示す論理アドレスから、ライト要求の前データ302を格納しているデータノード113Aにおける物理アドレスを同定する。キャッシュメモリ110において新たに生成される中間パリティを格納するためのアドレスは、キャッシュメモリ110における空き領域を示す。
データノード113Aは、受信した中間パリティ生成コマンド341を参照し、キャッシュメモリ110から、アドレス情報1で指定されているアドレスに格納されている新データ301をリードし、メモリ214の一時格納領域に格納する(S12)。データノード113Aは、新データ301をフラッシュメモリ280の空き領域に格納し、メモリ214に格納されているマッピング情報を更新、すなわち、論理アドレスと新データ301が格納された物理アドレスを対応付けする。
なお、新データ301をフラッシュメモリ280に格納する処理およびマッピング情報の更新は、このS12のタイミングで行わなくてもよい。例えば、中間パリティ生成コマンド341の受領に同期せず、所定のタイミングで周期的に行うでもよいし、デバイスプロセッサ213の処理性能に余裕が有るタイミングで行うでもよい。
また、本実施例は、中間パリティ生成コマンドの受領を契機とせず、すなわち、中間パリティ生成コマンドの受領とは非同期で、新データ301をフラッシュメモリ280に格納する処理と中間パリティを生成する処理を開始する。デバイスプロセッサ213は、中間パリティ生成コマンドを受領し、メモリ214の一時格納領域にデータを書込んだ後、ライトコマンドの完了応答(応答コマンド)をMP109に返す。
なお、中間パリティ生成コマンドの受領を契機として、すなわち、中間パリティ生成コマンドの受領と同期して、新データ301をフラッシュメモリ280に格納する処理と中間パリティを生成する処理を始めてもよい。この場合、デバイスプロセッサ213は、新パリティ生成が完了した後にライトコマンドの完了応答(応答コマンド)をMP109に返す。
データノード113Aは、マッピング情報の更新に伴い、ライト要求が示す新データの論理アドレスに対応する前データ302の物理アドレスである前データアドレス321を、メモリ214に格納する(S13)。前データアドレス321は、ライト要求が示す論理アドレスとの対応が分かるように記憶されていればよい。例えば、前データアドレス321は、マッピング情報に含まれてもよく、マッピング情報とは別の形態で格納されてもよい。なお、メモリ214に格納された前データアドレス321は、当該ライト要求に関する処理とは非同期で消去されても、格納されてから所定の時間経過後に消去されてもよい。前データアドレス321は、障害発生時に参照される。詳細は後述する。
上述のように、本例のフラッシュパッケージ113は、前データに新データを上書きせず、異なる物理アドレスに新データを追記する。
データノード113Aは、マッピング情報を参照し、アドレス情報3が指定する論理アドレスから、前データ302を格納するデータノード113Aのフラッシュメモリ280における物理アドレスを同定する。データノード113Aは、前データ302を読み出し、メモリ214に格納する。データノード113Aは、メモリ214に格納された新データ301と前データ302とから、中間パリティ303を生成する(S14)。
データノード113Aは、中間パリティ生成コマンド341を参照し、アドレス情報2で指定されているキャッシュメモリ110のアドレスに、中間パリティ303を格納する(S15)。
上述のように、本実施例のように、キャッシュメモリ110において新データ301を格納しているアドレス、キャッシュメモリ110において、新たに生成される中間パリティ303を格納するためのアドレスも中間パリティ生成コマンド341に含めることにより、中間パリティ生成コマンド1つの発行で、システムコントローラ105からフラッシュパッケージ113への新データ301のリード、並びに、中間パリティ303の生成及びフラッシュパッケージ113からシステムコントローラ105へのライトが実現される。これにより、少ないコマンド及びステップによって効率的に中間パリティ303を生成できる。
次に、MP_A109Aは、ホスト計算機101から受信したライト要求から、新パリティ生成コマンドを生成する。MP_A109Aは、新パリティ生成コマンドを、前パリティ304を格納するフラッシュパッケージ(パリティノード)113Bに送信する。本例は一つのパリティノードを示すが、複数のパリティノードが存在する場合、処理MP109は、新パリティ生成コマンドを、前パリティを格納するパリティノードそれぞれに送信する。
中間パリティ生成コマンドは、中間パリティ303と前パリティ304とから、新パリティ305を生成することを指示する。図7は、新パリティ生成コマンド342の構成例を示す。新パリティ生成コマンド342は、OPECODEフィールド、アドレス情報1フィールド、コマンド詳細フィールド、及び、アドレス情報3フィールドを有する。
OPECODEフィールドはオペレーションの種類を示し、本例において、ホスト計算機101からのライト要求の処理を示す。アドレス情報1フィールドは、キャッシュメモリ110において中間パリティ303を格納しているアドレスを示す。コマンド詳細フィールドは、本コマンドが新パリティ生成コマンドであることを示す。
アドレス情報3フィールドは、ライト要求があったデータに関する新パリティの論理アドレスを示す。当該論理アドレスは、前パリティ304の論理アドレスでもある。
MP_A109Aは、マッピング情報を参照して、ライト要求が示す論理アドレスから、ライト要求の前パリティ304を格納しているパリティノード113Bにおける物理アドレスを同定する。
パリティノード113Bは、受信した新パリティ生成コマンド342を参照し、キャッシュメモリ110から、アドレス情報1で指定されているアドレスに格納されている中間パリティ303をリードし、メモリ214に格納する(S16)。
パリティノード113Bは、マッピング情報を参照し、アドレス情報3が指定する論理アドレスから、前パリティ304を格納するパリティノード113Bのフラッシュメモリ280における物理アドレスを同定する。パリティノード113Bは、前パリティ304を読み出し、メモリ214に格納する。
パリティノード113Bは、メモリ214に格納された中間パリティ303と前パリティ304とから、新パリティ305を生成する(S17)。パリティノード113Bは、新パリティ305を、フラッシュメモリ280の空き領域に格納し、メモリ214に格納されているマッピング情報を更新する。
パリティノード113Bは、マッピング情報の更新に伴い、当該論理アドレスに対応する前パリティアドレス322を、メモリ214に格納する(S18)。前パリティアドレス322は、障害発生時に参照される。詳細は後述する。
最後に、パリティノード113Bは、完了応答311をシステムコントローラ105に返す(S19)。
MP_A109Aは、完了応答311を受信すると、ライト要求管理情報331を更新する(S20)。具体的には、MP_A109Aは、処理したライト要求のエントリにおいて、フェーズ欄の「パリティ生成前」を「パリティ生成後」に変更する。
上述のように、新パリティ生成コマンド342により、システムコントローラ105からフラッシュパッケージ113への中間パリティ303のリード、並びに、中間新パリティ305の生成が実現される。これにより、少ないコマンド及びステップによって効率的に新パリティ305を生成できる。
上記例は、フラッシュパッケージ113が、追記されるデータのアドレスを管理する。他の例において、システムコントローラ105(MP109)が追記されるデータのアドレスを管理してもよい。システムコントローラ105は、前データアドレス及び前パリティアドレスを管理する。
システムコントローラ105により発行される中間パリティ生成コマンドは、キャッシュメモリ110において新データを格納するアドレス及び中間パリティを格納するアドレスを含む。さらに、フラッシュパッケージ113における新データの格納アドレスと前データの格納アドレスを含む。フラッシュパッケージ113は、フラッシュメモリ280の指定されたアドレスから前データを読み出し、さらに、指定されたアドレスに新データを格納する。
システムコントローラ105により発行される新パリティ生成コマンドは、キャッシュメモリ110において中間パリティを格納するアドレス、並びに、フラッシュパッケージ113における新パリティの格納アドレス及び前パリティの格納アドレスを含む。フラッシュパッケージ113は、フラッシュメモリ280の指定されたアドレスから前パリティを読み出し、さらに、指定されたアドレスに新パリティを格納する。
図8は、ホスト計算機101からのライト要求に応じたデータ更新において、障害が発生した場合の、シーケンス例を示す。本例において、MP_A109Aにおいて障害が発生する。以下においては、図4に示すシーケンス例との差異を主に説明する。
図8において、新データ301がシステムコントローラ105のキャッシュメモリ110からデータノード113Aに転送された(S12)直後に、予め設定されていた処理MP_A109Aにおいて障害が発生している。処理MPは、MP_A109AからMP_B109Bに引き継がれる。
MP_B109Bは、図4に示すシーケンスを中断した後、新データ301の転送(S12)から再実行する。具体的には、MP_B109Bは、ライト要求管理情報331を参照し、MP_A109Aから引き継いだ処理の情報を取得する(S31)。具体的には、処理MPが、MP_A109Aを示すエントリを取得する。本例において、ライト要求管理情報331は、MP_A109Aから引き継いだ処理のフェーズは、「パリティ生成前」であることを示す。
MP_B109Bは、本処理の中断をデータノード113A及びパリティノード113Bに通知する。具体的には、MP_B109Bはデータノード113A及びパリティノード113Bそれぞれに、リセットコマンドを送信する(S31)。
図9A及び図9Bはリセットコマンドの構成例を示す。図9Aは、データノードに送信されるリセットコマンドの構成例351を示し、図9Aは、パリティノードに送信されるリセットコマンドの構成例352を示す。リセットコマンドは、アドレス情報フィールドとコマンド詳細フィールドを示す。
データノードへのリセットコマンド351において、アドレス情報フィールドは、中間パリティ生成コマンド341におけるアドレス情報3と同様に、データノードにおいて新データを格納する論理アドレスを示す。コマンド詳細は、中間パリティ生成のリセットを示す。
パリティノードへのリセットコマンド352において、アドレス情報フィールドは、新パリティ生成コマンド342におけるアドレス情報3と同様に、新パリティを格納する論理アドレスを示す。コマンド詳細は、新パリティ生成のリセットを示す。
リセットコマンドを受信したデータノード113A及びパリティノード113Bは、中間パリティ生成処理及び新パリティ生成処理を中断する。図8の例において、データノード113Aは、中間パリティ生成処理を開始しておらず、パリティノード113Bは、新パリティ生成処理を開始していない。データノード113A及びパリティノード113Bは、それぞれ、リセットコマンドへの完了応答を、MP_B109Bに返す(S32及びS33)。
データノード113A及びパリティノード113Bから完了応答を受信すると、MP_B109Bは、ライト要求管理情報331を更新する(S34)。具体的には、MP_B109Bは、ライト要求管理情報331の当該エントリにおいて、処理MPをMP_AからMP_Bに変更する。シーケンスの以降のステップは、処理MPがMP_A109AからMP_B109Bに変わっている点を除き、図4と同様である。
図10は、ホスト計算機101からのライト要求に応じたデータ更新において、障害が発生した場合の他のシーケンス例を示す。本例において、MP_A109Aにおいて障害が発生する。以下においては、図8に示すシーケンス例との差異を主に説明する。
図10において、データノード113Aが中間パリティを生成した(S14)後、システムコントローラ105に転送する前に、予め設定されていた処理MP_A109Aにおいて障害が発生している。処理MPは、MP_A109AからMP_B109Bに引き継がれる。
データノード113A及びパリティノード113Bは、MP_B109Bからリセットコマンドを受信する(S31)。データノード113Aは、マッピング情報について、リセットコマンド351の論理アドレスに対応する物理アドレスを、S13でメモリ214に格納した前データアドレス321に戻してから、完了応答を返す(S41)。これにより、その後のステップにおいて、正しい中間パリティを生成することができる。
図11は、ホスト計算機101からのライト要求に応じたデータ更新のシーケンス例を示す。データノード113Aが中間パリティをシステムコントローラ105に送信した(S15)後、システムコントローラ105が中間パリティをパリティノード113Bに転送する前に、予め設定されていた処理MP_A109Aにおいて障害が発生している。処理MPは、MP_A109AからMP_B109Bに引き継がれる。その他の点は、図10のシーケンスと同様である。
図12は、ホスト計算機101からのライト要求に応じたデータ更新において、障害が発生した場合の他のシーケンス例を示す。パリティノード113Bが新パリティを生成して(S17)前パリティの物理アドレスをメモリ214に格納した(S18)後、完了応答をシステムコントローラ105に送信する(S19)前に、予め設定されていた処理MP_A109Aにおいて障害が発生している。処理MPは、MP_A109AからMP_B109Bに引き継がれる。
データノード113A及びパリティノード113Bは、MP_B109Bからリセットコマンドを受信する(S31)。
データノード113Aは、マッピング情報の論理アドレスに対応する物理アドレスを、S13でメモリ214に格納した前データアドレス321に戻してから、完了応答を返す(S41)。同様に、パリティノード113Bは、マッピング情報について、リセットコマンド352の論理アドレスに対応する物理アドレスを、S18でメモリ214に格納した前パリティアドレス322に戻してから、完了応答を返す(S42)。これにより、その後のステップにおいて、正しい中間パリティ及び新パリティを生成することができる。他の点は、図11のシーケンスと同様である。
上記いずれの場合とも異なり、処理を引き継いだMP_B109Bが参照したライトライト要求管理情報331が、「パリティ生成後」を示す場合、MP_B109Bは、ライト要求に対するパリティ更新は完了していると判定する。このように、ライト要求管理情報331により、障害発生時の処理を適切に制御できる。
また、上述のように、ライト要求の処理途中のいずれのステップにおけるMP障害においても、処理を引き継いだMPが新データの転送から開始することで、効率的にシステムコントローラ105を構成できる。
上記例においてライト要求管理情報331は、「パリティ生成前」、「パリティ生成後」のみを管理するため、システム構成を簡便にできる。ライト要求管理情報331は、他のフェーズを示してもよい。例えば、ライトライト要求管理情報331は、「中間パリティ生成前」、「中間パリティ生成後」のフェーズを示してもよい。処理を引き継いだMP_B109Bは、フェーズに応じた処理を行う。
実施例1とは異なる実施例について、図13〜15を用いて説明する。本実施例では、前データアドレス321及び前パリティアドレス322をメモリ214に格納しない場合についての処理について説明する。
図13及び図14は、本実施例におけるホスト計算機101からのライト要求に応じたデータ更新の他の正常シーケンス例を示す。以下においては、図3及び4に示すシーケンス例との違いを主に説明する。図3及び4に示すシーケンス例における前データアドレス321及び前パリティアドレス322並びにそれらの格納ステップS13、S18が、図13及び図14のシーケンスにおいて省略されている。他の点は、図3及び4に示すシーケンスと図13及び図14に示すシーケンスとで同様である。
次に、図13及び図14に示す正常シーケンスにおいて障害が発生した場合のシーケンス例を説明する。図15のシーケンス例において、データノード113Aが中間パリティをシステムコントローラ105に送信した(S15)後、システムコントローラ105が中間パリティをパリティノード113Bに転送する(S16)前に、MP_A109Aにおいて障害が発生している。
以下においては、実施例1における図11および図15に示すシーケンス例との差異を主に説明する。予め設定されていた処理MP_A109Aにおいて障害が発生し、処理MPは、MP_A109AからMP_B109Bに引き継がれる。
MP_B109Bは、ライト要求管理情報331を参照し、MP_A109Aから引き継いだ処理の情報を取得する(S51)。本例において、ライト要求管理情報331は、MP_A109Aから引き継いだ処理のフェーズは、「パリティ生成前」であることを示す。
図15の例において、本シーケンスの図11との違いは、前データアドレス321及び前パリティアドレス322を使用しないため、その格納及び書き戻しのステップは存在しない。また、ライト要求管理情報331のリセット指示がなく、ライト要求管理情報331が更新されないまま、すなわち図11のS31〜34が無いまま、パリティ更新処理(S12〜S19)に進む。このパリティ更新処理(S12〜S19)は、ライト要求管理情報331のフェーズが「パリティ生成前」であるために行われる。
パリティノード113Bから新パリティ生成の完了応答を受信すると(S19)、MP_B109Bは、ライト要求管理情報331を更新しようと参照するが、ライト要求管理情報331に記憶されている処理MPがMP_B109Bとは異なると判定すると、パリティ不整合が起きていると判定する。そこで、ライト要求管理情報331の処理MPをMP_B109Bに更新(S52)し、パリティを再度生成する(S53)。
なお、S53のパリティ再生成は、本実施例では、前データアドレス321及び前パリティアドレス322をメモリ214に格納していないため、今まで説明してきたような、新データ、前データおよび前パリティを用いて新パリティを生成する方法ではなく、いわゆるシーケンシャルライトのパリティ生成方法をとる。具体的には、MP_B109Bは、本シーケンスにおいて新データを格納し新パリティを生成したストライプ列のデータブロックを、データノード113Aを含む複数のデータノードから受信する。MP_B109Bは、受信したストライプ列のデータブロックからパリティを生成する。
本例は前回データアドレス及び前回パリティアドレスを参照せず、また、処理MPが変更されているため、パリティノード113Bが正しくない新パリティを生成する可能性がある。よって、処理を引き継いだMP_B109Bにて、新データからパリティを再生成することで、正確なパリティを確実に保持することができる。
上記構成において、一部を省略することができる。例えば、ストレージシステム104は、新パリティ生成コマンドを使用することなく、新パリティを生成してもよい。例えばシステムコントローラ105が前パリティをパリティノードから読み出し、新パリティを生成して、パリティノードに格納してもよい。または、システムコントローラ105からパリティノードに中間パリティ送信コマンドを送信し、その完了応答及び新パリティ生成完了応答を受信してもよい。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。

Claims (12)

  1. メモリ領域を含む、コントローラと、
    それぞれが記憶媒体を含む複数の記憶デバイスと、を含み、
    前記コントローラは、
    ホストからライト要求を受信し、
    前記ライト要求が示す指定アドレスに対応する中間パリティ生成コマンドを、前記複数の記憶デバイスにおける第1記憶デバイスに、送信し、
    前記中間パリティ生成コマンドは、前記指定アドレスの新データと前記新データに更新される前データとから、中間パリティを生成することを指示し、
    前記中間パリティ生成コマンドは、前記新データを格納している前記メモリ領域の第1アドレスと、前記中間パリティを格納するための前記メモリ領域の第2アドレスとを含み、
    前記第1記憶デバイスは、
    前記中間パリティ生成コマンドを受信し、
    前記第1アドレスから前記新データを取得し、
    前記新データと、前記第1記憶デバイスに記憶されている前記前データと、から前記中間パリティを生成し、
    前記中間パリティを、前記第2アドレスに格納する、ストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記コントローラは、前記複数の記憶デバイスにおける第2記憶デバイスに、新パリティ生成コマンドを送信し、
    前記新パリティ生成コマンドは、前記中間パリティと、前記指定アドレスの前データに関する前パリティとから、新パリティを生成することを指示し、
    前記新パリティ生成コマンドは、前記第2アドレスを含み、
    前記第2記憶デバイスは、
    前記新パリティ生成コマンドを受信し、
    前記第2アドレスから前記中間パリティを読み出し、
    前記中間パリティと、前記第2記憶デバイスに記憶されている前記前パリティとから、前記新パリティを生成する、ストレージシステム。
  3. 請求項2に記載のストレージシステムであって、
    前記コントローラは、複数のプロセッサを含み、
    前記複数のプロセッサにおける第1プロセッサは、前記ライト要求の処理を開始し、
    前記第1プロセッサは、前記複数のプロセッサにより共有された共有記憶領域に、前記ライト要求の処理フェーズを示すライト要求管理情報を格納し、
    前記複数のプロセッサにおける第2プロセッサは、
    前記第1プロセッサの障害に応答して前記ライト要求の処理を引き継ぎ、
    前記共有記憶領域の前記ライト要求管理情報を参照して、前記ライト要求の処理におけるフェーズを特定する、ストレージシステム。
  4. 請求項3に記載のストレージシステムであって、
    前記ライト要求管理情報が前記新パリティの生成前であることを示す場合、前記第2プロセッサは、前記第1記憶デバイス及び前記第2記憶デバイスに、前記中間パリティ生成コマンド及び前記新パリティ生成コマンドの処理を中止することを指示する、リセットコマンドをそれぞれ送信する、ストレージシステム。
  5. 請求項4に記載のストレージシステムであって、
    前記第1記憶デバイスは、
    前記指定アドレスと、前記指定アドレスに関するデータを格納している前記第1記憶デバイスの記憶媒体のアドレスとの対応関係を示すマッピング情報と、前記前データを格納している前記第1記憶デバイスの記憶媒体のアドレスと、を管理し、
    前記第1記憶デバイスの記憶媒体において、前記新データを前記前データと異なるアドレスに格納し、
    前記マッピング情報において、前記指定アドレスに対応するアドレスを、前記新データのアドレスに更新し、
    前記リセットコマンドに応答して、前記マッピング情報において、前記指定アドレスに対応するアドレスを、前データのアドレスを書き戻す、ストレージシステム。
  6. 請求項3に記載のストレージシステムであって、
    前記第1記憶デバイスは、前記第1記憶デバイスの記憶媒体において、前記新データを前記前データと異なるアドレスに格納し、
    前記第2記憶デバイスは、前記第2記憶デバイスの記憶媒体において、前記新パリティを前記前パリティと異なるアドレスに格納し、
    前記ライト要求管理情報が前記新パリティの生成前であることを示す場合、前記第2プロセッサは、前記新データを含むストライプ列のデータを、前記複数の記憶デバイスから取得し、取使した前記ストライプ列のデータからパリティを生成して前記第2記憶デバイスに格納する、ストレージシステム。
  7. メモリ領域を含む、コントローラと、それぞれが記憶媒体を含む複数の記憶デバイスと、を含むストレージシステムにおける、データ格納の方法であって、
    前記コントローラが、ホストからライト要求を受信し、
    前記コントローラが、前記ライト要求が示す指定アドレスに対応する中間パリティ生成コマンドを、前記複数の記憶デバイスにおける第1記憶デバイスに、送信し、
    前記中間パリティ生成コマンドは、前記指定アドレスの新データと前記新データに更新される前データとから、中間パリティを生成することを指示し、
    前記中間パリティ生成コマンドは、前記新データを格納している前記メモリ領域の第1アドレスと、前記中間パリティを格納するための前記メモリ領域の第2アドレスとを含み、
    前記第1記憶デバイスが、前記中間パリティ生成コマンドを受信し、
    前記第1記憶デバイスが、前記第1アドレスから前記新データを取得し、
    前記第1記憶デバイスが、前記新データと、前記第1記憶デバイスに記憶されている前記前データと、から前記中間パリティを生成し、
    前記第1記憶デバイスが、前記中間パリティを、前記第2アドレスに格納する、方法。
  8. 請求項7に記載の方法であって、
    前記コントローラが、前記複数の記憶デバイスにおける第2記憶デバイスに、新パリティ生成コマンドを送信し、
    前記新パリティ生成コマンドは、前記中間パリティと、前記指定アドレスの前データに関する前パリティとから、新パリティを生成することを指示し、
    前記新パリティ生成コマンドは、前記第2アドレスを含み、
    前記第2記憶デバイスが、前記新パリティ生成コマンドを受信し、
    前記第2記憶デバイスが、前記第2アドレスから前記中間パリティを読み出し、
    前記第2記憶デバイスが、前記中間パリティと、前記第2記憶デバイスに記憶されている前記前パリティとから、前記新パリティを生成する、方法。
  9. 請求項8に記載の方法であって、
    前記コントローラは、複数のプロセッサを含み、
    前記複数のプロセッサにおける第1プロセッサが、前記ライト要求の処理を開始し、
    前記第1プロセッサが、前記複数のプロセッサにより共有された共有記憶領域に、前記ライト要求の処理フェーズを示すライト要求管理情報を格納し、
    前記複数のプロセッサにおける第2プロセッサが、前記第1プロセッサの障害に応答して前記ライト要求の処理を引き継ぎ、
    前記第2プロセッサが、前記共有記憶領域の前記ライト要求管理情報を参照して、前記ライト要求の処理におけるフェーズを特定する、方法。
  10. 請求項9に記載の方法であって、
    前記ライト要求管理情報が前記新パリティの生成前であることを示す場合、前記コントローラが、前記第1記憶デバイス及び前記第2記憶デバイスに、前記中間パリティ生成コマンド及び前記新パリティ生成コマンドの処理を中止することを指示する、リセットコマンドをそれぞれ送信する、方法。
  11. 請求項10に記載の方法であって、
    前記第1記憶デバイスが、前記指定アドレスと、前記指定アドレスに関するデータを格納している前記第1記憶デバイスの記憶媒体のアドレスとの対応関係を示すマッピング情報と、前記前データを格納している前記第1記憶デバイスの記憶媒体のアドレスと、を管理し、
    前記第1記憶デバイスが、前記第1記憶デバイスの記憶媒体において、前記新データを前記前データと異なるアドレスに格納し、
    前記第1記憶デバイスが、前記マッピング情報において、前記指定アドレスに対応するアドレスを、前記新データのアドレスに更新し、
    前記第1記憶デバイスが、前記リセットコマンドに応答して、前記マッピング情報において、前記指定アドレスに対応するアドレスを、前データのアドレスを書き戻す、方法。
  12. 請求項9に記載の方法であって、
    前記第1記憶デバイスが、前記第1記憶デバイスの記憶媒体において、前記新データを前記前データと異なるアドレスに格納し、
    前記第2記憶デバイスが、前記第2記憶デバイスの記憶媒体において、前記新パリティを前記前パリティと異なるアドレスに格納し、
    前記ライト要求管理情報が前記新パリティの生成前であることを示す場合、前記第2プロセッサが、前記新データを含むストライプ列のデータを、前記複数の記憶デバイスから取得し、取使した前記ストライプ列のデータからパリティを生成して前記第2記憶デバイスに格納する、方法。
JP2018539482A 2016-09-16 2016-09-16 ストレージシステム Active JP6652647B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/077533 WO2018051505A1 (ja) 2016-09-16 2016-09-16 ストレージシステム

Publications (2)

Publication Number Publication Date
JPWO2018051505A1 true JPWO2018051505A1 (ja) 2018-11-29
JP6652647B2 JP6652647B2 (ja) 2020-02-26

Family

ID=61618717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018539482A Active JP6652647B2 (ja) 2016-09-16 2016-09-16 ストレージシステム

Country Status (4)

Country Link
US (1) US10664193B2 (ja)
JP (1) JP6652647B2 (ja)
CN (1) CN109313593B (ja)
WO (1) WO2018051505A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023388B2 (en) * 2018-09-21 2021-06-01 SK Hynix Inc. Data path protection parity determination for data patterns in storage devices
JP2020177501A (ja) * 2019-04-19 2020-10-29 株式会社日立製作所 ストレージシステム、そのドライブ筐体、およびパリティ演算方法。
CN115428074A (zh) 2020-02-20 2022-12-02 英特尔公司 利用单向命令的on-ssd纠删码
CN111752487B (zh) * 2020-06-18 2024-01-12 深圳大普微电子科技有限公司 一种数据恢复方法、装置及固态硬盘
CN115206406A (zh) * 2021-04-12 2022-10-18 伊姆西Ip控股有限责任公司 管理独立磁盘冗余阵列的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015518186A (ja) * 2012-04-27 2015-06-25 株式会社日立製作所 ストレージシステム及びストレージ制御装置
WO2015121912A1 (ja) * 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置
US9384093B1 (en) * 2014-05-28 2016-07-05 Microsemi Storage Solutions (U.S.), Inc. Raid enabled NVME device

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5533190A (en) * 1994-12-21 1996-07-02 At&T Global Information Solutions Company Method for maintaining parity-data consistency in a disk array
US6112255A (en) * 1997-11-13 2000-08-29 International Business Machines Corporation Method and means for managing disk drive level logic and buffer modified access paths for enhanced raid array data rebuild and write update operations
EP2304568B1 (en) * 2008-06-06 2013-08-14 Pivot3 Method and system for distributed raid implementation
WO2010116536A1 (en) * 2009-04-06 2010-10-14 Hitachi, Ltd. Storage subsystem and its control method
JP5404804B2 (ja) * 2009-05-25 2014-02-05 株式会社日立製作所 ストレージサブシステム
US8132044B1 (en) * 2010-02-05 2012-03-06 Symantec Corporation Concurrent and incremental repair of a failed component in an object based storage system for high availability
WO2013160972A1 (en) * 2012-04-27 2013-10-31 Hitachi, Ltd. Storage system and storage apparatus
US9122399B2 (en) * 2013-04-18 2015-09-01 Hitachi, Ltd. Storage system and storage control method
US9424126B2 (en) * 2013-09-03 2016-08-23 Kabushiki Kaisha Toshiba Memory controller
US9916248B2 (en) * 2013-12-12 2018-03-13 Hitachi, Ltd. Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache
US9778986B2 (en) * 2014-03-28 2017-10-03 Hitachi, Ltd. Storage system
US10102070B2 (en) * 2015-06-01 2018-10-16 Hitachi, Ltd. Information processing system, storage apparatus and storage device
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015518186A (ja) * 2012-04-27 2015-06-25 株式会社日立製作所 ストレージシステム及びストレージ制御装置
WO2015121912A1 (ja) * 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置
US9384093B1 (en) * 2014-05-28 2016-07-05 Microsemi Storage Solutions (U.S.), Inc. Raid enabled NVME device

Also Published As

Publication number Publication date
US20190087122A1 (en) 2019-03-21
CN109313593A (zh) 2019-02-05
JP6652647B2 (ja) 2020-02-26
CN109313593B (zh) 2022-03-01
WO2018051505A1 (ja) 2018-03-22
US10664193B2 (en) 2020-05-26

Similar Documents

Publication Publication Date Title
US10698818B2 (en) Storage controller caching using symmetric storage class memory devices
US10977124B2 (en) Distributed storage system, data storage method, and software program
US9304901B2 (en) System and method for handling I/O write requests
US8839030B2 (en) Methods and structure for resuming background tasks in a clustered storage environment
JP6652647B2 (ja) ストレージシステム
US10102070B2 (en) Information processing system, storage apparatus and storage device
JP6600698B2 (ja) 計算機システム
US8392670B2 (en) Performance management of access to flash memory in a storage device
US20220137835A1 (en) Systems and methods for parity-based failure protection for storage devices
US11509716B2 (en) Method and apparatus for performing simple storage service seamless migration using index objects
US9836223B2 (en) Changing storage volume ownership using cache memory
US20180267713A1 (en) Method and apparatus for defining storage infrastructure
US10579540B2 (en) Raid data migration through stripe swapping
US11099768B2 (en) Transitioning from an original device to a new device within a data storage array
US20180307427A1 (en) Storage control apparatus and storage control method
TWI782847B (zh) 用來在儲存伺服器中進行基於管線的存取管理的方法及設備
JP2012212192A (ja) 仮想マシンのための仮想ストレージを有するホストサーバ
US8880939B2 (en) Storage subsystem and method for recovering data in storage subsystem
US10191690B2 (en) Storage system, control device, memory device, data access method, and program recording medium
US10154113B2 (en) Computer system
US11200210B2 (en) Method of efficient backup of distributed file system files with transparent data access
WO2016194162A1 (ja) 計算機システム
US10956245B1 (en) Storage system with host-directed error scanning of solid-state storage devices
US20220318091A1 (en) Storage system and operating method thereof
WO2018055686A1 (ja) 情報処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190809

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200123

R150 Certificate of patent or registration of utility model

Ref document number: 6652647

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150