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

ストレージシステム Download PDF

Info

Publication number
JP6722354B2
JP6722354B2 JP2019519863A JP2019519863A JP6722354B2 JP 6722354 B2 JP6722354 B2 JP 6722354B2 JP 2019519863 A JP2019519863 A JP 2019519863A JP 2019519863 A JP2019519863 A JP 2019519863A JP 6722354 B2 JP6722354 B2 JP 6722354B2
Authority
JP
Japan
Prior art keywords
data
address
storage
storage drive
parity
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.)
Active
Application number
JP2019519863A
Other languages
English (en)
Other versions
JPWO2018216124A1 (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 JPWO2018216124A1 publication Critical patent/JPWO2018216124A1/ja
Application granted granted Critical
Publication of JP6722354B2 publication Critical patent/JP6722354B2/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
    • 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
    • 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
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、ストレージシステムにおける冗長データの生成技術に関する。
通常、パリティの計算は、ストレージシステムに搭載されるコントローラ(ストレージコントローラ)が実施する。しかし、それはストレージコントローラの処理負荷が大きくなるため、記憶ドライブにパリティの演算機能を持たせ、パリティの演算負荷をストレージコントローラから記憶ドライブにオフロードする技術が存在する。
例えば特許文献1は、記憶ドライブがパリティ生成機能を有する構成を開示する。ストレージコントローラは、更新データを、更新前データが格納されている記憶ドライブへと送信する。ストレージコントローラは、記憶ドライブによって生成された中間パリティを受け取る。ストレージコントローラは、受け取った中間パリティを、更新データに対応する更新前パリティが格納されている記憶ドライブへ送信する。ストレージコントローラは、更新前パリティを格納している記憶ドライブに、中間パリティと当該記憶ドライブに格納されている更新前パリティとから、更新後パリティを生成させ、格納させる。
米国特許出願公開第2013/0290773号明細書
通常、ストレージコントローラから記憶ドライブに対してライトを指示するとき、ライトのための一連の処理中のストレージコントローラの障害に備えて、ライトデータと、ライトデータの格納場所を管理する情報とを、ストレージコントローラ上で二重化する。
また、記憶ドライブのライトデータの更新は、対応する記憶ドライブのパリティデータの更新も必要とする。そのため、記憶ドライブ及びコントローラ上のライトデータ及びパリティデータが、更新前の状態であるか、更新後の状態であるか管理する必要がある。ストレージコントローラは、障害に備えて、この状態管理情報も二重化して保持する。
特許文献1に記載の技術も、更新データ(ライトデータ)の管理情報の二重化、及び記憶ドライブの更新前後の状態を管理する情報の二重化を必要とする。
本開示の一態様のストレージシステムは、複数の記憶ドライブと、コントローラと、を含み、前記コントローラはホストから、第1アドレスを指定する第1ライト要求と、前記第1ライト要求に関連付けられた第1新データを受信し、第2アドレスを指定する第1データ更新コマンドと、前記第1新データとを、前記複数の記憶ドライブに含まれる第1記憶ドライブに送信し、前記第1記憶ドライブは、前記第1データ更新コマンドに応答して、前記第2アドレスの、管理しているシーケンス番号を、更新し、前記更新されたシーケンス番号を、前記コントローラに送信し、前記コントローラは、前記複数の記憶ドライブに含まれる、前記第2アドレスに関連付けられた旧冗長データを格納する第2記憶ドライブに、前記旧冗長データの第3アドレスを指定する第1冗長データ更新コマンドと、前記旧冗長データを更新するためのデータと、前記更新されたシーケンス番号と、を送信し、前記第2記憶ドライブは、前記旧冗長データを更新するためのデータに基づき、前記旧冗長データを更新し、前記更新されたシーケンス番号によって、前記第3アドレスの、管理しているシーケンス番号を、更新する。
本発明の一態様により、システムの信頼性及び可用性を保ちつつ、パリティデータ生成及び記憶ドライブへのデータ格納処理に係る処理負荷を分散することができる。
実施形態に係るストレージシステムの構成図を示す。 フラッシュメモリパッケージの構成図を示す。 ボリューム管理テーブルの構成を示す。 論理ボリューム上の記憶空間と、RAIDグループ内の記憶領域との関係を表した概念図を示す。 フラッシュメモリパッケージ内にある論理アドレス管理情報テーブルの構成を示す。 フラッシュメモリパッケージ内にあるシーケンス番号管理テーブルの構成を示す。 XOR算出機能の設定ウィンドウの一例を示す。 実施形態1におけるホストライト処理の概略図を示す。 実施形態1におけるホストライト処理のフローを示す。 実施形態1におけるホストライト処理のフローを示す。 実施形態1におけるホストライト処理のフローを示す。 実施形態1におけるフラッシュメモリパッケージからのリード処理のフローを示す。 実施形態2におけるホストライト処理の概略図を示す。 実施形態2におけるホストライト処理のフローを示す。 実施形態2におけるホストライト処理のフローを示す。 実施形態2におけるホストライト処理のフローを示す。 実施形態3におけるホストライト処理の概略図を示す。 実施形態3におけるホストライト処理のフローを示す。 実施形態3におけるホストライト処理のフローを示す。 実施形態3におけるホストライト処理のフローを示す。
以下、図面を参照して、実施形態に係るストレージシステムを説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。
(実施形態1)
図1は、一実施形態に係るストレージシステム42の構成を示す。ストレージシステム42は、コントローラ100と、コントローラに接続された記憶部200を含む。
記憶部200は、ホスト計算機のような上位装置からのライトデータを格納するための複数の最終記憶ドライブを含む。本実施形態に係るストレージシステム42は、データの最終記憶装置として、FMPK(Flash Memory PacKage)144を使用する。FMPKは、不揮発性半導体メモリであるフラッシュメモリを用いた記憶ドライブであり、一例としてSSD(Solid State Drive)である。FMPKに代えて、磁気ディスクドライブのように、FMと異なる不揮発性メモリを使用する記憶ドライブが使用されてもよい。
コントローラ100は複数のFMPK144を、1又は複数のRAID(Redundant Arrays of Inexpensive Disks)グループ145(図3参照)として管理する。
コントローラ100には、1以上のホスト計算機10と、管理計算機20が接続される。コントローラ100とホスト計算機10とは、一例としてファイバチャネルを用いて形成されるSAN(Storage Area Network)1を介して接続される。コントローラ100と管理計算機20とは、一例としてイーサネットを用いて形成されるネットワーク64を介して接続される。
ストレージシステム42は、ホスト計算機10から、FE I/F(Front End InterFace)52において、データリード/ライト(I/O処理)の指示を受信する。ストレージパッケージ12に含まれるストレージコントローラ30のCPU62は、メモリ40に格納されているストレージ制御プログラムに従って、I/O処理を実施する。ストレージパッケージ12は、故障時に備えて冗長化されており、冗長化されたストレージパッケージ12は、SW(スイッチ)64を介して、相互接続されている。
メモリ40は、記憶ドライブに対するI/O対象データを一時的に記憶するCM(キャッシュメモリ)用領域、ストレージシステム42の各種管理情報を記憶するSM(共有メモリ)用領域を含む。CMやSMのデータは、障害時に備えて、複数ストレージパッケージ12内のメモリ40内のCMやSMに冗長化される。メモリ40は、さらに、複数ストレージパッケージ12(ストレージコントローラ30)に冗長化されないデータの一時格納領域を含む。
本実施形態は、ライト処理におけるストレージコントローラ間の冗長化処理を削減する。例えば、複数ストレージコントローラ上における、ライト処理における、ライトデータ、パリティデータ(単にパリティとも呼ぶ)、及びライトデータとパリティデータの管理情報の冗長化が不要である。本実施形態は、ストレージコントローラの冗長化されないデータの一時格納領域、及び複数FMPKによるライトデータの冗長化(パリティ生成)を利用して、ストレージコントローラのライト性能を向上させる。メモリ40は、一般に、DRAM、SRAM等の揮発性メモリで構成されるが、不揮発性メモリを用いてもよい。
BE I/F(Back End InterFace)68とメモリ40とは、CPU62を介して相互にアクセス可能である。BE I/F68は、SW82を介してFMPK144と接続されている。ホスト計算機10からのI/O処理要求を受けたCPU62は、対象データが格納されているFMPK144に対して、データの読み書き等を行う。それぞれに複数のFMPK144から構成される複数のFMPKグループ84が定義されていてもよい。
図2を用いて、FMPK144の構成について説明する。FMPK144は、FMコントローラ1447と複数のFMチップ1443を含んで構成される。FMコントローラ1447は、ポート1441、論理演算回路(図中ではXOR)1442、CPU1444、メモリ1445、ディスクインタフェース(図中ではDisk I/F)1446を含む。
FMチップ1443は、不揮発性半導体メモリチップであり、例えばNAND型フラッシュメモリチップである。フラッシュメモリは周知のとおり、ページ単位でデータの読み出し及び書き込みを行い、データ消去を、複数ページの集合であるブロック単位で行う。一度書き込みが行われたページの上書きは不可能であり、一度書き込みが行われたページに対して再度書き込みを行うためには、当該ページを含むブロックのデータを消去する必要がある。
FMPK144は、FMPK144が接続されるストレージコントローラ30に対して、FM1443の有する物理記憶領域を直接提供することはせず、論理的な記憶空間を提供する。論理的な記憶空間は、複数の論理ページと呼ばれる所定サイズの領域から構成されている。FMPK144が、CPU62からの、論理ページに対するデータ書き込み要求を受け付けると、当該論理ページにFM1443の有する物理記憶領域(物理ページ)を割り当ててデータを格納する。
当該論理ページに対するデータ書き込み要求(つまり上書き)を受け付けた場合、FMPK144は、当該論理ページには他の物理ページを割り当て、当該他の物理ページにデータを格納する。上書き前のデータが格納されている物理ページは、無効ページとして管理され、後のリクラメーション処理がそのデータを消去する。
メモリ1445は、論理ページと物理ページの関係を管理するためのテーブルを格納する。メモリ1445は、一般に、揮発性メモリであるが、不揮発性メモリであってもよい。
次に、本実施形態係るストレージシステム42で構成される、論理ボリュームとRAIDグループの関係を説明する。ストレージシステム42は、複数(たとえば4つ)のFMPK144から1つのRAIDグループを形成する。
1つのFMPK144に障害が発生してデータアクセスできなくなった場合、ストレージシステム42は、残りのFMPK144内のデータを用いて、障害が発生したFMPK144に格納されていたデータを復元する。また、ストレージシステム42は、RAIDグループの記憶領域を、論理ボリュームとして、上位装置に提供する。
ストレージコントローラ30は、論理ボリュームとFMPK144の対応関係を、ボリューム管理テーブル300にて管理している。ボリューム管理テーブル300は、SM132に格納されている。ボリューム管理テーブル300は、論理ボリュームIDカラム301、FMPK IDカラム302、RAIDレベルカラム303、及びXOR Enableビットカラム304を含む。
論理ボリュームIDカラム301は、ストレージシステム42内に定義されている論理ボリュームのIDを示す。FMPK IDカラム302は、論理ボリュームに対応付けられているRAIDグループを構成しているFMPK144のIDを示す。RAIDレベルカラム303は、RAIDグループのレベルを示す。本実施形態に係るストレージシステム42は、1つのRAIDグループの記憶領域を、1つの論理ボリュームに対応付ける。XOR Enableビットの詳細は後述する。
論理ボリューム上の記憶空間と、RAIDグループ内の記憶領域との関係について、図4を用いて説明する。ストレージコントローラ30は、論理ボリュームV0上の記憶空間を、ストライプと呼ぶ複数の固定サイズの記憶領域に分割して、RAIDグループ145の記憶領域に対応付けている。
図4において、論理ボリュームV0内の、D(0)、D(1)で示されるボックスがストライプを表しており、ストライプのサイズは例えば、64KB、256KB、又は512KBである。各ストライプに付されている括弧内の番号を、「ストライプ番号」と呼ぶ。
図4において、要素144−1〜144−4は、FMPK144それぞれがストレージコントローラ30に提供している記憶空間を表している。論理ボリュームV0上のストライプ群は、特定の1つのFMPK144の記憶空間のみに連続して対応付けられるわけではない。各ストライプは、RAIDグループ145を構成する複数のFMPK144の記憶空間(144−1〜144−4)に分散して対応付けられる。
RAIDグループ145内の、パリティが記憶されるストライプは、論理ボリュームV0上の記憶領域には対応付けられない。図4において、P0からPnで示されるボックスが、パリティが記憶されるストライプを表す。本明細書では、パリティが記憶されるストライプは、「パリティストライプ」と呼ばれる。データが記憶されるストライプは、「データストライプ」と呼ばれる。
パリティストライプに格納されるデータは、データストライプに格納されるデータを用いて生成される。図4は、RAID5(3D+1P)のRAIDグループ145を例として示す。一つのパリティストライプに格納されるパリティは、当該パリティストライプが存在するFMPK144とは異なるFMPK144に存在するデータストライプであって、当該パリティストライプのFMPK144内アドレスと同アドレスに存在するデータストライプから生成される。
例えば、パリティストライプP2はFMPK144−2の記憶空間上、先頭から3番目のストライプに位置する。パリティストライプP2に格納されるパリティを生成するために必要なデータストライプは、RAIDグループ145を構成するFMPK144−1、144−3、144−4内の、先頭から3番目のデータストライプD(6)、D(7)、D(8)である。
パリティストライプP2は、データストライプD6、D7、D8に格納されているデータの排他的論理和(XOR)を格納する。以下、パリティストライプと、当該パリティストライプに格納されるパリティを生成するために用いられるデータストライプのセットを、「ストライプグループ」と呼ぶ。図4は、例として、一つのストライプグループを符号310で示す。
データが格納されるFMPKとパリティが格納されるFMPKは、ストライプグループによって異なる。実施形態の概要及びフロー説明において、対象データが格納されるFMPKをデータFMPK、対象データに対応するパリティが格納されるFMPKをパリティFMPKと呼称する。
論理ボリュームV0上の記憶領域と、RAIDグループ145内の記憶領域は、上記のような規則に基づいて対応付けられている。従って、ストレージコントローラ30は、ホスト計算機10からの論理ボリュームV0上のアクセス対象領域が対応付けられている、RAIDグループ145内のストライプを、比較的単純な計算で同定できる。これはRAID機能を採用している公知のストレージ装置で行われている方法であるため、ここでは詳細な説明を省略する。
図5及び6を用いて、各FMPK144により保持され、使用される管理情報を説明する。図5は、論理アドレス管理情報テーブル400の構成例を示し、図6は、シーケンス番号管理テーブル500の構成例を示す。
FMPK144は、FMPK144が接続される外部装置に対して、論理的な記憶空間(以下、論理アドレス空間と呼ぶ)を提供し、CPU62から当該論理アドレス空間へのアクセス(リード、ライトなど)を許している。この論理アドレス空間は、FM1443の記憶領域のアドレス空間とは異なっている。
FMPK144がCPU62から論理アドレス空間上の領域を指定したライト要求を受けると、当該領域にFM1443の未使用領域(たとえば未使用の物理ページ)を割り当てる。FMPK144は論理アドレス空間上の領域と、当該領域に割り当てたFM1443上の記憶領域との対応関係を、論理アドレス管理情報テーブル400に記録して管理する。
図5は、図5に示すように、論理アドレス管理情報テーブル400は、LBAカラム401、OLD PAカラム402、及びNEW PAカラム403を含む。LBAカラム401は、ストレージコントローラ30に提供する論理アドレス空間上のアドレスを示す。
OLD PAカラム402は、LBAカラム401が示すアドレスに格納されたデータ(又はパリティ)へのポインタ、つまりLBAカラム401が示すアドレスに対応付けられたFM1443上のアドレス(物理アドレスと呼ぶ)を示す。NEW PAカラム403は、LBAカラム401が示すアドレスに対して更新後データ(新データ)を受信した時に、当該新データを格納するFM1443上の物理アドレスを示す。
本実施形態の説明において、論理アドレス管理情報テーブル400で管理される記憶領域の単位は、1セクタとする。他の例において、論理アドレス管理情報テーブル400で管理される記憶領域の単位は、1セクタと異なるサイズの領域、例えば、FM1443の最小読み書き単位であるページであってもよい。
図6は、RAID5(3D+1P)のためのシーケンス番号管理テーブル500の例を示す。シーケンス番号管理テーブル500は、LBAカラム501及び複数カラム521、522、523からなるセクション502を含む。LBAカラム501は、ストレージコントローラ30に提供される論理アドレス空間上のアドレスを示す。
本例において、LBAカラム501が示すアドレスの単位は、LBAカラム401と同様である。本例において、一つのストライプグループにおいて、ストライプの論理アドレス(LBA)は共通であるが、一つのストライプにおいて、ストライプの論理アドレス(LBA)が異なっていてもよい。
セクション502は、ストライプグループのデータストライプ数と同数のカラムを有する。カラム521、522、523は、それぞれ、ストライプグループにおけるデータストライプのシーケンス番号を示す。シーケンス番号は、データの世代を示す。カラム521、522、533は、それぞれ、ストライプグループにおける番号0、番号1、番号2のデータストライプのシーケンス番号を示す。
各レコードにおいて、LBAカラム501は、パリティストライプのアドレス又はデータストライプのアドレスを示す。パリティストライプのレコードにおいて、カラム521、522、523は、それぞれ、同ストライプグループのデータストライプのシーケンス番号を示す。データストライプのレコードにおいて、セクション502の対応するカラムがそのシーケンス番号を示し、他のカラムが所定の無効値(NULL値)を示す。
ストライプグループ内のデータストライブ番号は、ストライプグループ内で各データストライプを同定できれば、どのように定義されていてもよい。データストライプ番号は、例えば、RAIDグループ内のFMPK144の順に基づく。例えば、図4において、FMPK144−1、144−2、144−3、144−4の順序が定義されている。データストライプの番号順序は、パリティストライプを除いて、FMPK144−1、144−2、144−3、144−4の順序に一致する。
例えば、パリティストライプがFMPK144−1に存在する場合、FMPK144−2、144−3、144−4のデータストライプは、それぞれ、番号0、番号1、番号2を有する。パリティストライプがFMPK144−3に存在する場合、FMPK144−1、144−2、144−4のデータストライプは、それぞれ、番号0、番号1、番号2を有する。
図4のストライプ310を例として、パリティストライプとデータストライプの関係を説明する。パリティストライプP2に格納されるパリティデータは、データストライプD(6)、D(7)、D(8)のXORで生成される。後述するように、本実施形態において、データFMPKが中間パリティを生成し、保持しているシーケンス番号をインクリメントし、中間パリティと新しいシーケンス番号とを、パリティが格納されるパリティFMPKに送信する。パリティFMPKは、中間パリティと旧(更新前)パリティとから新(更新後)パリティを生成し、シーケンス番号とともに格納する。
そのため、LBAカラム501が、パリティストライプのデータが格納されるLBAを示す場合、そのレコードは、データストライプD(6)、D(7)、D(8)のシーケンス番号をそれぞれ格納する。
次に、FMPK144のパリティ演算機能の設定を説明する。管理計算機20は、FMPK144のパリティ演算機能の設定を行うメニュー画像を、その表示装置において表示し、管理者にFMPK144のパリティ演算機能の設定を行わせる。図7はそのメニューウィンドウの一例を示す。メニューウィンドウG100は、FMPK設定セクションG101と、論理ボリューム設定セクションG104、保存ボタンB10、そしてキャンセルボタンB11を示す。
FMPK設定セクションG101は、ラジオボタンG102を含む、FMPK144のXOR算出機能の有効又は無効を入力するためのGUIを示す。FMPK設定セクションG101は、FMPK144のXOR算出機能の使用可否を設定するための入力セクションである。
論理ボリューム設定セクションG104は、FMPK設定セクションG101において、FMPK144のXOR算出機能が有効(enable)に設定された場合に入力が可能になり、また設定された情報が有効になる。論理ボリューム設定セクションG104は、論理ボリュームID設定カラムG105と、FMPK XOR機能設定カラムG106とを含む。
論理ボリュームID設定カラムG105は、ストレージシステム42に定義されている論理ボリュームIDを表示する。XOR機能設定カラムG106は、論理ボリュームID設定カラムG105に表示されている論理ボリュームが対応付けられているFMPK144のXOR算出機能の使用可否を設定するための入力フィールドからなる。ある論理ボリュームについて、XOR機能設定カラムG106の「enable」が選択されると、当該論理ボリュームの対応付けられたRAIDグループのパリティ生成時には、FMPK144の有するXOR算出機能を用いたパリティ生成が行われる。
保存ボタンB10が押下されると、メニューウィンドウG100に入力された設定情報が、ストレージシステム42に送信され、保存される。具体的には、XOR機能設定カラムG106の「enable」が選択された論理ボリュームについて、ボリューム管理テーブル300のXOR Enableビットカラム304の値が1に設定される。「disable」が選択された場合には、XOR Enableビットカラム304の値が0に設定される。キャンセルボタンB11が押下されると、メニューウィンドウG100で入力した内容はストレージシステム42に保存されることなく破棄され、メニューウィンドウG100は閉じられる。
図8は、実施形態1におけるホストライト処理の概略図を示す。図8を用いて、本実施形態に係るストレージシステム42におけるデータと制御の流れを説明する。ストレージシステム42は、ホスト計算機10から新データ(新D)のライト要求を受信し、データFMPK144に新データを格納する。ストレージシステム42は、必要な新パリティを生成し、パリティFMPK144に格納し、ホストに正常応答を返す。
CPU62は、ホスト計算機10からライト要求を受けると、FE I/F52を使用して、ライト要求に伴うライトデータ(新D)70を、メモリ40に格納する(80)。次に、CPU62は、データFMPK144に対して、LBAを指定する新データ更新コマンドを発行し、新データ70をデータFMPK144に送信する。
新データ更新コマンドを受けたデータFMPK144は、新データ70をメモリ1445に格納し、新データ70を格納するFM領域を確保する。データFMPK144は、FM領域に対する物理アドレスを、CPU62が要求したLBAに対応するNEW PAカラム403のセルに格納する。データFMPK144は、シーケンス番号セクション502の値をインクリメントする。データFMPK144は、XOR回路1442を用いてOLD PAカラム402が指す旧データ71と新データ70のXOR値である中間パリティ72を生成する(86)。
データFMPK144は、メモリ40に対して中間パリティ72とシーケンス番号75と新データ更新完了通知を送り(82)、NEW PAカラム403が指すFM領域に、新データをライトする。通常のFMPK144はバッテリを含むため、フラッシュメモリへのライトは、新データ更新コマンドの処理と非同期でよい。
次に、CPU62は、パリティFMPK144に対して、LBAを指定してパリティ更新コマンドを発行し、中間パリティ72、シーケンス番号75、対応するデータのストライプグループ内データストライプ番号を、パリティFMPK144に送る(83)。
パリティ更新コマンドを受けたパリティFMPK144は、中間パリティ72をメモリ1445に格納する。パリティFMPK144は、OLD PAカラム402からCPU62が要求したLBAに対応する旧パリティ73のアドレスを読み出し、FM領域から旧パリティ73を読み出す。パリティFMPK144は、XOR回路1442を用いて旧パリティ73と中間パリティ72のXOR値である新パリティ74を生成する(87)。
さらに、パリティFMPK144は、新パリティ74を格納するFM領域を確保し、FM領域に対する物理アドレスを、OLD PAカラム402に格納する。パリティFMPK144は、シーケンス番号75を、シーケンス番号管理テーブル500のセクション502において、CPU62から指定されたLBA及びストライプグループ内データストライプ番号に対応するセルに格納する。
パリティFMPK144は、メモリ40に対して新パリティ更新完了通知を送信し、OLD PA402が指すFM領域に、新パリティ74をライトする。通常のFMPK144はバッテリを備えるため、FM領域へのライトは、パリティ更新コマンドの処理と非同期でよい。
新パリティ更新完了を確認したCPU62は、ホスト計算機10に対してライト処理完了(正常終了)を報告する(84)。その後、CPU62は、データFMPK144に新データ確定コマンドを送信する(85)。
新データ確定コマンドを受けたFMPK144のCPU1444は、NEW PAカラム403に格納されている物理アドレスを、OLD PAカラム402にコピーし、NEW PAカラム403の値を無効値(NULL値)に更新する。CPU1444は、メモリ40に対して新データ確定コマンド完了通知を送信する。CPU62は、新データ確定コマンド完了を確認し、ホストライト処理は完了する。
図9A、9B及び図9Cは、本実施形態に係るCPU62が実行するするホストライト処理のフローチャートを示す。図9Aに示すように、CPU62は、まず、ホスト計算機10から、ライト要求を受信する(S2110)。次に、CPU62は、新データ、中間パリティ、及びシーケンス番号を格納するための一時格納領域を、そのCPU62が繋がるメモリ40上に確保し(S2120)、ホスト計算機10に対して書き込み準備完了通知を送信する(S2130)。一時格納領域は、冗長化不要データを格納する領域であり、そのデータは、他のストレージコントローラ30のメモリ40にコピーされない。
ホスト計算機10は書き込み準備完了通知に応答して、新ライトデータ70の送信を開始する。ホスト計算機10から新ライトデータ70のメモリ40内一時格納領域へのデータ送信が終了すると、CPU62は、データ送信完了通知を、ホスト計算機10からFE I/F52を介して受信する(S2140)。
CPU62はこの通知を受信すると、新データ70を格納すべきデータFMPK144へ、新データ更新コマンドを送信する(S2150)。新データ更新コマンドは、新データが格納されているメモリ40のアドレス、新データを送信するデータFMPK144がCPU62に見せている論理アドレス空間の論理アドレス(LBA)、及びデータ長を指定する。新データ更新コマンドは、さらに、中間パリティ及びシーケンス番号をそれぞれ格納するためのメモリ40のアドレスを指定する。
新データ更新コマンドを受けたデータFMPK144のCPU1444は、論理アドレス管理情報テーブル400の指定LBAのレコードを参照し、前回ライト処理の新旧双方のデータが保持されているか判定する。NEW PAカラム403の値が無効値である場合、前回ライト処理のデータ更新(ストライプグループ内のパリティ更新を含む)が完了している。NEW PAカラム403がアドレスを示す場合、前回ライト処理のデータ更新が未完了であり、前回ライト処理の新旧双方のデータがデータFMPK144内に保持されている。
前回ライト処理のデータ更新が完了している場合、CPU1444は、新データ70をメモリ1445に格納し、FM1443において新データ70を格納する物理領域を確保する。CPU1444は、確保した物理領域に対する物理アドレスを、CPU62が要求したLBAに対応するNEW PAカラム403のセルに格納し、シーケンス番号セクション502の対応するセルの値をインクリメントする。
CPU1444は、XOR回路1442を用いてOLD PAカラム402が指す旧データ71と新データ70のXOR値である中間パリティ72を生成し(86)、メモリ40の指定されたアドレスに対して、中間パリティ72、シーケンス番号75、新データ更新完了通知を格納する(82)。CPU62は、メモリ40を介して、新データ更新の完了通知を受信する(S2160)。その後、FMPK144のCPU144は、NEW PAカラム402が指すFM領域に、新データ70をライトする。
前回ライト処理のデータ更新が完了しておらず、前回ライト処理の新旧双方のデータが保持されている場合、データFMPK144のCPU1444は、新旧双方のデータが保持されていることを示す応答を、現在のシーケンス番号と共に、ストレージコントローラ30のメモリ40に格納する。 CPU62は、データFMPK144からの応答を参照して、前回ライト処理の新旧双方のデータが保持されているか判定する(S2300)。新旧双方のデータが保持されていない場合(S2300:NO)、CPU62は、パリティFMPK144へ、パリティ更新コマンドを送信する(S2170)。パリティ更新コマンドは、中間パリティが格納されているメモリ40のアドレス、中間パリティを送信するFMPK144がCPU62に見せている論理アドレス空間の論理アドレス(LBA)、データ長、シーケンス番号、ストライプグループ内番号を指定する。
パリティ更新コマンドを受けたパリティFMPK144のCPU1444は、中間パリティ72をメモリ1445に格納し、OLD PAカラム402からCPU62が要求したLBAに対応する旧パリティ73のポインタを読み出す。CPU1444は、XOR回路1442を用いて、旧パリティ73と中間パリティ72のXOR値である新パリティ74を生成する(87)。
CPU1444は、新パリティ74を格納する物理領域をFM1443において確保する。CPU1444は、物理領域に対する物理アドレスをOLD PAカラム402に格納し、シーケンス番号75を、シーケンス番号管理テーブル500のセクション502において、CPU62から送られてきたLBA及びストライプグループ内データストライプ番号に対応するセルに格納する。CPU1444は、メモリ40に対して新パリティ更新完了通知を送信する。
図9Bに示すように、CPU62は、メモリ40を介して、パリティFMPK144から、パリティ更新コマンド完了通知を受信する。(S2180)。その後、パリティFMPK144のCPU1444は、OLD PAカラム402が指すFM領域に、新パリティ74をライトする。
CPU62は、新パリティ更新完了通知を受信すると、ホスト計算機10に対し、処理が正常に終了したことを示すライト完了通知を送信する(S2190)。その後、CPU62は、新データなどを一時格納しているメモリ40の一時格納領域を、解放する(S2200)。
次に、CPU62は、新データ70を保持するデータFMPK144へ新データ確定コマンドを送信する(S2210)。新データ確定コマンドでは、データFMPK144がCPU62に見せている論理アドレス空間の論理アドレス(LBA)、及びデータ長を指定する。パリティFMPK144への新データ確定コマンドの送信は不要である。
新データ確定コマンドを受けたデータFMPK144のCPU1444は、NEW PAカラム403に格納されている物理アドレスをOLD PAカラム402にコピーし、NEW PAカラム403の値を無効値に更新する。
CPU1444は、メモリ40に対して新データ確定完了通知を送信する。新データ確定の完了が、CPU62に通知される(S2220)。CPU62が新データ確定完了を確認し、ホストライト処理は完了する。パリティ更新後の新データ確定コマンドによりデータFMPKの論理アドレス管理情報テーブル400を更新し、ライト処理を完了することで、ホストライト処理の完了を適切に管理できる。
図9Aに戻って、ステップS2300において、新旧双方のデータがデータFMPK144に保持されている場合(S2300:YES)、CPU62は、新データのLBA及びストライプグループ内データストライプ番号を指定して、パリティFMPK144にシーケンス番号を問い合わせる(S2310)。CPU62は、パリティFMPK144から、当該シーケンス番号を取得する(S2320)。
CPU62は、データFMPK144から取得したシーケンス番号と、パリティFMPK144から取得したシーケンス番号とを、比較する(S2300)。二つのシーケンス番号が不一致である場合、CPU62はステップS2400に進む。二つのシーケンス番号が一致である場合、CPU62はステップS2500に進む。
図9Cに示すように、ステップS2400において、CPU62は、上記LBAとデータ長とを指定して、中間パリティリードコマンドをデータFMPK144に送信する。中間パリティリードコマンドは、さらに、中間パリティ及びシーケンス番号をそれぞれ格納するためのメモリ40のアドレスを指定する。
CPU62は、データFMPK144から、メモリ40を介して、中間パリティリード完了と共に、中間パリティを受信する(S2410)。CPU62は、パリティFMPK144に、パリティ更新コマンドを送信する(S2420)。ステップS2420、S2430、S2500及びS2510は、それぞれ、ステップS2170、S2180、S2210及びS2220と同様であり、詳細を省略する。ステップS2510の後、CPU62は、ステップS2150に戻る。
上述のように、FMPKが新旧データを保持しているか(新データが未確定であるか)をチェックすることで、ストレージコントローラは、同一アドレスに対する前回ライト処理が、完了しているか、又は、(例えばストレージコントローラの障害により)中断しているか判定できる。
データFMPKからの応答が、前回ライト処理が完了していないことを示す場合、データFMPKとパリティFMPKのシーケンス番号を比較することで、ストレージコントローラは、データFMPKの前回ライト処理における新データに対応したパリティデータがパリティFMPKに格納されているか判定できる。
上述のように、データFMPKのシーケンス番号とパリティFMPKのシーケンス番号を比較することで、前記ライト処理が中断した時点を特定し、適切なステップから前記ライト処理を再開できる。シーケンス番号の一致は、データFMPKのデータとパリティFMPKのパリティデータが整合していることを示す。シーケンス番号が不一致であることは、データFMPKのデータとパリティFMPKのパリティデータが不整合であることを示す。
上述のように、前回ライト処理が完了していない場合、ストレージコントローラは、中断したステップから前回ライト処理を再開し、前回ライト処理を完了してから今回(新規)ライト処理を実行する。これにより、ホストデータとパリティデータとの間の不整合を避けることができる。
図10は、FMPK144からのリード処理のフローチャートを示す。以下に説明するリード処理により、適切なデータをFMPK144からリードすることができる。FMPK144のCPU1444は、ストレージコントローラ30から、LBAとデータ長を指定するリードコマンドを受信する(S5110)。CPU1444は、メモリ1445において、一時格納領域を確保する(S5120)。
CPU1444は、論理アドレス管理情報テーブル400から、指定されたLBAの物理アドレスを取得する(S5130)。指定されたLBAのレコードのNEW PAカラム403が、物理アドレスを格納している場合、CPU1444は、NEW PAカラム402から物理アドレスを取得する。NEW PAカラム403が無効値を格納している場合、CPU1444は、OLD PAカラム402から物理アドレスを取得する。
CPU1444は、取得した物理アドレスからリードしたデータを一時格納領域へ格納する(S5140)。その後、CPU1444は、ストレージコントローラ30へ、リードデータとリード完了通知とを送信する(S5150)。
上述のように、ストレージコントローラは、新データと旧データの双方が存在する場合に新データを応答し、旧データのみ存在する場合に旧データを応答する。これにより、ライト処理中の障害発生後のリード処理において、ホスト計算機にライト完了通知を応答後に旧データを応答することを避けることができ、ストレージシステムの信頼性及び可用性が保たれる。
さらに、新旧データを保持する場合に、FMPK144がストレージコントローラ30へ新旧データ保持状態を通知し、ストレージコントローラ30がステップS2310、S2320、S2330、S2400、S2410、S2420、S2430、S2500、S2510を行った後、ホストへ新データを応答する。これにより、パリティFMPK144にも新データが反映されるため、新データ応答後のデータFMPK144が故障時にも、旧データを応答することを避けることができる。
RAIDグループ内のFMPKの障害発生に応じたコレクション処理は、パリティFMPKからパリティデータをリードする。コレクション処理において、ストレージコントローラは、正常なデータFMPKからデータをリードする。これにより、前回ライト処理が完了しているか判定できる。ストレージコントローラは、前回ライト処理の完了後、パリティFMPKからパリティデータをリードする。これにより、ドライブ障害時にも不正データを応答することはなく、ストレージシステムの信頼性及び可用性が保たれる。
本実施形態により、ストレージシステムの信頼性、可用性を保ちつつ、パリティ生成及び記憶媒体へのデータ格納処理に係る、ストレージコントローラの処理負荷を低減することができ、ライト性能を向上できる。
上述のように、FMPKによるパリティ生成により、ストレージコントローラによるパリティ生成及びパリティデータの二重化が不要となる。また、シーケンス番号により、データFMPK及びパリティFMPKそれぞれに、ライトデータ更新及びパリティデータ更新の管理情報を持たせ、障害に適切に対応できる。これにより、ストレージコントローラがデータ更新ための管理情報を保持することが不要となる。
上述のように、新データ更新コマンドへの応答がシーケンス番号及び中間パリティを含むことで、ストレージコントローラからデータFMPKへの発行コマンド数を低減できる。ストレージコントローラは、シーケンス番号及び/又は中間パリティを要求するコマンドを、新データ更新コマンドと別に発行してもよい。
本実施形態は、パリティ更新後に、ホスト計算機にライト処理が正常に終了したことを通知する。これにより、ライトデータの冗長化が不要である。これに代えて、ストレージコントローラのメモリ上のCMにライトデータを冗長化し、ホストに正常応答後に、データ更新コマンド以後の処理を実行してもよい。その場合でも、ストレージコントローラがFMPKを更新する処理は改善され、ストレージコントローラのライト性能は向上する。
(実施形態2)
図11は、実施形態2におけるホストライト処理の概略図を示す。実施形態2は、新データを格納すべきデータFMPKと、新データに対応するパリティを格納すべきパリティFMPKとに、並行に新データを送信する。さらに、両FMPKから正常応答が報告された時点で、実施形態2は、ホスト計算機10に対し、ライト処理が正常に終了したことを通知する。
これにより、実施形態1よりホスト計算機10からのライト要求に対する応答時間を短縮できる。また、実施形態1でストレージコントローラのメモリ上のCMにライトデータを冗長化よりも、ストレージコントローラの処理が減り、ストレージコントローラのライト性能が向上する。
図11は、実施形態2におけるホストライト処理の概略図を示す。図11を用いて、本実施形態に係るストレージシステム42におけるデータと制御の流れを説明する。ストレージシステム42は、ホスト計算機10から新データ(新D)のライト要求を受信する。ストレージシステム42は、新データをデータFMPKとパリティFMPKに格納し、ホスト計算機10にライト完了通知を送信する。ストレージシステム42は、必要な新パリティを生成し、新パリティをパリティFMPKに格納する。
CPU62は、ホスト計算機10から、ライト要求を受信すると、FE I/F52を使用して、ライト要求に伴うライトデータ(新D)70を、メモリ40に格納する(680)。次に、CPU62は、データFMPK144に対して、LBAを指定する新データ更新コマンドを発行し、新データ70をデータFMPK144に送信する(681)。CPU62は、パリティFMPK144に対して、LBA及びストライプグループ内データ番号を指定する新データ格納コマンドを発行し、新データ70をパリティFMPK144にも送信する(682)。
新データ更新コマンドを受けたデータFMPK144は、新データ70をメモリ1445に格納し、指定されたLBAのシーケンス番号セクション502の値をインクリメントし、メモリ40に対してシーケンス番号76と新データ更新コマンド受付通知を送信する(683)。
新データ格納コマンドを受けたパリティFMPK144は、新データ70をメモリ1445に格納し、パリティが格納されるLBAのNEW PAカラム403に、アドレスを記録し、メモリ40に対して新データ格納完了通知を送信する。パリティFMPK144は、電源障害に備えて、新データ格納コマンド処理において、FM領域を確保してもよい。通常のFMPK144はバッテリを備えるため、パリティFMPK144は、電源障害発生時にバッテリからの電源供給で動作し、FM領域を確保して、新データをライトしてもよい。
新データ更新コマンド受付通知及び新データ格納完了通知を受信したCPU62は、ホスト計算機10に対してライト完了通知を送信し(684)、データFMPK144からの新データ更新完了通知を待つ。
新データ更新コマンド受付通知を送ったデータFMMPK144は、新データ70を格納するFM領域を確保し、FM領域に対する物理アドレスをCPU62が要求したLBAに対応するNEW PAカラム403のセルに格納する。データFMPK144は、XOR回路1442を用いてOLD PAカラム402が指す旧データ71と新データ70のXOR値である中間パリティ72を生成する(86)。
データFMPK144は、メモリ40に対して中間パリティ72と新データ更新完了通知を送り(685)、NEW PAカラム403が指すFM領域に新データをライトする。通常のFMPK144はバッテリを含むため、フラッシュメモリへのライトは、新データ更新コマンドの処理と非同期でよい。
新データ更新完了通知を受信したCPU62は、パリティFMPK144に対して、LBAを指定してパリティ更新コマンドを発行し、中間パリティ72、シーケンス番号75、対応するデータのストライプグループ内データストライプ番号を、パリティFMPK144に送る(686)。
パリティ更新コマンドを受けたパリティFMPK144は、中間パリティ72をメモリ1445に格納する。パリティFMPK144は、OLD PAカラム402からCPU62が要求したLBAに対応する旧パリティ73のアドレスを読み出し、FM領域から旧パリティ73を読み出す。パリティFMPK144は、XOR回路1442を用いて旧パリティ73と中間パリティ72のXOR値である新パリティ74を生成する(87)。
さらに、パリティFMPK144は、新パリティ74を格納するFM領域を確保し、FM領域に対する物理アドレスをOLD PAカラム402に格納する。パリティFMPK144は、シーケンス番号管理テーブル500のセクション502において、CPU62から指定されたLBA及びストライプグループ内データストライプ番号に対応するセルに格納する。
パリティFMPK144は、新データ格納コマンドと共に受けた新データを破棄し、メモリ40に対して新パリティ更新完了通知を送り、OLD PAカラム402が指すFM領域に新パリティ74をライトする。通常のFMPK144はバッテリを備えるため、FM領域へのライトは、パリティ更新コマンドの処理と非同期でよい。
新パリティ更新完了を確認したCPU62は、データFMPK144に新データ確定コマンドを送る(687)。新データ確定コマンドを受けたデータFMPK144は、NEW PAカラム403に格納されている物理アドレスをOLD PAカラム402にコピーし、NEW PAカラム403の値を無効値に更新する。データFMPK144は、メモリ40に対して新データ確定完了通知を送る。CPU62が新データ確定完了を確認し、ライト処理は完了する。
図12A、12B及び12Cは、実施形態2におけるCPU62が実行するホストライト処理のフローを示す。図12AにおけるステップS3110からS3150は、図9AにおけるステップS2110からS2150と同様である。
ステップS3160において、CPU62は、データFMPK144から、新データ更新コマンドへの応答を受信する。データFMPK144による新旧データについての判定方法は、実施形態1と同様である。新旧データが存在する場合、データFMPK144は、新旧データが保持されていることを示す応答を、シーケンス番号と共に返す。旧データのみ存在する場合、データFMPK144は、新データ70をメモリ1445に格納し、シーケンス番号セクション502の値をインクリメントし、メモリ40に対してシーケンス番号と新データ更新コマンド受付通知を送る(683)。
データFMPK144が新旧データを保持していない場合(S3165:NO)。CPU62は、パリティFMPK144に対して新データ格納コマンドを発行し、新データ70をパリティFMPK144に送る(S3170)。新データ格納コマンドは、新データが格納されているメモリ40のアドレス、新データに対応するパリティを格納するパリティFMPK144がCPU62に見せている論理アドレス空間における論理アドレス(LBA)、データ長、及びストライプグループ内データストライプ番号を指定する。
新データ格納コマンドを受けたパリティFMPK144は、新データ70をメモリ1445に格納し、パリティデータが格納されるLBAのNEW PAカラム403に物理アドレスを記録し、メモリ40に対して新データ格納完了通知を送る(S3180)。
新データ更新コマンド受付通知及び新データ格納完了通知を受信したCPU62は、ホスト計算機10に対して、ライト完了通知を送信する(S3190)。
新データ更新コマンド受付通知を送った後、データFMPK144は、新データ70を格納するFM領域を確保し、FM領域に対する物理アドレスをCPU62が要求したLBAに対応するNEW PAカラム403のセルに格納する。データFMPK144は、XOR回路1442を用いて、OLD PAカラム402が指す旧データ71と新データ70のXOR値である中間パリティ72を生成する(86)。
データFMPK144は、メモリ40に対して中間パリティ72と新データ更新完了通知を送り(685)、新データ更新が完了した旨がCPU62に通知される(S3200)。その後、データFMPK144は、NEW PAカラム403が指すFM領域に新データ70をライトする。
新データ更新完了通知を受けたCPU62は、パリティFMPK144へ、パリティ更新コマンドを送信する(S3210)。パリティ更新コマンドは、中間パリティが格納されているメモリ40のアドレス、パリティFMPK144がCPU62に見せている論理アドレス空間の論理アドレス(LBA)、データ長、シーケンス番号、及びストライプグループ内データストライプ番号を指定する。
パリティ更新コマンドを受けたパリティFMPK144は、中間パリティ72をメモリ1445に格納する。パリティFMPK144は、CPU62が要求したLBAに対応するOLD PAカラム402のセルが示す旧パリティ73をFM領域から読み出す。パリティFMPK144は、XOR回路1442を用いて、旧パリティ73と中間パリティ72のXOR値である新パリティ74である生成する(87)。
パリティFMPK144は、新パリティ74を格納するFM領域を確保し、FM領域に対する物理アドレスをOLD PAカラム402に格納する。パリティFMPK144は、シーケンス番号75をCPU62から送られてきたLBA及びストライプグループ内データストライプ番号に対応するセクション502内のセルに格納する。
パリティFMPK144は、新データ格納コマンドと共に受けた新データを破棄する。パリティFMPK144は、メモリ40に対して新パリティ更新完了通知を送り、新パリティ更新が完了した旨が、CPU62に通知される(S3220)。その後、パリティFMPK144は、新パリティ74を確保したFM領域にライトする。
CPU62は新パリティ更新完了通知を受信すると、新データなどを一時格納していたメモリ40の一時格納領域を解放し(S3230)、新データ70を格納したデータFMPK144へ、新データ確定コマンドを送信する(S3240)。新データ確定コマンドは、データFMPK144がCPU62に見せている論理アドレス空間の論理アドレス(LBA)及びデータ長を指定する。
新データ確定コマンドを受けたデータFMPK144は、NEW PAカラム403に格納されている物理アドレスをOLD PAカラム402にコピーし、NEW PAカラム403の値を無効値に更新する。データFMPK144は、メモリ40に対して新データ確定完了通知を送る。これにより、新データ確定完了がCPU62に通知される(S3250)。CPU62が新データ確定完了を確認し、ライト処理は完了する。
ステップS3165において、新旧データが保持されている場合(S3165:YES)、CPU62は、ステップ3500に進む。図12B及び図12CにおけるステップS3500、S3520、S3530、S3600、S3610は、図9B及び9CにおけるステップS2310、S2320、S2330、S2400、S2410と同様である。ステップS3620、S3630、S3700、S3710は、ステップS3210、S3220、S3240、S3250と同様である。
(実施形態3)
図13は、実施形態3におけるホストライト処理の概略図を示す。実施形態3では、XOR演算をFMPKドライブではなく、ストレージコントローラで行う。これにより、FMPK144からXOR回路を省略できる。
図13は、実施形態3におけるホストライト処理の概略図を示す。図13を用いて、本実施形態に係るストレージシステム42におけるデータと制御の流れを説明する。ストレージシステム42は、ホスト計算機10から新データ(新D)のライト要求を受信し、データFMPK144に格納する。ストレージシステム42は、必要な新パリティを生成してパリティFMPK144に格納し、ホストに正常応答する。
CPU62は、ホスト計算機10から、ライト要求を受信すると、FE I/F52を使用して、ライト要求に伴うライトデータ(新D)70を、メモリ40に格納する(780)。次に、CPU62は、データFMPK144に対して、LBAを指定する新データ更新コマンドを発行し、新データ70をデータFMPK144に送信する(781)。
新データ更新コマンドを受けたデータFMPK144は、新データ70をメモリ1445に格納し、新データ70を格納するFM領域を確保する。データFMPK144は、FM領域に対する物理アドレスを、CPU62が要求したLBAに対応するNEW PAカラム403のセルに格納する。データFMPK144は、シーケンス番号セクション502の値をインクリメントし、OLD PAカラム402が指す旧データ71をFM領域から読み出す。
データFMPK144は、メモリ40に対して、旧データ71、シーケンス番号75及び新データ更新完了通知を送る(782)。データFMPK144は、確保したFM領域に新データをライトする。通常のFMPK144はバッテリを備えるため、FM領域へのライトは、新データ更新コマンドの処理と非同期でよい。
次に、CPU62は、パリティFMPK144に対して旧パリティデータのリードコマンドを送り、パリティFMPK144は、旧パリティ73とリード完了通知とを、メモリ40に返す(783)。リード完了を確認したCPU62は、メモリ40上の新データ70、旧データ71及び旧パリティ73を読み出し、それらのXORを計算し、新パリティ74を生成し、メモリ40に格納する(784)。
次に、CPU62は、パリティFMPK144に対して、LBAを指定するパリティ更新コマンドを発行し、新パリティ74、シーケンス番号75及び対応するストライプグループ内データストライプ番号を、送る(785)。
パリティ更新コマンドを受けたパリティFMPK144は、新パリティ74をメモリ1445に格納する。パリティFMPK144は、新パリティ74を格納するFM領域を確保し、FM領域に対する物理アドレスをOLD PAカラム402に格納する。
パリティFMPK144は、シーケンス番号75を、CPU62から送られてきたLBA及びストライプグループ内データストライプ番号に対応するシーケンス番号セクション502内のセルに格納する。パリティFMPK144は、メモリ40に対して、新パリティ更新完了通知を送り、その後、新パリティ74を確保したFM領域に格納する。通常のFMPK144はバッテリを備えるため、FM領域のライトは、パリティ更新コマンドの処理と非同期でよい。
新パリティ更新完了を確認したCPU62は、ホスト計算機10に対してライト完了を報告する(786)。その後、CPU62は、データFMPK144に新データ確定コマンドを送る(787)。
新データ確定コマンドを受けたデータFMPK144は、NEW PAカラム403に格納されている物理アドレスをOLD PAカラム402にコピーし、NEW PAカラム403の値を無効値に更新する。データFMPK144は、メモリ40に対して新データ確定完了通知を送る。CPU62が新データ確定完了を確認し、ライト処理は完了する。
図14A、14B及び14Cは、実施形態3におけるCPU62が実行するホストライト処理のフローを示す。図14AにおけるステップS4110からS4150は、図9AにおけるステップS2110からS2150と同様である。
ステップS4160において、CPU62は、データFMPK144から、新データ更新コマンドへの応答を受信する。データFMPK144による新旧データについての判定方法は、実施形態1と同様である。新旧データが存在する場合、データFMPK144は、新旧データが保持されていることを示す応答を、シーケンス番号と共に返す。
ステップS4165において、旧データのみ存在する場合(S4165:NO)、データFMPK144は、新データ70をメモリ1445に格納し、新データ70を格納するFM領域を確保する。データFMPK144は、FM領域に対する物理アドレスを、CPU62が要求したLBAに対応するNEW PAカラム403のセルに格納する。
データFMPK144は、シーケンス番号セクション502の対応する値をインクリメントし、OLD PAカラム402が指す旧データ71をFM領域から読み出す。データFMPK144は、メモリ40に対して、旧データ71、シーケンス番号75及び新データ更新完了通知を送り(782)、これにより、新データ更新完了がCPU62に通知される(S4160)。 CPU62は新データ更新完了通知を受信すると、パリティFMPK144に対して、LBAを指定して、旧パリティのリードコマンドを送る(S4170)。パリティFMPK144は旧パリティ73とリード完了通知をメモリ40返す(S4180)。
リードコマンド完了通知を受けたCPU62は、メモリ40上の新データ70、旧データ71及び旧パリティ73を読み出し、それらのXORを計算し、新パリティ74を生成する。CPU62は、メモリ40の一時格納領域に、新パリティ74を格納する(S4190)。
次に、CPU62は、パリティFMPK144へパリティ更新コマンドを送信する(S4200)。パリティ更新コマンドは、新パリティが格納されているメモリ40のアドレス、パリティFMPK144がCPU62に見せている論理アドレス空間の論理アドレス(LBA)、データ長、シーケンス番号、及びストライプグループ内データストライプ番号を指定する。
パリティ更新コマンドを受けたパリティFMPK144は、新パリティ74をメモリ1445に格納し、新パリティ74を格納するFM領域を確保する。パリティFMPK144は、FM領域に対する物理アドレスを、OLD PAカラム402に格納する。パリティFMPK144は、シーケンス番号75を、CPU62から送られてきたLBA及びストライプグループ内データストライプ番号に対応するシーケンス番号セクション502内のセルに格納する。
パリティFMPK144は、メモリ40に対して新パリティ更新完了通知を送り、これにより新パリティ更新完了がCPU62に通知される(S4210)。その後、パリティFMPK144は、新パリティ74を、確保したFM領域に格納する。
CPU62は新パリティ更新完了通知を受信すると、ホスト計算機10に対し、ライト処理が正常に終了したことを通知し(S4220)、新データなどを一時保存していたメモリ40の一時格納領域を解放する(S4230)。
次に、CPU62は、データFMPK144へ新データ確定コマンドを送信する(S4240)。新データ確定コマンドは、データFMPK144がCPU62に見せている論理アドレス空間の論理アドレス(LBA)及びデータ長を指定する。
新データ確定コマンドを受けたデータFMPK144は、NEW PAカラム403に格納されている物理アドレスをOLD PAカラム402にコピーし、NEW PAカラム403の値を無効値に更新する。データFMPK144は、メモリ40に対して新データ確定完了通知を送り、これにより、新データ確定完了がCPU62に通知される(S4250)。CPU62は新データ確定完了を確認し、ライト処理は完了する。
ステップS4165において、新旧データが保持されている場合(S4165:YES)、CPU62は、ステップ4500に進む。図14BにおけるステップS4500、S4520、S4530は、図9BにおけるステップS2310、S2320、S2330と同様である。図14CにおけるステップS4600からS4640、S4700、S4710は、図14AにおけるステップS4170からS4270、S4240、S4250と同様である。
本実施形態により、FMPK144からXOR回路を省略できる。本実施形態は、パリティ更新後に、ホスト計算機にライト処理が正常に終了したことを通知する。これに代えて、ストレージシステムは、ストレージコントローラのメモリ上のCMでライトデータを冗長化し、ホストに正常応答後にデータ更新コマンド以後の処理を実行してもよい。
以上、実施形態を説明してきたが、これらは本発明の説明のための例示であって、本発明は上術の実施形態に限定されない。本発明は、他の種々の形態でも実施可能である。例えば、上記実施形態に記載のストレージシステムでは、各構成要素がパッケージボードの形で実装されているが、本発明はそれに限定されるものではない。各種のパッケージボードの数は、一つでもそれより多くてもよい。ストレージコントローラにより実行される処理の少なくとも一部は、FMPKにより実行されてもよい。
実施形態において、ホスト計算機からのライトデータを格納する最終記憶装置が、フラッシュメモリを用いたFMPKである。最終記憶装置はフラッシュメモリを用いた記憶ドライブに限定されるものではなく、PCM、ReRAM、その他のストレージクラスメモリなどの不揮発メモリや、HDD(Hard Disk Drive)のような磁気ディスクデバイスを使用してもよい。
上記実施形態は、RAIDレベル5の例を中心に説明したが、本発明は、他のRAIDレベルやErasure Codingを使用するシステムに適用できる。本発明は、それぞれがローカルストレージを管理する複数ノードからなる分散RAIDシステムに適用できる。本発明は、ストレージシステムとホスト計算機が1又は複数の計算機上で実行される仮想マシンによって実装された計算機システムに適用することができる。一つの計算機において、ホスト仮想マシンとストレージ仮想マシンが実装されている場合、同一のプロセッサが、ホスト及びストレージコントローラとして動作する。
また、実施形態の説明において、1つのRAIDグループの記憶領域が、1つの論理ボリュームに対応付けられているが、本発明はこの構成に限定されるものではない。例えば、1つのRAIDグループの記憶領域が2以上の連続領域に分割し、分割された連続領域をそれぞれ、1つの論理ボリュームに対応付ける構成を採用してもよい。逆に1つの論理ボリュームが、複数のRAIDグループに対応付けられる構成を採用することもできる。
また、実施形態の上記説明において、ホスト計算機に提供する論理ボリュームの記憶領域とRAIDグループの記憶領域とは、固定的にマッピングされている。本発明は、論理ボリュームの記憶領域とRAIDグループの記憶領域の関係が固定的である構成に限定されるものではない。例えば、周知の技術であるThin−Provisioning技術を用いて論理ボリュームを定義し、ホスト計算機から論理ボリューム上記憶領域に対してライト要求を受け付けた時点ではじめて、当該記憶領域に対してRAIDグループの記憶領域を割り当てる構成を採用することもできる。
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。

Claims (10)

  1. 複数の記憶ドライブと、
    コントローラと、を含み、
    前記コントローラは
    ホストから、第1アドレスを指定する第1ライト要求と、前記第1ライト要求に関連付けられた第1新データを受信し、
    第2アドレスを指定する第1データ更新コマンドと、前記第1新データとを、前記複数の記憶ドライブに含まれる第1記憶ドライブに送信し、
    前記第1記憶ドライブは、
    前記第1データ更新コマンドに応答して、前記第2アドレスの、管理しているシーケンス番号を、更新し、
    前記更新されたシーケンス番号を、前記コントローラに送信し、
    前記コントローラは、前記複数の記憶ドライブに含まれる、前記第2アドレスに関連付けられた旧冗長データを格納する第2記憶ドライブに、前記旧冗長データの第3アドレスを指定する第1冗長データ更新コマンドと、前記旧冗長データを更新するためのデータと、前記更新されたシーケンス番号と、を送信し、
    前記第2記憶ドライブは、
    前記旧冗長データを更新するためのデータに基づき、前記旧冗長データを更新し、
    前記更新されたシーケンス番号によって、前記第3アドレスの、管理しているシーケンス番号を、更新し、
    前記コントローラは、
    前記第1記憶ドライブから、前記第1アドレスに対する前回ライト要求の処理が完了しているかを示す情報を受信し、
    前記前回ライト要求に対応する処理が完了していない場合、前記前回ライト要求の処理を完了した後に、前記第1記憶ドライブに前記第1データ更新コマンドの処理を実行させ、
    前記前回ライト要求の処理を完了するため、
    前記第1記憶ドライブから前記第2アドレスのシーケンス番号を受信し、
    前記第2記憶ドライブから前記第3アドレスのシーケンス番号を受信し、
    前記第2アドレスの前記シーケンス番号と、前記第3アドレスの前記シーケンス番号との比較を実行し、
    前記比較の結果が不一致を示す場合、前記第2記憶ドライブに、前記第3アドレスにおける前回冗長データ更新コマンドに対応する更新を実行させ、前記第1記憶ドライブに、前記第2アドレスにおける前回データ更新コマンドの新データを確定させ、
    前記比較の結果が一致を示す場合、前記第2記憶ドライブに前記第3アドレスにおける前記更新を実行させることなく、前記第1記憶ドライブに、前記第2アドレスにおける前記前回データ更新コマンドの前記新データを確定させる、ストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記第1記憶ドライブは、前記第1新データと前記第2アドレスの旧データとに基づき生成した中間冗長データを、前記コントローラに送信し、
    前記旧冗長データを更新するためのデータは、前記中間冗長データであり、
    前記第2記憶ドライブは、前記旧冗長データ及び前記中間冗長データに基づき新冗長データを生成する、ストレージシステム。
  3. 請求項1に記載のストレージシステムであって、
    前記コントローラは、前記第2アドレスの前記シーケンス番号と、前記第3アドレスの前記シーケンス番号との比較結果に基づき、前記第2アドレスにおけるデータと前記第3アドレスにおける冗長データが整合しているか判定し、
    前記第2アドレスにおけるデータと前記第3アドレスにおける冗長データが不整合の場合に、前記第2アドレスにおけるデータと整合するように前記冗長データを更新する、ストレージシステム。
  4. 請求項1に記載のストレージシステムであって、
    前記コントローラは、前記旧冗長データを更新するための前記データを前記第2記憶ドライブに送信した後に、前記ホストに、前記第1ライト要求に対する完了応答を返す、ストレージシステム。
  5. 請求項4に記載のストレージシステムであって、
    前記コントローラは、前記ホストに前記第1ライト要求に対する完了応答を返し、前記第3アドレスの冗長データ更新完了通知を前記第2記憶ドライブから受信した後、前記第1記憶ドライブに新データ確定コマンドを送信し、
    前記第1記憶ドライブは、前記新データ確定コマンドに応答して、前記第1新データを前記第2アドレスに格納されているデータと確定する、ストレージシステム。
  6. 請求項2に記載のストレージシステムであって、
    前記第1記憶ドライブは、前記第1データ更新コマンドに応答して、前記中間冗長データ及び前記更新されたシーケンス番号を前記コントローラに返す、ストレージシステム。
  7. 請求項1に記載のストレージシステムであって、
    前記コントローラは、前記第1冗長データ更新コマンドを送信する前に、前記第1新データを前記第2記憶ドライブに送信し、
    前記第1新データを前記第1記憶ドライブ及び前記第2記憶ドライブに送信した後、前記第1冗長データ更新コマンドを送信する前に、前記ホストに前記第1ライト要求に対する完了応答を返す、ストレージシステム。
  8. 請求項1に記載のストレージシステムであって、
    前記コントローラは、
    前記第2記憶ドライブの前記第3アドレスから前記旧冗長データを読み出し、
    前記旧冗長データと前記第1新データとに基づき新冗長データを生成し、
    前記旧冗長データを更新するための前記データは、前記新冗長データである、ストレージシステム。
  9. 第1記憶ドライブと第2記憶ドライブとを含む、ストレージシステムであって、
    前記第1記憶ドライブは、
    外部に提供する第1論理アドレス空間における論理アドレスとシーケンス番号との間の関係を管理し、
    前記第1論理アドレス空間における第1論理アドレスを指定したデータ更新コマンドと、前記データ更新コマンドに関連付けられた新データとを、受信すると、前記第1論理アドレスのシーケンス番号を更新し、
    前記第2記憶ドライブは、
    外部に提供する第2論理アドレス空間における論理アドレスとシーケンス番号との間の関係を管理し、
    前記第1論理アドレスに対応する冗長データを前記第2論理アドレス空間における第2論理アドレスにおいて格納し、
    前記第2論理アドレスを指定する冗長データ更新コマンドと、前記第2論理アドレスにおける旧冗長データを更新するためのデータと、前記更新された前記第1論理アドレスのシーケンス番号と、を受信し、
    前記旧冗長データを更新するための前記データに基づき、前記旧冗長データを更新し、
    前記受信したシーケンス番号によって、前記第2論理アドレスの、管理しているシーケンス番号を、更新し、
    前記第1論理アドレスのシーケンス番号と前記第2論理アドレスのシーケンス番号とが不一致の場合、
    前記第2記憶ドライブは、前記第2論理アドレスにおける旧冗長データの更新を実行し、
    前記第1記憶ドライブは、前記旧冗長データの前記更新の後、前記データ更新コマンドの処理を実行する、ストレージシステム。
  10. 複数の記憶ドライブの格納データを管理する方法であって、
    コントローラが、第1アドレスを指定する第1データ更新コマンドと、第1新データとを、前記複数の記憶ドライブに含まれる第1記憶ドライブに送信し、
    前記第1記憶ドライブが、前記第1データ更新コマンドに応答して、前記第1記憶ドライブで管理されている前記第1アドレスのシーケンス番号を、更新し、
    前記コントローラが、前記複数の記憶ドライブに含まれる、前記第1アドレスに関連付けられた旧冗長データを格納する第2記憶ドライブに、前記旧冗長データの第2アドレスを指定する第1冗長データ更新コマンドと、前記旧冗長データを更新するためのデータと、前記更新されたシーケンス番号と、を送信し、
    前記第2記憶ドライブが、前記旧冗長データを更新するためのデータに基づき、前記旧冗長データを更新し、
    前記第2記憶ドライブが、前記更新されたシーケンス番号によって、前記第2記憶ドライブにおいて管理されている前記第2アドレスのシーケンス番号を、更新し、
    前記第1記憶ドライブにおいて前記第1アドレスに対する前回データ更新コマンドに関連付けられた未確定データが保持されている場合、前記コントローラが、前記第1アドレスの前記シーケンス番号と、前記第2アドレスの前記シーケンス番号との比較を実行し、
    前記比較の結果が不一致を示す場合、前記第2記憶ドライブが前記第2アドレスにおける冗長データの前記前回データ更新コマンドに対応する更新を実行し、前記第1記憶ドライブが前記前回データ更新コマンドの新データを確定し、
    前記比較の結果が一致を示す場合、前記第2記憶ドライブが前記第2アドレスにおける前記更新をすることなく、前記第1記憶ドライブが前記前回データ更新コマンドの前記新データを確定し、
    前記前回データ更新コマンドの前記新データが確定した後に、前記第1記憶ドライブが前記第1記憶ドライブで管理されている前記第1アドレスのシーケンス番号を更新する、方法。
JP2019519863A 2017-05-24 2017-05-24 ストレージシステム Active JP6722354B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/019304 WO2018216124A1 (ja) 2017-05-24 2017-05-24 ストレージシステム

Publications (2)

Publication Number Publication Date
JPWO2018216124A1 JPWO2018216124A1 (ja) 2019-07-04
JP6722354B2 true JP6722354B2 (ja) 2020-07-15

Family

ID=64396345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019519863A Active JP6722354B2 (ja) 2017-05-24 2017-05-24 ストレージシステム

Country Status (3)

Country Link
US (1) US11221790B2 (ja)
JP (1) JP6722354B2 (ja)
WO (1) WO2018216124A1 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4689137B2 (ja) * 2001-08-08 2011-05-25 株式会社日立製作所 リモートコピー制御方法、及びストレージシステム
US6434683B1 (en) * 2000-11-07 2002-08-13 Storage Technology Corporation Method and system for transferring delta difference data to a storage device
US7162600B2 (en) * 2005-03-29 2007-01-09 Hitachi, Ltd. Data copying method and apparatus in a thin provisioned system
JP2009104420A (ja) * 2007-10-23 2009-05-14 Hitachi Ltd 記憶制御装置及び記憶装置の障害検出方法
CN104205059B (zh) 2012-04-27 2017-07-14 株式会社日立制作所 存储系统和存储控制装置
US9317423B2 (en) * 2013-01-07 2016-04-19 Hitachi, Ltd. Storage system which realizes asynchronous remote copy using cache memory composed of flash memory, and control method thereof
US8832395B1 (en) * 2013-04-12 2014-09-09 Hitachi, Ltd. Storage system, and method of storage control for storage system

Also Published As

Publication number Publication date
JPWO2018216124A1 (ja) 2019-07-04
WO2018216124A1 (ja) 2018-11-29
US20210286547A1 (en) 2021-09-16
US11221790B2 (en) 2022-01-11

Similar Documents

Publication Publication Date Title
JP5525605B2 (ja) フラッシュメモリモジュール
US10977124B2 (en) Distributed storage system, data storage method, and software program
EP3617867B1 (en) Fragment management method and fragment management apparatus
US9778986B2 (en) Storage system
US9495110B2 (en) LUN management with distributed RAID controllers
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US10768838B2 (en) Storage apparatus and distributed storage system
US10649891B2 (en) Storage device that maintains mapping data therein
US10878111B2 (en) Peer storage devices supporting protection information
US10067833B2 (en) Storage system
US7346733B2 (en) Storage apparatus, system and method using a plurality of object-based storage devices
WO2024119770A1 (zh) 一种磁盘阵列扩容方法、系统、存储介质及设备
US9009440B2 (en) Adjustment of data storage capacity provided by a storage system
US8949528B2 (en) Writing of data of a first block size in a raid array that stores and mirrors data in a second block size
US11625193B2 (en) RAID storage device, host, and RAID system
US11334253B2 (en) Storage system that provides protection levels at stored data item granularity
JP6722354B2 (ja) ストレージシステム
JP2006178926A (ja) 複数のオブジェクトベースのストレージ装置を使用したストレージ装置、システム、および方法
JP6817340B2 (ja) 計算機
CN107562639B (zh) 擦除块读请求处理方法与装置
JP6453457B2 (ja) ストレージ装置
JP2020027433A (ja) 情報システム
EP4246330A1 (en) Storage device and operating method thereof
WO2020087265A1 (en) System and method for reporting and handling flash programming failure in host-managed flash translation layer
JPWO2018131067A1 (ja) 記憶ドライブの故障により消失したデータを復元する装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200605

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200619

R150 Certificate of patent or registration of utility model

Ref document number: 6722354

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150