JP5279785B2 - コントローラ、記憶装置、およびプログラム - Google Patents

コントローラ、記憶装置、およびプログラム Download PDF

Info

Publication number
JP5279785B2
JP5279785B2 JP2010209758A JP2010209758A JP5279785B2 JP 5279785 B2 JP5279785 B2 JP 5279785B2 JP 2010209758 A JP2010209758 A JP 2010209758A JP 2010209758 A JP2010209758 A JP 2010209758A JP 5279785 B2 JP5279785 B2 JP 5279785B2
Authority
JP
Japan
Prior art keywords
data
state
parity
storage unit
unit
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
JP2010209758A
Other languages
English (en)
Other versions
JP2012064139A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010209758A priority Critical patent/JP5279785B2/ja
Priority to US13/035,194 priority patent/US8549388B2/en
Priority to TW100127619A priority patent/TWI473006B/zh
Priority to EP11179009A priority patent/EP2431878A1/en
Priority to KR1020110087174A priority patent/KR101285900B1/ko
Priority to CN201110254403.5A priority patent/CN102411518B/zh
Publication of JP2012064139A publication Critical patent/JP2012064139A/ja
Application granted granted Critical
Publication of JP5279785B2 publication Critical patent/JP5279785B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1073Problems due to wear-out failures in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1092Single disk raid, i.e. RAID with parity on a single disk

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明の実施形態は、コントローラ、記憶装置、およびプログラムに関する。
データ記憶装置には、高い信頼性が求められる。例えば、データ記憶装置をRAID(Redundant Arrays of Inexpensive Disks)5のような構成とすることにより、データの復元が実行できる。これにより、複数のデータ記憶装置を組み合わせたストレージシステム全体としての信頼性を向上することができる。
D. Patterson, G. Gibson, and R. Katz. "A Case for Redundant Arrays of Inexpensive Disks (RAID)", Proceedings of the 1988 ACM SIGMOD, pp.109-116, June 1988.
しかしながら、従来技術では複数のデータ記憶装置を組み合わせたストレージシステム全体としての信頼性を向上させることができるが、データ記憶装置単体の信頼性を向上することができない。
実施形態は、第1データ記憶部および第2データ記憶部を含む記憶装置に対するアクセスを制御するコントローラである。第2データ記憶部は、ユーザデータと、ユーザデータのパリティデータとを記憶する。第1データ記憶部は、パリティデータを記憶する。コントローラは、パリティ更新部と、パリティ書込部とを備える。パリティ更新部は、第2データ記憶部の記憶領域が、第1状態から第2状態に変更される場合、変更後に第1状態となっている記憶領域に記憶されたユーザデータのパリティデータを更新し、更新後のパリティデータを表す第1パリティデータを第1データ記憶部に書き込み、第1状態記憶部から第2状態に変更される記憶領域の識別情報を削除し、第2状態記憶部に第2状態に変更される記憶領域の識別情報を追加し、第2データ記憶部の記憶領域が、第2状態から第1状態に変更される場合、変更後に第1状態となっている記憶領域に記憶されたユーザデータのパリティデータを更新し、更新後のパリティデータを表す第1パリティデータを第1データ記憶部に書き込み、第1状態記憶部に第1状態に変更される記憶領域の識別情報を追加し、第2状態記憶部から第1状態に変更される記憶領域の識別情報を削除する。パリティ書込部は、パリティデータの更新と独立に定められるタイミングで、第1データ記憶部に書き込まれたパリティデータを読み込み、読み込んだパリティデータを第2データ記憶部に書き込む。
第1の実施形態のデータ記憶装置の機能ブロック図。 第1データ記憶部の構成例を示す図。 第2データ記憶部の構成例を示す図。 第1状態記憶部の構成例を示す図。 第2状態記憶部の構成例を示す図。 第1の実施形態の記憶領域を第1状態に変更する処理のフローチャート。 第1の実施形態の記憶領域を第2状態に変更する処理のフローチャート。 第1の実施形態のパリティ書き込み処理のフローチャート。 第2の実施形態のデータ記憶装置の機能ブロック図。 第3状態記憶部の構成例を示す図。 第2の実施形態の記憶領域を第2状態に変更する処理のフローチャート。 第2の実施形態におけるパリティ書き込み処理のフローチャート。 第3の実施形態のデータ記憶装置の機能ブロック図。 第4状態記憶部の構成例を示す図。 第3の実施形態の記憶領域を第1状態に変更する処理のフローチャート。 第3の実施形態のパリティ書き込み処理のフローチャート。 第4の実施形態のデータ記憶装置の機能ブロック図。 第4の実施形態のパリティ書き込み処理のフローチャート。 第5の実施形態のデータ記憶装置の機能ブロック図。 第5の実施形態の記憶領域を第1状態に変更する処理のフローチャート。 第5の実施形態のパリティデータを復元する処理例のフローチャート。 第6の実施形態のデータ記憶装置の機能ブロック図。 記憶領域の状態とデータの保護状態の関係を示す図。 第6の実施形態の差分反復訂正処理例のフローチャート。
以下に添付図面を参照して、この発明にかかるデータ記憶装置の好適な実施形態を詳細に説明する。
(第1の実施形態)
第1の実施形態にかかるデータ記憶装置(以下、データ記憶装置という)単体の信頼性を向上するため、非特許文献1に示されるRAID5のような仕組みをデータ記憶装置内部に持ち、データ記憶装置内部でデータの復元を実現できるような構成とする。
ところで、データ記憶装置には低コスト化も求められており、容量対価格比が比較的安価な記憶媒体が用いられることが多い。容量対価格比が比較的安価な記憶媒体は、データの書き込み速度が比較的遅い場合が多い。
ここで、データ記憶装置内部でRAID5のような構成をとった場合、ホスト装置から書き込みが要求されたデータであるユーザデータの記憶媒体への書き込み量に比して、データ復元符号(以降、パリティという)データの記憶媒体への書き込み量が多くなる。データ記憶装置内部での記憶媒体自体へのデータ書き込み速度帯域には上限があるため、データ記憶装置内部でRAID5のような構成をとった場合、結果としてユーザデータの書き込み速度が遅くなるという欠点が生じる。
また、例えば、NAND型フラッシュメモリのような記憶媒体は、記憶媒体を構成する記憶素子の寿命がデータの書き換え回数によって左右されると言われている。このような記憶媒体を用いたデータ記憶装置の場合、パリティデータの書き込み量が多くなると、データ記憶装置の設計寿命が短くなるという欠点が生じる。
以上のような事情があるため、データ記憶装置内部でRAID5のような構成をとった場合、ユーザデータの記憶媒体への書き込み量に比して、パリティデータの記憶媒体への書き込み量を削減することが求められる。
そこで、本実施形態では、ユーザデータとパリティデータを記憶する記憶媒体(第2データ記憶部)以外に、パリティデータのみを記憶する記憶媒体(第1データ記憶部)を備える。そして、パリティデータ更新時には、第1データ記憶部に更新されたパリティデータを記憶し、所定のタイミングで第1データ記憶部に記憶されたパリティデータを第2データ記憶部に書き込む。これにより、ユーザデータの記憶媒体への書き込み量に比して、パリティデータの記憶媒体への書き込み量を削減できる。
図1は、第1の実施形態にかかるデータ記憶装置100の構成の一例を示すブロック図である。図1に示すように、データ記憶装置100は、第1データ記憶部151と、第1アクセス制御部101と、第2データ記憶部152と、第2アクセス制御部102と、第1状態記憶部153と、第3アクセス制御部103と、第2状態記憶部154と、第4アクセス制御部104と、状態更新部120と、コントローラ110と、パリティ演算部130と、備えている。コントローラ110は、パリティ更新部111と、パリティ書込部112とを、備えている。
第1データ記憶部151は、図2に示すように、少なくとも1つの記憶領域を有する。各記憶領域は、パリティデータを記憶する。なお、第1データ記憶部151は、複数の記憶領域を有し、それぞれの記憶領域に1つのパリティデータを記憶してもよい。すなわち、データ記憶装置100は、複数のパリティグループを有してもよい。ここで、パリティグループとは、あるパリティデータによって保護されているユーザデータを記憶する記憶領域の集合のことである。複数のパリティグループを有する場合、データ記憶装置100は、以降に説明する各種情報等を、パリティグループの数に応じて複数有する。データ記憶装置100が複数のパリティグループを有する場合は、以降の構成や処理を適宜読み替えることができる。
第1アクセス制御部101は、第1データ記憶部151への読み込みまたは書き込みを制御する。
第2データ記憶部152は、図3に示すように、複数の記憶領域を有する。それぞれの記憶領域は、ユーザデータまたはパリティデータを記憶する。このうち、ユーザデータを記憶する記憶領域は、第1状態と第2状態との2つの状態を有する。第1状態とは、当該記憶領域が記憶するユーザデータが、第1データ記憶部151が記憶するパリティデータによって保護されている状態のことである。第2状態とは、当該記憶領域が記憶するユーザデータが、第1データ記憶部151が記憶するパリティデータによって保護されていない状態のことである。
第2アクセス制御部102は、第2データ記憶部152への読み込みまたは書き込みを制御する。
第2データ記憶部152は、第1データ記憶部151に対して特性の面で相対的に劣るように構成してもよい。例えば、第2データ記憶部152は、第1データ記憶部151に対してデータの書き込み速度が相対的に劣っている。または、例えば、記憶素子の寿命がデータの書き込み回数によって左右されるような記憶素子で構成されている場合で、第2データ記憶部152は、第1データ記憶部151に対してデータの書き込み耐用回数が相対的に劣っている。または、例えば、データの読み込み速度に比して、データの書き込み速度が相対的に劣っているような記憶素子で構成されている場合で、第2データ記憶部152は、第1データ記憶部151に対してデータの読み込み速度に対するデータの書き込み速度の落ち込みの度合いが相対的に劣っている。なお、特性の例はこれらに限られない。
第1状態記憶部153は、第1状態集合情報を記憶する。第1状態集合情報とは、第2データ記憶部152に含まれる記憶領域のうち、第1状態の記憶領域の集合(第1状態集合)を特定する情報(識別情報)のことである。第1状態集合情報は、例えば図4に示すような、記憶領域の識別子のリスト構造で実現される。
第3アクセス制御部103は、第1状態記憶部153へのアクセスを制御する。第1状態記憶部153へのアクセスとは、第1状態記憶部153が記憶する第1集合情報の読み込み、第1状態記憶部153が記憶する第1集合情報への要求元から指定された記憶領域情報の追加、第1状態記憶部153が記憶する第1集合情報からの要求元から指定された記憶領域情報の削除が含まれる.
第2状態記憶部154は、第2状態集合情報を記憶する。第2状態集合情報とは、第2データ記憶部152に含まれる記憶領域のうち、第2状態の記憶領域の集合(第2状態集合)を特定する情報のことである。第2状態集合情報は、例えば図5に示すような、記憶領域の識別子のリスト構造で実現される。
第4アクセス制御部104は、第2状態記憶部154へのアクセスを制御する。第2状態記憶部154へのアクセスとは、第2状態記憶部154が記憶する第2集合情報の読み込み、第2状態記憶部154が記憶する第2集合情報への要求元から指定された記憶領域情報の追加、第2状態記憶部154が記憶する第2集合情報からの要求元から指定された記憶領域情報の削除が含まれる。
パリティ演算部130は、指示元から受け付けた複数の入力データをパリティ演算し、演算結果を指示元に返却する。パリティ演算は、パリティデータを生成するとき、パリティデータを更新するとき、および、データを復元するときなどに実行する演算であり、例えば排他的論理和演算などの演算がある。なお、以下ではパリティ演算として排他的論理和演算を用いる例を説明するが、適用可能なパリティ演算はこれに限られるものではない。また、パリティ演算部130をデータ記憶装置100の外部に備えるように構成してもよい。
状態更新部120は、必要に応じて、第2状態記憶部154が記憶する第2状態集合情報の読み込みを第4アクセス制御部104に指示し、第2状態集合情報を取得する。状態更新部120は、取得した第2状態集合情報が示す記憶領域の集合(第2状態集合)から、第1状態に変更する記憶領域を選択し、選択した記憶領域の識別情報をパリティ更新部111に通知する。
また、状態更新部120は、必要に応じて、第1状態記憶部153が記憶する第1状態集合情報の読み込みを第3アクセス制御部103に指示し、第1状態集合情報を取得する。状態更新部120は、取得した第1状態集合情報が示す記憶領域の集合(第1状態集合)から、第2状態に変更する記憶領域を選択し、選択した記憶領域の識別情報をパリティ更新部111に通知する。
パリティ更新部111は、状態更新部120から第1状態に変更する記憶領域の識別情報を通知されると、通知された記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示し、通知された記憶領域が記憶するデータを取得する。パリティ更新部111は、第1データ記憶部151に記録されているパリティデータの読み込みを第1アクセス制御部101に指示し、第1データ記憶部151に記録されているパリティデータを取得する。パリティ更新部111は、取得したパリティデータと、取得した記憶領域が記憶するデータをパリティ演算するようにパリティ演算部130に指示し、更新後のパリティデータを取得する。パリティ更新部111は、取得した更新後のパリティデータを第1データ記憶部151に書き込みするように第1アクセス制御部101に指示する。パリティ更新部111は、第2状態記憶部154が記憶する第2状態集合情報から、通知された記憶領域の識別情報を削除するように第4アクセス制御部104に指示する。パリティ更新部111は、第1状態記憶部153が記憶する第1状態集合情報に、通知された記憶領域の識別情報を追加するように第3アクセス制御部103に指示する。
パリティ更新部111は、状態更新部120から第2状態に変更する記憶領域の識別情報を通知されると、通知された記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示し、通知された記憶領域が記憶するデータを取得する。パリティ更新部111は、第1データ記憶部151に記録されているパリティデータの読み込みを第1アクセス制御部101に指示し、第1データ記憶部151に記録されているパリティデータを取得する。パリティ更新部111は、取得したパリティデータと、取得した記憶領域が記憶するデータをパリティ演算するようにパリティ演算部130に指示し、更新後のパリティデータを取得する。パリティ更新部111は、取得した更新後のパリティデータを第1データ記憶部151に書き込みするように第1アクセス制御部101に指示する。パリティ更新部111は、第1状態記憶部153が記憶する第1状態集合情報から、通知された記憶領域の識別情報を削除するように第3アクセス制御部103に指示する。パリティ更新部111は、第2状態記憶部154が記憶する第2状態集合情報に、通知された記憶領域の識別情報を追加するように第4アクセス制御部104に指示する。
以上のように、状態更新部120は、第2状態の記憶領域を第1状態にする通知と、第1状態の記憶領域を第2状態にする通知を、パリティ更新部111にそれぞれ独立して通知する。また、パリティ更新部111は、状態更新部120からの、第2状態の記憶領域を第1状態にする通知と、第1状態の記憶領域を第2状態にする通知とに対して、それぞれ独立してパリティデータを更新する。
これにより、パリティデータによって保護されているユーザデータを記憶する記憶領域の数を動的に変更することができる。すなわち、パリティグループに含まれる記憶領域の数を動的に変更することができる。
パリティ書込部112は、予めまたは動的に定められる所定のタイミングで、第1データ記憶部151に記録されているパリティデータの読み込みを第1アクセス制御部101に指示し、第1データ記憶部151に記録されているパリティデータを取得する。そして、パリティ書込部112は、取得したパリティデータを第2データ記憶部152に書き込みするように第2アクセス制御部102に指示する。
予めまたは動的に定められる所定のタイミングとは、例えば、予め定められた条件が満たされたタイミングを意味する。条件としては、例えば、一定期間が経過するごと、および、パリティデータの更新回数が所定数を超えること、などのあらゆる条件を適用できる。
以降、必要に応じて、「第1データ記憶部151に記録されているパリティデータの読み込みを第1アクセス制御部101に指示し、第1データ記憶部151に記録されているパリティデータを取得し、取得したパリティデータを第2データ記憶部152に記録するように第2アクセス制御部102に指示する」ことを、パリティ書き込み指示という。
以上のように、パリティ更新部111が第1データ記憶部151上でパリティデータを更新する。また、第1データ記憶部151上でのパリティデータ更新処理とは独立に、予めまたは動的に定められる所定のタイミングで、パリティ書込部112が第1データ記憶部151上のパリティデータを第2データ記憶部152に書き込む。したがって、パリティ更新処理の度に、更新されたパリティデータが第2データ記憶部152に書き込まれることはない。
ここで、第1データ記憶部151と第2データ記憶部152が、前述したようなメモリの特性を持つ場合、第2データ記憶部152への書き込み処理を少なくすると、データ記憶装置100全体としての性能の劣化の度合いや寿命の減少の度合いを抑制することができる。上述したように、パリティ更新処理の度に、更新されたパリティデータが第2データ記憶部152に書き込まれることはないため、本実施形態では、第2データ記憶部152への書き込み処理を少なくすることができる。したがって、本実施形態では、データ記憶装置100全体としての性能の劣化の度合いや寿命の減少の度合いを抑制することができる。
なお、本実施形態では、第2状態の記憶領域に対してのみ、ユーザデータの書き換え処理を許可する。したがって、例えば、ある第1状態の記憶領域が記憶するユーザデータを書き換え、かつ、ユーザデータを書き換えたのちにも第1状態を継続する必要性が生じた時は、例えば、状態更新部120が当該記憶領域をいったん第2状態に変更するよう指示し、図示しないユーザデータ書き換え部が当該記憶領域のユーザデータ書き換えを第4アクセス制御部104に指示し、状態更新部120が当該記憶領域を第1状態に変更するよう指示するという手順を踏むことになる。
なお、本実施形態の目的を逸脱しない範囲内で、前述の一連の処理を融合して最適化し、例えば、第2データ記憶部152からのデータの読み込み回数などを削減してもよい。以降の実施形態でも同様である。例えば、第2データ記憶部152のデータAをデータA’に変更し、それに伴いパリティデータを更新する場合を考える。最適化しない方法では、変更後のデータA’を第2データ記憶部152に保存し、パリティデータの更新のために、保存したデータA’を第2データ記憶部152から読み込む必要がある。そこで、変更後のデータA’をRAMなどの一時記憶部に保存しておき、パリティデータの更新時には、一時記憶部に保存したデータA’を利用することで、第2データ記憶部152からのデータの読み込み回数を削減できる。
次に、このように構成された第1の実施形態にかかるデータ記憶装置100による処理について図6を用いて説明する。図6は、第1の実施形態における、記憶領域を第1状態に変更する処理の流れを示すフローチャートである。
まず、状態更新部120は、必要に応じて、第2状態集合を第2状態記憶部154から読み込む(ステップS101)。具体的には、状態更新部120は、第2状態記憶部154が記憶する第2状態集合情報の読み込みを第4アクセス制御部104に指示する。第4アクセス制御部104は、第2状態記憶部154が記憶する第2状態集合情報を読み込み、状態更新部120に返答する。状態更新部120は、第2状態集合情報を取得する。状態更新部120は、取得した第2状態集合情報が示す記憶領域の集合から、第1状態に変更する記憶領域を選択し、選択した記憶領域の識別情報をパリティ更新部111に通知する(ステップS102)。
パリティ更新部111は、第1状態に変更する記憶領域に記録されているデータを読み込む(ステップS103)。より詳細には、パリティ更新部111は、状態更新部120から第1状態に変更する記憶領域の識別情報を通知されると、通知された記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示する。第2アクセス制御部102は、通知された記憶領域が記憶するデータを読み込み、パリティ更新部111に返答する。パリティ更新部111は、通知された記憶領域が記憶するデータを取得する。
パリティ更新部111は、第1データ記憶部151からパリティデータを読み込む(ステップS104)。より詳細には、パリティ更新部111は、第1データ記憶部151に記録されているパリティデータの読み込みを第1アクセス制御部101に指示する。第1アクセス制御部101は、第1データ記憶部151に記録されているパリティデータを読み込み、パリティ更新部111に返答する。パリティ更新部111は、第1データ記憶部151に記録されているパリティデータを取得する。
パリティ更新部111は、取得したパリティデータを更新する(ステップS105)。より詳細には、パリティ更新部111は、取得したパリティデータと、取得した記憶領域が記憶するデータをパリティ演算するようにパリティ演算部130に指示する。パリティ演算部130は、指示元から受け付けた複数の入力データをパリティ演算し、演算結果を指示元に返却する。パリティ演算は、パリティデータを生成するときや、更新するときや、データを復元するときなどに実行する演算であり、例えば排他的論理和演算などの演算がある。パリティ更新部111は、更新後のパリティデータを取得する。パリティ更新部111は、取得した更新後のパリティデータを第1データ記憶部151に書き込みするように第1アクセス制御部101に指示する。第1アクセス制御部101は、更新後のパリティデータを第1データ記憶部151に書き込む。
パリティ更新部111は、記憶領域の状態情報を更新する(ステップS106)。より詳細には、パリティ更新部111は、第2状態記憶部154が記憶する第2状態集合情報から、通知された記憶領域の識別情報を削除するように第4アクセス制御部104に指示する。第4アクセス制御部104は、第2状態記憶部154が記憶する第2状態集合情報から、パリティ更新部111に通知された記憶領域の識別情報を削除する。パリティ更新部111は、第1状態記憶部153が記憶する第1状態集合情報に、通知された記憶領域の識別情報を追加するように第3アクセス制御部103に指示する。第3アクセス制御部103は、第1状態記憶部153が記憶する第1状態集合情報に、パリティ更新部111に通知された記憶領域の識別情報を追加する。
次に、記憶領域を第2状態に変更する処理の手順の一例について、図7を参照して説明する。図7は、第1の実施形態における、記憶領域を第2状態に変更する処理の流れを示すフローチャートである。
まず、状態更新部120は、必要に応じて、第1状態集合を第1状態記憶部153から読み込む(ステップS201)。具体的には、状態更新部120は、第1状態記憶部153が記憶する第1状態集合情報の読み込みを第3アクセス制御部103に指示する。第3アクセス制御部103は、第1状態記憶部153が記憶する第1状態集合情報を読み込み、状態更新部120に返答する。状態更新部120は、第1状態集合情報を取得する。状態更新部120は、取得した第1状態集合情報が示す記憶領域の集合から、第2状態に変更する記憶領域を選択し、選択した記憶領域の識別情報をパリティ更新部111に通知する(ステップS202)。
パリティ更新部111は、第2状態に変更する記憶領域に記録されているデータを読み込む(ステップS203)。より詳細には、パリティ更新部111は、状態更新部120から第2状態に変更する記憶領域の識別情報を通知されると、通知された記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示する。第2アクセス制御部102は、通知された記憶領域が記憶するデータを読み込み、パリティ更新部111に返答する。パリティ更新部111は、通知された記憶領域が記憶するデータを取得する。
次に、パリティ更新部111は、パリティデータを読み込み(ステップS204)、読み込みしたパリティデータを更新する(ステップS205)。この処理は、図6のステップS104、105と同じなので、詳細な説明は省略する。
パリティ更新部111は、記憶領域の状態情報を更新する(ステップS206)。より詳細には、パリティ更新部111は、第1状態記憶部153が記憶する第1状態集合情報から、通知された記憶領域の識別情報を削除するように第3アクセス制御部103に指示する。第3アクセス制御部103は、第1状態記憶部153が記憶する第1状態集合情報から、パリティ更新部111に通知された記憶領域の識別情報を削除する。パリティ更新部111は、第2状態記憶部154が記憶する第2状態集合情報に、通知された記憶領域の識別情報を追加するように第4アクセス制御部104に指示する。第4アクセス制御部104は、第2状態記憶部154が記憶する第2状態集合情報に、パリティ更新部111に通知された記憶領域の識別情報を追加する。
次に、パリティ書き込み処理の手順の一例について、図8を参照して説明する。図8は、第1の実施形態における、パリティ書き込み処理の流れを示すフローチャートである。
まず、パリティ書込部112は、第1データ記憶部151からパリティデータを読み込む(ステップS301)。より詳細には、パリティ書込部112は、予めまたは動的に定められる所定のタイミングで、第1データ記憶部151に記録されているパリティデータの読み込みを第1アクセス制御部101に指示する。第1アクセス制御部101は、第1データ記憶部151に記録されているパリティデータを読み込み、パリティ書込部112に返答する。パリティ書込部112は、第1データ記憶部151に記録されているパリティデータを取得する。
パリティ書込部112は、取得したパリティデータを書き込む(ステップS302)。より詳細には、パリティ書込部112は、取得したパリティデータを第2データ記憶部152に書き込みするように第2アクセス制御部102に指示する。第2アクセス制御部102は、パリティ書込部112が取得したパリティデータを第2データ記憶部152に書き込む。
このように、第1の実施形態にかかるデータ記憶装置では、ユーザデータの記憶媒体への書き込み量に比して、パリティデータの記憶媒体への書き込み量を削減することができる。
(第2の実施形態)
第2の実施形態にかかるデータ記憶装置では、第2状態に変更された記憶領域の個数が、予めまたは動的に定められる閾値を超えるごとに、第1データ記憶部151から第2データ記憶部152にパリティデータを書き込む。
図9は、第2の実施形態にかかるデータ記憶装置200の構成の一例を示すブロック図である。図9に示すように、データ記憶装置200は、第1データ記憶部151と、第1アクセス制御部101と、第2データ記憶部152と、第2アクセス制御部102と、第1状態記憶部153と、第3アクセス制御部103と、第2状態記憶部154と、第4アクセス制御部104と、パリティ演算部130と、状態更新部120−2と、コントローラ110−2と、第3状態記憶部255と、第5アクセス制御部205とを、備えている。コントローラ110−2は、パリティ更新部111−2と、パリティ書込部112−2と、を備えている。ここで、説明済みの機能部と同じものについては、同じ符号を付し、詳細な説明は省略する。
第3状態記憶部255は、第2状態追加集合情報を記憶する。ここで、第2状態記憶部154が記憶する第2状態集合情報が示す、第2状態の記憶領域の集合には、以下の2つの集合が含まれる。
(1)後述するパリティ書込部112−2が、第1データ記憶部151に記録されているパリティデータを第2データ記憶部152に書き込むように、第1アクセス制御部101と第2アクセス制御部102に、最後に指示した時点(以降、最後のパリティ書き込み時点という)よりも前から継続して第2状態であった記憶領域の集合。
(2)最後のパリティ書き込み時点以降に、後述する状態更新部120−2が、第1状態集合情報が示す記憶領域の集合から、第2状態に変更する記憶領域を選択し、結果として第2状態になった記憶領域の集合。
第2状態追加集合情報とは、最後のパリティ書き込み時点以降に第2状態になった記憶領域の集合(第2状態追加集合)の情報である。第2状態追加集合情報は、例えば図10に示すような、記憶領域の識別子のリスト構造で実現される。
第5アクセス制御部205は、第3状態記憶部255へのアクセスを制御する。第3状態記憶部255へのアクセスとは、第3状態記憶部255が記憶する第2状態追加集合情報の読み込み、第3状態記憶部255が記憶する第2状態追加集合情報への要求元から指定された記憶領域情報の追加、第3状態記憶部255が記憶する第2状態追加集合情報からの要求元から指定された記憶領域情報の削除、第3状態記憶部255が記憶する第2状態追加集合情報の削除が含まれる。
状態更新部120−2は、第1状態から第2状態に変更する記憶領域の識別情報をパリティ更新部111−2に通知する処理については、通知先がパリティ更新部111ではなく、パリティ更新部111−2である以外は、第1の実施形態の状態更新部120と同様であるので詳細な説明は省略する。
パリティ更新部111−2は、状態更新部120−2から、第1状態に変更する記憶領域の識別情報を通知された時の処理については、通知元が状態更新部120ではなく、状態更新部120−2である以外は、パリティ更新部111と同様であるので詳細な説明は省略する。
パリティ更新部111−2は、状態更新部120−2から第2状態に変更する記憶領域の識別情報を通知されると、パリティ更新部111が状態更新部120から第2状態に変更する記憶領域の識別情報を通知された時の処理に加えて、第3状態記憶部255が記憶する第2状態追加集合情報に、通知された記憶領域の識別情報を追加するように第5アクセス制御部205に指示する。
パリティ書込部112−2は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示し、第3状態記憶部255が記憶する第2状態追加集合情報を取得する。パリティ書込部112−2は、取得した第2状態追加集合情報に含まれている記憶領域の識別情報(以下、領域情報という)の個数を抽出する。抽出した領域情報の個数が、予めまたは動的に定められる閾値を超えた時に、パリティ書込部112−2は、パリティ書込部112が指示するパリティ書き込み指示に加えて、第3状態記憶部255が記憶する第2状態追加集合情報を削除するように第5アクセス制御部205に指示する。
次に、このように構成された第2の実施形態にかかるデータ記憶装置200による処理について図11を用いて説明する。記憶領域を第1状態に変更する処理の流れは、第1の実施形態の図6と同様であるため説明を省略する。図11は、第2の実施形態における、記憶領域を第2状態に変更する処理の流れを示すフローチャートである。
ステップS401からステップS406までは、第1の実施形態にかかるデータ記憶装置100におけるステップS201からステップS206までと同様の処理なので、その説明を省略する。
ステップS407では、パリティ更新部111−2は、第2状態に変更する記憶領域の識別情報を第2状態追加集合情報に追加する。より詳細には、パリティ更新部111−2は、第3状態記憶部255が記憶する第2状態追加集合情報に、状態更新部120−2から通知された記憶領域の識別情報を追加するように第5アクセス制御部205に指示する。第5アクセス制御部205は、第3状態記憶部255が記憶する第2状態追加集合情報に、パリティ更新部111−2が状態更新部120−2から通知された記憶領域の識別情報を追加する。
次に、パリティ書き込み処理の手順の一例について、図12を参照して説明する。図12は、第2の実施形態における、パリティ書き込み処理の流れを示すフローチャートである。
まず、パリティ書込部112−2は、第2状態追加集合情報に含まれている領域情報の個数を抽出する(ステップS501)。より詳細には、パリティ書込部112−2は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示する。第5アクセス制御部205は、第3状態記憶部255が記憶する第2状態追加集合情報を読み込み、パリティ書込部112−2に返答する。パリティ書込部112−2は、第3状態記憶部255が記憶する第2状態追加集合情報を取得する。パリティ書込部112−2は、取得した第2状態追加集合情報に含まれている領域情報の個数を抽出する。
パリティ書込部112−2は、領域情報の個数が予めまたは動的に定められる閾値を超えたか判断する(ステップS502)。抽出した領域情報の個数が閾値を超えていない場合(ステップS502:No)、処理を終える。
抽出した領域情報の個数が閾値を超えている場合(ステップS502:Yes)、パリティ書込部112−2は、第1データ記憶部151からパリティデータを読み込む(ステップS503)。より詳細には、パリティ書込部112−2は、第1データ記憶部151に記録されているパリティデータの読み込みを第1アクセス制御部101に指示する。第1アクセス制御部101は、第1データ記憶部151に記録されているパリティデータを読み込み、パリティ書込部112−2に返答する。パリティ書込部112−2は、第1データ記憶部151に記録されているパリティデータを取得する。
ステップS504は、図8のステップS302と同様の処理なので、詳細な説明は省略する。
パリティ書込部112−2は、第3状態記憶部255から第2状態追加集合情報を削除する(ステップS505)。より詳細には、パリティ書込部112−2は、第3状態記憶部255が記憶する第2状態追加集合情報を削除するように第5アクセス制御部205に指示する。第5アクセス制御部205は、第3状態記憶部255が記憶する第2状態追加集合情報を削除する。
(第3の実施形態)
第3の実施形態にかかるデータ記憶装置では、第1状態に変更された記憶領域の個数が、予めまたは動的に定められる閾値を超えるごとに、第1データ記憶部151から第2データ記憶部152にパリティデータを書き込む。
図13は、第3の実施形態にかかるデータ記憶装置300の構成の一例を示すブロック図である。図13に示すように、データ記憶装置300は、第1データ記憶部151と、第1アクセス制御部101と、第2データ記憶部152と、第2アクセス制御部102と、第1状態記憶部153と、第3アクセス制御部103と、第2状態記憶部154と、第4アクセス制御部104と、パリティ演算部130と、状態更新部120−3と、コントローラ110−3と、第4状態記憶部356と、第6アクセス制御部306とを、備えている。コントローラ110−3は、パリティ更新部111−3と、パリティ書込部112−3と、を備えている。ここで、説明済みの機能部と同じものについては、同じ符号を付し、詳細な説明は省略する。
第4状態記憶部356は、第1状態追加集合情報を記憶する。ここで、第1状態記憶部153が記憶する第1状態集合情報が示す、第1状態の記憶領域の集合には、以下の2つの集合が含まれる。
(1)後述するパリティ書込部112−3が、第1データ記憶部151に記録されているパリティデータを第2データ記憶部152に書き込むように、第1アクセス制御部101と第2アクセス制御部102に、最後に指示した時点(以降、最後のパリティ書き込み時点という)よりも前から継続して第1状態であった記憶領域の集合。
(2)最後のパリティ書き込み時点以降に、後述する状態更新部120−3が、第2状態集合情報が示す記憶領域の集合から、第1状態に変更する記憶領域を選択し、結果として第1状態になった記憶領域の集合。
第1状態追加集合情報とは、最後のパリティ書き込み時点以降に第1状態になった記憶領域の集合(第1状態追加集合)の情報である。第1状態追加集合情報は、例えば図14に示すような、記憶領域の識別子のリスト構造で実現される。
第6アクセス制御部306は、第4状態記憶部356へのアクセスを制御する。第4状態記憶部356へのアクセスとは、第4状態記憶部356が記憶する第1状態追加集合情報の読み込み、第4状態記憶部356が記憶する第1状態追加集合情報への要求元から指定された記憶領域情報の追加、第4状態記憶部356が記憶する第1状態追加集合情報からの要求元から指定された記憶領域情報の削除、第4状態記憶部356が記憶する第1状態追加集合情報の削除が含まれる。
状態更新部120−3は、通知先がパリティ更新部111ではなく、パリティ更新部111−3である以外は、状態更新部120と同様であるので、詳細な説明は省略する。
パリティ更新部111−3は、状態更新部120−3から第1状態に変更する記憶領域の識別情報を通知されると、パリティ更新部111が状態更新部120から第1状態に変更する記憶領域の識別情報を通知された時の処理に加えて、第4状態記憶部356が記憶する第1状態追加集合情報に、通知された記憶領域の識別情報を追加するように第6アクセス制御部306に指示する。
パリティ更新部111−3は、状態更新部120−3から、第2状態に変更する記憶領域の識別情報を通知された時の処理については、通知元が状態更新部120ではなく、状態更新部120−3である以外は、パリティ更新部111と同様であるので詳細な説明は省略する。
パリティ書込部112−3は、第4状態記憶部356が記憶する第1状態追加集合情報の読み込みを第6アクセス制御部306に指示し、第4状態記憶部356が記憶する第1状態追加集合情報を取得する。パリティ書込部112−3は、取得した第1状態追加集合情報に含まれている領域情報の個数を抽出する。抽出した領域情報の個数が、予めまたは動的に定められる閾値を超えた時に、パリティ書込部112−3は、パリティ書込部112が指示するパリティ書き込み指示に加えて、第4状態記憶部356が記憶する第1状態追加集合情報を削除するように第6アクセス制御部306に指示する。
次に、このように構成された第3の実施形態にかかるデータ記憶装置300による処理について図15を用いて説明する。図15は、第3の実施形態における、記憶領域を第1状態に変更する処理の流れを示すフローチャートである。
ステップS601からステップS606までは、第1の実施形態にかかるデータ記憶装置100におけるステップS101からステップS106までと同様の処理なので、その説明を省略する。
ステップS607では、パリティ更新部111−3は、第1状態に変更する記憶領域の識別情報を第1状態追加集合情報に追加する。より詳細には、パリティ更新部111−3は、第4状態記憶部356が記憶する第1状態追加集合情報に、状態更新部120−3から通知された記憶領域の識別情報を追加するように第6アクセス制御部306に指示する。第6アクセス制御部306は、第4状態記憶部356が記憶する第1状態追加集合情報に、パリティ更新部111−3が状態更新部120−3から通知された記憶領域の識別情報を追加する。
なお、記憶領域を第2状態に変更する処理の流れは、第1の実施形態の図7と同様であるため説明を省略する。
次に、パリティ書き込み処理の手順の一例について、図16を参照して説明する。図16は、第3の実施形態における、パリティ書き込み処理の流れを示すフローチャートである。
まず、パリティ書込部112−3は、第1状態追加集合情報に含まれている領域情報の個数を抽出する(ステップS701)。より詳細には、パリティ書込部112−3は、第4状態記憶部356が記憶する第1状態追加集合情報の読み込みを第6アクセス制御部306に指示する。第6アクセス制御部306は、第4状態記憶部356が記憶する第1状態追加集合情報を読み込み、パリティ書込部112−3に返答する。パリティ書込部112−3は、第4状態記憶部356が記憶する第1状態追加集合情報を取得する。パリティ書込部112−3は、取得した第1状態追加集合情報に含まれている領域情報の個数を抽出する。
パリティ書込部112−3は、領域情報の個数が予めまたは動的に定められる閾値を超えたか判断する(ステップS702)。抽出した領域情報の個数が閾値を超えていない場合(ステップS702:No)、処理を終える。
抽出した領域情報の個数が閾値を超えている場合(ステップS702:Yes)、パリティ書込部112−3は、第1データ記憶部151からパリティデータを読み込む(ステップS703)。より詳細には、パリティ書込部112−3は、第1データ記憶部151に記録されているパリティデータの読み込みを第1アクセス制御部101に指示する。第1アクセス制御部101は、第1データ記憶部151に記録されているパリティデータを読み込み、パリティ書込部112−3に返答する。パリティ書込部112−3は、第1データ記憶部151に記録されているパリティデータを取得する。
ステップS704は、図8のステップS302と同様の処理なので、詳細な説明は省略する。
パリティ書込部112−3は、第4状態記憶部356から第1状態追加集合情報を削除する(ステップS705)。より詳細には、パリティ書込部112−3は、第4状態記憶部356が記憶する第1状態追加集合情報を削除するように第6アクセス制御部306に指示する。第6アクセス制御部306は、第4状態記憶部356が記憶する第1状態追加集合情報を削除する。
(第4の実施形態)
第4の実施形態にかかるデータ記憶装置では、第1状態に変更された記憶領域の個数が閾値を超えるごとに、または、第2状態に変更された記憶領域の個数が閾値を超えるごとに、第1データ記憶部151から第2データ記憶部152にパリティデータを書き込む。
図17は、第4の実施形態にかかるデータ記憶装置400の構成の一例を示すブロック図である。図17に示すように、データ記憶装置400は、第1データ記憶部151と、第1アクセス制御部101と、第2データ記憶部152と、第2アクセス制御部102と、第1状態記憶部153と、第3アクセス制御部103と、第2状態記憶部154と、第4アクセス制御部104と、パリティ演算部130と、状態更新部120−4と、コントローラ110−4と、第3状態記憶部255と、第5アクセス制御部205と、第4状態記憶部356と、第6アクセス制御部306とを、備えている。コントローラ110−4は、パリティ更新部111−4と、パリティ書込部112−4と、を備えている。ここで、説明済みの機能部と同じものについては、同じ符号を付し、詳細な説明は省略する。
状態更新部120−4は、通知先がパリティ更新部111ではなく、パリティ更新部111−4である以外は、状態更新部120と同様であるので、詳細な説明は省略する。
パリティ更新部111−4は、状態更新部120−4から、第1状態に変更する記憶領域の識別情報を通知された時の処理については、通知元が状態更新部120−3ではなく、状態更新部120−4である以外は、パリティ更新部111−3と同様であるので詳細な説明は省略する。
また、パリティ更新部111−4は、状態更新部120−4から、第2状態に変更する記憶領域の識別情報を通知された時の処理については、通知元が状態更新部120−2ではなく、状態更新部120−4である以外は、パリティ更新部111−2と同様であるので詳細な説明は省略する。
パリティ書込部112−4は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示し、第3状態記憶部255が記憶する第2状態追加集合情報を取得する。パリティ書込部112−4は、取得した第2状態追加集合情報に含まれている領域情報の個数を抽出する。パリティ書込部112−4は、第4状態記憶部356が記憶する第1状態追加集合情報の読み込みを第6アクセス制御部306に指示し、第4状態記憶部356が記憶する第1状態追加集合情報を取得する。パリティ書込部112−4は、取得した第1状態追加集合情報に含まれている領域情報の個数を抽出する。
パリティ書込部112−4は、抽出した第2状態追加集合情報に含まれている領域情報の個数が、予めまたは動的に定められる閾値を超えた時、または、抽出した第1状態追加集合情報に含まれている領域情報の個数が、予めまたは動的に定められる閾値を超えた時に、パリティ書込部112−2が指示するパリティ書き込み指示と、第3状態記憶部255が記憶する第2状態追加集合情報を削除するように第5アクセス制御部205に指示する処理に加えて、第4状態記憶部356が記憶する第1状態追加集合情報を削除するように第6アクセス制御部306に指示する。
次に、このように構成された第4の実施形態にかかるデータ記憶装置400による処理について図18を用いて説明する。なお、記憶領域を第1状態に変更する処理、および、記憶領域を第2状態に変更する処理は、それぞれ図15(第3の実施形態)および図11(第2の実施形態)と同様であるため説明を省略する。図18は、第4の実施形態におけるパリティ書き込み処理の流れを示すフローチャートである。
ステップS801では、第2状態追加集合情報に含まれている領域情報の個数を抽出する。この処理は、パリティ書込部112−2がパリティ書込部112−4である以外は、図12のステップS501と同じなので、詳細な説明は省略する。
ステップS802では、第1状態追加集合情報に含まれている領域情報の個数を抽出する。この処理は、パリティ書込部112−3がパリティ書込部112−4である以外は、図16のステップS701と同じなので、詳細な説明は省略する。
パリティ書込部112−4は、領域情報の個数が所定の閾値を超えたか判断する(ステップS803)。より詳細には、パリティ書込部112−4は、ステップS801で抽出した第2状態追加集合情報に含まれている領域情報の個数が、予めまたは動的に定められる閾値(第1閾値)を超えた、または、ステップS802で抽出した第1状態追加集合情報に含まれている領域情報の個数が、予めまたは動的に定められる閾値(第2閾値)を超えたか否かを判断する。抽出した領域情報の個数が閾値を超えていない場合(ステップS803:No)、処理を終える。
抽出した領域情報の個数が閾値を超えている場合(ステップS803:Yes)、パリティ書込部112−4は、第1データ記憶部151からパリティデータを読み込む(ステップS804)。この処理は、パリティ書込部112−2がパリティ書込部112−4である以外は、図12のステップS503と同じなので、詳細な説明は省略する。
ステップS805からステップS806までは、第2の実施形態にかかるデータ記憶装置200におけるステップS504からステップS505までと同様の処理なので、その説明を省略する。また、ステップS807は、第3の実施形態にかかるデータ記憶装置300におけるステップS705と同様の処理なので、その説明を省略する。
(第5の実施形態)
前述したような特性のメモリを用いた場合、第1データ記憶部151には、揮発性のメモリが用いられ、第2データ記憶部152には、不揮発性のメモリが用いられることがある。したがって、例えば、データ記憶装置の電源が切断されると第1データ記憶部151に記録されているパリティデータが失われる。このため、特に、不意の電源切断が起こった時は、その後データ記憶装置の電源が投入されたときに、電源切断前に第1データ記憶部151に記録されていたパリティデータを復元する必要がある。
もちろん、第1状態記憶部153が記憶する第1状態集合情報に基づいて、第1状態の記憶領域に記録されているデータを全て読み込み、パリティ演算することで、電源切断前に第1データ記憶部151に記録されていたパリティデータを復元することは可能である。しかし、パリティグループを構成する記憶領域の数が多い場合には、処理時間が増大する。
そこで、第5の実施形態では、第3状態記憶部255が記憶する第2状態追加集合情報と、第4状態記憶部356が記憶する第1状態追加集合情報とを利用することで、パリティデータの復元処理時間の短縮を図る。
なお、第1データ記憶部151に記録されていたパリティデータの復元処理を実行する処理は、上述する場合に限られない。例えば、第1データ記憶部151に記録されていたパリティデータに誤りが検出されたときでも良いし、その他の理由により、第1データ記憶部151に記録されていたパリティデータを復元する必要性が生じた時でも良い。
図19は、第5の実施形態にかかるデータ記憶装置500の構成の一例を示すブロック図である。図19に示すように、データ記憶装置500は、第1データ記憶部151と、第1アクセス制御部101と、第2データ記憶部152と、第2アクセス制御部102と、第1状態記憶部153と、第3アクセス制御部103と、第2状態記憶部154と、第4アクセス制御部104と、パリティ演算部130と、状態更新部120−5と、コントローラ110−5と、第3状態記憶部255と、第5アクセス制御部205と、第4状態記憶部356と、第6アクセス制御部306と、を、備えている。コントローラ110−5は、パリティ更新部111−5と、パリティ書込部112−4と、パリティ復元部513と、を備えている。ここで、説明済みの機能部と同じものについては、同じ符号を付し、詳細な説明は省略する。
パリティ復元部513は、第1データ記憶部151に記録されていたパリティデータを復元する必要性が生じた時に、第2データ記憶部152に最後に記録されたパリティデータの読み込みを、第2アクセス制御部102に指示し、第2データ記憶部152に最後に記録されたパリティデータを取得する。
SSD(Solid State Drive)などでは、たとえば記憶領域ごとの消去回数分散化等のため、あるデータを更新したときに、更新前に記録されていた記憶領域と異なる記憶領域に更新後のデータを記録する場合がある。最後に記録されたパリティデータを取得とは、このようなデータの記録方式を用いることにより複数の領域にパリティデータが記録されている場合であっても、実際に有効なパリティデータとして最後に記録されているパリティデータを取得することを意味する。
パリティ復元部513は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示し、第3状態記憶部255が記憶する第2状態追加集合情報を取得する。
パリティ復元部513は、取得した第2状態追加集合情報に対応する第2データ記憶部152の記憶領域それぞれに対し、第2状態追加集合情報に対応する記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示し、第2状態追加集合情報に対応する記憶領域が記憶するデータを取得する。
パリティ復元部513は、第4状態記憶部356が記憶する第1状態追加集合情報の読み込みを第6アクセス制御部306に指示し、第4状態記憶部356が記憶する第1状態追加集合情報を取得する。
パリティ復元部513は、取得した第1状態追加集合情報に対応する第2データ記憶部152の記憶領域それぞれに対し、第1状態追加集合情報に対応する記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示し、第1状態追加集合情報に対応する記憶領域が記憶するデータを取得する。
パリティ復元部513は、取得した第2データ記憶部152に最後に記録されたパリティデータと、取得した第2状態追加集合情報に対応する記憶領域が記憶するデータ群と、取得した第1状態追加集合情報に対応する記憶領域が記憶するデータ群を、パリティ演算するようにパリティ演算部130に指示し、更新後のパリティデータを取得する。
なお、上記手順はパリティ演算の最終的な結果が変わらない範囲で適宜入れ替えてもよい。
パリティ復元部513は、取得した更新後のパリティデータを第1データ記憶部151に記録するように第1アクセス制御部101に指示する。
状態更新部120−5は、必要に応じて、第2状態記憶部154が記憶する第2状態集合情報の読み込みを第4アクセス制御部104に指示し、第2状態集合情報を取得する。状態更新部120−5は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示し、第2状態追加集合情報を取得する。状態更新部120−5は、取得した第2状態集合情報が示す記憶領域の集合から、取得した第2状態追加集合情報が示す記憶領域の集合を除いた集合から、第1状態に変更する記憶領域を選択し、選択した記憶領域の識別情報をパリティ更新部111−5に通知する。
パリティ更新部111−5は、通知元が状態更新部120−4ではなく、状態更新部120−5である以外は、パリティ更新部111−4と同様であるので、詳細な説明は省略する。
次に、このように構成された第5の実施形態にかかるデータ記憶装置500による処理について図20を用いて説明する。図20は、第5の実施形態における、記憶領域を第1状態に変更する処理の流れを示すフローチャートである。
まず、状態更新部120−5は、必要に応じて、第2状態集合を第2状態記憶部154から読み込む(ステップS901)。具体的には、状態更新部120−5は、第2状態記憶部154が記憶する第2状態集合情報の読み込みを第4アクセス制御部104に指示する。第4アクセス制御部104は、第2状態記憶部154が記憶する第2状態集合情報を読み込み、状態更新部120−5に返答する。状態更新部120−5は、第2状態集合情報を取得する。状態更新部120−5は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示する(ステップS902)。第5アクセス制御部205は、第3状態記憶部255が記憶する第2状態追加集合情報を読み込み、状態更新部120−5に返答する。状態更新部120−5は、第2状態追加集合情報を取得する。状態更新部120−5は、取得した第2状態集合情報が示す記憶領域の集合から、取得した第2状態追加集合情報が示す記憶領域の集合を除いた集合から、第1状態に変更する記憶領域を選択し、選択した記憶領域の識別情報をパリティ更新部111−5に通知する(ステップS903)。
ステップS904からステップS908までは、第3の実施形態にかかるデータ記憶装置300におけるステップS603からステップS607までと同様の処理なので、その説明を省略する。
このように、第1状態に変更する記憶領域に制約を持たせるのは、後述するパリティデータの復元の際に、第2状態追加集合情報が示す記憶領域が記憶するデータが必要であるからである。このため、本実施形態では、第2状態集合情報が示す記憶領域の集合から、第2状態追加集合情報が示す記憶領域の集合を除いた集合に含まれる、第2状態の記憶領域に対してのみ、ユーザデータの書き換え処理を許可する。すなわち、第2状態追加集合情報が示す記憶領域の集合に含まれる、第2状態の記憶領域に対しては、ユーザデータの書き換え処理を許可しない。これにより、第2状態追加集合情報が示す記憶領域が記憶するデータを保持することができる。
記憶領域を第2状態に変更する処理の手順の一例と、パリティ書き込み処理の手順の一例は、第4の実施形態と同様なので、詳細な説明は省略する。
次に、パリティデータを復元する処理の手順の一例について、図21を参照して説明する。
まず、パリティ復元部513は、最後に書き込みしたパリティデータを読み込む(ステップS1001)。より詳細には、パリティ復元部513は、第1データ記憶部151に記録されていたパリティデータを復元する必要性が生じた時に、第2データ記憶部152に最後に記録されたパリティデータの読み込みを、第2アクセス制御部102に指示する。第2アクセス制御部102は、第2データ記憶部152に最後に記録されたパリティデータを読み込み、パリティ復元部513に返答する。パリティ復元部513は、第2データ記憶部152に最後に記録されたパリティデータを取得する。
パリティ復元部513は、第2状態追加集合情報に対応する記憶領域が記憶するデータを読み込む。より詳細には、パリティ復元部513は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示する。第5アクセス制御部205は、第3状態記憶部255が記憶する第2状態追加集合情報を読み込み、パリティ復元部513に返答する。パリティ復元部513は、第3状態記憶部255が記憶する第2状態追加集合情報を取得する(ステップS1002)。パリティ復元部513は、取得した第2状態追加集合情報に対応する第2データ記憶部152の記憶領域それぞれに対し、第2状態追加集合情報に対応する記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示する。第2アクセス制御部102は、パリティ復元部513が取得した第2状態追加集合情報に対応する記憶領域が記憶するデータを読み込み、パリティ復元部513に返答する。パリティ復元部513は、第2状態追加集合情報に対応する記憶領域が記憶するデータを取得する(ステップS1003)。
パリティ復元部513は、第1状態追加集合情報に対応する記憶領域が記憶するデータを読み込む。より詳細には、パリティ復元部513は、第4状態記憶部356が記憶する第1状態追加集合情報の読み込みを第6アクセス制御部306に指示する。第6アクセス制御部306は、第4状態記憶部356が記憶する第1状態追加集合情報を読み込み、パリティ復元部513に返答する。パリティ復元部513は、第4状態記憶部356が記憶する第1状態追加集合情報を取得する(ステップS1004)。パリティ復元部513は、取得した第1状態追加集合情報に対応する第2データ記憶部152の記憶領域それぞれに対し、第1状態追加集合情報に対応する記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示する。第2アクセス制御部102は、パリティ復元部513が取得した第1状態追加集合情報に対応する記憶領域が記憶するデータを読み込み、パリティ復元部513に返答する。パリティ復元部513は、第1状態追加集合情報に対応する記憶領域が記憶するデータを取得する(ステップS1005)。
パリティ復元部513は、パリティデータを更新する(ステップS1006)。より詳細には、パリティ復元部513は、取得した第2データ記憶部152に最後に記録されたパリティデータと、取得した第2状態追加集合情報に対応する記憶領域が記憶するデータ群と、取得した第1状態追加集合情報に対応する記憶領域が記憶するデータ群を、パリティ演算するようにパリティ演算部130に指示する。パリティ演算部130は、指示元から受け付けた複数の入力データをパリティ演算し、演算結果を指示元に返却する。パリティ復元部513は、更新後のパリティデータを取得する。
パリティ復元部513は、パリティデータを保存する(ステップS1007)。より詳細には、パリティ復元部513は、取得した更新後のパリティデータを第1データ記憶部151に書き込みするように第1アクセス制御部101に指示する。第1アクセス制御部101は、更新後のパリティデータを第1データ記憶部151に書き込む。
このように、第5の実施形態にかかるデータ記憶装置では、第2状態追加集合情報と第1状態追加集合情報とを利用することで、第1状態の記憶領域に記憶されているユーザデータをすべて読み込むことなく、パリティデータを復元できる。これにより、パリティデータの復元処理時間の短縮が実現できる。
(第6の実施形態)
パリティデータによってユーザデータを復元できる確率を高められれば、データ記憶装置の信頼性をさらに向上することができる。排他的論理和演算によるパリティデータの場合、同一パリティグループ中の1つのユーザデータがパリティデータによって復元可能であり、同一パリティグループ中の2つ以上のユーザデータをパリティデータによって復元することはできない。なお、排他的論理和演算以外の演算方法によるデータ復元符号においても、以降の実施の形態を適宜読み替えて適用させることが可能である。
第6の実施形態にかかるデータ記憶装置は、第2状態追加集合情報と第1状態追加集合情報とを利用することで、同一パリティグループ中の2つ以上のユーザデータの復元を実現する。以下では、第6の実施形態のユーザデータの復元方法を差分反復訂正という。
図22は、第6の実施形態にかかるデータ記憶装置600の構成の一例を示すブロック図である。図22に示すように、データ記憶装置600は、第1データ記憶部151と、第1アクセス制御部101と、第2データ記憶部152と、第2アクセス制御部102と、第1状態記憶部153と、第3アクセス制御部103と、第2状態記憶部154と、第4アクセス制御部104と、パリティ演算部130と、状態更新部120−5と、コントローラ110−6と、第3状態記憶部255と、第5アクセス制御部205と、第4状態記憶部356と、第6アクセス制御部306と、を備えている。コントローラ110−6は、パリティ更新部111−5と、パリティ書込部112−4と、パリティ復元部614と、を備えている。ここで、説明済みの機能部と同じものについては、同じ符号を付し、詳細な説明は省略する。
データ復元部614の説明を始める前に、記憶領域およびデータの保護状態の関係について説明する。図23は、記憶領域の状態と、パリティデータによる記憶領域に記録されているデータの保護状態の関係を示す図である。
図23に示すように、第1状態追加集合情報が示す記憶領域の集合(第1状態追加集合)は、第1状態集合情報が示す記憶領域の集合(第1状態集合)に含まれる。また、第2状態追加集合情報が示す記憶領域の集合(第2状態追加集合)は、第2状態集合情報が示す記憶領域の集合(第2状態集合)に含まれる。
また、図23に示すように、第1状態集合は、第1データ記憶部151に記録されているパリティデータで保護されているデータが記録されている記憶領域の集合である。また、第1状態集合から第1状態追加集合を除いた記憶領域の集合と、第2状態追加集合をあわせた記憶領域の集合は、第2データ記憶部152に最後に記録したパリティデータで保護されているデータが記録されている記憶領域の集合である。
ここで、図23に示すように、復元したいデータを記憶する2つの記憶領域のうち、1つの記憶領域(以下、記憶領域Aとする)が、第1状態追加集合情報が示す記憶領域の集合に含まれ、もう1つの記憶領域(以下、記憶領域Bとする)が、第1状態集合から第1状態追加集合を除いた記憶領域の集合に含まれている場合は、差分反復訂正が実行できる。なお、この状態では、パリティ復元したいデータを記憶する2つの記憶領域は、同一パリティグループ中(第1状態集合)に含まれることになるため、パリティデータによる通常のデータ復元処理では、復元することはできない。
図22のデータ復元部614の説明に戻る。データ復元部614は、図示しない復元依頼元から、記憶しているデータを復元したい2つの記憶領域の識別情報が含まれる差分反復訂正依頼を受けると、2つの記憶領域のうち、1つの記憶領域(記憶領域A)が、第1状態追加集合に含まれ、もう1つの記憶領域(記憶領域B)が、第1状態集合から第1状態追加集合を除いた記憶領域の集合に含まれているかどうかを判定する。
より詳細には、データ復元部614は、第1状態記憶部153が記憶する第1状態集合情報の読み込みを第3アクセス制御部103に指示し、第1状態記憶部153が記憶する第1状態集合情報を取得する。データ復元部614は、第4状態記憶部356が記憶する第1状態追加集合情報の読み込みを第6アクセス制御部306に指示し、第4状態記憶部356が記憶する第1状態追加集合情報を取得する。データ復元部614は、受け付けた差分反復訂正依頼に含まれる2つの記憶領域のうち、いずれか一方の記憶領域(記憶領域A)が、取得した第1状態追加集合情報に対応する記憶領域の集合に含まれ、もう一方の記憶領域(記憶領域B)が、取得した第1状態集合情報が示す記憶領域の集合から、取得した第1状態追加集合情報が示す記憶領域の集合を除いた記憶領域の集合に含まれているかを判定する。判定結果が偽の時は、データ復元部614は、図示しない復元依頼元に、差分反復訂正不能を示す旨を返答する。
データ復元部614は、記憶領域Bのデータを復元する。データ復元部614は、まず、第2データ記憶部152に最後に記録したパリティデータと、パリティデータによる復元に必要なユーザデータを取得する。
より詳細には、データ復元部614は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示し、第3状態記憶部255が記憶する第2状態追加集合情報を取得する。データ復元部614は、第2データ記憶部152に最後に記録されたパリティデータの読み込みを、第2アクセス制御部102に指示し、第2データ記憶部152に最後に記録されたパリティデータを取得する。また、データ復元部614は、取得した第1状態集合情報が示す記憶領域の集合から、取得した第1状態追加集合情報が示す記憶領域の集合を除いた記憶領域の集合と、取得した第2状態追加集合情報が示す記憶領域の集合と、をあわせた記憶領域の集合から記憶領域Bの記憶領域を除いた記憶領域の集合の記憶領域それぞれに対し、それぞれの記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示し、それぞれの記憶領域が記憶するデータを取得する。
次に、データ復元部614は、取得した第2データ記憶部152に最後に記録したパリティデータと、パリティデータによる復元に必要なユーザデータから、記憶領域Bのデータを復元する。
より詳細には、データ復元部614は、取得した第2データ記憶部152に最後に記録したパリティデータと、取得したデータ群を、パリティ演算するようにパリティ演算部130に指示し、結果として復元された記憶領域Bのデータを取得する。
データ復元部614は、記憶領域Aのデータを復元する。データ復元部614は、まず、第1データ記憶部151に記録したパリティデータと、パリティデータによる復元に必要なユーザデータを取得する。なお、復元されたデータを記憶領域Bのデータとして取り扱う。
より詳細には、データ復元部614は、第1データ記憶部151に記録されたパリティデータの読み込みを、第1アクセス制御部101に指示し、第1データ記憶部151に記録されたパリティデータを取得する。また、データ復元部614は、取得した第1状態集合情報が示す記憶領域の集合から、記憶領域Aの記憶領域と、記憶領域Bの記憶領域を除いた記憶領域の集合の記憶領域それぞれに対し、それぞれの記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示し、それぞれの記憶領域が記憶するデータを取得する。
次に、データ復元部614は、取得した第1データ記憶部151に記録したパリティデータと、パリティデータによる復元に必要なユーザデータから、記憶領域Aのデータを復元する。
より詳細には、データ復元部614は、取得したパリティデータと、取得したデータ群と、取得した復元された記憶領域Bのデータを、パリティ演算するようにパリティ演算部130に指示し、結果として復元された記憶領域Aのデータを取得する。
なお、上記手順はパリティ演算の最終的な結果が変わらない範囲で適宜入れ替えてもよい。たとえば、パリティ演算の途中の演算結果を別途記憶しておくことで、第2データ記憶部152からのデータ読み込み回数を削減するなどの最適化を図ることができる。
データ復元部614は、図示しない復元依頼元に、復元した記憶領域Aのデータと、復元した記憶領域Bのデータを返答する。
このように、第2データ記憶部152に最後に記録したパリティデータをうまく利用することで、差分反復訂正により、同一パリティグループ中の2つのユーザデータを復元することができる場合があるため、データ記憶装置の信頼性をさらに向上することができる。
次に、このように構成された第6の実施形態にかかるデータ記憶装置600による処理について図24を用いて説明する。記憶領域を第1状態に変更する処理の手順の一例と、記憶領域を第2状態に変更する処理の手順の一例と、パリティ書き込み処理の手順の一例は、第5の実施形態と同様なので、詳細な説明は省略する。図24は、第6の実施形態における差分反復訂正処理の一例を示すフローチャートである。
まず、データ復元部614は、差分反復訂正可能か判断する(ステップS1101)。すなわち、データ復元部614は、図示しない復元依頼元から、記憶しているデータを復元したい2つの記憶領域の識別情報が含まれる差分反復訂正依頼を受けると、2つの記憶領域のうち、1つの記憶領域(記憶領域A)が、第1状態追加集合に含まれ、もう1つの記憶領域(記憶領域B)が、第1状態集合から第1状態追加集合を除いた記憶領域の集合に含まれているか否かを判定する。
より詳細には、データ復元部614は、第1状態記憶部153が記憶する第1状態集合情報の読み込みを第3アクセス制御部103に指示する。第3アクセス制御部103は、第1状態記憶部153が記憶する第1状態集合情報を読み込み、データ復元部614に返答する。データ復元部614は、第1状態記憶部153が記憶する第1状態集合情報を取得する。データ復元部614は、第4状態記憶部356が記憶する第1状態追加集合情報の読み込みを第6アクセス制御部306に指示する。第6アクセス制御部306は、第4状態記憶部356が記憶する第1状態追加集合情報を読み込み、データ復元部614に返答する。データ復元部614は、第4状態記憶部356が記憶する第1状態追加集合情報を取得する。データ復元部614は、受け付けた差分反復訂正依頼に含まれる2つの記憶領域のうち、いずれか一方の記憶領域(記憶領域A)が、取得した第1状態追加集合情報に対応する記憶領域の集合に含まれ、もう一方の記憶領域(記憶領域B)が、取得した第1状態集合情報が示す記憶領域の集合から、取得した第1状態追加集合情報が示す記憶領域の集合を除いた記憶領域の集合に含まれているかを判定する。
判定結果が偽の時は(ステップS1101:No)、データ復元部614は、図示しない復元依頼元に、差分反復訂正不能を示す旨を返答し、処理を終える。判定結果が真の時は(ステップS1101:Yes)、データ復元部614は、第2データ記憶部152に最後に記録したパリティデータと、パリティデータによる復元に必要なユーザデータを取得する(ステップS1102)。より詳細には、データ復元部614は、第3状態記憶部255が記憶する第2状態追加集合情報の読み込みを第5アクセス制御部205に指示する。第5アクセス制御部205は、第3状態記憶部255が記憶する第2状態追加集合情報を読み込み、データ復元部614に返答する。データ復元部614は、第3状態記憶部255が記憶する第2状態追加集合情報を取得する。データ復元部614は、第2データ記憶部152に最後に記録されたパリティデータの読み込みを、第2アクセス制御部102に指示する。第2アクセス制御部102は、第2データ記憶部152に最後に記録されたパリティデータを読み込み、データ復元部614に返答する。データ復元部614は、第2データ記憶部152に最後に記録されたパリティデータを取得する。
また、データ復元部614は、取得した第1状態集合情報が示す記憶領域の集合から、取得した第1状態追加集合情報が示す記憶領域の集合を除いた記憶領域の集合と、取得した第2状態追加集合情報が示す記憶領域の集合と、をあわせた記憶領域の集合から記憶領域Bの記憶領域を除いた記憶領域の集合の記憶領域それぞれに対し、それぞれの記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示する。第2アクセス制御部102は、指示されたそれぞれの記憶領域が記憶するデータを読み込み、データ復元部614に返答する。データ復元部614は、それぞれの記憶領域が記憶するデータを取得する。
データ復元部614は、記憶領域Bのデータを復元する(ステップS1103)。より詳細には、データ復元部614は、取得した第2データ記憶部152に最後に記録したパリティデータと、取得したデータ群を、パリティ演算するようにパリティ演算部130に指示する。パリティ演算部130は、指示元から受け付けた複数の入力データをパリティ演算し、演算結果を指示元に返却する。データ復元部614は、結果として復元された記憶領域Bのデータを取得する。
データ復元部614は、第1データ記憶部151に記録したパリティデータと、パリティデータによる復元に必要なユーザデータを取得する(ステップS1104)。より詳細には、データ復元部614は、第1データ記憶部151に記録されたパリティデータの読み込みを、第1アクセス制御部101に指示する。第1アクセス制御部101は、第1データ記憶部151に記録されたパリティデータを読み込み、データ復元部614に返答する。データ復元部614は、第1データ記憶部151に記録されたパリティデータを取得する。データ復元部614は、取得した第1状態集合情報が示す記憶領域の集合から、記憶領域Aの記憶領域と、記憶領域Bの記憶領域を除いた記憶領域の集合の記憶領域それぞれに対し、それぞれの記憶領域が記憶するデータの読み込みを第2アクセス制御部102に指示する。第2アクセス制御部102は、指示されたそれぞれの記憶領域が記憶するデータを読み込み、データ復元部614に返答する。データ復元部614は、それぞれの記憶領域が記憶するデータを取得する。
データ復元部614は、記憶領域Aのデータを復元する(ステップS1105)。より詳細には、データ復元部614は、取得したパリティデータと、取得したデータ群と、取得した復元された記憶領域Bのデータを、パリティ演算するようにパリティ演算部130に指示する。パリティ演算部130は、指示元から受け付けた複数の入力データをパリティ演算し、演算結果を指示元に返却する。データ復元部614は、結果として復元された記憶領域Aのデータを取得する。なお、ステップS1102からステップS1105までの手順はパリティ演算の最終的な結果が変わらない範囲で適宜入れ替えてもよい。ステップS1102からステップS1105までの手順を適宜入れ替えることで、たとえば、パリティ演算の途中の演算結果を別途記憶しておくことで、第2データ記憶部152からのデータ読み込み回数を削減するなどの最適化を図ることができる。
データ復元部614は、図示しない復元依頼元に、復元した記憶領域Aのデータと、復元した記憶領域Bのデータを返答する(ステップS1106)。
このように、第6の実施形態にかかるデータ記憶装置では、第2データ記憶部152に最後に記録したパリティデータを利用することで、差分反復訂正により、同一パリティグループ中の2つのユーザデータを復元することができる。これにより、データ記憶装置の信頼性をさらに向上することができる。
以上説明したとおり、第1から第6の実施形態によれば、データ記憶装置単体の信頼性を向上することができる。また、パリティデータ更新時には、第1データ記憶部に更新されたパリティデータを記憶し、所定のタイミングで第1データ記憶部に記憶されたパリティデータを第2データ記憶部に書き込む。これにより、ユーザデータの記憶媒体への書き込み量に比して、パリティデータの記憶媒体への書き込み量を削減できる。
次に、第1から第6の実施形態にかかるコントローラのハードウェア構成について説明する。第1から第6の実施形態にかかるコントローラは、CPU(Central Processing Unit)などの制御装置と、ROM(Read Only Memory)やRAM(Random Access Memory)などの記憶装置と、各部を接続するバスを備えている。
第1から第6の実施形態にかかるコントローラで実行されるプログラムは、ROM等に予め組み込まれて提供される。
第1から第6の実施形態にかかるコントローラで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
さらに、第1から第6の実施形態にかかるコントローラで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1から第6の実施形態にかかるコントローラで実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
第1から第6の実施形態にかかるコントローラで実行されるプログラムは、コンピュータを上述した記憶装置の各部(パリティ更新部、パリティ書込部)として機能させうる。このコンピュータは、CPUがコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み込んで実行することができる。
なお、本実施形態は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
100、200、300、400、500、600 データ記憶装置
101 第1アクセス制御部
102 第2アクセス制御部
103 第3アクセス制御部
104 第4アクセス制御部
110 コントローラ
111 パリティ更新部
112 パリティ書込部
120 状態更新部
130 パリティ演算部
151 第1データ記憶部
152 第2データ記憶部
153 第1状態記憶部
154 第2状態記憶部
205 第5アクセス制御部
255 第3状態記憶部
306 第6アクセス制御部
356 第4状態記憶部
513 パリティ復元部
614 データ復元部

