[go: up one dir, main page]

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

ストレージシステム Download PDF

Info

Publication number
JP6163588B2
JP6163588B2 JP2016095199A JP2016095199A JP6163588B2 JP 6163588 B2 JP6163588 B2 JP 6163588B2 JP 2016095199 A JP2016095199 A JP 2016095199A JP 2016095199 A JP2016095199 A JP 2016095199A JP 6163588 B2 JP6163588 B2 JP 6163588B2
Authority
JP
Japan
Prior art keywords
parity
data
device controller
fmpk
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.)
Expired - Fee Related
Application number
JP2016095199A
Other languages
English (en)
Other versions
JP2016194928A (ja
Inventor
上原 剛
剛 上原
繁雄 本間
繁雄 本間
誉史行 登川
誉史行 登川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2016095199A priority Critical patent/JP6163588B2/ja
Publication of JP2016194928A publication Critical patent/JP2016194928A/ja
Application granted granted Critical
Publication of JP6163588B2 publication Critical patent/JP6163588B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)

Description

本発明は、ストレージ装置に格納される冗長コードを演算する技術に関する。
ストレージシステムのコントローラが複数の記憶装置を制御することでRAID(Redundant Array of Independent Disks)を構成し、データロストの発生を防ぐ技術が知られている。例えば、RAID5を採用するストレージシステムでは、記憶装置の上位装置にあたるストレージシステムのコントローラが、複数のデータブロックからパリティを生成する。
前述のようなパリティ生成に伴うストレージシステムのコントローラの処理を軽減するため、下位装置にあたる各記憶装置が、RAIDを構成するストレージシステムがある。各記憶装置は、例えば、HDD(Hard Disk Drive)であり、各HDDのコントローラ(以下、HDDコントローラ)がパリティを生成する。
例えば、特許文献1では、更新前データ(旧データ)に対するデータの更新要求があると、HDDコントローラは、更新データ(新データ)と更新前データ(旧データ)からパリティを生成するための中間値(中間パリティ)を生成した後に、新データで旧データを更新する。HDDコントローラは、生成した中間パリティを旧データに対応する旧パリティが格納しているHDDに転送する。中間パリティを受信したHDDでは、HDDコントローラが、中間パリティと旧パリティから新パリティを生成し、生成した新パリティで旧パリティを更新する。
近年のフラッシュメモリの低価格化に伴い、記憶装置としてHDDの代わりにFlash SSD(Flash Solid State Drive)が使用されるケースが増えつつある。HDDではある範囲の論理アドレスで特定されるデータに対する更新要求があると当該データ(旧データ)が格納されている物理領域に更新データ(新データ)が上書きされる。しかし、FlashSSDでは、データを上書きすることができないため、論理アドレスで特定されるデータに対する更新要求があると、当該データが格納されている物理領域とは異なる物理領域に更新データ(新データ)が格納され、特定された論理アドレスと新しい物理領域とがマッピングされる。これにより、Flash SSDの旧データが格納されている物理領域が無効にされる。
US5,191,584
特許文献1では、中間パリティを生成した後に新データで旧データを上書きするため、中間パリティを生成した後は、旧データが存在しなくなる。そのため、パリティの更新前(例えば、中間パリティを、旧パリティを格納しているHDDに対して転送する前)に障害が発生し、中間パリティが消失した場合、旧データが存在しないため、中間パリティを再度、生成することができない。
一方、記憶装置をFlash SSDに置き換えた場合、フラッシュメモリはデータを上書きしないため、中間パリティを生成した後に、旧データが残っている可能性はある。しかし、Flash SSDでは、新データを書き込むと旧データを格納している物理領域を無効とし、所定のタイミングで旧データを消去する。すなわち、Flash SSDでも、引用文献1と同様に、障害発生時に旧データが存在しない可能性があり、その場合、中間パリティを生成することができない。
本発明の一態様であるストレージシステムは、第1のコントローラと、複数の記憶装置を備える。RAIDを構成する複数の記憶装置のそれぞれは、ホストコンピュータからのデータを格納する記憶空間を提供する一つ以上の不揮発メモリチップと、不揮発メモリチップに接続される第2のコントローラとを有している。第1のコントローラが、第1のデータを第2のデータに更新する更新要求を受信した場合、複数の記憶装置のうちの第1の記憶装置内の第2のコントローラは、第2のデータを、第1の記憶装置の記憶空間内であって、第1のデータが格納されている領域とは異なる領域に格納し、第1と第2のデータとを関連付ける情報を生成し、そして第1及び第2のデータから中間パリティを生成するよう構成されている。複数の記憶装置のうち、第1のデータに対応する第1のパリティが格納されている第2の記憶装置における第2のコントローラは、前記中間パリティを受信し、前記中間パリティと第1のパリティから第2のパリティを生成し、第2のパリティを第2の記憶装置の記憶空間の領域内に格納するよう構成されている。第1の記憶装置の第2のコントローラは、第2のパリティが第2の記憶装置の記憶空間の領域内に格納された後に、前記情報を消去し、第1のデータが格納されている前記領域を消去対象領域として設定するよう構成されている。
図1は、ストレージシステムの構成の一例を示す。 図2は、システムコントローラ20の構成の一例を示す。 図3は、実施例1に係る計算機システムの構成の一例を示す。 図4は、RG及びLUの構成の一例を示す。 図5は、RG管理テーブル600の一例を示す。 図6は、LU管理テーブル700の一例を示す。 図7は、FMPK管理テーブル800の一例を示す。 図8は、RG上のアドレス空間の一例を示す。 図9は、RGに所属するFMPK50上のアドレス空間の一例を示す。 図10は、FMPK50におけるページマッピングの一例を示す。 図11は、ページマッピング管理テーブル1100の一例を示す。 図12は、パリティ演算機能登録処理の一例を示す。 図13は、パリティ演算実施装置の決定方法1300の一例を示す。 図14は、システムコントローラ20のライト処理の一例を示す。 図15は、第1パリティ演算選択処理の一例を示す。 図16は、第2パリティ演算選択処理の一例を示す。 図17は、第3パリティ演算選択処理の一例を示す。 図18は、第4パリティ演算選択処理の一例を示す。 図19は、ライト方法選択処理1403の一例を示す。 図20は、第1リードモディファイライト処理の一例を示す。 図21は、第1リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。 図22は、第2リードモディファイライト処理の一例を示す。 図23は、第2リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。 図24は、第3リードモディファイライト処理の一例を示す。 図25は、第3リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。 図26は、第1フルストライプライト処理の一例を示す。 図27は、第1フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。 図28は、第2フルストライプライト処理の一例を示す。 図29は、第2フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。 図30は、第1データ復旧処理の一例を示す。 図31は、第1データ復旧処理におけるシステムコントローラ20の動作の一例を示す。 図32は、第2データ復旧処理の一例を示す。 図33は、第2データ復旧処理におけるシステムコントローラ20の動作の一例を示す。 図34は、通常のライトコマンドによるデバイスコントローラ60の処理の一例を示す。 図35は、旧データ保持ライトコマンドによるデバイスコントローラ60の処理の一例を示す。 図36は、中間パリティリードコマンドによるデバイスコントローラ60の処理の一例を示す。 図37は、パリティ更新ライトコマンドによるデバイスコントローラ60の処理の一例を示す。 図38は、パリティ生成ライトコマンドによるデバイスコントローラ60の処理の一例を示す。 図39は、デバイスコントローラ60による、旧データ破棄処理の一例を示す。 図40は、Qパリティの生成方法の一例を示す。 図41は、D0,D1の復旧方法の一例を示す。 図42は、第4リードモディファイライト処理の一例を示す。 図43は、第4リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。 図44は、実施例3に係る計算機システムの構成の一例を示す。 図45は、実施例4に係る計算機システムの構成の一例を示す。
幾つかの実施例を説明する。なお、本発明の技術的範囲は各実施例に限定されない。
なお、以後の説明では、「***テーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。各種情報がデータ構造に依存しないことを示すために「***テーブル」を「***情報」と呼ぶことができる。
また、以後の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit ))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び通信制御装置(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。また、プログラムを主語として説明された処理は、管理システムが行う処理としても良い。また、プログラムの一部又は全ては専用ハードウェアによって実現されてもよい。このため、プログラムを主語として説明された処理は、コントローラが行う処理としても良い。コントローラは、プロセッサと、プロセッサに実行されるコンピュータプログラムを記憶する記憶資源とを含んでも良いし、上記の専用ハードウェアを含んでも良い。また、コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
また、以下の説明では、管理システムは、一以上の計算機、例えば、管理計算機、又は、管理計算機と表示用計算機との組み合わせである。具体的には、例えば、管理計算機が表示用情報を表示する場合は、管理計算機が管理システムである。また、処理の高速化や高信頼化のために、複数の計算機で管理計算機と同等の機能が実現されてもよく、この場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んで良い)が、管理システムである。
まず、本発明の適用例であるストレージシステムの構成について説明する。
図1は、ストレージシステム30の構成の一例を示す。このストレージシステム30は、データを格納する複数のストレージ装置50と、これら複数のストレージ装置に接続されているシステムコントローラ20とを有する。ストレージ装置は、例えば、FMPK(Flash Memory Package)50である。
FMPK50は、データを格納する不揮発メモリと、不揮発メモリ及びシステムコントローラ20に接続されているデバイスコントローラ60とを有する。不揮発メモリは例えば、NAND型のFM(Flash Memory)55である。不揮発メモリはフラッシュメモリに限定されず、追記型のメモリ(例えば、相変化メモリ)でも良い。デバイスコントローラ60は、通信インタフェースデバイス、記憶デバイス及びそれらに接続された制御デバイスを有する。通信インタフェースデバイスは例えば、システムインタフェース53とFMインタフェース54である。以下の説明において、インタフェースをI/Fと示すことがある。システムI/F53は、システムコントローラ20に接続される。FM I/F54は、FM55に接続される。
記憶デバイスは例えば、メモリ52及びバッファ66である。制御デバイスは例えば、CPU51である。制御デバイスは、CPU51のようなプロセッサの他に、所定の処理(例えば圧縮、伸長、暗号化又は復号化)を行う専用ハードウェア回路を含んでも良い。専用ハードウェア回路は例えば、パリティ又は中間パリティを計算するパリティ演算回路65である。メモリ52には、FM55を制御するためのプログラム及び各種情報が記憶される。CPU51は、メモリ52に記憶されているプログラムを実行することにより各種機能を実現させる。バッファ66は例えば、DRAM(Dynamic Random Access Memory)等の揮発メモリである。また、バッファ66は、FM55へ書き込むデータ、FM55から読み出したデータ、パリティ演算中のデータ等を一時的に格納する。
FMPK50は、複数のFM55を有していても良い。複数のFM55は、異種の記憶媒体を含んでも良いし、同種の記憶媒体であっても良い。例えば、FM55は、複数の物理ブロックで構成されている。各物理ブロックは複数の物理ページで構成されている。FM55内の各セルは、SLC(Single Level Cell)であってもMLC(Multiple LevelCell)であっても良い。また、不揮発メモリは、他の不揮発メモリであっても良いし、相変化メモリ等の記録可能なメモリであっても良い。
図2は、システムコントローラ20の構成を示す。システムコントローラ20は、通信インタフェースデバイス、記憶デバイス、及びそれらに接続された制御デバイスを有する。通信インタフェースデバイスは例えば、通信ネットワークに接続するための通信I/F18、FMPK50に接続するためのディスクI/F19である。記憶デバイスは例えば、メモリ12及びバッファ26である。制御デバイスは例えば、CPU11である。制御デバイスは、CPU11のようなプロセッサの他に、所定の処理(例えば圧縮、伸長、暗号化又は復号化)を行う専用ハードウェア回路を含んでも良い。専用ハードウェア回路は例えば、パリティ又は中間パリティのいずれかを計算するパリティ演算回路25である。メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。バッファ26は例えば、DRAM等の揮発メモリである。また、バッファ26は、FMPK50へライトするデータ、FMPK50からリードしたデータ、パリティ演算中のデータ等を一時的に格納する。なお、システムコントローラ20に接続される全てのFMPK50がパリティ演算回路65を有している場合には、システムコントローラ20は、パリティ演算回路25を有していなくても良い。
システムコントローラ20に相当する従来のシステムコントローラが提供していた機能として、パリティ演算、スナップショット、データ圧縮、重複排除などがあるが、これらの機能をFMPK50等の記憶媒体が実現できる。この実施例では、パリティ演算機能を説明する。
システムコントローラ20とデバイスコントローラ60が階層を形成していることから、システムコントローラ20を上位コントローラ、デバイスコントローラ60を下位コントローラ、と定義することもできる。
次に、システムコントローラ20がRAID(Redundant Array of Independent Disks)機能をサポートしているコントローラである場合のストレージシステム30の適用例である、計算機システムについて説明する。
図3は、実施例1に係る計算機システムの構成の一例を示す。この計算機システムは、ホスト計算機10と、ストレージシステム30とを有する。ホスト計算機10とストレージシステム30とは、通信ネットワーク、例えば、SAN(Storage Area Network)1を介して接続される。なお、計算機システムは、複数のホスト計算機10を有していても良い。この場合、ストレージシステム30は、SAN1を介して複数のホスト計算機10に接続される。
ストレージシステム30は、複数のFMPK50と、これらのFMPK50を制御するシステムコントローラ20とを有する。ストレージ装置は例えば、FMPK50である。この例においてシステムコントローラ20は例えば、RAIDコントローラである。また、この例において、ストレージシステム30は、複数のシステムコントローラ20を有する。各システムコントローラ20は、SAN1を介してホスト計算機10に接続されている。複数のFMPK50の夫々は、複数のシステムコントローラ20に接続されている。なお、ストレージシステム30は、一つのシステムコントローラ20だけを有していても良い。
システムコントローラ20の構成は、図2に示された構成と同様である。メモリ12には更に、複数のFMPK50を用いるRAID機能のためのプログラム及び各種情報が記憶される。この例において、システムコントローラ20は、パリティ演算回路25を有しているが、パリティ演算回路25を有していなくても良い。
ホスト計算機10は、管理システムであっても良い。
以下、システムコントローラ20がRAID5の制御を行う場合について説明する。
システムコントローラ20は、RG(RAID Group)とLU(Logical Unit、論理ボリュームと呼ばれることもある)とFMPK50と関連付けられている。図4は、RG及びLUの構成の一例を示す。システムコントローラ20は、FMPK50の幾つかをRGに割り当て、RGの記憶領域の一部又は全部をLUに割り当てる。なお、論理ボリュームは、シンプロビジョニング技術によりボリュームの容量が仮想化された仮想ボリュームであってもよい。仮想ボリュームには予めデータを格納するための物理的な記憶領域が割当てられていない。当該仮想ボリュームへのライト要求に応じて所定の単位で、当該仮想ボリュームに対して、物理的な記憶領域が割当てられる。
図5は、RG管理テーブル600の一例を示す。図6は、LU管理テーブル700の一例を示す。図7は、FMPK管理テーブル800の一例を示す。システムコントローラ20は、RG(RAID Group)とLU(Logical Unit)とFMPK50との関係を、メモリ12内のRG管理テーブル600とLU管理テーブル700とFMPK管理テーブル800へ書き込む
RG管理テーブル600は、RG毎のレコードを有する。或るRGのレコードは、このRGを示すRG番号601と、このRGに割り当てられたFMPK50を示すFMPK番号602と、このRGのRAIDレベル603とを示す。
LU管理テーブル700は、LU毎のレコードを有する。或るLUのレコードは、このLUを示すLU番号701と、このLUに割り当てられたRGを示すRG番号702と、このLUに割り当てられたストライプブロックのサイズであるストライプサイズ703と、このLUの開始論理アドレスであるLU開始アドレス704と、このLUのサイズであるLUサイズ705と、このLUのIO特性706とを示す。IO特性706はこのLUに対して行われたIOパターンの傾向であり、シーケンシャルの傾向が強いか、或いはランダムの傾向が強いか、を示す。
IO特性706は、ユーザにより予め指定されても良いし、システムコントローラ20により判定されても良い。また、これらを組み合わせ、IO特性706の初期値がユーザにより予め指定され、所定の時間が経過した後、システムコントローラ20が判定により初期値を最適化しても良い。また、IO特性706の判定方法として例えば、システムコントローラ20は、単位時間毎に、或るLUに対するコマンドの統計を取り、ランダムI/OパターンとシーケンシャルのI/Oパターンのうち高いほうを当該LUのIO特性706と判定しても良い。コマンドの種類は、ランダムライト及びシーケンシャルライトを含む。ランダムライトの割合とシーケンシャルライトの割合の比較は、これらのコマンドの頻度を比較しても良いし、これらのコマンドにより書き込まれたデータ量を比較しても良い。また、システムコントローラ20は、一定周期でIO特性706を前述の判定方法によりモニタリングし、変更の必要があれば、LU管理テーブル700を更新しても良い。
FMPK管理テーブル800は、FMPK50毎のレコードを有する。或るFMPK50のレコードは、このFMPK50を示すFMPK番号801と、このFMPK50が所属するRGを示す所属RG番号802と、このFMPK50のパリティ演算機能を示すパリティ演算機能サポート情報803とを示す。パリティ演算機能サポート情報803は例えば、このFMPK50がパリティ演算回路65等のパリティ演算機能を有するか否かを示すフラグである。
図8は、RG上のアドレス空間の一例を示す。図9は、RGに所属するFMPK50上のアドレス空間の一例を示す。この例において、システムコントローラ20は、RAID5のRG#0のために、4個のFMPK50であるFMPK#0〜FMPK#3を割り当てる。更にシステムコントローラ20は、RG#0上のアドレス空間から、連続する領域をLU#0に割り当て、別の連続する領域をLU#1に割り当てる。システムコントローラ20は、FMPK#0〜FMPK#3上のアドレス空間に亘るストライプラインを割り当て、ストライプライン順、FMPK番号順にストライプブロック及びパリティを割り当てる。ここでシステムコントローラ20は、ストライプライン毎に、ストライプブロック及びパリティを割り当てるFMPK番号をシフトさせる。このときシステムコントローラ20は、RG#0,LU#0,LU#1に関する情報を、RG管理テーブル600とLU管理テーブル700とFMPK管理テーブル800へ書き込む。
図10は、FMPK50におけるページマッピングの一例を示す。FMPK50上の論理アドレス空間は、複数の論理ページに分割されている。一方、FMPK50上の物理アドレス空間は、複数の物理ブロックに分割されており、更に各物理ブロックは、所定のブロックサイズを有し、複数の物理ページに分割されている。各論理ページ及び各物理ページは、所定のページサイズを有する。
なお、物理ページの代わりに、物理ブロック等、他の物理領域が用いられても良い。また、論理ページの代わりに、論理ユニット等、他の論理領域が用いられても良い。
図11は、ページマッピング管理テーブル1100の一例を示す。デバイスコントローラ60は、論理ページを物理ページに関連付け、その関連をメモリ52内のページマッピング管理テーブル1100へ書き込む。ページマッピング管理テーブル1100は、論理ページ毎のレコードを有する。或る論理ページのレコードは、この論理ページを示す論理ページ番号1101と、現在この論理ページに割り当てられている物理ページである現物理ページを示す物理ページ番号1102と、現物理ページの直前にこの論理ページに割り当てられていた物理ページである旧物理ページを示す旧物理ページ番号1103とを示す。即ち、或る論理ページに関連付けられている旧物理ページは、一世代前にこの論理ページに関連付けられていた現物理ページを示す。論理ページに関連付けられた旧物理ページは有効ページとして、論理ページとの関連付けが解除されるまでその関連性が保持される。関連付けが解除された旧物理ページは無効ページとなるため、リクラメーション処理等により所定のタイミングで、旧物理ページ内のデータが消去される。リクラメーション処理とは、メモリの特性上データを上書きできないフラッシュメモリにおいて、無効データ(無効ページに格納されているデータ)を消去して、その無効データが格納されていたページを再度書き込み可能な状態にする処理を言う。フラッシュメモリではブロック単位でデータを消去するので、デバイスコントローラ60は、対象ブロック内に有効ページと無効ページの両方がある場合、有効ページ内のデータを他ブロックへ移動してから、対象ブロックに格納されている無効データを消去する。本実施例においては、デバイスコントローラ60は、論理ページに関連付けられた物理ページ1102及び旧物理ページ1103を有効ページと判断して、リクラメーション処理を実行する。
旧物理ページの管理方法の具体例について説明する。デバイスコントローラ60は、ページマッピング管理テーブル1100に示されている旧物理ページが不要か否かを判定し、或る旧物理ページが不要と判定された場合、この旧物理ページと論理ページの関連付けを解除しても良い。例えば、デバイスコントローラ60により管理される旧物理ページ数の上限が予め設定され、デバイスコントローラ60は、ページマッピング管理テーブル1100から旧物理ページを古い順に削除する。また、デバイスコントローラ60は、システムコントローラ20からの指示により、ページマッピング管理テーブル1100から旧物理ページを削除しても良い。判定基準の一例としては、データ更新に伴うパリティの更新が終了したことである。また、システムコントローラ20は、旧物理ページのデータが必要か否かを判定し、この旧物理ページが不要であると判定された場合に、この旧物理ページに対応するデバイスコントローラ60へ、ページマッピング管理テーブル1100からこの旧物理ページを削除することを指示しても良い。また、システムコントローラ20又はデバイスコントローラ60は、FM55の使用済みの容量が一定値以上になった場合に、ページマッピング管理テーブル1100から旧物理ページを削除しても良い。また、旧物理ページのデータの読み出しが要求され、且つ旧物理ページがページマッピング管理テーブル1100に残っている場合、デバイスコントローラ60は、旧物理ページのデータを読み出すことができる。
次に、システムコントローラ20の動作について説明する。
まず、データ更新時のライト方法について説明する。
ライト方法は例えば、リードモディファイライト及びフルストライプライトである。この例におけるリードモディファイライトは、一つのストライプラインの中で指定された一つのストライプブロックのデータを更新する処理である。あるいは、この例におけるフルストライプライトは、一つのストライプライン内の全てのデータを更新する処理である。リードモディファイライトは、指定されたストライプブロックの旧データと新データから中間パリティを計算し、中間パリティと旧パリティから新パリティを計算する。フルストライプライトは、全ての新データから新パリティを計算する。ここで、旧データは更新前のデータを示し、新データは更新後のデータを示し、旧パリティは更新前のパリティを示す、新パリティは更新後のパリティを示す。中間パリティは、パリティ演算の途中のパリティであり、旧パリティと新パリティの差分を示す。
次に、パリティ演算機能について説明する。
パリティ演算機能は例えば、パリティ演算回路25及びパリティ演算回路65であり、一つのストライプラインにおける二つのストライプブロックのデータの間の排他的論理和(exclusive OR)をパリティとして計算する。また、パリティ演算機能は、旧データと新データの間の排他的論理和を中間パリティとして計算する。また、パリティ演算機能は、旧パリティと中間パリティの間の排他的論理和を新パリティとして計算する。旧データをDi、新データをDi_new、旧パリティをPとすると、新パリティP_newは次式で表される。
P_new = P+(Di+Di_new)
ここで、演算子「+」は排他的論理和を表し、(Di+Di_new)は中間パリティを表す。中間パリティは、Di以外の全てのデータ間の排他的論理和に等しい。
なお、パリティの代わりに、ハミング符号等、他の冗長コードが用いられても良い。
次に、システムコントローラ20がFMPK管理テーブル800にパリティ演算機能サポート情報803を登録するパリティ演算機能登録処理について説明する。
図12は、パリティ演算機能登録処理の一例を示す。システムコントローラ20は、新規のFMPK50をインストールする時や、システムコントローラ20の立ち上げ時等に、パリティ演算機能登録処理を行う。
まずシステムコントローラ20は、パリティ演算機能サポート確認コマンドをFMPK50のデバイスコントローラ60へ発行し、その応答を受領する(1201)。このときパリティ演算機能サポート確認コマンドを受けたデバイスコントローラ60は、デバイスコントローラ60自身がパリティ演算機能を有しているか否かを示す応答をシステムコントローラ20へ送る。次にシステムコントローラ20は、応答に基づいて、デバイスコントローラ60がパリティ演算機能を有しているか否かを示す情報を、FMPK管理テーブル800のパリティ演算機能サポート情報803へ登録し(1202)、この処理のフローを終了する。
なお、パリティ演算機能登録処理を行う代わりに、ユーザが予めパリティ演算機能サポート情報803を登録しても良い。
次に、パリティ演算を行うパリティ演算実施装置の決定方法について説明する。
図13は、パリティ演算実施装置の決定方法1300の一例を示す。システムコントローラ20は決定方法1300に従って、システムコントローラ20又はデバイスコントローラ60をパリティ演算実施装置として決定する。システムコントローラ20は、システムコントローラ20がパリティ演算回路25等のパリティ演算機能を有するか否かを示す情報と、FMPK管理テーブル800のパリティ演算機能サポート情報803とに基づいて、システムコントローラ20とデバイスコントローラ60の何れかをパリティ演算実施装置として決定する。パリティ演算実施装置を決定するための4個のケースが定義されている。各ケースは、ケース番号1301、システムコントローラ20がパリティ演算機能を有するか否かを示すシステム機能情報1302と、デバイスコントローラ60がパリティ演算機能を有するか否かを示すデバイス機能情報1303と、パリティ演算実施装置を示すパリティ演算実施情報1304と、オプション1305とを示す。
ケース#1は、システムコントローラ20がパリティ演算機能を有しており、且つデバイスコントローラ60もパリティ演算機能を有しているケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20とデバイスコントローラ60の何れも選択することができる。この場合、システムコントローラ20は、オプション1305に基づいて後述のライト処理を行う。
ケース#2は、システムコントローラ20がパリティ演算機能を有しており、且つデバイスコントローラ60がパリティ演算機能を有していないケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択する。
ケース#3は、システムコントローラ20がパリティ演算機能を有しておらず、且つデバイスコントローラ60がパリティ演算機能を有しているケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択する。
ケース#4は、システムコントローラ20がパリティ演算機能を有しておらず、且つデバイスコントローラ60もパリティ演算機能を有していないケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20とデバイスコントローラ60の何れも選択することができない。
なお、パリティ演算機能登録処理及びパリティ演算実施装置の決定は、省かれても良い。例えば、システムコントローラ20と全てのデバイスコントローラ60がパリティ演算機能を有している場合、システムコントローラ20は、パリティ演算機能登録処理及びパリティ演算実施装置の決定を省き、後述するケース#1におけるライト処理を行う。また、管理者等によりパリティ演算実施装置が予め設定されている場合も、これらの処理を省略可能である。
次に、ケース#1〜#3におけるシステムコントローラ20のライト処理について説明する。
図14は、システムコントローラ20のライト処理の一例を示す。まずシステムコントローラ20は、外部ホストからIO要求としてライト要求を受領する(1401)。外部ホストは例えば、SAN1を介してシステムコントローラ20に接続されたホスト計算機10である。次にシステムコントローラ20は、パリティ演算を行うパリティ演算実施装置としてシステムコントローラ20及びデバイスコントローラ60の一方を選択するパリティ演算選択処理を行う(1402)。なお、ケース#2及びケース#3では、パリティ演算実施装置は選択済みなので、ステップ1402の処理は省略する。次にシステムコントローラ20は、受領した命令に基づいてライト方法を選択するライト方法選択処理を行う(1403)。ライト方法は、リードモディファイライト及びフルストライプライトの一方である。次にシステムコントローラ20は、選択されたライト方法に従ってデバイスコントローラ60にデータ及びパリティを更新させるデータ更新処理を行う(1404)。
次に、パリティ演算選択処理1402の幾つかの具体例について説明する。
まず、システムコントローラ20がLU毎のIO特性706に基づいてパリティ演算実施装置を選択する処理の具体例である、第1パリティ演算選択処理について説明する。
図15は、第1パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、LU管理テーブル700に基づいて、当該ライトの対象のLUのIO特性706がランダムを示すか否かを判定する(1501)。当該LUのIO特性706がランダムを示す場合(1501,Yes)、システムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択することにより、デバイスコントローラ60にパリティ演算を指示することを決定し(1502)、この処理のフローを終了する。一方、当該LUのIO特性706がランダムを示さない場合(1501,No)、すなわち後述するシーケンシャルライトの場合は、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択することにより、システムコントローラ20がパリティ演算を実施することを決定し(1503)、この処理のフローを終了する。
即ち、システムコントローラ20は、IO契機で、LU管理テーブル700のIO特性706を参照し、IO特性706が、当該LUへの書き込みにおいてランダムライトがシーケンシャルライトより多いことを示す場合、デバイスコントローラ60にパリティ生成を指示する。一方、IO特性706が、当該LUへの書き込みにおいてランダムライトがシーケンシャルライトより少ないことを示す場合、システムコントローラ20がパリティ生成を実施する。
次に、システムコントローラ20がシステムコントローラ20のハードウェアの負荷を検出し、この負荷に基づいてパリティ演算実施装置を選択する処理の具体例である、第2パリティ演算選択処理について説明する。
図16は、第2パリティ演算選択処理の一例を示す。ハードウェアは例えば、CPU11、メモリ12、パリティ演算回路25である。まずシステムコントローラ20は、自身のハードウェアの負荷が基準より高いか否かを判定する(1601)。ハードウェアの負荷が基準より高いと判定された場合(1601,Yes)、システムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1602)、この処理のフローを終了する。一方、ハードウェアの負荷が基準より高くないと判定された場合(1601,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1603)、この処理のフローを終了する。
ここで、システムコントローラ20は例えば、システムコントローラ20のハードウェアの負荷を計測し、計測結果が所定の閾値を超えた場合に、ハードウェアの負荷が高いと判定する。計測結果は例えば、CPU11の利用率、メモリ12の使用量、パリティ演算回路25へ入力されたデータ量等である。
次に、システムコントローラ20が当該ライトのIOパターンに基づいてパリティ演算実施装置を選択する処理の具体例である、第3パリティ演算選択処理について説明する。
図17は、第3パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、当該IO要求のIOパターンがランダムライトか否かを判定する(1701)。IOパターンがランダムライトであると判定された場合(1701,Yes)、システムコントローラ20はパリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1702)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合、即ちIOパターンがシーケンシャルライトであると判定された場合(1701,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1703)、この処理のフローを終了する。
次に、システムコントローラ20が当該ライトのIOパターンとシステムコントローラ20のハードウェアの負荷とに基づいてパリティ演算実施装置を選択する処理の具体例である、第4パリティ演算選択処理について説明する。
図18は、第4パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、当該ライトのIOパターンがランダムライトか否かを判定する(1801)。IOパターンがランダムライトであると判定された場合(1801,Yes)、システムコントローラ20はパリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1802)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合(1801,No)、システムコントローラ20は、ハードウェアの負荷が高いか否かを判定する(1803)。ハードウェアの負荷が高いと判定された場合(1803,Yes)、システムコントローラ20は、処理のフローを1802へ移行させる。一方、ハードウェアの負荷が高くないと判定された場合(1803,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1804)、この処理のフローを終了する。
なお、システムコントローラ20は、以上に示された複数の種類のパリティ演算選択処理1402を組み合わせることにより、パリティ演算実施装置を選択しても良い。
シーケンシャルライト時及びフルストライプライト時、システムコントローラ20がパリティ演算を行うことにより、システムコントローラ20からデバイスコントローラ60へのデータ転送量の増大を防ぐことができる。これによりライト速度の低下を防ぐことができる。
次に、ライト方法選択処理1403の具体例について説明する。
図19は、ライト方法選択処理1403の一例を示す。ライト方法の選択肢は例えば、リードモディファイライト及びフルストライプライトである。まずシステムコントローラ20は、当該IO要求であるライトのIOパターンがランダムライトか否かを判定する(1901)。IOパターンがランダムライトであると判定された場合(1901,Yes)、システムコントローラ20は、ライト方法としてリードモディファイライトを選択し(1902)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合(1901,No)、即ちIOパターンがシーケンシャルライトであると判定された場合、システムコントローラ20は、ライト方法としてフルストライプライトを選択し(1903)、この処理のフローを終了する。
次に、パリティ演算実施装置の選択結果とライト方法の選択結果に応じたデータ更新処理1404の幾つかの具体例について説明する。
まず、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第1リードモディファイライト処理について説明する。
図20は、第1リードモディファイライト処理の一例を示す。図21は、第1リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、4個のFMPK50であるFMPK#0,#1,#2,#3は、一つのストライプライン内のデータD0,D1,D2、パリティPを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、更新されるデータを格納しているFMPK#0をデータFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3のうち、パリティを格納しているFMPK#3をパリティFMPKと呼ぶことがある。
まずシステムコントローラ20は、FMPK#0,#1,#2,#3の中からD0に対応するFMPK#0(データFMPK)を選択し、旧データの保持と新データの書き込みとを指示する旧データ保持ライトコマンドをFMPK#0へ発行することにより、新データをFMPK#0へ転送する(2101)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0内の旧データの物理ページと異なる物理ページへ書き込む。通常ライトコマンドでは、論理ページに新物理ページが割り当てられると旧物理ページは無効となり、旧物理ページに格納されている旧データは消去の対象となる。そこで、システムコントローラ20は、パリティの更新が完了するまで旧データが保持されるようにするため、通常ライトコマンドではなく旧データ保持ライトコマンドを利用する。以後の説明において、ライトコマンドとは、通常ライトコマンドを示すものとする。
次にシステムコントローラ20は、中間パリティを要求する中間パリティリードコマンドをFMPK#0へ発行することにより、FMPK#0から中間パリティを取得する(2102)。中間パリティは、旧パリティのパリティ演算により新パリティを生成するための、中間演算結果である。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内に格納された旧データとFMPK#0内に格納された新データとから中間パリティを計算し、応答として中間パリティをシステムコントローラ20へ送る。ここでFMPK#0のデバイスコントローラ60は、計算された中間パリティを、バッファ66へ書き込んでも良いし、FMPK#0内のFM55の中で旧データの物理ページ及び新データの物理ページの両方と異なる物理ページへ書き込んでも良い。
次にシステムコントローラ20は、FMPK#0,#1,#2,#3の中からPに対応するFMPK#3(パリティFMPK)を選択し、パリティの更新を指示するパリティ更新ライトコマンドをFMPK#3へ発行することにより、FMPK#0から受信した中間パリティをFMPK#3へ転送する(2103)。このコマンドを受けたFMPK#3は、FMPK#3内の旧パリティとシステムコントローラ20からの中間パリティから新パリティを計算し、新パリティをFMPK#3へ書き込む。FMPK#3のデバイスコントローラ60は、新パリティをFMPK#3へ書き込んだら、システムコントローラ20に対してパリティ更新ライトの完了応答を通知する。ここでFMPK#3のデバイスコントローラ60は、システムコントローラ20からの中間パリティを、バッファ66へ書き込んでも良いし、FMPK#3内のFM55の中で旧パリティの物理ページ及び新パリティの物理ページの両方と異なる物理ページへ書き込んでも良い。
次にシステムコントローラ20は、FMPK#3からの完了応答を受信すると、旧データを無効にすることを指示する旧データ破棄コマンドを、FMPK#0へ発行し(2104)、このフローを終了する。このコマンドを受けたFMPK#0のデバイスコントローラ60は、保持していた旧データを無効とするため、マッピング管理テーブル1100から旧データ破棄コマンドにより特定された論理ページにマッピングされた物理ページを削除する。
なお、システムコントローラ20は、パリティ更新ライトコマンド発行後、FMPK#3からの完了応答を所定の時間以内に受信しなかった場合は、パリティの更新が失敗したものと判断して、FMPK#0から中間パリティを再取得し、その中間パリティをFMPK#3へ再転送することで、パリティの更新処理を再実行してもよい。
具体的には、システムコントローラ20は、パリティ更新ライトコマンド発行後、FMPK#3からの完了応答を所定の時間以内に受信しなかった場合は、中間パリティリードコマンドをFMPK#0へ再発行し、このコマンドに応じて再計算された中間パリティを受信する。そして、システムコントローラ20は、パリティ更新ライトコマンドをFMPK#3へ再発行することにより、再計算された中間パリティをFMPK#3に書き込む。
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)中間パリティがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)中間パリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。あるいは、システムコントローラ20がパリティ演算を行う場合、システムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)更新前のパリティがパリティFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(4)更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
このようにシステムコントローラ20がパリティ演算を行う場合に比べると、第1リードモディファイライト処理のデータ転送は少ない。
また、データFMPKが更新前のデータと更新後のデータの両方をFM55に保持することにより、データFMPKのデバイスコントローラ60が中間パリティを演算するために使用するバッファ66を削減することができる。
更に、新データのライト後も旧データをパリティが更新されるまで保持することで、パリティ更新前に障害が起きた場合にも、データ復旧が可能となる。また、パリティ更新後は旧データを無効にして旧データを消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。
次に、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合の別のデータ更新処理1404の別の具体例である、第2リードモディファイライト処理について説明する。
図22は、第2リードモディファイライト処理の一例を示す。図23は、第2リードモディファイライト処理におけるシステムコントローラ20の一例の動作を示す。この例における初期状態は、第1リードモディファイライト処理の初期状態と同様である。まずシステムコントローラ20は、リードコマンドをD0に対応するFMPK#0(データFMPK)へ発行することにより、FMPK#0から旧データを取得する(2301)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内の旧データを読み出し、旧データを応答としてシステムコントローラ20へ送る。
次にシステムコントローラ20は、パリティ更新ライトコマンドをPに対応するFMPK#3(パリティFMPK)へ発行することにより、新データと旧データをFMPK#3へ転送する(2302)。このコマンドを受けたFMPK#3のデバイスコントローラ60は、システムコントローラ20からの新データとシステムコントローラ20からの旧データとFMPK#3内の旧パリティから新パリティを計算し、この新パリティを、FMPK#3へ書き込む。
次にシステムコントローラ20は、ライトコマンドをFMPK#0に発行することにより、新データをFMPK#0に転送する(2303)。このコマンドを受けたFMPK#0のデバイスコントローラ60は新データをFMPK#0へ書き込む。
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送され、更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60に転送される。
(2)更新前のデータと更新後のデータとがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
2302において、システムコントローラ20は、1回のパリティ更新ライトコマンドで、新データと旧データをパリティFMPKへ転送する。この時の転送データ量は、第1リードモディファイライト処理が中間パリティをシステムコントローラ20からパリティFMPKへ転送する場合の転送データ量に比べて、2倍になる。しかし、転送回数が1回であるため、データ転送のオーバヘッドの増加を防ぐことができる。データ転送が、例えばSAS(Serial Attached Small Computer System Interface)−6GBのような高速インタフェースにより行われる場合、転送データ量が増加するデメリットより転送回数が減少するメリットの方が大きい。
更に、新データのライト後も旧データをパリティが更新されるまで保持することで、パリティ更新前に障害が起きた場合にもデータ復旧が可能となる。また、パリティ更新後は旧データを無効にして、旧データを消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。
なお、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合、第1リードモディファイライト処理及び第2リードモディファイライト処理の何れが行われても良い。
次に、パリティ演算実施装置としてシステムコントローラ20が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第3リードモディファイライト処理について説明する。
図24は、第3リードモディファイライト処理の一例を示す。図25は、第3リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1リードモディファイライト処理の初期状態と同様である。まずシステムコントローラ20は、D0を要求するリードコマンドをD0に対応するFMPK#0へ発行することによりFMPK#0から旧データを取得し、リードコマンドをPに対応するFMPK#3へ発行することによりFMPK#3から旧パリティを取得する(2501)。このリードコマンドを受けたFMPK#0は、FMPK#0内の旧データを読み出し、旧データを応答としてシステムコントローラ20へ送る。また、このリードコマンドを受けたFMPK#3のデバイスコントローラ60は、FMPK#3内の旧パリティを読
み出し、旧パリティを応答としてシステムコントローラ20へ送る。
次にシステムコントローラ20は、旧データと旧パリティと新データから新パリティを計算する(2502)。次にシステムコントローラ20は、ライトコマンドをFMPK#0へ発行することによりFMPK#0へ新データを転送し、ライトコマンドをPに対応するFMPK#3へ発行することによりFMPK#3へ新パリティを転送し(2503)、この処理のフローを終了する。このライトコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0へ新データを書き込む。また、このライトコマンドを受けたFMPK#3は、FMPK#3へ新パリティを書き込む。
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送され、更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60に転送される。
(2)更新前のパリティがパリティFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、フルストライプライトの幾つかの具体例について説明する。
まず、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてフルストライプライトが選択された場合の別のデータ更新処理1404の具体例である、第1フルストライプライト処理について説明する。
図26は、第1フルストライプライト処理の一例を示す。図27は、第1フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3は、D0,D1,D2,Pを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0,D1,D2の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、更新されるデータを格納しているFMPK#0,#1,#2をデータFMPKと呼ぶことがある。
まずシステムコントローラ20は、D0,D1,D2に夫々対応するFMPK#0,#1,#2(データFMPK)へライトコマンドを発行することにより、受領データをD0,D1,D2の新データに分割し、D0,D1,D2の新データをFMPK#0,#1,#2へ夫々転送する(2701)。このライトコマンドを受けたFMPK#0,#1,#2のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0,#1,#2へ夫々書き込む。
次にシステムコントローラ20は、パリティの生成と書き込みを指示するパリティ生成ライトコマンドをPに対応するFMPK#3(パリティFMPK)へ発行することにより、D0,D1,D2の新データをFMPK#3へ転送し(2702)、この処理のフローを終了する。このライトコマンドを受けたFMPK#3のデバイスコントローラ60は、D0,D1,D2の新データから新パリティを計算し、新パリティをFMPK#3へ書き込む。
この処理によれば、一つのストライプラインのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)更新後のパリティデータがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、パリティ演算実施装置としてシステムコントローラ20が選択され、ライト方法としてフルストライプライトが選択された場合の別のデータ更新処理1404の具体例である、第2フルストライプライト処理について説明する。
図28は、第2フルストライプライト処理の一例を示す。図29は、第2フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1フルストライプライト処理の初期状態と同様である。まずシステムコントローラ20は、D0,D1,D2の新データから新パリティを計算する(2901)。次にシステムコントローラ20は、D0,D1,D2に夫々対応するFMPK#0,#1,#2へライトコマンドを発行することにより、D0,D1,D2の新データをFMPK#0,#1,#2へ夫々転送し、Pに対応するFMPK#3へライトコマンドを発行することにより、計算された新パリティをFMPK#3へ転送し(2902)、この処理のフローを終了する。ライトコマンドを受けたFMPK#0,#1,#2のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0,#1,#2へ夫々書き込む。また、ライトコマンドを受けたFMPK#3のデバイスコントローラ60は、システムコントローラ20からの新パリティをFMPK#3へ書き込む。
この処理によれば、一つのストライプラインのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)、更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、パリティ演算実施装置の選択結果に応じたデータ復旧処理の幾つかの具体例について説明する。
まず、パリティ演算実施装置としてデバイスコントローラ60が選択された場合のデータ復旧処理の具体例である、第1データ復旧処理について説明する。
図30は、第1データ復旧処理の一例を示す。図31は、第1データ復旧処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3は、D0,D1,D2,Pを夫々格納している。ここで、FMPK#1内のFM55に障害が発生し、このFM55が新たなFM55に交換された状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、復旧されるデータを格納しているFMPK#1を復旧中FMPKと呼ぶことがある。
まずシステムコントローラ20は、FMPK#0,#1,#2,#3が所属するRG内の生存しているFMPK#0,#2,#3へリードコマンドを発行することにより、FMPK#0,#2,#3に夫々格納されたD0,D2,Pを取得する(3101)。このリードコマンドを受けたFMPK#0,#2,#3のデバイスコントローラ60は、D0,D2,Pを夫々読み出し、読み出したD0,D2,Pをシステムコントローラ20へ転送する。ここで読み出されるデータであってもパリティであっても良い。
次にシステムコントローラ20は、復旧中のFMPK#1(復旧中FMPK)へパリティ生成を示すライトコマンドを発行することにより、読み出されたD0,D2,PをFMPK#1へ転送し(3102)、この処理のフローを終了する。このライトコマンドを受けたFMPK#1のデバイスコントローラ60は、D0,D2,PからD1を計算することによりD1の復旧データを生成し、D1の復旧データをFMPK#1へ書き込む。
この処理によれば、一つのストライプブロックのデータの復旧におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)復旧中FMPK以外のFMPK50のデータが対応するデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)転送されたデータがシステムコントローラ20から復旧中FMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、パリティ演算実施装置としてシステムコントローラ20が選択された場合のデータ復旧処理の具体例である、第2データ復旧処理について説明する。
図32は、第2データ復旧処理の一例を示す。図33は、第2データ復旧処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1の具体例と同様である。まずシステムコントローラ20は、FMPK#0,#1,#2,#3が所属するRG内の生存しているFMPK#0,#2,#3へリードコマンドを発行することにより、FMPK#0,#2,#3からD0,D2,Pを読み出す(3301)。このリードコマンドを受けたFMPK#0,#2,#3のデバイスコントローラ60は、D0,D2,Pを夫々読み出し、読み出したD0,D2,Pをシステムコントローラ20へ転送する。ここで読み出されるデータであってもパリティであっても良い。
次にシステムコントローラ20は、D0,D2,PからD1を計算することにより、D1の復旧データを生成する(3302)。次にシステムコントローラ20は、ライトコマンドをFMPK#1へ発行することにより、復旧されたD1をFMPK#1へ書き込み(3303)、この処理のフローを終了する。このライトコマンドを受けたFMPK#1のデバイスコントローラ60は、受けたD1をFMPK#1へ書き込む。
この処理によれば、一つのストライプブロックのデータの復旧におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)復旧中FMPK以外のFMPK50のデータが対応するデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)転送されたデータがシステムコントローラ20から復旧中FMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、デバイスコントローラ60の動作について説明する。
まず、通常のライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、通常ライト処理について説明する。
この通常ライト処理において、デバイスコントローラ60は、旧データを保持する必要がない。
図34は、通常ライト処理の一例を示す。まずデバイスコントローラ60は、通常のライトコマンドを受領する(3401)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3402)。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3403)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3404)。
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3405)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3406)、この処理のフローを終了する。
3403において、デバイスコントローラ60は、未使用の物理ページを確保する、物理ブロックを消去してその物理ブロック内の物理ページを確保する、等の処理を行うことにより、空きの物理ページを取得しても良い。このとき、デバイスコントローラ60は、物理ブロックの消去のために、ページマッピング管理テーブル1100における他の論理ページと旧物理ページの関連付けを解除しても良い。
次に、旧データ保持ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、旧データ保持ライトコマンド処理について説明する。
この旧データ保持ライト処理は例えば、前述の第1リードモディファイライト処理に用いられる。
図35は、旧データ保持ライト処理の一例を示す。まずデバイスコントローラ60は、旧データ保持ライトコマンドを受領する(3501)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3502)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、ライト先論理ページに物理ページが割り当てられているか否かを判定する(3503)。
ライト先論理ページに物理ページが割り当てられている場合(3503,Yes)、デバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページに関連付けられている物理ページ番号を旧物理ページ番号として登録する(3504)。
ライト先論理ページに物理ページが割り当てられていない場合(3503、No)又は3504の後、デバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3505)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3506)。
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3507)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3508)、この処理のフローを終了する。
この処理によれば、データFMPKは、データの更新時に更新前のデータを保持することができる。更に、データFMPKのデバイスコントローラ60は、更新された論理ページと、旧データを格納する旧物理ページと、新データを格納する物理ページとを関連付けることができる。これにより、データFMPKは、データ更新時、更新前のデータと更新後のデータの両方を不揮発メモリに保持することができる。また、データFMPKのデバイスコントローラ60は、揮発メモリを用いることなく、更新前のデータと更新後のデータの両方を読み出すことができる。更に、システムコントローラ20は、データFMPKのデバイスコントローラ60に更新前のデータと更新後のデータの両方を保持させることができる。
次に、中間パリティリードコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、中間パリティリード処理について説明する。
この中間パリティリード処理は、指定されたアドレスの旧データと新データのパリティ演算を行うことにより、中間パリティを生成して返す。この中間パリティリード処理は例えば、前述の第1リードモディファイライト処理に用いられる。
図36は、中間パリティリード処理の一例を示す。まずデバイスコントローラ60は、中間パリティリードコマンドを受領する(3601)。次にデバイスコントローラ60は、この中間パリティリードコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをリード先論理ページとする(3602)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、リード先論理ページに対応する旧物理ページが登録されているか否かを判定する(3603)。
リード先論理ページに対応する旧物理ページが登録されている場合(3603,Yes)、デバイスコントローラ60は、リード先論理ページに対応する旧物理ページのデータと現在の物理ページのデータとを読み出し、読み出されたデータから中間パリティを計算する(3604)。次にデバイスコントローラ60は、中間パリティをシステムコントローラ20へ転送し(3606)、この処理のフローを終了する。
3603において、リード先論理ページに対応する旧物理ページが登録されていない場合(3603,No)、デバイスコントローラ60は、リード先論理ページの旧データがないことを示すコマンド結果をシステムコントローラ20へ報告し(3605)、この処理のフローを終了する。
3605においてリード先論理ページの旧データがないことを示す結果を受けたシステムコントローラ20は例えば、新データと同一ストライプライン内の全てのデータを読み出し、読み出されたデータから新パリティを計算し、パリティに対応するデバイスコントローラ60へ新パリティを書き込むためのライトコマンドを発行しても良い。或いはこの場合、システムコントローラ20は例えば、新データと同一ストライプライン内の全てのデータを読み出し、パリティに対応するデバイスコントローラ60へ、読み出されたデータから新パリティを計算するためのパリティ生成ライトコマンドを発行しても良い。
この処理によれば、データFMPKのデバイスコントローラ60は、システムコントローラ20から中間パリティの演算の指示を受けた場合、更新前のデータと更新後のデータとを読み出し、読み出されたデータから中間パリティを生成することができる。更に、システムコントローラ20は、データFMPKのデバイスコントローラ60に中間パリティを生成させ、デバイスコントローラ60から中間パリティを取得することができる。
仮に、データFMPKのデバイスコントローラ60がシステムコントローラ20の動作と非同期で中間パリティを生成したとする。この場合、中間パリティの演算がデバイスコントローラ60のバッファ66をに負担をかけることにより、このデバイスコントローラ60の性能が低下する。また、中間パリティ演算に必要なデータがバッファ66に格納されている状態で電源断が発生した場合、このデータが消失し、データ復旧が不可能になる可能性がある。一方、この実施例によれば、データFMPKのデバイスコントローラ60が中間パリティリードコマンドを受けたタイミングで中間パリティを生成することにより、ストレージシステム30の性能低下を防ぐことができる。また、中間パリティ演算に必要なデータの消失を防ぎ、ストレージシステム30の信頼性を向上させることができる。
次に、パリティ更新ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、パリティ更新ライト処理について説明する。
このパリティ更新ライト処理は、転送された中間パリティと指定された旧パリティとのパリティ演算を行うことにより、新パリティを生成して、この新パリティをFM55へ書き込む。このパリティ更新ライトコマンドは例えば、前述の第1リードモディファイライト処理に用いられる。
図37は、パリティ更新ライト処理の一例を示す。まずデバイスコントローラ60は、パリティ更新ライトコマンドを受領する(3701)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをリード先論理ページとする(3702)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、リード先論理ページに対応する物理ページ番号を求め、この物理ページ番号に示された物理ページからデータを読み出す(3703)。読み出されたデータは例えば、旧パリティである。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページを結果格納先物理ページとして割り当てる(3704)。次にデバイスコントローラ60は、読み出されたデータと受領したデータとを用いてパリティ演算を行い、演算結果を結果格納先物理ページへ書き込む(3705)。
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページに結果格納先物理ページを関連付け、物理ページ番号として結果格納先物理ページの番号を登録する(3706)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3707)、この処理のフローを終了する。
この処理によれば、パリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、パリティFMPKに格納されている更新前のパリティとから更新後のパリティを算出し、更新後のパリティをFM55へ送信することができる。更に、システムコントローラ20は、パリティFMPKのデバイスコントローラ60に更新後のパリティを生成させ保存させることができる。
次に、パリティ生成ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、パリティ生成ライト処理について説明する。
このパリティ生成ライト処理は、複数ストライプブロック分の転送されたデータを用いてパリティを生成し、このパリティを指定アドレスへ書き込むコマンドである。このパリティ生成ライト処理は例えば、前述の第1フルストライプライト処理及びデータ復旧処理に用いられる。
図38は、パリティ生成ライトコマンドによるデバイスコントローラ60の処理の一例を示す。まずデバイスコントローラ60は、パリティ生成ライトコマンドを受領する(3801)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3802)。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3803)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3804)。
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3805)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3806)、この処理のフローを終了する。
この処理によれば、パリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータから更新後のパリティを算出し、更新後のパリティをパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、パリティFMPKのデバイスコントローラ60に更新後のパリティを生成させ保存させることがでる。
図39は、デバイスコントローラ60による、旧データ破棄処理の一例を示す。まず、デバイスコントローラ60は、システムコントローラ20から旧データ破棄コマンドを受領する(3901)。次に、デバイスコントローラ60は、この旧データ破棄コマンドで指定された論理アドレスから論理ページ番号を求め、この論理ページ番号に対応する旧物理ページ番号をページマッピング管理テーブル1100から削除する(3902)。デバイスコントローラ60は、旧データ破棄コマンドを受領するまで、旧データを無効にしない。つまり、デバイスコントローラ60は、新データをライトした後であっても、パリティが更新される(旧データ破棄コマンドを受領する)まで旧データを確実に保持することができる。このように、パリティが更新されるまで旧データを維持することにより、パリティ更新前に障害が起きた場合であっても、データ復旧が可能となる。また、パリティ更新後は旧データを無効にして消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。
この実施例では、システムコントローラ20がRAID6の制御を行う場合について説明する。
この実施例における計算機システムの構成は、実施例1の計算機システムの構成と同様である。そこで、実施例1との違いについて以下に説明する。
システムコントローラ20は、RAID6の制御を行う。そこで、まずRAID5とRAID6の違いについて説明する。
前述のRAID5をRAID6へ拡張するために、パリティ演算回路25又はパリティ演算回路65は、更に係数付きパリティ演算を行う。ここで、5個のFMPK50が、データD0,D1,D2、パリティP,Qを夫々格納しているとする。Qの生成のための係数としてA0,A1,A2が使用される場合、P,Qは次式により生成される。
P = D0+D1+D2
Q = A0・D0+A1・D1+A2・D2
図40は、Qパリティの生成方法の一例を示す。パリティ演算実施装置は、A0,A1,A2を予めメモリに格納している。Qは、D0,D1,D2,A0,A1,A2から計算される。図中に黒の菱形で示された演算器は、それに付された係数を乗算する。
また、P生成式及びQ生成式を連立方程式として解くことにより、データロスト時に任意のデータ又はパリティを復旧することができる。例えばD0,Pを復旧する場合、次式によりこれらを生成することができる。
D0 = A1/A0・D1+A2/A0・D2+1/A0・Q
P = D0+D1+D2
また、例えばD0,D1を復旧する場合、次式によりこれらを生成することができる。
D0 = (A1+A2)/(A0+A1)・D2+A1/(A0+A1)・P
+1/(A0+A1)・Q
D1 = (A0+A2)/(A0+A1)・D2+A0/(A0+A1)・P
+1/(A0+A1)・Q
図41は、D0,D1の復旧方法の一例を示す。上に示すように、D0,D1はそれぞれ、D2、P、Qの線形式αD2+βP+γQと表現することが出来る。
ここで係数α、β、γはA0、A1、A2に基づく値である。
パリティ演算実施装置は、A0,A1、A2に基づくα、β、γを予めメモリに格納していても良い。D0は、D2,P,Q,及びA0,A1、A2に基づく値である α、β、γから計算される。
本例はあくまでも概念を示すための一例であり、実際には、処理が高速化されるよう、またメモリ使用量が削減されるような設計がなされる。
次に、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第4リードモディファイライト処理について説明する。
図42は、第4リードモディファイライト処理の一例を示す。図42は、第4リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3,#4は、D0,D1,D2,P,Qを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3,#4のうち、更新されるデータであるD0を格納しているFMPK#0をデータFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3,#4のうち、Pを格納しているFMPK#3をPパリティFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3,#4のうち、Qを格納しているFMPK#4をQパリティFMPKと呼ぶことがある。
まずシステムコントローラ20は、旧データ保持ライトコマンドをD0に対応するFMPK#0(データFMPK)へ発行することにより、新データをFMPK#0へ書き込む(4101)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0内の旧データの物理ページと異なる物理ページへ書き込む。
次にシステムコントローラ20は、中間パリティリードコマンドをFMPK#0へ発行することにより、FMPK#0から中間パリティを取得する(4102)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内に格納された旧データと新データから中間パリティを計算し、中間パリティを応答としてシステムコントローラ20へ送る。
次にシステムコントローラ20は、RAID5の場合と同様のパリティ更新ライトコマンドを、Pに対応するFMPK#3(PパリティFMPK)へ発行することにより、中間パリティをFMPK#3へ送信する(4103)。このコマンドを受けたFMPK#3のデバイスコントローラ60は、FMPK#3内の旧パリティとシステムコントローラ20からの中間パリティから新パリティを計算し、新パリティをFMPK#3へ書き込む。
iが0,1,2の何れか一つであって、当該RG内のデータDiをDi_newへ更新する場合の新パリティP_newの計算について説明する。RAID5と同様、パリティ更新ライトコマンドを受けたデバイスコントローラ60は、中間パリティ(Di+Di_new)と旧パリティPとから、P_newを次式により計算する。
P_new = P+(Di+Di_new)
データFMPKのデバイスコントローラ60は、中間パリティリードコマンドに応じて(Di+Di_new)を計算する。PパリティFMPKのデバイスコントローラ60は、パリティ更新ライトコマンドに応じてP+(Di+Di_new)を計算する。
次にシステムコントローラ20は、Qを更新するためのパリティ更新コマンドであるQパリティ更新ライトコマンドをQに対応するFMPK#4へ発行することにより、中間パリティをFMPK#4(QパリティFMPK)へ転送し(4104)、この処理のフローを終了する。このコマンドを受けたFMPK#4のデバイスコントローラ60は、FMPK#4内の旧パリティとシステムコントローラ20からの中間パリティと係数から新パリティを計算し、新パリティをFMPK#3へ書き込む。
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)中間パリティがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)中間パリティがシステムコントローラ20からPパリティFMPKのデバイスコントローラ60とQパリティFMPKのデバイスコントローラ60とへ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
Qパリティ更新ライトコマンドを受けたデバイスコントローラ60の処理は、パリティ更新ライトコマンドの場合と比較して、予めデバイスコントローラ60に設定された係数Aiを用いる点が異なる。当該RG内のデータDiをDi_newへ更新する場合、Qパリティ更新ライトコマンドを受けたデバイスコントローラ60は、中間パリティ(Di+Di_new)と旧パリティQとAiとから、新パリティQ_newを次式により計算する。
Q_new = Q+Ai・(Di+Di_new)
データFMPKのデバイスコントローラ60は、中間パリティリードコマンドに応じて(Di+Di_new)を計算する。QパリティFMPKのデバイスコントローラ60は、Qパリティ更新ライトコマンドに応じてQ+Ai・(Di+Di_new)を計算する。
パリティ更新ライトコマンドによれば、PパリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、PパリティFMPKに格納されている更新前のPパリティとから更新後のPパリティを算出し、更新後のPパリティをPパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、PパリティFMPKのデバイスコントローラ60に更新後のPパリティを生成させ保存させることができる。
Qパリティ更新ライトコマンドによれば、QパリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、QパリティFMPKに格納されている更新前のQパリティと、所定の係数から更新後のQパリティを算出し、更新後のQパリティをQパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、QパリティFMPKのデバイスコントローラ60に更新後のQパリティを生成させ保存させることができる。
この実施例では、システムコントローラ20がパリティ演算機能を有していない場合のストレージシステム30の適用例である、計算機システムについて説明する。
図44は、実施例3に係る計算機システムの構成の一例を示す。この実施例の計算機システムにおいて、ストレージシステム30の要素と同一の符号が付された要素は、ストレージシステム30の要素と同一物又は相当物を示す。この実施例の計算機システムは、ホスト計算機41aと、ホスト計算機41bと、ホスト計算機41bに接続された複数のFMPK50とを有する。ホスト計算機41aとホスト計算機41bとは、例えば、LAN(Local Area Network)2を介して接続される。
ホスト計算機41aは、ホストコントローラ42aと、ホストコントローラ42aに接続されている複数のFMPK50とを有する。ホストコントローラ42aは、LAN2等の通信ネットワークに接続するためのNIC(Network Interface Card)13と、メモリ12と、CPU11と、バッファ26とを有する。
ホスト計算機41bは、LAN2等の通信ネットワークに接続するためのNIC13と、FMPK50に接続するためのHBA(Host Bus Adapter)15と、メモリ12と、CPU11と、バッファ26とを有する。
ホストコントローラ42a及びホスト計算機41bにおいて、メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。ホストコントローラ42aとホスト計算機41bの夫々は、自身に接続されている複数のFMPK50を用いるRAIDの制御を行っても良い。
ホストコントローラ42a及びホスト計算機41bの一方は、LAN2を介して他方へIO要求を行っても良いし、自身のFMPK50へIO要求を行っても良い。
この実施例において、システムコントローラ20は、ホストコントローラ42aとホスト計算機41bの何れの形態であっても良い。
ホストコントローラ42a及びホスト計算機41bの夫々は、パリティ演算実施装置の決定方法1300におけるケース#3又はケース#4に該当する。
次に、システムコントローラ20がパリティ演算機能を有している場合のストレージシステム30の適用例である、第3計算機システムについて説明する。
図45は、実施例4に係る計算機システムの構成の一例を示す。この実施例の計算機システムにおいて、実施例3の計算機システムの要素と同一の符号が付された要素は、実施例3の計算機システムの要素と同一物又は相当物を示す。この実施例の計算機システムは、ホスト計算機41cと、ホスト計算機41dと、ホスト計算機41dに接続された複数のFMPK50とを有する。ホスト計算機41cとホスト計算機41dとは、通信ネットワーク、例えば、LAN2を介して接続される。
ホスト計算機41cは、ホストコントローラ42cと、ホストコントローラ42cに接続されている複数のFMPK50とを有する。ホストコントローラ42cは、ホストコントローラ42aの要素に加えて、パリティ演算回路25を有する。
ホスト計算機41dは、ホスト計算機41bの要素に加えて、パリティ演算回路25を有する。
ホストコントローラ42c及びホスト計算機41dにおいて、メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。ホストコントローラ42cとホスト計算機41dの夫々は、自身に接続されている複数のFMPK50を用いるRAIDの制御を行っても良い。
ホストコントローラ42c及びホスト計算機41dの一方は、LAN2を介して他方へIO要求を行っても良いし、自身のFMPK50のデバイスコントローラ60へIO要求を行っても良い。
ホストコントローラ42a及びホスト計算機41bの夫々は、パリティ演算実施装置の決定方法1300におけるケース#1又はケース#2に該当する。
この実施例において、システムコントローラ20は、ホストコントローラ42cとホスト計算機41dの何れの形態であっても良い。
なお、計算機システムは、前述の実施例の何れかの要素の組み合わせであっても良い。また、一つの計算機システム内に、パリティ演算機能を有しているシステムコントローラ20とパリティ演算機能を有していないシステムコントローラ20とが混在していても良い。
以上に述べられた各実施例によれば、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。これにより、ストレージシステム30の速度を向上させることができる。データ転送は例えば、データの転送回数や転送量等で表される。
また、以上に述べられた各実施例によれば、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えると共に、デバイスコントローラ60における揮発メモリの使用量を削減することができる。
また、システムコントローラ20の動作における各工程の順序は、交換されることがある。例えば、1402と1403は交換可能である。また、デバイスコントローラ60の動作における各工程の順序は、交換されることがある。例えば、3703と3704は交換可能である。
10:ホスト計算機、20:システムコントローラ、25:パリティ演算回路、26:バッファ、30:ストレージシステム、41a,41b,41c,41d:ホスト計算機42a,42c:ホストコントローラ、50:FMPK(フラッシュメモリパッケージ)、55:FM(フラッシュメモリ)、60:デバイスコントローラ、65:パリティ演算回路、66:バッファ

