JP2014119831A - ストレージ装置、制御方法及び制御プログラム - Google Patents

ストレージ装置、制御方法及び制御プログラム Download PDF

Info

Publication number
JP2014119831A
JP2014119831A JP2012272769A JP2012272769A JP2014119831A JP 2014119831 A JP2014119831 A JP 2014119831A JP 2012272769 A JP2012272769 A JP 2012272769A JP 2012272769 A JP2012272769 A JP 2012272769A JP 2014119831 A JP2014119831 A JP 2014119831A
Authority
JP
Japan
Prior art keywords
data
disk
storage device
redundancy
state
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.)
Pending
Application number
JP2012272769A
Other languages
English (en)
Inventor
Jun Ito
惇 猪頭
Hideshi Kobayashi
秀史 小林
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012272769A priority Critical patent/JP2014119831A/ja
Priority to US14/073,185 priority patent/US20140173337A1/en
Publication of JP2014119831A publication Critical patent/JP2014119831A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk

Landscapes

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

Abstract

【課題】RAID強制復旧後のデータ保証を充実する。
【解決手段】強制復旧部33が、RAID装置が故障状態になったときに、最初のディスク及び最後のディスクが復旧可能か否かを判定し、復旧可能である場合には両方のディスクを強制復旧する。また、ステージング部34及びライトバック部35は、冗長度のない状態で書込まれたデータに対しては、データの整合性のチェックを行いながらデータの読書を行い、整合が取れていない場合には、被疑ディスクのデータを復旧する。
【選択図】図2

Description