Claims (8)

  1. 記憶装置に含まれる第1データ記憶部および第2データ記憶部に対する書込み、または、前記第1データ記憶部および前記第2データ記憶部からの読み込みを制御するコントローラであって、
    前記第2データ記憶部は、ホスト装置から書き込みが要求されたデータであるユーザデータと、前記ユーザデータのパリティデータとを記憶し、
    前記第1データ記憶部は、前記パリティデータを記憶し、
    前記第2データ記憶部のうち、ユーザデータが記憶されている記憶領域には、当該記憶領域が記憶するユーザデータが前記第1データ記憶部に記憶されるパリティデータによって保護されている第1状態と、当該記憶領域が記憶するユーザデータが前記第1データ記憶部に記憶されるパリティデータによって保護されていない第2状態とがあり、
    前記記憶装置は、前記第1状態の記憶領域の識別情報を記憶する第1状態記憶部と、前記第2状態の記憶領域の識別情報を記憶する第2状態記憶部と、を含み、
    前記第2データ記憶部の記憶領域が、前記第1状態から前記第2状態に変更される場合、変更後に前記第1状態となっている記憶領域に記憶された前記ユーザデータの前記パリティデータを更新し、更新後のパリティデータを表す第1パリティデータを前記第1データ記憶部に書き込み、前記第1状態記憶部から前記第2状態に変更される記憶領域の識別情報を削除し、前記第2状態記憶部に前記第2状態に変更される記憶領域の識別情報を追加し、前記第2データ記憶部の記憶領域が、前記第2状態から前記第1状態に変更される場合、変更後に前記第1状態となっている記憶領域に記憶された前記ユーザデータの前記パリティデータを更新し、更新後のパリティデータを表す第1パリティデータを前記第1データ記憶部に書き込み、前記第1状態記憶部に前記第1状態に変更される記憶領域の識別情報を追加し、前記第2状態記憶部から前記第1状態に変更される記憶領域の識別情報を削除するパリティ更新部と、
    前記パリティ更新部によるパリティデータの更新と独立に定められるタイミングで、前記第1データ記憶部に記憶されているパリティデータを読み込み、読み込んだパリティデータを表す第2パリティデータを前記第2データ記憶部に書き込むパリティ書込部と、
    を備えることを特徴とするコントローラ。
  2. 前記パリティ書込部は、前記第2パリティデータを前記第2データ記憶部に書き込んだ後に前記第1状態から前記第2状態に変更された記憶領域の個数が予め定められた第1閾値を超えたとき、または、前記第2パリティデータを前記第2データ記憶部に書き込んだ後に前記第2状態から前記第1状態に変更された記憶領域の個数が予め定められた第2閾値を超えたときに、前記第1データ記憶部に記憶されているパリティデータを読み込み、読み込んだパリティデータを表す第2パリティデータを前記第2データ記憶部に書き込むこと、
    を特徴とする請求項1に記載のコントローラ。
  3. 前記記憶装置は、前記第2パリティデータを前記第2データ記憶部に書き込んだ後に前記第1状態から前記第2状態に変更された記憶領域の識別情報を記憶する第3状態記憶部と、前記第2パリティデータを前記第2データ記憶部に書き込んだ後に前記第2状態から前記第1状態に変更された記憶領域の識別情報を記憶する第4状態記憶部と、をさらに含み、
    前記第3状態記憶部に記憶された識別情報の記憶領域に記憶された前記ユーザデータと前記第4状態記憶部に記憶された識別情報の記憶領域に記憶された前記ユーザデータと、前記第2データ記憶部に記憶された前記第2パリティデータと、に基づいて算出される更新後のパリティデータを表す第1パリティデータを、前記第1データ記憶部に書き込むパリティ復元部をさらに備えること、
    を特徴とする請求項2に記載のコントローラ。
  4. 前記記憶装置は、前記第2パリティデータを前記第2データ記憶部に書き込んだ後に前記第1状態から前記第2状態に変更された記憶領域の識別情報を記憶する第3状態記憶部と、前記第2パリティデータを前記第2データ記憶部に書き込んだ後に前記第2状態から前記第1状態に変更された記憶領域の識別情報を記憶する第4状態記憶部と、をさらに含み、
    ユーザデータを復元する第1記憶領域が、前記第4状態記憶部に記憶された識別情報の記憶領域に含まれ、ユーザデータを復元する第2記憶領域が、前記第1状態記憶部に記憶された識別情報の記憶領域のうち、前記第4状態記憶部に記憶されていない識別情報の記憶領域に含まれる場合に、前記第1状態記憶部に記憶された識別情報の記憶領域から、前記第4状態記憶部に記憶された識別情報の記憶領域を除いた記憶領域、および、前記第3状態記憶部に記憶された識別情報の記憶領域を含む記憶領域から、前記第2記憶領域を除いた記憶領域に記憶された前記ユーザデータと、前記第2データ記憶部に記憶された前記第2パリティデータと、に基づいて、前記第2記憶領域のユーザデータを復元し、復元された前記ユーザデータと、前記第1状態記憶部に記憶された識別情報の記憶領域から、前記第1記憶領域および前記第2記憶領域を除いた記憶領域に記憶された前記ユーザデータと、前記第1データ記憶部に記憶された前記第1パリティデータと、に基づいて、前記第1記憶領域のユーザデータを復元するデータ復元部をさらに備えること、
    を特徴とする請求項2に記載のコントローラ。
  5. 前記パリティ書込部は、前記第2パリティデータを前記第2データ記憶部に書き込んだ後に前記第1状態から前記第2状態に変更された記憶領域の個数が、予め定められた第1閾値を超えたときに、前記第1データ記憶部に記憶されているパリティデータを読み込み、読み込んだパリティデータを表す第2パリティデータを前記第2データ記憶部に書き込むこと、
    を特徴とする請求項1に記載のコントローラ。
  6. 前記パリティ書込部は、前記第2パリティデータを前記第2データ記憶部に書き込みた後に前記第2状態から前記第1状態に変更された記憶領域の個数が、予め定められた第2閾値を超えたときに、前記第1データ記憶部に記憶されているパリティデータを読み込み、読み込んだパリティデータを表す第2パリティデータを前記第2データ記憶部に書き込むこと、
    を特徴とする請求項1に記載のコントローラ。
  7. ホスト装置から書き込みが要求されたデータであるユーザデータのパリティデータを記憶する第1データ記憶部と、
    前記ユーザデータと前記パリティデータとを記憶する第2データ記憶部と、
    前記第1データ記憶部および前記第2データ記憶部に対する書込み、または、前記第1データ記憶部および前記第2データ記憶部からの読み込みを制御するコントローラと、を備え、
    前記第2データ記憶部のうち、ユーザデータが記憶されている記憶領域には、当該記憶領域が記憶するユーザデータが前記第1データ記憶部に記憶されるパリティデータによって保護されている第1状態と、当該記憶領域が記憶するユーザデータが前記第1データ記憶部に記憶されるパリティデータによって保護されていない第2状態とがあり、
    前記第1状態の記憶領域の識別情報を記憶する第1状態記憶部と、
    前記第2状態の記憶領域の識別情報を記憶する第2状態記憶部と、をさらに備え、
    前記コントローラは、
    前記第2データ記憶部の記憶領域が、前記第1状態から前記第2状態に変更される場合、変更後に前記第1状態となっている記憶領域に記憶された前記ユーザデータの前記パリティデータを更新し、更新後のパリティデータを表す第1パリティデータを前記第1データ記憶部に書き込み、前記第1状態記憶部から前記第2状態に変更される記憶領域の識別情報を削除し、前記第2状態記憶部に前記第2状態に変更される記憶領域の識別情報を追加し、前記第2データ記憶部の記憶領域が、前記第2状態から前記第1状態に変更される場合、変更後に前記第1状態となっている記憶領域に記憶された前記ユーザデータの前記パリティデータを更新し、更新後のパリティデータを表す第1パリティデータを前記第1データ記憶部に書き込み、前記第1状態記憶部に前記第1状態に変更される記憶領域の識別情報を追加し、前記第2状態記憶部から前記第1状態に変更される記憶領域の識別情報を削除するパリティ更新部と、
    所定の条件が満たされたときに前記パリティ更新部によるパリティデータの更新と独立に定められるタイミングで、前記第1データ記憶部に書き込まれた前記記憶されているパリティデータを読み込み、読み込んだ前記パリティデータを表す第2パリティデータを前記第2データ記憶部に書き込むパリティ書込部と、を備えること、
    を特徴とする記憶装置。
  8. 記憶装置に含まれる、ホスト装置から書き込みが要求されたデータであるユーザデータのパリティデータを記憶する第1データ記憶部および前記ユーザデータと前記パリティデータとを記憶する第2データ記憶部に対する書込み、または、前記第1データ記憶部および前記第2データ記憶部からの読み込みを制御するコンピュータで実行されるプログラムであって、
    前記第2データ記憶部のうち、ユーザデータが記憶されている記憶領域には、当該記憶領域が記憶するユーザデータが前記第1データ記憶部に記憶されるパリティデータによって保護されている第1状態と、当該記憶領域が記憶するユーザデータが前記第1データ記憶部に記憶されるパリティデータによって保護されていない第2状態とがあり、
    前記記憶装置は、前記第1状態の記憶領域の識別情報を記憶する第1状態記憶部と、前記第2状態の記憶領域の識別情報を記憶する第2状態記憶部と、を含み、
    前記コンピュータを、
    前記第2データ記憶部の記憶領域が、前記第1状態から前記第2状態に変更される場合、変更後に前記第1状態となっている記憶領域に記憶された前記ユーザデータの前記パリティデータを更新し、更新後のパリティデータを表す第1パリティデータを前記第1データ記憶部に書き込み、前記第1状態記憶部から前記第2状態に変更される記憶領域の識別情報を削除し、前記第2状態記憶部に前記第2状態に変更される記憶領域の識別情報を追加し、前記第2データ記憶部の記憶領域が、前記第2状態から前記第1状態に変更される場合、変更後に前記第1状態となっている記憶領域に記憶された前記ユーザデータの前記パリティデータを更新し、更新後のパリティデータを表す第1パリティデータを前記第1データ記憶部に書き込み、前記第1状態記憶部に前記第1状態に変更される記憶領域の識別情報を追加し、前記第2状態記憶部から前記第1状態に変更される記憶領域の識別情報を削除するパリティ更新部と、
    所定の条件が満たされたときに前記パリティ更新部によるパリティデータの更新と独立に定められるタイミングで、前記第1データ記憶部に書き込まれた前記記憶されているパリティデータを読み込み、読み込んだ前記パリティデータを表す第2パリティデータを前記第2データ記憶部に書き込むパリティ書込部、
    として機能させるためのプログラム。