Claims (11)

  1. それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
    前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスを制御するよう構成されるプロセッサと、
    を有し、
    前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データを有効な状態に維持したまま、前記旧データと前記旧データを更新する新データとに基づき、第1の中間パリティを生成し、
    前記プロセッサは、前記第2の記憶デバイスに、第1の新パリティの生成を指示するためのパリティ更新コマンド及び前記第1の中間パリティを送信し、
    前記第2の記憶デバイスの第2のデバイスコントローラは前記パリティ更新コマンドに従って、前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティとに基づき、前記第1の新パリティを生成し、前記生成した第1の新パリティを前記第2の記憶デバイスに格納し、
    前記プロセッサは、前記第1の記憶デバイスに前記旧データを無効化するための無効化コマンドを送信し、
    前記第1のデバイスコントローラは前記無効化コマンドの受領に応じて、前記旧データを無効化する、
    ことを特徴とする、情報処理システム。
  2. 前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けて管理しており、
    前記第1のデバイスコントローラは、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、前記プロセッサから前記新データを受信した際、前記旧データを有効な状態に維持するために、前記第1の物理ページの前記第1の論理ページへの関連付けを維持したままにする、
    ことを特徴とする、請求項1に記載の情報処理システム。
  3. 前記第1のデバイスコントローラは、前記物理ページを前記論理ページに関連付けるページマッピング管理テーブルを有し、前記ページマッピング管理テーブル上で、前記第1の物理ページを前記第1の論理ページに関連付けており、
    前記第1のデバイスコントローラは、
    前記プロセッサから前記新データを受信した際、前記旧データを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したままにし、
    前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
    ことを特徴とする、請求項2に記載の情報処理システム。
  4. 前記第1のデバイスコントローラは、
    前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
    ことを特徴とする、請求項3記載の情報処理システム。
  5. 前記プロセッサは、前記第1のデバイスコントローラから前記第1の中間パリティを受信した後、前記第1の記憶デバイスに前記無効化コマンドを送信する、
    ことを特徴とする、請求項1に記載の情報処理システム。
  6. それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
    前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスを制御するよう構成されるプロセッサと、
    を有し、
    前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データを有効な状態に維持したまま、前記旧データと前記旧データを更新する新データとに基づき、第1の中間パリティを生成し、
    前記第2の記憶デバイスの第2のデバイスコントローラは、
    前記第1のデバイスコントローラで生成された前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティに基づき、第1の新パリティを生成し、前記生成した第1の新パリティを前記第2の記憶デバイスに格納する、
    ことを特徴とする、情報処理システム。
  7. 前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けて管理しており、
    前記第1のデバイスコントローラは、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、前記プロセッサから前記新データを受信した際、前記旧データを有効な状態に維持するために、前記第1の物理ページの前記第1の論理ページへの関連付けを維持したままにする、
    ことを特徴とする、請求項に記載の情報処理システム。
  8. 前記プロセッサは、前記第1のデバイスコントローラから前記第1の中間パリティを受信した後、前記第1の記憶デバイスへ前記旧データを無効化するための無効化コマンドを送信し、
    前記第1の記憶デバイスは、前記無効化コマンドの受領に応じて前記旧データを無効化する、
    ことを特徴とする、請求項に記載の情報処理システム。
  9. それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
    前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスを制御するよう構成されるプロセッサと、
    を有し、
    前記プロセッサまたは前記複数の記憶デバイスは、パリティを生成するパリティ演算部を有し、
    前記第1の記憶デバイス及び前記第2の記憶デバイスがパリティ演算部を有する場合、
    前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データを有効な状態に維持したまま、前記旧データと前記旧データを更新する新データとに基づき、第1の中間パリティを生成し、
    前記プロセッサは、前記第2の記憶デバイスに、第1の新パリティの生成を指示するためのパリティ更新コマンド及び前記第1の中間パリティを送信し、
    前記第2の記憶デバイスの第2のデバイスコントローラは前記パリティ更新コマンドに従って、前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティとに基づき、前記第1の新パリティを生成し、前記生成した第1の新パリティを前記第2の記憶デバイスに格納し、
    前記プロセッサは、前記第1の記憶デバイスに前記旧データを無効化するための無効化コマンドを送信し、
    前記第1のデバイスコントローラは前記無効化コマンドの受領に応じて、前記旧データを無効化し、
    前記第1のデバイスコントローラ及び前記第2のデバイスコントローラが前記パリティ演算部を有さず、前記プロセッサが前記パリティ演算部を有する場合、
    前記プロセッサが第3の新パリティを生成する、
    ことを特徴とする、情報処理システム。
  10. 前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けて管理しており、
    前記第1のデバイスコントローラは、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、前記プロセッサから前記新データを受信した際、前記旧データを有効な状態に維持するために、前記第1の物理ページの前記第1の論理ページへの関連付けを維持したままにする、
    ことを特徴とする、請求項に記載の情報処理システム。
  11. 前記プロセッサは、前記第1のデバイスコントローラから前記第1の中間パリティを受信した後、前記第1の記憶デバイスに前記無効化コマンドを送信する、ことを特徴とする、請求項に記載の情報処理システム。