本発明は、ストレージ装置、制御方法及び制御プログラムに関する。
ビッグデータの時代により、性能や容量が異なる記憶装置に特性に応じてデータを自動的に振り分ける「ストレージ自動階層化」の技術が注目され、大容量で安価な磁気ディスク装置(例えば、4TBのSATA−DISK)の需要が高まっている。このような磁気ディスク装置でRAID(Redundant Arrays of Inexpensive Disks)を構成し、運用中に磁気ディスク装置が1台故障すると、ホットスペアの磁気ディスク装置にリビルド(Rebuild)が実施されるが、長時間を要することになる。ここで、リビルドとは、データを再構築することである。リビルド中は磁気ディスク装置は冗長度がない状態なので、リビルドが長時間続くと、RAID故障に陥るリスクが高くなる。
RAID故障などによるデータファイルの破損は、データベースに深刻な被害をもたらす。その理由は、整合性を失ったデータがストレージに書き込まれた場合、その原因を特定したり、システムを修復したり、データベースをリカバリしたりするのに多大な労力と時間が必要となるためである。
そこで、RAID故障に至った場合、RAID故障に陥ったRAID装置をRAID強制復旧により早急に運用可能な状態にするRAID強制復旧技術が知られている。例えば、RAID5において2台の磁気ディスク装置が故障してRAID故障に至った場合、2台目の故障ディスク装置が一過性の故障などにより復旧可能である場合には、2台目の故障ディスク装置を復旧させることにより、RAID強制復旧が行われる。
また、RAID閉塞に際し、閉塞直前のRAID構成情報を記憶しておき、リカバリ要求がユーザ操作により与えられた場合に、記憶したRAID構成情報に基づいてRAIDを閉塞直前の状態に強制的に戻す技術が知られている(例えば、特許文献1参照。)。
特開2002−373059号公報 特開2007−52509号公報 特開2010−134696号公報
しかしながら、強制復旧させたRAID装置においては、冗長度がないことから、再びRAID故障となる危険性が高く、データの保証が十分ではないという問題がある。
本発明は、1つの側面では、強制復旧させたRAID装置において、データ保証をより充実することを目的とする。
本願の開示するストレージ装置は、1つの態様において、複数の記憶装置と、該複数の記憶装置からのデータの読出し及び該複数の記憶装置へのデータの書込みを制御する制御装置とを有するストレージ装置である。前記制御装置は、前記複数の記憶装置のうちいくつかの記憶装置が故障して冗長度のない冗長グループの状態である冗長無状態時に新たに記憶装置が故障した場合に、故障した複数の記憶装置の故障原因を基に冗長グループの強制復旧の実行が可能か否かを判断する。また、前記制御装置は、前記判断部により冗長グループの強制復旧の実行が可能であると判断された場合には、冗長無状態時に新たに故障した記憶装置を含む複数の記憶装置を冗長グループに組み込む。
1実施態様によれば、データ保証をより充実することができる。
図1は、実施例に係るRAID装置の構成を示す図である。 図2は、CPUで実行される入出力制御プログラムの機能構成を示す図である。 図3は、slice_bitmapの一例を示す図である。 図4は、RAID強制復旧機能で復旧できないRAID状態の一例を示す図である。 図5Aは、最後のディスクだけをRAID強制復旧する処理の処理フローを示すフローチャートである。 図5Bは、最後のディスクと最初のディスクをRAID強制復旧する処理の処理フローを示すフローチャートである。 図6は、RAID装置(RLUの状態)の状態遷移を示す図である。 図7は、RAID装置の状態が「EXPOSED」の場合のライトバック処理の処理フローを示すフローチャートである。 図8は、RAID強制復旧後のステージング処理の処理フローを示すフローチャートである。 図9は、RAID強制復旧後のステージング処理の一例を示す図である。 図10は、RAID強制復旧後のライトバック処理の処理フローを示すフローチャートである。 図11は、ライトバックの種類を説明するための図である。 図12は、RAID強制復旧後のライトバック処理の一例を示す図である。
以下に、本願の開示するストレージ装置、制御方法及び制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係るRAID装置について説明する。図1は、実施例に係るRAID装置の構成を示す図である。図1に示すように、RAID装置2は、冗長系を構成する2台のCM(Control Module)21と、DE(Device Enclosure)22とを有する。
CM21は、RAID装置2からのデータの読出し及びRAID装置2へのデータの書込みを制御するコントローラであり、CA(Chanel Adapter)211と、CPU212と、メモリ213と、DI(Device Interface)214とを有する。CA211は、RAID装置2を利用するコンピュータであるホスト1とのインタフェースであり、ホスト1からのアクセス要求を受け付け、ホスト1に応答する。CPU212は、メモリ213に格納された入出力制御プログラムを実行することによって、RAID装置2を制御する中央処理装置である。メモリ213は、CPU212で実行される入出力制御プログラムやデータを格納する記憶装置である。DI214は、DE22とのインタフェースであり、DE22に対してデータの読出し及び書込みを指示する。
DE22は、4台のディスク221を有し、ホスト1が利用するデータを記憶する。なお、ここでは、DE22は、4台のディスク221を有し、RAID5(3+1)を構成する場合、すなわち各ストライプについて3台でデータを記憶し、1台でパリティデータを記憶する場合について説明する。しかしながら、DE22は、4台以外のディスク221を有することもできる。ディスク221は、データの記録媒体として磁気ディスクを利用する磁気ディスク装置である。
次に、CPU212で実行される入出力制御プログラムの機能構成について説明する。図2は、CPUで実行される入出力制御プログラムの機能構成を示す図である。図2に示すように、入出力制御プログラム3は、テーブル記憶部31と、状態管理部32と、強制復旧部33と、ステージング部34と、ライトバック部35と、制御部36とを有する。
テーブル記憶部31は、RAID装置2の制御に必要なデータを記憶する記憶部である。テーブル記憶部31が記憶するデータは、図1に示したメモリ213に記憶される。具体的には、テーブル記憶部31は、装置の状態、RAIDレベルなどRAID装置2に関する情報を記憶するRLU_TBL、装置の状態、容量などディスクに関する情報を記憶するPLU_TBLを記憶する。
また、テーブル記憶部31は、slice_bitmapの情報をSLU_TBLとして記憶する。ここで、slice_bitmapは、RAID装置2が冗長度のない状態であるときに、データの書込みが行われた領域を示す情報であり、LBA(Logical Block Address)で指定される所定の大きさの領域の状態を1ビットで表す。
図3は、slice_bitmapの一例を示す図であり、1ボリューム=0〜0x1000000LBA(8GB)に対して1バイトのslice_bitmapを用いる場合を示す。例えば、LBA=0〜0x1FFFFFの範囲内の1GBに対してslice_bitmapの最下位ビットが割り当てられ、LBA=0xE00000〜0xFFFFFFの範囲内の1GBに対してslice_bitmapの最上位ビットが割り当てられている。なお、先頭が0xである数字は16進数を示す。また、slice_bitmapのビット値「1」は、RAID装置2が冗長度のない状態であるときに、対応する領域にデータの書込みが行われたことを示し、slice_bitmapのビット値「0」は、RAID装置2が冗長度のない状態であるときに、対応する領域にデータの書込みが行われていないことを示す。また、ここでは、1バイトのslice_bitmapを用いる場合を説明したが、4バイトのslice_bitmapを用いる場合には、全体の領域を32等分して管理することが可能となる。
状態管理部32は、ディスク221やRAID装置2の故障を検出し、PLU_TBLやRLU_TBLを用いて、ディスク221やRAID装置2を管理する。状態管理部32が管理する状態には、冗長度のある状態で利用可能であることを示す「AVAILABLE」、故障であることを示す「BROKEN」、冗長度がないことを示す「EXPOSED」がある。また、状態管理部32が管理する状態には、RAID強制復旧状態であることを示す「TEMPORARY_USE」などがある。また、状態管理部32は、RAID装置2の状態を変更した場合に、ライトバック部35に構成変更通知を送る。
強制復旧部33は、RAID装置2が故障状態になったとき、すなわち、RAID装置2の状況が「BROKEN」になったときに、最初のディスク及び最後のディスクが復旧可能か否かを判定し、復旧可能である場合には両方のディスクを強制復旧する。ここで、「最初のディスク」とは全てのディスク221が正常である状態から最初に故障したディスクであり、被疑ディスクとも呼ばれる。また、「最後のディスク」とは、RAID装置2が冗長度がない状態の時に新たに故障したディスクであり、最後のディスクが故障するとRAID装置2は故障状態となる。RAID5では、2つのディスクが故障するとRAID装置2は故障状態となるため、2番目に故障したディスクが最後のディスクである。
図4は、RAID強制復旧機能で復旧できないRAID状態の一例を示す図である。図4において、「BR」はディスクの状態が「BROKEN」であることを示す。図4は、RAID5において、ディスクが1台故障してRAID装置2が「EXPOSED」の状況にあるとき、コンペアエラーにより2台目のディスクが故障するとRAID装置2の強制復旧は可能でないことを示す。ここで、コンペアエラーとは、所定のデータをディスクに書き込んだ後に読み出して書き込んだデータと比較することにより発見されるエラーである。
コンペアエラーのようなハードウェア要因による故障の場合には、強制復旧部33は、RAID強制復旧を行うことはできない。一方、一時的にディスクへの負荷が高くなったことに起因するエラーなど、一過性の故障の場合には、強制復旧部33は、RAID強制復旧を行う。なお、強制復旧部33は、RAID強制復旧を行うと、RAID装置2の状態を「TEMPORARY_USE」に変更する。
ステージング部34は、ホスト1からの要求に基づいてRAID装置2が記憶するデータを読出す。ただし、ステージング部34は、RAID装置2の状態がRAID強制復旧が行われた状態である場合には、RAID装置2が記憶するデータを読み出す前に、データの読出しを要求された領域に対応するslice_bitmapの値をチェックする。
そして、slice_bitmapの値が「0」である場合には、RAID装置2が冗長度のないときにデータの書込みが行われた領域ではないので、ステージング部34は、要求されたデータをディスク221から読出してホスト1に応答する。
一方、slice_bitmapの値が「1」である場合には、ステージング部34は、要求されたデータをディスク221から読出してホスト1に応答するとともに、データを読出した領域に対してデータの整合をとる処理を行う。すなわち、ステージング部34は、RAID装置2が冗長度のないときにデータの書込みが行われた領域に関して、データの整合性を図る処理を行う。具体的には、ステージング部34は、RAID装置2が冗長度のないときにデータの書込みが行われた領域に関して、被疑ディスクのデータをストライプ単位で他のディスクのデータを用いて最新のデータに更新する。その理由は、被疑ディスクは、最初に故障したディスクであるため、RAID装置2が冗長度のないときにデータの書込みが行われた領域については古いデータが格納されているためである。なお、ステージング部34によるデータの整合をとる処理の処理フローの詳細については後述する。
ライトバック部35は、ホスト1からの要求に基づいてRAID装置2にデータを書込む。ただし、ライトバック部35は、RAID装置2の状態が冗長度のない場合には、slice_bitmapのビットのうちデータを書込む領域に対応するビットを「1」に設定する。
また、ライトバック部35は、データの書込みにあたってパリティを計算するためにディスク221からデータを読出す必要がある場合には、RAID装置2が冗長度のないときにデータの書込みが行われた領域に関して、データの整合性を図る処理を行う。ライトバック部35によるデータの整合をとる処理の処理フローの詳細についても後述する。
制御部36は、入出力制御プログラム3全体の制御を行う処理部であり、具体的には、機能部間の制御の移動や機能部と記憶部の間のデータの受け渡しなどを行うことによって、入出力制御プログラム3を一つのプログラムとして機能させる。
次に、RAID強制復旧を行う処理の処理フローについて図5A及び図5Bを用いて説明する。図5Aは、最後のディスクだけをRAID強制復旧する処理の処理フローを示すフローチャートであり、図5Bは、最後のディスクと最初のディスクをRAID強制復旧する処理の処理フローを示すフローチャートである。
図5Aに示すように、RAID装置は、1台のディスクの故障すなわち最初のディスクの故障を検出し、RAID装置の状態を「RLU_EXPOSED」とする(ステップS1)。その後、RAID装置は、もう1台のディスクの故障すなわち最後のディスクの故障を検出し、RAID装置の状態を「RLU_BROKEN」とする(ステップS2)。
そして、RAID装置は、RAID強制復旧を実施する(ステップS3)。すなわち、RAID装置は、最後のディスクは復旧可能であるか否かを判定し(ステップS4)、復旧不可である場合にはRAID故障のまま処理を終了する。一方、復旧可能である場合には、RAID装置は、最後のディスクを復旧し、RAID装置の状態を「RLU_EXPOSED」とする(ステップS5)。
その後、RAID装置は、最初のディスクが交換されると、最初のディスクをリビルドし、状態を「RLU_AVAILABLE」とする(ステップS6)。そして、RAID装置は、最後のディスクが交換されると、最後のディスクをリビルドし、状態を「RLU_AVAILABLE」とする(ステップS7)。ここで、RAID装置が状態を再度「RLU_AVAILABLE」とするのは、リビルド中に状態を変更するためである。
これに対して、最後のディスクと最初のディスクをRAID強制復旧する処理では、図5Bに示すように、RAID装置2は、1台のディスク221の故障すなわち最初のディスクの故障を検出する。そして、RAID装置2は、状態を「RLU_EXPOSED」とする(ステップS21)。そして、「RLU_EXPOSED」の状態でライトバックが行われると、RAID装置2は、slice_bitmapのビットのうちライトバックされた領域に対応するビットを更新する(ステップS22)。
その後、RAID装置2は、もう1台のディスク221の故障すなわち最後のディスクの故障を検出し、RAID装置2の状態を「RLU_BROKEN」とする(ステップS23)。
そして、RAID装置2は、RAID強制復旧を実施する(ステップS24)。すなわち、RAID装置2は、最後のディスクは復旧可能であるか否かを判定し(ステップS25)、復旧不可である場合にはRAID故障のまま処理を終了する。
一方、復旧可能である場合には、RAID装置2は、最初のディスクは復旧可能であるか否かを判定し(ステップS26)、復旧不可である場合には、最後のディスクを復旧し、状態を「RLU_EXPOSED」とする(ステップS27)。その後、RAID装置2は、最初のディスクが交換されると、最初のディスクをリビルドし、状態を「RLU_AVAILABLE」とする(ステップS28)。そして、RAID装置2は、最後のディスクが交換されると、最後のディスクをリビルドし、状態を「RLU_AVAILABLE」とする(ステップS29)。ここで、RAID装置2が状態を再度「RLU_AVAILABLE」とするのは、リビルド中に状態を変更するためである。
一方、最初のディスクが復旧可能である場合には、RAID装置2は、最初のディスクを復旧し、最初のディスクの状態を「PLU_TEMPORARY_USE」とする(ステップS30)。そして、RAID装置2は、最後のディスクを復旧し、最後のディスクの状態を「PLU_AVAILABLE」とする(ステップS31)。そして、RAID装置2は、装置の状態を「RLU_TEMPORARY_USE」とする(ステップS32)。
その後、最初のディスクが交換されると、RAID装置2は、最初のディスクをリビルドする。あるいは、RAID装置2は、RAID診断を実行する(ステップS33)。そして、RAID装置2は、状態を(RLU_AVAILABLE)とする。そして、RAID装置2は、最後のディスクが交換されると、最後のディスクをリビルドし、状態を(RLU_AVAILABLE)とする(ステップS34)。ここで、RAID装置2が状態を再度「RLU_AVAILABLE」とするのは、リビルド中に状態を変更するためである。
このように、最初のディスク及び最後のディスクが復旧可能か否かを判定し、復旧可能である場合には両方のディスクを復旧することによって、RAID装置2は、冗長度のあるRAID強制復旧を行うことができる。
次に、RAID装置の状態遷移について説明する。図6は、RAID装置(RLUの状態)の状態遷移を示す図である。図6に示すように、最後のディスクだけをRAID強制復旧する場合には、ディスクが全て正常に動作しているときは、RAID装置の状態は、冗長度がある「AVAILABLE」である(ST11)。そして、1台のディスクすなわち最初のディスクが故障すると、RAID装置の状態は、冗長度のない「EXPOSED」に移る(ST12)。
その後、さらにもう1台のディスクすなわち最後のディスクが故障すると、RAID装置の状態は、故障状態を示す「BROKEN」に移る(ST13)。そして、RAID強制復旧により最後のディスクが復旧されると、RAID装置の状態は、冗長度のない「EXPOSED」に移る(ST14)。その後、最初のディスクの交換が行われると、RAID装置の状態は、冗長度のある「AVAILABLE」に移る(ST15)。
これに対して、最後のディスクと最初のディスクをRAID強制復旧する場合には、ディスク221が全て正常に動作しているときは、RAID装置2の状態は、冗長度がある「AVAILABLE」である(ST21)。そして、1台のディスク211すなわち最初のディスクが故障すると、RAID装置2の状態は、冗長度のない「EXPOSED」に移る(ST22)。
その後、さらにもう1台のディスク221すなわち最後のディスクが故障すると、RAID装置2の状態は、故障状態を示す「BROKEN」に移る(ST23)。そして、RAID強制復旧により最後のディスクと最初のディスクが復旧されると、RAID装置2の状態は、冗長度はあるが一時的に使用可能な状態を示す「TEMPORARY_USE」に移る(ST24)。その後、最初のディスクの交換又はRAID診断が行われると、RAID装置2の状態は、冗長度のある「AVAILABLE」に移る(ST25)。
このように、RAID強制復旧により最後のディスクと最初のディスクを復旧し、状態を「TEMPORARY_USE」とすることによって、RAID装置2は、RAID強制復旧後に冗長度のある状態で動作することができる。
次に、RAID装置2の状態が「EXPOSED」の場合のライトバック処理の処理フローについて説明する。図7は、RAID装置2の状態が「EXPOSED」の場合のライトバック処理の処理フローを示すフローチャートである。
図7に示すように、ライトバック部35は、前回のライトバック処理の後、構成変更通知があったか否かを判定する(ステップS41)。その結果、構成変更通知がなかった場合には、RAID装置2の状態は「EXPOSED」のままなので、ライトバック部35は、ステップS43に進む。一方、構成変更通知があった場合には、RAID装置2の状態に変更があったので、ライトバック部35は、RAID装置2は冗長度があるか否かを判定する(ステップS42)。
その結果、冗長度がある場合には、RAID装置2の状態は「EXPOSED」ではなくなったので、ライトバック部35は、slice_bitmapを初期化する(ステップS44)。一方、冗長度がない場合には、ライトバック部35は、ライト要求範囲に対してslice_bitmapの対応するビットを「1」に設定する(ステップS43)。
そして、ライトバック部35は、ディスク221へのデータの書込み処理を行い(ステップS45)、結果をホスト1に応答する(ステップS46)。
このように、RAID装置2の状態が「EXPOSED」の場合に、ライトバック部35がライト要求範囲に対してslice_bitmapの対応するビットを「1」に設定するので、RAID装置2は、RAID強制復旧状態時に整合性処理の対象領域を特定できる。
次に、RAID強制復旧後のステージング処理の処理フローについて図8及び図9を用いて説明する。ここで、RAID強制復旧後のステージング処理とは、RAID装置2の状態が「RLU_TEMPORARY_USE」の状態のときのステージング処理である。
図8は、RAID強制復旧後のステージング処理の処理フローを示すフローチャートであり、図9は、RAID強制復旧後のステージング処理の一例を示す図である。図8に示すように、ステージング部34は、ディスクリードの要求範囲のslice_bitmapの値が「0」であるか「1」であるかを判定する(ステップS61)。
その結果、slice_bitmapの値が「0」である場合には、ディスクリードの要求範囲はRAID装置2が冗長度のない状態でデータの書込みが行われた領域でないので、ステージング部34は、従来と同様に、要求範囲のディスクリードを行う(ステップS62)。そして、ステージング部34は、リードした結果をホスト1に応答する(ステップS63)。
一方、slice_bitmapの値が「1」である場合には、ディスクリードの要求範囲はRAID装置2が冗長度無の状態でデータの書込みが行われた領域なので、ステージング部34は、要求範囲に該当するストライプ単位でディスクリードを行う(ステップS64)。
例えば、図9において、ホスト1は、LBA=0x100〜0x3FFの範囲でステージング要求を行った際、4台のディスク0〜ディスク3にデータがストライプ0〜ストライプ2の3つのストライプに記憶データ51として記憶されていたとする。ここで、記憶データ51のうち、データ0、データ4及びデータ8は被疑ディスクであるディスク0が記憶し、データ1、データ5及びパリティ2はディスク1が記憶し、データ2、パリティ1及びデータ6はディスク2が記憶し、パリティ0、データ3及びデータ7はディスク3が記憶する。
また、記憶データ51のうち網掛け部分がLBA=0x100〜0x3FFに対応するデータであるとする。また、slice_bitmap=0x01であるとすると、図3から、LBA=0x100〜0x3FFの範囲は、RAID装置2が冗長度のない状態でデータの書込みが行われた領域なので、読出データ52のように3ストライプのデータが全て読み出される。すなわち、記憶データ51のうち網掛けのないデータ0、データ1、データ8もパリティデータや他のデータとともに読み出される。
そして、ステージング部34は、ディスクリードが正常であるか否かを判定し(ステップS65)、正常である場合には、ステップS70に進む。一方、正常でない場合には、ステージング部34は、被疑ディスクのエラーであるか否かを判定する(ステップS66)。その結果、被疑ディスク以外のエラーである場合には、データ保証を行うことができないので、ステージング部34は、要求範囲分のPINデータを作成し(ステップS67)、PINデータとともにホスト1に異常応答を行う(ステップS68)。ここで、PINデータとは、データが不整合であることを示すデータである。
これに対して、被疑ディスクのエラーである場合には、ステージング部34は、被疑ディスクのデータを他のデータ及びパリティデータから復旧する(ステップS69)。すなわち、対象領域は、RAID装置2が冗長度のない状態でデータの書込みが行われた領域なので、被疑ディスクは、最新のデータを記憶していない可能性がある。そこで、ステージング部34は、被疑ディスクのデータを最新のデータに更新する。
例えば、図9において、エラー発生データ53では、データ0の中でエラー発生LBA=0x10に対応するエラー箇所531が、パリティ生成に使われる他のデータ1、データ2及びパリティ0の対応箇所532、533及び534から復旧される。具体的には、ステージング部34は、データ1、データ2及びパリティ0の対応箇所532、533及び534のデータの排他的論理和をとることによってエラー箇所531のデータを生成する。
そして、ステージング部34は、データの整合がとれているか否かをコンペアチェックにより判定する(ステップS70)。ここで、コンペアチェックとは、ストライプ毎に全データの排他的論理和をとった結果が全てのビットで0であるか否かを判定するチェックである。例えば、図9において、データ0、データ1、データ2及びパリティ0の排他的論理和をとった結果が全てのビットで0であるか否かが判定される。
そして、ステージング部34は、データの整合がとれていない場合には、被疑ディスクのデータを同一ストライプの他のデータ及びパリティデータから復旧し、被疑ディスクを更新する(ステップS71)。例えば、図9において、復旧データ54では、データ1、データ2及びパリティ0の排他的論理和をとった結果がデータ0であり、データ5、パリティ1及びデータ3の排他的論理和をとった結果がデータ4である。また、パリティ2、データ6及びデータ7の排他的論理和をとった結果がデータ8である。
そして、ステージング部34は、ホスト1にデータとともに正常応答を送る(ステップS72)。
このように、リードの領域がRAID装置2が冗長度のない状態でデータの書込みが行われた領域である場合に、ステージング部34が、被疑ディスクの整合をとる処理を行うことによって、RAID装置2は、より高いレベルでのデータ保証を行うことができる。
次に、RAID強制復旧後のライトバック処理の処理フローについて図10〜図12を用いて説明する。ここで、RAID強制復旧後のライトバック処理とは、RAID装置2の状態が「RLU_TEMPORARY_USE」の状態のときのライトバック処理である。
図10は、RAID強制復旧後のライトバック処理の処理フローを示すフローチャートであり、図11は、ライトバックの種類を説明するための図であり、図12は、RAID強制復旧後のライトバック処理の一例を示す図である。図10に示すように、ライトバック部35は、ライトバックの種類を判定する(ステップS81)。ここで、図11に示すように、ライトバックの種類には、「Bandwidth」と「Readband」と「Small」がある。
「Bandwidth」とは、ディスクに書込むデータの大きさがパリティ計算に十分である場合であり、パリティ計算にディスクからデータを読出す必要がない場合である。例えば、図11に示すように、書込みデータとして、128LBAの大きさのデータx、データy、データzがあり、データx、データy、データzからパリティが計算される。
「Readband」とは、ディスクに書込むデータの大きさがパリティ計算に不十分である場合であり、パリティ計算にディスクからデータを読出す必要がある場合である。例えば、図11に示すように、書込みデータとして、128LBAの大きさのデータx、データyがあり、旧データzはディスクから読出されてパリティが計算される。
「Small」とは、「Readband」と同様に、ディスクに書込むデータの大きさがパリティ計算に不十分である場合であり、パリティ計算にディスクからデータを読出す必要がある場合である。ただし、ライトバックの処理は、ディスクに書込むデータの大きさがパリティ計算に必要なデータの50%以上である場合には「Readband」であり、ディスクに書込むデータの大きさがパリティ計算に必要なデータの50%未満である場合には「Small」である。例えば、図11に示すように、書込みデータとして、128LBAの大きさのデータxがある場合には、書込まれるデータxとディスク内の旧データxと旧パリティからパリティが計算される。
図10に戻って、ライトバック部35は、ライトバックの種類が「Bandwidth」である場合には、ディスクからデータを読出す必要はないので、従来と同様に、パリティを作成する(ステップS82)。そして、ライトバック部35は、データ、パリティのディスクへの書込みを行い(ステップS83)、ホスト1に応答する(ステップS84)。
一方、ライトバックの種類が「Bandwidth」でない場合には、ライトバック部35は、ディスクライトの要求範囲のslice_bitmapがヒットするか否か、すなわちslice_bitmapの値が「0」であるか「1」であるかを判定する(ステップS85)。
その結果、slice_bitmapにヒットしない、すなわちslice_bitmapの値が「0」である場合には、ディスクライトの要求範囲はRAID装置2が冗長度のない状態でデータの書込みが行われた領域でないので、ライトバック部35は、従来と同様の処理を行う。すなわち、ライトバック部35は、パリティを作成し(ステップS82)、データ、パリティのディスクへの書込みを行い(ステップS83)、ホスト1に応答する(ステップS84)。
一方、slice_bitmapにヒットした場合には、ライトバックの要求範囲はRAID装置2が冗長度無の状態でデータの書込みが行われた領域なので、ライトバック部35は、要求範囲に該当するストライプ単位でディスクリードを行う(ステップS86)。ここで、slice_bitmapにヒットした場合とは、slice_bitmapの値が「1」の場合である。
例えば、図12において、ホスト1は、LBA=0x100〜0x3FFの範囲でライトバック要求を行った際、4台のディスク0〜ディスク3にデータがストライプ0〜ストライプ2の3つのストライプに記憶データ61として記憶されていたとする。ここで、ストライプ0のライトバック種類は「Small」であり、ストライプ1のライトバック種類は「Bandwith」であり、ストライプ2のライトバック種類は「Readband」であるとする。また、記憶データ61のうち、データ0、データ4及びデータ8は被疑ディスクであるディスク0が記憶し、データ1、データ5及びパリティ2はディスク1が記憶し、データ2、パリティ1及びデータ6はディスク2が記憶し、パリティ0、データ3及びデータ7はディスク3が記憶する。
また、記憶データ61のうち網掛け部分がLBA=0x100〜0x3FFに対応するデータであるとする。また、slice_bitmap=0x01であるとすると、LBA=0x100〜0x3FFの範囲は、図3から、RAID装置2が冗長度のない状態でデータの書込みが行われた領域なので、読出データ62のようにストライプ0及びストライプ2のデータが読み出される。すなわち、記憶データ61のうち網掛けのないデータ0、データ1、データ8もパリティデータや他のデータとともに読み出される。なお、ストライプ1は、ライトバックの種類が「Bandwith」であるので、読み出されない。
そして、ライトバック部35は、ディスクリードが正常であるか否かを判定し(ステップS87)、正常である場合には、ステップS92に進む。一方、正常でない場合には、ライトバック部35は、被疑ディスクのエラーであるか否かを判定する(ステップS88)。その結果、被疑ディスク以外のエラーである場合には、データ保証を行うことができないので、ライトバック部35は、要求範囲分のPINデータを作成し(ステップS89)、PINデータとともにホスト1に異常応答を行う(ステップS90)。
これに対して、被疑ディスクのエラーである場合には、ライトバック部35は、被疑ディスクのデータを他のデータ及びパリティデータから復旧する(ステップS91)。すなわち、対象領域は、RAID装置2が冗長度のない状態でデータの書込みが行われた領域なので、被疑ディスクは、最新のデータを記憶していない可能性がある。そこで、ライトバック部35は、被疑ディスクのデータを最新のデータに更新する。
例えば、図12において、エラー発生データ63では、データ0の中でエラー発生LBA=0x10に対応するエラー箇所631が、パリティ生成に使われる他のデータ1、データ2及びパリティ0の対応箇所632、633及び634から復旧される。具体的には、ライトバック部35は、データ1、データ2及びパリティ0の対応箇所632、633及び634のデータの排他的論理和をとることによってエラー箇所631のデータを生成する。
そして、ライトバック部35は、データの整合がとれているか否かをコンペアチェックにより判定する(ステップS92)。例えば、図12において、データ0、データ1、データ2及びパリティ0の排他的論理和をとった結果が全てのビットで0であるか否かが判定される。
その結果、データの整合がとれている場合には、ライトバック部35は、ディスクライトを発行し(ステップS96)、更新データをディスクに書込む。そして、ライトバック部35は、ホスト1に正常応答を行う(ステップS97)。
一方、データの整合がとれていない場合には、ライトバック部35は、被疑ディスクのデータを同一ストライプの他のデータ及びパリティデータから復旧し、被疑ディスクを更新する(ステップS93)。例えば、図12において、ストライプ2のLBA=0x20でデータの不整合が検出されたとすると、ライトバック部35は、復旧データ64において、パリティ2、データ6及びデータ7の排他的論理和をとった結果をデータ8とする。
そして、ライトバック部35は、ディスクライトを発行し(ステップS94)、復旧したデータ及び更新データをディスクに書込む。例えば、図12において、ストライプ0については、ライトバック種類は「Small」であり、データの不整合は検出されなかったので、更新データのデータ2とパリティ0がディスクに書込まれる。また、ストライプ2については、ライトバック種類は「Readband」であり、データの不整合が検出されたので、被疑ディスクのデータ8、更新データのデータ6及びデータ7とパリティ2がディスクに書込まれる。そして、ライトバック部35は、ホスト1に正常応答を行う(ステップS95)。
このように、ライトバックの領域がRAID装置2が冗長度のない状態でデータの書込みが行われた領域である場合に、ライトバック部35が、被疑ディスクの整合をとる処理を行うことによって、RAID装置2は、より高いレベルでのデータ保証を行うことができる。
上述してきたように、実施例では、強制復旧部33が、RAID装置2が故障状態になったときに、最初のディスク及び最後のディスクが復旧可能か否かを判定し、復旧可能である場合には両方のディスクを強制復旧する。したがって、RAID装置2は、RAID強制復旧後に冗長度を備えることができ、データ保証を充実することができる。
また、実施例では、RAID装置2が冗長度のない状態でデータの書込みを行う際に、ライトバック部35がslice_bitmapのビットのうちデータを書込む領域に対応するビットを「1」に設定する。そして、ステージング部34は、データを読出すときに、slice_bitmapのビットのうちデータを読出す領域に対応するビットの値が「1」であるか否かを判定し、「1」である場合には、ストライプ単位でディスク221からデータを読出す。そして、ステージング部34は、ストライプ毎にデータの整合性をチェックし、整合がとれていない場合には、被疑ディスクのデータを他のデータ及びパリティデータから復旧する。また、ライトバック部35は、ライトバックの種類が「Bandwidth」以外でデータを書込むときに、slice_bitmapのビットのうちデータを書込む領域に対応するビットの値が「1」であるか否かを判定する。そして、ライトバック部35は、「1」である場合には、ストライプ単位でディスク221からデータを読出す。そして、ライトバック部35は、ストライプ毎にデータの整合性をチェックし、整合がとれていない場合には、被疑ディスクのデータを他のデータ及びパリティデータから復旧する。したがって、RAID装置2は、データの整合性を向上することができ、データ保証を充実することができる。
なお、実施例では、RAID5の場合を中心に説明したが、本発明はこれに限定されるものではなく、例えばRAID1、RAID1+0、RAID6など冗長度を有するRAID装置にも同様に適用することができる。RAID6の場合には、2つのディスクが故障すると冗長度がなくなるので、これら2つのディスクを被疑ディスクと見なすことで、本発明を同様に適用することができる。
1 ホスト
2 RAID装置
3 入出力制御プログラム
21 CM
22 DE
31 テーブル記憶部
32 状態管理部
33 強制復旧部
34 ステージング部
35 ライトバック部
36 制御部
51,61 記憶データ
52,62 読出しデータ
53,63 エラー発生データ
54,64 復旧データ
211 CA
212 CPU
213 メモリ
214 DI
221 ディスク
531,631 エラー箇所
532,533,534,632,633,634 対応箇所

Claims (7)

  1. 複数の記憶装置と、該複数の記憶装置からのデータの読出し及び該複数の記憶装置へのデータの書込みを制御する制御装置とを有するストレージ装置において、
    前記制御装置は、
    前記複数の記憶装置のうちいくつかの記憶装置が故障して冗長度のない冗長グループの状態である冗長無状態時に新たに記憶装置が故障した場合に、故障した複数の記憶装置の故障原因を基に、冗長グループの強制復旧の実行が可能か否かを判断する判断部と、
    前記判断部により冗長グループの強制復旧の実行が可能であると判断された場合には、冗長無状態時に新たに故障した記憶装置を含む複数の記憶装置を冗長グループに組み込んで当該ストレージ装置を使用可能な状態として強制復旧を実行する復旧処理部と
    を有することを特徴とするストレージ装置。
  2. 前記冗長無状態時にデータの書込みを行う際に、書込み領域を示す書込情報を管理情報記憶領域に記憶しておき、前記強制復旧が実行された状態である強制復旧状態時に、該書込情報を基に、記憶装置からのデータの読出し及び記憶装置へのデータの書込みを行う読書部を
    さらに有することを特徴とする請求項1に記載のストレージ装置。
  3. 前記読書部は、前記強制復旧状態時に記憶装置からデータを読出す際に、読出すデータが前記冗長無状態時に書込みが行われた領域であるか否かを前記書込情報を基に判断し、書込みが行われた領域である場合には、前記冗長無状態以前に故障した記憶装置に対して最新のデータに更新する処理を行いながらデータの読出しを行うことを特徴とする請求項2に記載のストレージ装置。
  4. 前記読書部は、前記強制復旧状態時に記憶装置へデータを書込む際に、パリティデータ生成のために記憶装置からのデータの読出しが必要であるか否かを判断し、データの読出しが必要であると判断した場合に、書込むデータが前記冗長無状態時に書込みが行われた領域であるか否かを前記書込情報を基に判断し、書込みが行われた領域である場合には、前記冗長無状態以前に故障した記憶装置に対して最新のデータに更新する処理を行いながらデータの書込みを行うことを特徴とする請求項2に記載のストレージ装置。
  5. 前記複数の記憶装置はストライプ毎にデータと該データから作成されるパリティデータを記憶し、
    前記読書部は、読出すデータ又は書込むデータを含む全ストライプについてデータとパリティデータを記憶装置から読出し、前記冗長無状態以前に故障した記憶装置のデータを他の記憶装置から読み出したデータ及びパリティデータから生成することによって該記憶装置のデータを最新のデータに更新することを特徴とする請求項3又は4に記載のストレージ装置。
  6. 複数の記憶装置と、該複数の記憶装置からのデータの読出し及び該複数の記憶装置へのデータの書込みを制御する制御装置とを有するストレージ装置における制御方法において、
    前記制御装置が、
    前記複数の記憶装置のうちいくつかの記憶装置が故障して冗長度のない冗長グループの状態である冗長無状態時に新たに記憶装置が故障した場合に、故障した複数の記憶装置の故障原因を基に、冗長グループの強制復旧の実行が可能か否かを判断し、
    冗長グループの強制復旧の実行が可能であると判断した場合には、冗長無状態時に新たに故障した記憶装置を含む複数の記憶装置を冗長グループに組み込んで当該ストレージ装置を使用可能な状態として強制復旧を実行する
    ことを特徴とする制御方法。
  7. 複数の記憶装置と、該複数の記憶装置からのデータの読出し及び該複数の記憶装置へのデータの書込みを制御するコンピュータとを有するストレージ装置で該コンピュータにより実行される制御プログラムにおいて、
    前記コンピュータに、
    前記複数の記憶装置のうちいくつかの記憶装置が故障して冗長度のない冗長グループの状態である冗長無状態時に新たに記憶装置が故障した場合に、故障した複数の記憶装置の故障原因を基に、冗長グループの強制復旧の実行が可能か否かを判断し、
    冗長グループの強制復旧の実行が可能であると判断した場合には、冗長無状態時に新たに故障した記憶装置を含む複数の記憶装置を冗長グループに組み込んで当該ストレージ装置を使用可能な状態として強制復旧を実行する
    処理を実行させることを特徴とする制御プログラム。
JP2012272769A 2012-12-13 2012-12-13 ストレージ装置、制御方法及び制御プログラム Pending JP2014119831A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012272769A JP2014119831A (ja) 2012-12-13 2012-12-13 ストレージ装置、制御方法及び制御プログラム
US14/073,185 US20140173337A1 (en) 2012-12-13 2013-11-06 Storage apparatus, control method, and control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012272769A JP2014119831A (ja) 2012-12-13 2012-12-13 ストレージ装置、制御方法及び制御プログラム

Publications (1)

Publication Number Publication Date
JP2014119831A true JP2014119831A (ja) 2014-06-30

Family

ID=50932436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012272769A Pending JP2014119831A (ja) 2012-12-13 2012-12-13 ストレージ装置、制御方法及び制御プログラム

Country Status (2)

Country Link
US (1) US20140173337A1 (ja)
JP (1) JP2014119831A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235071B2 (en) 2016-11-29 2019-03-19 Kabushiki Kaisha Toshiba Tiered storage system, storage controller and tiering control method

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105843560B (zh) * 2016-04-08 2018-08-10 中国科学院计算技术研究所 一种维护主从式双控软Raid6一致性的方法及***
US12026055B2 (en) 2020-07-13 2024-07-02 Samsung Electronics Co., Ltd. Storage device with fault resilient read-only mode

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005284449A (ja) * 2004-03-29 2005-10-13 Nec Corp 情報記録媒体アレイシステムおよびその復旧方法
JP2008052547A (ja) * 2006-08-25 2008-03-06 Hitachi Ltd 記憶制御装置及び記憶制御装置の障害回復方法
JP2010286887A (ja) * 2009-06-09 2010-12-24 Nec System Technologies Ltd ディスクアレイ装置および処理方法ならびにそのプログラム
JP2011086214A (ja) * 2009-10-19 2011-04-28 Fujitsu Ltd ディスクアレイ装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8417987B1 (en) * 2009-12-01 2013-04-09 Netapp, Inc. Mechanism for correcting errors beyond the fault tolerant level of a raid array in a storage system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005284449A (ja) * 2004-03-29 2005-10-13 Nec Corp 情報記録媒体アレイシステムおよびその復旧方法
JP2008052547A (ja) * 2006-08-25 2008-03-06 Hitachi Ltd 記憶制御装置及び記憶制御装置の障害回復方法
JP2010286887A (ja) * 2009-06-09 2010-12-24 Nec System Technologies Ltd ディスクアレイ装置および処理方法ならびにそのプログラム
JP2011086214A (ja) * 2009-10-19 2011-04-28 Fujitsu Ltd ディスクアレイ装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235071B2 (en) 2016-11-29 2019-03-19 Kabushiki Kaisha Toshiba Tiered storage system, storage controller and tiering control method

Also Published As

Publication number Publication date
US20140173337A1 (en) 2014-06-19

Similar Documents

Publication Publication Date Title
JP5768587B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
US10191676B2 (en) Scalable storage protection
JP5887757B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP4303187B2 (ja) プログラム、記憶制御方法及び記憶装置
JP2010015195A (ja) 記憶制御装置及び記憶制御方法
US20090210742A1 (en) Methods, systems and media for data recovery using global parity for multiple independent RAID levels
JP4324088B2 (ja) データ複製制御装置
CN103970481A (zh) 重建存储器阵列的方法和装置
US20060190683A1 (en) Disk array apparatus and backup method of data
WO2009124320A1 (en) Apparatus, system, and method for bad block remapping
US20070101188A1 (en) Method for establishing stable storage mechanism
US10503620B1 (en) Parity log with delta bitmap
US10324782B1 (en) Hiccup management in a storage array
JP4114877B2 (ja) 不正データを検出するための装置、方法、及びプログラム
US20080091916A1 (en) Methods for data capacity expansion and data storage systems
US10664346B2 (en) Parity log with by-pass
JP2014119831A (ja) ストレージ装置、制御方法及び制御プログラム
CN111816239A (zh) 磁盘检测方法、装置、电子设备及机器可读存储介质
US11055190B1 (en) System and method for facilitating storage system operation with global mapping to provide maintenance without a service interrupt
JP2004213470A (ja) ディスクアレイ装置及びディスクアレイ装置におけるデータ書き込み方法
JP4143040B2 (ja) ディスクアレイ制御装置、同装置に適用されるデータ欠損検出時の処理方法及びプログラム
WO2008041267A1 (fr) Programme, dispositif et procédé de gestion de système
JP2005166016A (ja) ディスクアレイ装置
JP6957845B2 (ja) ストレージ制御装置及びストレージ装置
JP2008084168A (ja) 情報処理装置及びデータ修復方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160712

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160826

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170131