JP2010209758A 2010-09-17 2010-09-17 コントローラ、記憶装置、およびプログラム Active JP5279785B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2010209758A JP5279785B2 (ja) 2010-09-17 2010-09-17 コントローラ、記憶装置、およびプログラム
US13/035,194 US8549388B2 (en) 2010-09-17 2011-02-25 Controller, storage apparatus, and computer program product
TW100127619A TWI473006B (zh) 2010-09-17 2011-08-03 儲存裝置之控制器、儲存裝置及儲存裝置之電腦程式產品
EP11179009A EP2431878A1 (en) 2010-09-17 2011-08-26 Controller, storage apparatus, and computer program product
KR1020110087174A KR101285900B1 (ko) 2010-09-17 2011-08-30 컨트롤러, 기억 장치, 및 컴퓨터 판독 가능한 매체
CN201110254403.5A CN102411518B (zh) 2010-09-17 2011-08-31 控制器、存储装置以及计算机程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010209758A JP5279785B2 (ja) 2010-09-17 2010-09-17 コントローラ、記憶装置、およびプログラム

Publications (2)

Publication Number Publication Date
JP2012064139A JP2012064139A (ja) 2012-03-29
JP5279785B2 true JP5279785B2 (ja) 2013-09-04

Family

ID=44677564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010209758A Active JP5279785B2 (ja) 2010-09-17 2010-09-17 コントローラ、記憶装置、およびプログラム

Country Status (6)

Country Link
US (1) US8549388B2 (ja)
EP (1) EP2431878A1 (ja)
JP (1) JP5279785B2 (ja)
KR (1) KR101285900B1 (ja)
CN (1) CN102411518B (ja)
TW (1) TWI473006B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5017407B2 (ja) 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP5651457B2 (ja) 2010-12-15 2015-01-14 株式会社東芝 半導体記憶装置
US8640013B2 (en) 2011-09-22 2014-01-28 Kabushiki Kaisha Toshiba Storage device
CN104641419A (zh) * 2012-07-13 2015-05-20 三星电子株式会社 固态驱动器控制器、固态驱动器、固态驱动器的数据处理方法、多通道固态驱动器、raid控制器以及其中记录有用于向固态驱动器提供顺序信息的计算机程序的计算机可读记录介质
EP2975474B1 (en) * 2014-07-17 2018-12-26 Wago Verwaltungsgesellschaft mbH Industrial control system and method for transferring data
US10481803B2 (en) 2017-06-16 2019-11-19 Western Digital Technologies, Inc. Low write overhead consensus protocol for distributed storage
US10289489B2 (en) * 2017-07-11 2019-05-14 Western Digital Technologies, Inc. Update efficient consensus protocols for erasure coded data stores
CN109634771A (zh) * 2018-10-31 2019-04-16 华为技术有限公司 一种数据保护方法、装置及系统
KR20200070686A (ko) * 2018-12-10 2020-06-18 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2508317B1 (fr) * 1981-06-26 1986-07-25 Charvin Guy Indicateur de sterilisation
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
WO1993018456A1 (en) * 1992-03-13 1993-09-16 Emc Corporation Multiple controller sharing in a redundant storage array
JPH06274282A (ja) * 1993-03-18 1994-09-30 Toshiba Corp 磁気記録装置
JP3270959B2 (ja) * 1993-10-05 2002-04-02 株式会社日立製作所 ディスクアレイ装置におけるパリティ格納方法およびディスクアレイ装置
US5522032A (en) * 1994-05-05 1996-05-28 International Business Machines Corporation Raid level 5 with free blocks parity cache
US5634109A (en) 1994-06-20 1997-05-27 International Business Machines Corporation Method and system for enhanced data management efficiency in memory subsystems utilizing redundant arrays of disk memory devices and a nonvolatile cache
US5720025A (en) * 1996-01-18 1998-02-17 Hewlett-Packard Company Frequently-redundant array of independent disks
JP3373360B2 (ja) * 1996-06-13 2003-02-04 沖電気工業株式会社 ディスクアレイ装置
US6148368A (en) * 1997-07-31 2000-11-14 Lsi Logic Corporation Method for accelerating disk array write operations using segmented cache memory and data logging
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8195760B2 (en) 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
US7379974B2 (en) * 2003-07-14 2008-05-27 International Business Machines Corporation Multipath data retrieval from redundant array
JP3793544B2 (ja) * 2005-07-19 2006-07-05 株式会社日立製作所 ディスクアレイ装置及びその制御方法
TW200807258A (en) * 2006-07-28 2008-02-01 Qnap Systems Inc Data recovery method and system when redundant array of independent disks (RAID) is damaged
JP2008217395A (ja) * 2007-03-05 2008-09-18 Nec Corp ディスクアレイ装置
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
JP4538034B2 (ja) 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
JP2010015197A (ja) 2008-06-30 2010-01-21 Toshiba Corp ストレージ制御装置、データ復元装置およびストレージシステム
JP2010015195A (ja) 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
JP5268710B2 (ja) 2009-02-27 2013-08-21 株式会社東芝 半導体記憶装置
CN101620517B (zh) * 2009-08-04 2012-05-30 成都市华为赛门铁克科技有限公司 数据写入方法和装置
CN101630281B (zh) * 2009-08-25 2011-11-16 杭州华三通信技术有限公司 一种数据存储的镜像方法和设备

Also Published As

Publication number Publication date
TWI473006B (zh) 2015-02-11
KR20120029996A (ko) 2012-03-27
KR101285900B1 (ko) 2013-07-12
CN102411518A (zh) 2012-04-11
CN102411518B (zh) 2014-10-08
US8549388B2 (en) 2013-10-01
TW201229880A (en) 2012-07-16
JP2012064139A (ja) 2012-03-29
EP2431878A1 (en) 2012-03-21
US20120072811A1 (en) 2012-03-22

Similar Documents

Publication Publication Date Title
JP5279785B2 (ja) コントローラ、記憶装置、およびプログラム
US10705911B2 (en) Storing data in a distributed storage system
JP6064608B2 (ja) ストレージ装置、バックアッププログラム、およびバックアップ方法
JP5369807B2 (ja) ストレージ装置
JP5867206B2 (ja) 移動制御装置,プログラム及びストレージ装置
US20120016842A1 (en) Data processing apparatus, data processing method, data processing program, and storage apparatus
US9152329B2 (en) Information processing device, storage processing method, and computer readable recording medium having program stored therein
JP2005293363A (ja) ディスクアレイコントローラおよび情報処理装置
US20170322747A1 (en) Information processing apparatus and method for deduplication
JP4788492B2 (ja) ストレージ装置の容量拡張方法、プログラム、およびストレージ装置
US20150089118A1 (en) Methods, systems, and computer readable media for partition and cache restore
JP5949816B2 (ja) キャッシュ制御装置及びその制御方法、ストレージ装置、並びにコンピュータ・プログラム
WO2010092634A1 (ja) ストレージシステム
JP2015501491A (ja) データ復元を容易にするためのトリプルパリティエンコーディング
JP2020119007A (ja) 情報処理装置、記憶制御装置および記憶制御プログラム
JP6556980B2 (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP6175771B2 (ja) ディスクアレイ装置、バッドセクタ修復方法および修復プログラム
JP7056874B2 (ja) 制御装置、ディスクアレイ装置、制御方法、及びプログラム
KR101715039B1 (ko) 파일처리장치 및 그 동작 방법
JP6946485B2 (ja) 磁気記憶装置
US11544005B2 (en) Storage system and processing method
JP6819869B2 (ja) ストレージ装置、プログラム、情報処理方法
JP6225603B2 (ja) ストレージシステムおよびストレージシステムの制御方法
JP5344711B2 (ja) ジャーナルデータ管理方法及びジャーナルデータ管理装置
JP2009129283A (ja) データ記憶装置、データバックアップ方法およびデータバックアッププログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130415

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130521

R151 Written notification of patent or utility model registration

Ref document number: 5279785

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350