JP2016095199A 2016-05-11 2016-05-11 ストレージシステム Expired - Fee Related JP6163588B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016095199A JP6163588B2 (ja) 2016-05-11 2016-05-11 ストレージシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016095199A JP6163588B2 (ja) 2016-05-11 2016-05-11 ストレージシステム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014550959A Division JP5937697B2 (ja) 2012-04-27 2012-04-27 ストレージシステム

Publications (2)

Publication Number Publication Date
JP2016194928A JP2016194928A (ja) 2016-11-17
JP6163588B2 true JP6163588B2 (ja) 2017-07-12

Family

ID=57322910

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016095199A Expired - Fee Related JP6163588B2 (ja) 2016-05-11 2016-05-11 ストレージシステム

Country Status (1)

Country Link
JP (1) JP6163588B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11150846B2 (en) 2017-03-28 2021-10-19 Hitachi, Ltd. Storage system, computer-readable recording medium, and control method for system that reconstructs and distributes data

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07261946A (ja) * 1994-03-22 1995-10-13 Hitachi Ltd アレイ型記憶装置
US6839826B2 (en) * 2002-02-06 2005-01-04 Sandisk Corporation Memory device with pointer structure to map logical to physical addresses
JP5137413B2 (ja) * 2006-11-28 2013-02-06 株式会社日立製作所 半導体記憶装置
JP5245472B2 (ja) * 2008-03-13 2013-07-24 富士通株式会社 制御方法、ディスクアレイ装置
JP5242264B2 (ja) * 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム

Also Published As

Publication number Publication date
JP2016194928A (ja) 2016-11-17

Similar Documents

Publication Publication Date Title
JP5937697B2 (ja) ストレージシステム
US9483404B2 (en) Write admittance policy for a memory cache
US10133663B2 (en) Systems and methods for persistent address space management
US9262265B2 (en) Storage system and storage control apparatus
US8578127B2 (en) Apparatus, system, and method for allocating storage
US9251052B2 (en) Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
JP6328335B2 (ja) ストレージ装置及びその制御方法
JP6007332B2 (ja) ストレージシステム及びデータライト方法
US20150212752A1 (en) Storage system redundant array of solid state disk array
US20150378613A1 (en) Storage device
US9606734B2 (en) Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
JP6817340B2 (ja) 計算機
CN112346658B (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
JP6163588B2 (ja) ストレージシステム
US8935488B2 (en) Storage system and storage control method
US11221790B2 (en) Storage system
JP6605762B2 (ja) 記憶ドライブの故障により消失したデータを復元する装置
CN121233042A (zh) 支持Zoned NameSpace的页条带断点续传
CN121233043A (zh) 可调度的页条带写入方法及其存储设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170510

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170619

R150 Certificate of patent or registration of utility model

Ref document number: 6163588

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees