JP2008052547A - 記憶制御装置及び記憶制御装置の障害回復方法 - Google Patents

記憶制御装置及び記憶制御装置の障害回復方法 Download PDF

Info

Publication number
JP2008052547A
JP2008052547A JP2006229034A JP2006229034A JP2008052547A JP 2008052547 A JP2008052547 A JP 2008052547A JP 2006229034 A JP2006229034 A JP 2006229034A JP 2006229034 A JP2006229034 A JP 2006229034A JP 2008052547 A JP2008052547 A JP 2008052547A
Authority
JP
Japan
Prior art keywords
storage device
data
error
disk drive
predetermined
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006229034A
Other languages
English (en)
Other versions
JP4884885B2 (ja
Inventor
Naoki Tojima
直樹 東嶋
Ikuya Yagisawa
育哉 八木沢
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 JP2006229034A priority Critical patent/JP4884885B2/ja
Priority to US11/581,421 priority patent/US7549084B2/en
Priority to DE602006011157T priority patent/DE602006011157D1/de
Priority to EP06256558A priority patent/EP1895414B1/en
Publication of JP2008052547A publication Critical patent/JP2008052547A/ja
Priority to US12/467,611 priority patent/US7877632B2/en
Priority to US12/963,313 priority patent/US8312321B2/en
Application granted granted Critical
Publication of JP4884885B2 publication Critical patent/JP4884885B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0781Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit

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)
  • Debugging And Monitoring (AREA)

Abstract

【課題】本発明の記憶制御装置は、ディスクドライブの障害発生頻度を低減させる。
【解決手段】エラー管理部2Bは、各ディスクドライブ3Aについて、エラーの発生回数を管理する。エラーの発生回数が閾値以上のディスクドライブは、再起動対象のディスクドライブとして選択される。再起動制御部2Cは、再起動対象のディスクドライブ3A(3)を再起動させる前に、差分管理を開始させる。差分管理部2Dは、差分ビットマップ2Eを用いて、パリティグループ3Bに関する更新箇所を管理する。差分管理の開始後、再起動制御部2Cは、エラーの検出されたディスクドライブ3A(3)を再起動させる。これにより、ファームウェアのハングアップ等が原因のエラーを解消できる。
【選択図】 図1

Description

本発明は、記憶制御装置及び記憶制御装置の障害回復方法に関する。
例えば、政府、官公庁、地方自治体、企業、教育機関等では、多種多量のデータを取り扱うために、比較的大規模な記憶制御装置を用いてデータを管理する。この記憶制御装置は、冗長情報を利用して冗長性を備えた記憶領域(RAID:Redundant Array of Independent Disks)を構成し、この記憶領域にデータを記憶させる(特許文献1)。
このような記憶制御装置では、データを所定サイズに分割して、複数の記憶デバイスにそれぞれ分散して記憶させる。そして、分割された各データに基づいてパリティを算出し、このパリティを記憶デバイスに記憶させる。これにより、いずれか一つのデータが失われた場合でも、他のデータ及びパリティに基づいて、失われたデータを再生(回復)させることができる。
例えば、記憶デバイスに障害が発生し、データの読み書きを行うことができなくなった場合には、コレクションコピーが実行される。コレクションコピーとは、パリティグループ(ECC(Error Correcting Code)グループ、または、RAIDグループとも呼ばれる)内の正常な記憶デバイスに記憶されているデータ及びパリティに基づいて、障害の生じた記憶デバイスに記憶されている全データを復元させ、この復元させた全データを予備の記憶デバイスに記憶させる技術である(特許文献2)。
なお、ユーザが予め指定したポリシーに基づいて、ストレージシステムの各種の機器の設定を自動的に行うことができるようにした技術も知られている(特許文献3)。
特開平10−149262号公報 特開平11−191037号公報 特開2003−303052号公報
従来技術では、記憶デバイスに障害が発生してデータの読み書きを行うことができなくなった場合、コレクションコピーを実行することにより、障害の発生した記憶デバイスに記憶されているデータを予備の記憶デバイスに移し替える。コレクションコピーが完了すると、予備の記憶デバイスは、障害の発生した記憶デバイスの代わりに使用される。そして、障害の発生した記憶デバイスは、記憶制御装置から取り外されて、保守工場等に返却される。
従来は、記憶デバイスに障害が検出された場合、障害の生じた記憶デバイスは、記憶制御装置から直ちに切り離され、代わりに予備の記憶デバイスが使用される。しかし、記憶デバイスの障害には、物理的障害や論理的障害のように種々の種類があり、記憶デバイスを単に再起動させるだけで正常状態に回復する場合もある。例えば、記憶デバイス内のファームウェアがハングアップした場合は、記憶デバイスを再起動(リスタート)させるだけで、正常状態に回復することも多い。
記憶デバイスを再起動するだけで回復可能な障害の場合にも、この障害の生じた記憶デバイスを閉塞して、代わりに予備の記憶デバイスを使用するのでは、障害回復までに時間がかかる。障害の発生した記憶デバイスに記憶されている全てのデータを、コレクションコピーによって復元し、この復元されたデータを予備の記憶デバイスに記憶させる必要があるためである。
コレクションコピーでは、パリティグループ内の正常な記憶デバイスからデータ及びパリティをそれぞれ所定量ずつ読出し、この読み出されたデータ及びパリティに基づいて論理演算を行うことにより、障害の発生した記憶デバイスに記憶されているデータを復元させる。そして、この復元されたデータを予備の記憶デバイスに書き込む。このようなデータ及びパリティの読出しと、論理演算と、予備の記憶デバイスへの書込みという処理を、障害の生じた記憶デバイスに記憶されている全データについて、繰り返し実行する必要がある。従って、障害回復までに時間がかかり、記憶制御装置の負荷も増大する。
また、記憶デバイスを再起動するだけで回復可能な障害が発生するたびに、予備の記憶デバイスを使用するのでは、記憶デバイスの交換頻度が増大し、記憶制御装置の運用コスト及び保守コストが増加する。
そこで、本発明の目的は、記憶デバイスの交換頻度を低減できるようにした記憶制御装置及び記憶制御装置の障害回復方法を提供することにある。本発明の他の目的は、記憶デバイスの再起動による障害回復を短時間で行うことができ、かつ、記憶デバイスの再起動だけでは回復不能な障害が生じた場合にのみ予備の記憶デバイスを使用することにより、記憶デバイスの交換頻度を低減できるようにした記憶制御装置及び記憶制御装置の障害回復方法を提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明に従う記憶制御装置は、複数の記憶デバイスと、各記憶デバイスを制御するコントローラとを備え、コントローラは、上位装置から受信したコマンドを処理し、処理結果を上位装置に送信するコマンド処理部と、各記憶デバイスに生じたエラーをそれぞれ管理し、エラーの発生状態に基づいて再起動対象の所定の記憶デバイスを検出するエラー管理部と、エラー管理部により検出された所定の記憶デバイスを再起動させる再起動制御部と、所定の記憶デバイスが再起動するための期間を含む所定の差分管理期間内に、所定の記憶デバイスの属するパリティグループに関するライトコマンドをコマンド処理部が処理する場合には、ライトコマンドによる更新箇所を管理する差分管理部と、を備え、再起動制御部は、差分管理期間の終了後に、パリティグループ内の所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されているデータに基づいて、更新箇所のデータを復元し、この復元されたデータを所定の記憶デバイスに書き込む。
本発明の一態様では、コマンド処理部は、(1)差分管理期間内に、パリティグループに関するライトコマンドを上位装置から受信した場合には、パリティグループ内の所定の記憶デバイス以外の各記憶デバイスにデータをそれぞれ書込み、(2)差分期間内に、パリティグループに関するリードコマンドを上位装置から受信した場合には、パリティグループ内の所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されているデータに基づいて、上位装置から要求されたリードデータを復元し、この復元されたリードデータを上位装置に送信する。
本発明の一態様では、エラー管理部は、各記憶デバイスのうち、予め設定された所定のエラーの発生回数が予め設定された所定の閾値に達した記憶デバイスを、所定の記憶デバイスとして検出する。
本発明の一態様では、差分管理期間の開始時は、再起動制御部によって所定の記憶デバイスの電源がオフされる時点よりも前に設定されており、差分管理期間の終了時は、所定の記憶デバイスの電源がオンされた時点よりも後に設定されている。
本発明の一態様では、差分管理期間の開始時は、再起動制御部によって所定の記憶デバイスの電源がオフされる時点よりも前の時点に設定されており、差分管理期間の終了時は、所定の記憶デバイスが正常に再起動した時点、または、所定の記憶デバイスが正常に再起動した時点よりも後の時点いずれか一つの時点に設定されている。
本発明の一態様では、再起動制御部は、パリティグループに属する各記憶デバイスがそれぞれ作動している場合にのみ、所定の記憶デバイスを再起動させる。
本発明の一態様では、複数の記憶デバイスには、少なくとも一つ以上の予備の記憶デバイスが含まれており、再起動制御部は、所定の記憶デバイスが正常に再起動しない場合、所定の記憶デバイスの代わりに予備の記憶デバイスを選択し、パリティグループ内の所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されている全データに基づいて、正常に再起動しない所定の記憶デバイスに記憶されるべきデータを全て復元し、この復元された全データを予備の記憶デバイスに記憶させる。
本発明の一態様では、複数の記憶デバイスは、筐体内に交換不能に取り付けられる。
本発明の他の観点に従う記憶制御装置の障害回復方法は、複数の記憶デバイスと、各記憶デバイスを制御するコントローラとを備える記憶制御装置の障害を回復させるための方法であって、各記憶デバイスに生じたエラーをそれぞれ管理し、エラーの発生状態に基づいて、再起動対象の所定の記憶デバイスを検出するステップと、所定の記憶デバイスの属するパリティグループに関する差分管理を開始するステップと、所定の記憶デバイスを再起動させるステップと、所定の記憶デバイスが正常に再起動したか否かを確認するステップと、所定の記憶デバイスが正常に再起動した場合には、差分管理を停止させるステップと、パリティグループ内の所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されているデータに基づいて、差分管理されたデータを復元し、この復元されたデータを所定の記憶デバイスに書き込むステップと、をそれぞれ実行する。
所定の記憶デバイスが正常に再起動しなかった場合には、予め用意されている予備の記憶デバイスを選択し、パリティグループ内の所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されている全データに基づいて、正常に再起動しない所定の記憶デバイスに記憶されるべきデータを全て復元し、この復元された全データを予備の記憶デバイスに記憶させるステップを、さらに備えることもできる。
本発明の手段、機能、ステップの全部または一部は、コンピュータシステムにより実行されるコンピュータプログラムとして構成可能な場合がある。本発明の構成の全部または一部がコンピュータプログラムから構成された場合、このコンピュータプログラムは、例えば、各種記憶媒体に固定して配布等することができ、あるいは、通信ネットワークを介して送信することもできる。
図1は、本発明の実施形態の全体概要を示す構成説明図である。本実施形態では、後述のように、ディスクドライブ3A(3)に障害が検出された場合、障害の検出されたディスクドライブ3A(3)を直ちに停止させて予備のディスクドライブに交換するのではなく、まず最初に、ディスクドライブ3A(3)を再起動させる。例えば、ディスクドライブ3A(3)内のファームウェアがハングアップしている場合等には、再起動させただけでも、ディスクドライブ3A(3)が正常に作動する可能性が高いためである。
障害の発生したディスクドライブ3A(3)を再起動させる場合には、ディスクドライブ3A(3)の属するパリティグループ3Bについて、差分ビットマップ2Eを用いた差分管理を行う。ディスクドライブ3A(3)の再起動が正常に完了した後、再起動期間中に発生した差分データを復元し、この差分データをディスクドライブ3A(3)に記憶させる。
図1に示す記憶制御装置1の構成を説明する。記憶制御装置1は、例えば、コントローラ2と、記憶部3とを備えて構成される。コントローラ2は、ホスト4及び記憶部3とそれぞれ接続されている。コントローラ2は、ホスト4から受信したコマンドに応じて、記憶部3にアクセスし、データの入出力処理等を実行する。
記憶部3は、複数のディスクドライブ3A(1)〜3A(4)及び予備のディスクドライブ3A(SP)を備えている。以下の説明では、特に区別する場合を除いて、ディスクドライブ3Aと呼ぶ。各ディスクドライブ3Aは、「記憶デバイス」に相当する。ディスクドライブ3Aとしては、例えば、ハードディスクドライブ、半導体メモリ装置(フラッシュメモリ装置)、光ディスクドライブ、光磁気ディスクドライブ、フレキシブルディスクドライブ、磁気テープドライブ等のような種々のデバイスを用いることができる。以下の説明では、ハードディスクドライブの場合を例に挙げて説明する。
複数のディスクドライブ3Aから一つのパリティグループ3Bが構成されている。パリティグループ3Bは、RAID5やRAID6等として知られているように、データの冗長性を維持するものである。例えば、3D+1Pのパリティグループ3Bの場合、3個のディスクドライブ3Aがデータを記憶するためのデータディスクとして、1個のディスクドライブ3Aがパリティを記憶するためのパリティディスクとして、それぞれ使用される。なお、RAID5の場合、パリティは、各ディスクドライブ3Aに順番に書き込まれる。
説明の便宜上、3D+1Pの場合を例に挙げて説明する。ホスト4から受信されたライトデータは、3個のデータに分割され、これら分割された各データは、データディスクとして使用される各ディスクドライブ3Aのセクタにそれぞれ書き込まれる。コントローラ2は、各データを各ディスクドライブ3Aに書き込む際に、各データの排他的論理和を求めることにより、パリティを算出する。算出されたパリティは、パリティディスクとして使用されるディスクドライブ3Aに書き込まれる。
ディスクドライブ3Aに記憶されているデータを更新する場合、コントローラ2は、更新対象の旧データ及び旧パリティをディスクドライブ3Aからそれぞれ読出し、新たなパリティを算出する。新パリティは、旧パリティと更新対象の旧データ及び新データの排他的論理和を求めることにより、算出される。あるいは、新パリティは、更新対象のデータ以外の他のデータ群と新データとの排他的論理和から算出することもできる。但し、この算出方法では、旧データを全て読み出すため、データディスクの数が多い場合は、新パリティを算出するための時間が長くなる。これに対し、旧パリティと旧データ及び新データから新パリティを算出する場合は、データディスクの数と無関係に、新パリティを得ることができる。
新パリティの算出後、コントローラ2は、新データで旧データを上書きすると共に、新パリティを記憶させる。ここで、各ディスクドライブ3Aに記憶される各データには、所定ビットのECCが付加されているため、僅かなビットエラーは自動的に修復することができる。しかし、ECCによる修復能力を超えてビットエラーが発生した場合は、ディスクドライブ3Aからデータを正常に読み出すことができない。
このようなエラーは、アンコレクタブルエラーと呼ばれる。アンコレクタブルエラーが発生した場合、コントローラ2は、読み出しに失敗したデータに関連する他のデータ及びパリティをそれぞれ読み出す。コントローラ2は、正常な各ディスクドライブ3Aから読み出された各データ及びパリティの排他的論理和を求めることにより、読出しに失敗したデータを再現させる。正常なディスクドライブ3Aから読み出されるデータ及びパリティに基づいて、データを復元する処理をコレクションコピーと呼ぶ。
上述のように、RAID5の場合は、パリティグループ3Bを構成する各ディスクドライブ3Aのうち、いずれか一つのディスクドライブ3Aに障害が発生した場合でも、他のディスクドライブ3Aに記憶されているデータ及びパリティによって、障害の発生したディスクドライブ3Aに記憶されているデータを復元できる。
次に、コントローラ2の機能構成を説明する。コントローラ2は、例えば、コマンド処理部2Aと、エラー管理部2Bと、ドライブ再起動制御部2Cと、ドライブ再起動中の差分管理部(以下、差分管理部)2D及び差分ビットマップ2Eとを備える。
コマンド処理部2Aは、「上位装置」としてのホスト4から受信したコマンドを処理し、その処理結果をホスト4に送信する。コマンドとしては、例えば、ライトコマンドやリードコマンド等を挙げることができる。
エラー管理部2Bは、各ディスクドライブ3Aで生じるエラーをそれぞれ管理するものである。エラー管理部2Bは、エラーの発生状態に基づいて、再起動対象のディスクドライブ3Aを決定する。エラー管理部2Bは、予め設定されている複数種類のエラーのそれぞれについて、その発生回数を各ディスクドライブ3A毎にそれぞれ管理する。そして、いずれか一つの種類のエラーの発生回数が、予め設定された所定の閾値に達した場合、エラー管理部2Bは、そのディスクドライブ3Aを再起動対象のディスクドライブとして検出する。エラーの発生回数が閾値に達したディスクドライブ3Aは、いずれ障害が発生して使用不能になる可能性があるためである。そこで、エラー管理部2Bは、エラーの発生回数に基づいて障害の予兆を検出し、再起動させるべきディスクドライブ3Aを選択するようになっている。図1に示す例では、ディスクドライブ3A(3)のエラー発生回数が閾値に達した場合、このディスクドライブ3A(3)が再起動対象のディスクドライブとして検出される。
ドライブ再起動制御部(以下、再起動制御部)2Cは、エラー管理部2Bによって選択された再起動対象のディスクドライブ3A(3)を再起動させる。ディスクドライブ3Aの再起動とは、例えば、そのディスクドライブ3Aの電源をオフした後、そのディスクドライブ3Aの電源をオンにする操作を意味する。これに限らず、ディスクドライブ3Aがリセット信号の入力端子を備えているような場合には、ディスクドライブ3Aにリセット信号を入力することにより、ディスクドライブ3Aを再起動させることもできる。
差分管理部2Dは、所定の差分管理期間内に発生した差分データを、差分ビットマップ2Eによって管理する。差分ビットマップ2Eは、例えば、ブロック単位やトラック単位等のような所定の管理単位毎に、更新の有無をそれぞれ管理する。差分管理部2Dは、差分管理期間内に、パリティグループ3Bに属する各ディスクドライブ3A(1),3A(2),3A(4)のデータが書き換えられた場合、どの箇所のデータが書き換えられたのかを差分ビットマップ2Eに記憶させる。
ここで、差分管理期間の開始時を再起動の開始前に、差分管理期間の終了時を再起動の完了後に、それぞれ設定することができる。ディスクドライブ3A(3)を再起動させるよりも前に差分管理を開始するのは、より安全にデータを管理するためである。ディスクドライブ3A(3)の再起動と差分管理とを同時に実行すれば、理論上、ディスクドライブ3A(3)に関してデータの消失は発生しない。しかし、もしも僅かなタイミングのずれが発生すると、ディスクドライブ3A(3)の再起動後に差分管理が開始される可能性がある。この場合、ディスクドライブ3A(3)の再起動開始時から差分管理の開始時までの間に、コマンド処理部2Aが受け付けたライトデータについて、パリティの不整合が発生する。データが更新されたにもかかわらず、更新されたデータに関するパリティが生成されないためである。
そこで、本実施形態では、ディスクドライブ3A(3)を再起動させるよりも前に、パリティグループ3Bに関する差分管理を開始させる。なお、再起動前に差分管理を開始させると、差分管理の開始時から再起動開始時までの期間内では、無駄に差分管理が行われることになる。従って、差分管理の開始時と再起動の開始時との間の遅延時間を、短く設定するのが好ましい。
例えば、ディスクドライブ3A(3)のファームウェアがハングアップしたために、ディスクドライブ3A(3)のエラー発生回数が閾値に達したような場合、ディスクドライブ3A(3)を再起動することにより、ディスクドライブ3A(3)は正常状態に復帰する可能性が高い。再起動によって、ハングアップ状態が解消し、ファームウェアが正常に作動する可能性が高いためである。
ディスクドライブ3A(3)が正常状態に復帰した場合、再起動制御部2Cは、差分管理部2Dによって管理されている差分データを、コレクションコピーによってディスクドライブ3A(3)に書き込む。即ち、再起動制御部2Cは、再起動期間中の差分データのみをコレクションコピーによって復元し、この復元されたデータをディスクドライブ3A(3)の所定位置に書き込む。
もしも、ディスクドライブ3A(3)を再起動させても正常状態にならない場合、再起動制御部2Cは、予備のディスクドライブ3A(SP)を使用する。再起動制御部2Cは、障害の生じたディスクドライブ3A(3)以外のディスクドライブ3A(1),3A(2),3A(4)に記憶されている全データ及び全パリティに基づいて、ディスクドライブ3A(3)に記憶されている全データを復元させる。そして、再起動制御部2Cは、復元された全データを予備のディスクドライブ3A(SP)に記憶させる。その後、予備のディスクドライブ3A(SP)は、ディスクドライブ3A(3)として使用される。
このように、本実施形態によれば、ディスクドライブ3A(3)に閾値以上のエラーが検出された場合に、まず最初に、ディスクドライブ3A(3)を再起動させて、正常状態に復帰するか否かを確認する。そして、ディスクドライブ3A(3)の再起動期間中の差分データを管理しておき、ディスクドライブ3A(3)が正常状態に復帰した場合には、コレクションコピーによって、差分データのみをディスクドライブ3A(3)に記憶させるようになっている。
従って、本実施形態では、ディスクドライブ3A(3)に閾値以上のエラーが検出された場合でも、このディスクドライブ3A(3)を直ちに閉塞させて、予備のディスクドライブ3A(SP)に交換する必要がない。これにより、本実施形態では、ディスクドライブ3Aの交換頻度を低減させることができる。換言すれば、本実施形態では、従来、障害ディスクとして単純に扱われていたものを、再起動による回復を試みることで、結果的に障害の発生頻度を低減させる。
本実施形態では、再起動によって正常状態に復帰したディスクドライブ3A(3)に、再起動期間中の差分データのみを書き込む構成のため、ディスクドライブ3A(3)の復旧時間を短縮することができ、記憶制御装置1の負荷を低減できる。
本実施形態では、閾値以上のエラーが検出されたディスクドライブ3A(3)を再起動しても正常状態に復帰しない場合にのみ、予備のディスクドライブ3A(SP)を使用する構成とした。従って、予備のディスクドライブ3A(SP)の使用数を低減することができる。これにより、記憶制御装置1に多くの予備のディスクドライブ3A(SP)を予め搭載しておく必要がない。エラー検出時の交換頻度が少ないため、予備のディスクドライブ3A(SP)の搭載数が少ない場合でも、ディスク障害に耐えることができる。
特に、例えば、記憶制御装置1の構造上、ディスクドライブ3Aのユーザによる交換が困難または不能になっている場合でも、ディスクドライブ3Aの交換頻度が少ないため、予備のディスクドライブ3A(SP)を全て使用するまでの時間を長くすることができ、記憶制御装置1の寿命を長くして使い勝手を高めることができる。以下、本実施形態をより詳細に説明する。
図2は、本実施例による記憶制御装置100を模式的に示す正面図である。記憶制御装置100の筐体101には、複数のコントローラ200と、多数のディスクドライブ310とがそれぞれ設けられている。ここで、記憶制御装置100は図1中の記憶制御装置1に、コントローラ200は図1中のコントローラ2に、ディスクドライブ310は図1中のディスクドライブ3Aに、それぞれ対応する。
例えば、筐体101の上部には、複数のコントローラ200が設けられている。各コントローラ200の構成は後述する。記憶制御装置100は、複数のコントローラ200によって、制御構造を冗長化している。
コントローラ200の下側には、多数のディスクドライブ310が設けられている。そして、例えば、所定数のディスクドライブ310毎に、予備のディスクドライブ310(SP)が設けられている。なお、上述のコントローラ200及びディスクドライブ310の配置に関する説明は一例であって、本発明はこれに限定されない。記憶制御装置100は、少なくとも一つ以上のコントローラ200と、複数のディスクドライブ310及び少なくとも一つ以上の予備のディスクドライブ310(SP)を備えていればよい。
図3は、記憶制御装置100のハードウェア構成を示す説明図である。記憶制御装置100には、ホスト10及び管理端末20がそれぞれ接続されている。
ホスト10は、図1中のホスト4に対応する。ホスト10は、例えば、CPU(Central Processing Unit)やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレームコンピュータ等として構成される。ホスト10は、例えば、アプリケーションプログラム11と、通信ネットワークCN1を介して記憶制御装置100にアクセスするためのHBA(Host Bus Adapter)12とを備えている。
通信ネットワークCN1としては、例えば、LAN(Local Area Network)、SAN(Storage Area Network)、インターネット、専用回線、公衆回線等を、場合に応じて適宜用いることができる。通信ネットワークCN1がLANである場合、HBA11は、例えばLAN対応のネットワークカードである。通信ネットワークCN1がSANの場合、HBA11は、例えばホストバスアダプタである。
なお、ホスト10がメインフレームとして構成される場合、ホスト10は、例えば、FICON(Fibre Connection:登録商標)、ESCON(Enterprise System Connection:登録商標)、ACONARC(Advanced Connection Architecture:登録商標)、FIBARC(Fibre Connection Architecture:登録商標)等の通信プロトコルに従ってデータ転送を行う。
管理端末20は、記憶制御装置100の構成等を管理するためのコンピュータ装置であり、例えば、システム管理者等のユーザにより操作される。管理端末20は、通信ネットワークCN4を介して、記憶制御装置100に接続されている。管理端末20は、例えば、ストレージ管理部21と、通信ネットワークCN4に接続するためのLANポート22とを備えて構成される。ストレージ管理部21は、例えば、記憶制御装置100に各種の指示を与えるためのソフトウェアである。ストレージ管理部21からの指示によって、記憶制御装置100内の制御情報やテーブル等を書き換えることができる。ストレージ管理部21は、記憶制御装置100から各種の情報を取得して、管理端末20の端末画面に表示させることもできる。
記憶制御装置100は、複数のコントローラ200と、記憶部300とに大別することができる。各コントローラ200は、ホスト10からのコマンドを処理し、記憶部300へのデータ入出力を行う。各コントローラ200は、二重化されており、それぞれ同一の構成を備える。
そこで、一方のコントローラ200について説明する。コントローラ200は、例えば、制御部210と、データ処理回路220と、上位通信部230と、下位通信部240と、キャッシュメモリ250と、システムメモリ260と、フラッシュメモリ270とを備えて構成することができる。
制御部210は、例えば、一つ以上のCPUを含んで構成される。制御部210は、フラッシュメモリ270に記憶されているプログラムコードを読出して実行することにより、コントローラ200の全体動作を制御する。制御部210は、プログラムコードの実行に際して、システムメモリ260を利用することができる。
データ処理回路220は、データの入出力を制御するハードウェア回路である。データ処理回路220は、ホスト10から受信したライトデータを記憶部300に記憶させたり、ホスト10から要求されたリードデータを記憶部300またはキャッシュメモリ250のいずれか一方から読出して、ホスト10に送信する。
制御部210とデータ処理回路220とは接続されており、制御部210は、データ処理回路220を介してキャッシュメモリ250等に接続することができる。また、一方のコントローラ200のデータ処理回路220と他方のコントローラ200のデータ処理回路220とは、互いに接続されており、これにより各コントローラ200間で連携動作を行うことができるようになっている。
上位通信部230は、ホスト10との間で通信を行うためのものである。上位通信部230は、複数のホスト10にそれぞれ接続することができ、それぞれのホスト10との間の通信を独立して行うことができる。下位通信部240は、記憶部300との間で通信を行うためのものである。下位通信部240は、複数の経路CN2を介して、複数のディスクドライブ310とそれぞれ接続されている。上位通信部230がホスト10から受信したライトデータは、キャッシュメモリ250に記憶された後、下位通信部240を介して所定のディスクドライブ310に書き込まれる。下位通信部240が所定のディスクドライブ310から読出したデータは、キャッシュメモリ250に記憶された後、上位通信部230によりホスト10に送信される。
なお、各コントローラ200の制御部210は、LAN等の通信ネットワークCN3によってLANポート110に接続されている。LANポート110は、管理端末20との間で通信を行うためのものである。各制御部210は、通信ネットワークCN3を介して、互いに通信を行うことができる。また、管理端末20は、通信ネットワークCN3を介して、各コントローラ200から情報をそれぞれ収集したり、各コントローラ200に必要な指示をそれぞれ与えることができる。
記憶部300は、複数のディスクドライブ310を備えている。ディスクドライブ310としては、例えば、ハードディスクドライブ、フレキシブルディスクドライブ、磁気テープドライブ、半導体メモリドライブ(フラッシュメモリデバイス等)、光ディスクドライブ、ホログラフィックメモリドライブ等のような各種の記憶デバイス及びこれらの均等物を使用可能である。また、例えば、FC(Fibre Channel)ディスクやSATA(Serial AT Attachment)ディスク等のように、異なる種類のディスクドライブを記憶部300内に混在させることも可能である。本実施例では、ディスクドライブ310がハードディスクドライブである場合を例に挙げて説明する。
各ディスクドライブ310は、それぞれ制御回路311を備えている。制御回路311は、例えば、予め記憶されているプログラム(ファームウェア等)に基づいて、磁気ディスクの回転や磁気ヘッドの駆動等を制御する。制御回路311は、下位通信部240から入力されたコマンドに基づいて、磁気ディスクへのデータの書込み及び磁気ディスクからのデータの読出しを行う。各ディスクドライブ310は、それぞれ異なる経路CN2により、各コントローラ200とそれぞれ接続されている。従って、もしも、いずれか一方のコントローラ200または経路CN2に障害が生じた場合でも、他方のコントローラ200及び経路CN2を介してデータの入出力を行うことができる。
なお、記憶制御装置100の構成は図3に示すものに限定されない。例えば、ホスト10との通信を担当するチャネルアダプタと、ディスクドライブ310との通信を担当するディスクアダプタと、キャッシュメモリと、共有メモリと、接続制御部とを備えて構成することもできる。接続制御部とは、チャネルアダプタ及びディスクアダプタを、キャッシュメモリ及び共有メモリにそれぞれ接続させるための回路である。また、記憶制御装置100は、コントローラ200を1台のみ備える構成でもよい。
図4は、冗長記憶領域の構成を示す説明図である。例えば、4個のディスクドライブ310で一つのパリティグループ312を構成することができる。パリティグループ312は、各ディスクドライブ310の有する物理的な記憶領域の集合体であり、物理的な記憶デバイスである。このパリティグループ312には、一つまたは複数の論理ボリューム313を設けることができる。論理ボリューム313は、物理的な記憶領域を仮想化して形成されたもので、論理的な記憶デバイスである。
ホスト10は、論理ボリューム313を指定してデータの読み書きを行う。ホスト10からのライトコマンドやリードコマンドには、アクセス対象の論理ボリュームを特定するための情報と、データの読出し先アドレスまたは書込み先アドレスを示す論理アドレス(LBA:Logical Block Address)等が含まれている。
パリティグループ312がRAID5の構成を備えている場合、コントローラ200は、ライトデータを分割して複数のディスクドライブ310(データディスク)にそれぞれ書き込む。また、コントローラ200は、算出されたパリティを一つのディスクドライブ310(パリティディスク)に書き込む。パリティは、各ディスクドライブ310に順番に記憶されていく。パリティを用いてデータを管理するため、いずれか一つのディスクドライブ310に障害が発生した場合でも、パリティグループ312内の他のディスクドライブ310から読み出したデータ及びパリティに基づいて、障害の発生したディスクドライブ310の記憶内容を復元させることができる。
図5は、差分ビットマップT1の構成を模式的に示す説明図である。差分ビットマップT1は、パリティグループ312内の各論理ボリューム313について、差分を管理するためのものである。差分とは、所定の基準時における記憶内容と最新の記憶内容との差分を意味する。所定の基準時とは、差分管理の開始時である。
差分ビットマップT1は、例えば、キャッシュメモリ250内に構築される。これに限らず、差分ビットマップT1をフラッシュメモリ270内に設けてもよい。あるいは、特定の論理ボリューム313内に差分ビットマップT1を設ける構成でもよい。
差分ビットマップT1は、論理ボリューム313内のどの箇所が更新されたかの情報を管理する。差分ビットマップT1は、例えば、ブロック単位やトラック単位等のような所定の管理単位毎に、更新の有無を示す更新フラグを設定する。更新フラグの設定された管理単位は、更新されたことを意味する。図5中では、更新箇所を黒い四角形で示す。
図6は、パリティグループ312を管理するためのテーブルT2の一例を示す説明図である。このパリティグループ管理テーブルT2は、例えば、フラッシュメモリ270内に設けることができる。パリティグループT2は、例えば、パリティグループ番号と、RAIDレベルと、空き容量と、合計サイズと、論理ボリューム番号(LU#)と、ドライブリストとを対応付けることにより、構成される。例えば、アクセス制御情報やドライブ種別等のような項目を追加することもできる。
パリティグループ番号とは、記憶制御装置100内において、各パリティグループ312をそれぞれ識別するための情報である。RAIDレベルとは、RAID1〜RAID6等のようなRAIDの種類を示す情報である。空き容量とは、パリティグループ内の未使用の記憶領域の大きさを示す情報である。論理ボリューム番号とは、記憶制御装置100内において、各論理ボリューム313をそれぞれ識別するための情報である。ドライブリストとは、記憶制御装置100内において、パリティグループ312を構成するディスクドライブ310をそれぞれ識別するための情報である。このように構成されるパリティグループ管理テーブルT2を用いることにより、どの論理ボリューム313がどのディスクドライブ310から構成されているか等を調べることができる。
図7は、各ディスクドライブ310に生じたエラーを管理するためのテーブルの一例を示す説明図である。このエラー管理テーブルT3は、例えば、フラッシュメモリ270内に設けることができる。エラー管理テーブルT3は、各ディスクドライブ310毎に、予め設定されている複数種類のエラーの発生頻度を管理する。
エラー管理テーブルT3は、例えば、ドライブ番号と、エラー検出回数とを対応付けることにより構成される。エラー検出回数は、各エラータイプ毎に、エラーの発生回数が記憶される。ドライブ番号とは、記憶制御装置100内において、各ディスクドライブ310をそれぞれ識別するための情報である。このように構成されるエラー管理テーブルT3を用いることにより、どのディスクドライブ310において、どのような種類のエラーがどれだけ発生しているのかを調べることができる。
なお、エラー管理テーブルT3では、障害発生の予兆となるようなエラーの発生を管理する。障害とは、データの読み書きが不能となる状態を意味する。エラー管理テーブルT3は、障害の発生を管理することもできるが、障害発生の予兆となるエラーの発生を管理している。従って、後述のように、閾値以上のエラーが発生して、エラードライブであると判定された場合でも、そのディスクドライブ310に対してデータを全く読み書きできなくなるわけではない。
図7の下側には、閾値管理テーブルT4が示されている。閾値管理テーブルT4は、例えば、フラッシュメモリ270内に設けることができる。閾値管理テーブルT4は、例えば、各エラータイプ毎に予め設定された閾値をそれぞれ管理する。コントローラ200は、各エラータイプのうちいずれか一つのエラータイプのエラーが、その閾値に達した場合、ディスクドライブ310にエラーが発生したものと判断する。
図6は、記憶制御装置100の障害回復方法の全体の流れを示す説明図である。動作の詳細は別のフローチャートと共に詳述する。まず、コントローラ200は、エラー発生回数が閾値に達したディスクドライブ310を検出する(S1)。上述のように、各ディスクドライブ310は、複数のエラータイプのそれぞれについてエラー発生回数がそれぞれ監視されている。なお、以下の説明では、閾値以上のエラー発生回数が検出されたディスクドライブ310を、便宜上、エラードライブと呼ぶ場合がある。
コントローラ200は、エラードライブが検出されると、このエラードライブの再起動を決定する(S2)。そして、コントローラ200は、エラードライブの属するパリティグループ312について差分管理を開始する(S3)。この差分管理には、上述の差分ビットマップT1が使用される。
コントローラ200は、差分管理を開始した後、エラードライブを再起動させる。例えば、コントローラ200は、エラードライブの電源をオフにし(S4)、その後、エラードライブの電源をオンにする(S5)。これにより、エラードライブの制御回路311は、ファームウェアを再び読み込んで起動する。なお、電源のオンオフによってエラードライブを再起動させる場合を述べたが、これに限らず、電源をオンオフさせずに制御回路311をリセットする構成でもよい。
次に、コントローラ200は、再起動されたドライブが正常に動作するか否かを確認する(S6)。正常に動作する場合、このディスクドライブ310は、もはや「エラードライブ」ではないため、ここでは、「再起動されたドライブ」と呼ぶ。コントローラ200は、再起動されたドライブが正常に動作することを確認した後、S3で開始した差分管理を終了させる(S7)。
最後に、コントローラ200は、差分ビットマップT1に管理されている差分を、再起動されたドライブに反映させる(S8)。より具体的に説明する。エラードライブが再起動するまでには数十秒程度の時間を必要とする。この再起動期間内に、エラードライブの属するパリティグループ312に関してホスト10からライトコマンドが発行された場合、再起動中のエラードライブにライトデータを書き込むことはできない。そこで、本実施例では、再起動期間内に発生した更新部分を差分ビットマップT1で管理する。
そして、コントローラ200は、再起動の完了後に、パリティグループ312内の他のディスクドライブ310に記憶されているデータ及びパリティに基づいて、再起動されたディスクドライブ310に記憶されるべきデータを復元する。コントローラ200は、復元されたデータを、再起動されたドライブに書き込む。再起動期間内(正確には、差分管理期間内)に生じた差分データを再起動されたドライブに書き込むことを、「再起動されたドライブへの差分データの反映」と表現する場合がある。
ここで、留意すべき点は、全データを復元して、再起動されたドライブに書き込むのではなく、差分データのみを復元して、再起動されたドライブに書き込む点である。従って、再起動されたドライブがパリティグループ312に復帰するまでの時間を大幅に短縮することができ、障害からの回復に要する時間を短くすることができる。
図9は、ホスト10から発行されたライトコマンドを処理する場合のフローチャートを示す。なお、以下に述べる各フローチャートは、処理の概要を示しており、実際のプログラムとは相違する場合がある。本処理は、コントローラ200によって実行される。
コントローラ200は、ホスト10から発行されたライトコマンドを、上位通信部230を介して受信する(S10)。コントローラ200は、ライトコマンドを解析することにより、書込み先の論理ボリューム313を特定し(S11)、ホスト10から受信したライトデータをキャッシュメモリ250に記憶させる(S12)。
そして、コントローラ200は、ライトコマンドの処理が完了した旨をホスト10に報告する(S13)。即ち、コントローラ200は、書込み先の論理ボリューム313を構成する各ディスクドライブ310にライトデータを書き込むよりも前に、ホスト10にライトコマンドの処理完了を報告することができる。これにより、ホスト10はライトコマンドの処理から早期に解放される。
コントローラ200は、書込み先の論理ボリューム313の属するパリティグループ312内に、電源がオフされているディスクドライブ310が存在するか否かを判定する(S14)。
電源がオフされているディスクドライブ310が存在する場合(S14:YES)、コントローラ200は、S12で記憶させたライトデータに対応する箇所を差分ビットマップT1に記憶させる(S15)。コントローラ200は、パリティグループ312内で正常に動作している他のディスクドライブ310に、ライトデータ及びパリティ(以下、データ等と呼ぶ場合がある)をそれぞれ書き込む(S16)。
コントローラ200は、電源がオフされていない正常な各ディスクドライブ310からの通知に基づいて、正常な各ディスクドライブ310にデータ等が正常に書き込まれたか否かを判定する(S17)。書込みが正常に終了した場合(S17:YES)、コントローラ200は、本処理を終了する。正常な各ディスクドライブ310への書込みが失敗した場合(S17:NO)、コントローラ200は、エラー処理を行う(S18)。このエラー処理では、二重障害が発生した旨を管理者やユーザに通知する。
二重障害とは、一つのパリティグループ312内において、複数のディスクドライブ310への書込みに失敗した場合である。S17で「NO」と判定される場合とは、一つのディスクドライブ(エラードライブ)310は電源がオフされており(S14:YES)、かつ、他の一つのディスクドライブ310に何らかの原因によってデータ等を書き込むことができなかった場合である。そこで、コントローラ200は、二重障害の発生を管理端末20やホスト10に通知する。
閾値以上のエラーが検出された場合、上述のS15〜S17のステップが実行され、再起動中のディスクドライブ310の属するパリティグループ312について、差分データが管理される(S15)。
一方、書込み先の論理ボリューム313の属するパリティグループ312内に、電源のオフされているディスクドライブ310が存在しない場合(S14:NO)、コントローラ200は、通常のライト処理を実行する(S19)。即ち、コントローラ200は、書込み先の論理ボリューム313を構成する各ディスクドライブ310に、データ等を書込み(S20)、正常に書込みが完了したか否かを判定する(S21)。各ディスクドライブ310への書込みがそれぞれ正常に行われた場合(S21:YES)、コントローラ200は、本処理を終了する。これに対し、各ディスクドライブ310のうちいずれかのディスクドライブ310で、エラーが発生して、正常な書込みが行われなかった場合(S20:NO)、コントローラ200は、エラー管理テーブルT3を更新させる(S21)。このように、通常のライト処理では、ディスクドライブ310へデータ等を書き込む際に、エラーの有無を監視し、その監視結果をエラー管理テーブルT3に記憶させる。
図10は、リードコマンドを処理する場合のフローチャートを示す。コントローラ200は、ホスト10からリードコマンドを受信すると(S30)、読出し先の論理ボリューム313を特定する(S31)。
コントローラ200は、ホスト10から要求されたデータがキャッシュメモリ250に記憶されているか否かを判定する(S32)。ホスト10から要求されたデータがキャッシュメモリ250に記憶されている場合(S32:YES)、コントローラ200は、そのデータをキャッシュメモリ250から読み出して、ホスト10に送信する(S33)。
ホスト10から要求されたデータがキャッシュメモリ250に記憶されていない場合(S32:NO)、コントローラ200は、読出し先の論理ボリューム313の属するパリティグループ312内に、電源のオフされているディスクドライブ310が存在するか否かを判定する(S34)。
電源のオフされているディスクドライブ310が存在する場合(S34:YES)とは、即ち、エラーを解消するために再起動中のディスクドライブ310が存在する場合である。コントローラ200は、パリティグループ312内の正常な各ディスクドライブ310からデータ等を読み出し、コレクションコピーによって、ホスト10から要求されたデータを復元させる(S35)。コントローラ200は、復元されたデータをキャッシュメモリ250に記憶させた後(S36)、このデータをホスト10に送信する(S37)。つまり、読出し先の論理ボリューム313の属するパリティグループ312内に、再起動中のディスクドライブ310が含まれている場合は、ホスト10から要求されたデータをコレクションコピーによって生成する。
読出し先の論理ボリューム313の属するパリティグループ312内に、電源のオフされているディスクドライブ310が存在しない場合(S34:NO)、コントローラ200は、通常のリード処理を行う。即ち、コントローラ200は、そのパリティグループ312内の各ディスクドライブ310からデータをそれぞれ読出す(S38)。コントローラ200は、各ディスクドライブ310から読み出したデータを合体させてキャッシュメモリ250に記憶させた後(S39)、このデータをホスト10に送信する(S40)。
図11は、エラードライブを検出する処理を示すフローチャートである。コントローラ200は、エラー管理テーブルT3を参照し(S50)、エラーの検出回数が所定の閾値に達しているディスクドライブ310が存在するか否かを判定する(S51)。
コントローラ200は、エラー発生回数が閾値以上のディスクドライブ310を発見すると(S51:YES)、そのディスクドライブ(エラードライブとも呼ぶ)310を再起動させるための処理を起動させる(S52)。
図12は、エラードライブを再起動させるための処理を示すフローチャートである。まず、コントローラ200は、再起動対象のエラードライブを再起動させる前に、そのエラードライブの属するパリティグループ312内に、電源のオフにされているディスクドライブ310が存在するか否かを判定する(S60)。
もしも、いずれかのディスクドライブ310の電源が先にオフにされている場合、エラードライブの再起動を行うと、上述した二重障害が発生するためである。従って、既にいずれかのディスクドライブ310の電源が既にオフされている場合(S60:YES)、コントローラ200は、エラードライブを再起動させずに、本処理を終了させる。
上述の通り、エラードライブであると判定された場合でも、エラードライブに対するデータの読み書きが直ちにできなくなるわけではない。従って、先に電源がオフにされているディスクドライブ310が正常に起動するまで待ってから、エラードライブを再起動させればよい。換言すれば、S60を設けることにより、同一のパリティグループ312内に複数のエラードライブ(障害発生の予兆が検出されたディスクドライブ)が存在する場合に、順番にエラードライブを再起動させることができる。
エラードライブの属するパリティグループ312内に、電源のオフされているディスクドライブ310が存在しない場合(S60:NO)、コントローラ200は、エラードライブに関する差分管理を開始させる(S61)。即ち、コントローラ200は、エラードライブの属するパリティグループ312について、ホスト10により更新された箇所を差分ビットマップT1で管理する。
差分管理を開始させてから、コントローラ200は、エラードライブの電源をオフに設定する(S62)。続いて、コントローラ200は、エラードライブの電源をオンに変更させる(S63)。これにより、エラードライブは再起動する。
そして、コントローラ200は、エラードライブが正常に起動したか否かを判定する(S64)。例えば、コントローラ200は、再起動されたディスクドライブ(再起動前のエラードライブである)からの状態通知に基づいて、正常に起動したか否かを判定することができる。あるいは、コントローラ200は、再起動されたディスクドライブにテストデータを読み書きすることにより、正常に動作しているか否かを判定可能である。
再起動されたディスクドライブが正常状態である場合(S64:YES)、コントローラ200は、差分管理を停止させる(S65)。そして、コントローラ200は、差分管理されたデータを、パリティグループ312内の正常な各ディスクドライブ310から読み出されたデータ及びパリティに基づいて復元する。コントローラ200は、この復元された差分データを、再起動されたディスクドライブ310に書き込む(S66)。差分データが全て書き込まれると、その再起動されたディスクドライブ310の記憶内容は最新の状態となる。この後、再起動されたディスクドライブ310は、パリティグループ312に復帰する。
これに対し、エラードライブを再起動させても正常状態にならない場合(S64:NO)、コントローラ200は、エラードライブの閉塞処理を実行する(S67)。閉塞処理とは、エラードライブへのアクセスを禁止し、エラードライブを記憶部300から切り離して、エラードライブの電源を停止させる処理である。
次に、コントローラ200は、記憶部300内に未使用のスペアドライブが存在するか否かを検索する(S68)。スペアドライブとは、予備のディスクドライブ310を意味する。コントローラ200は、エラードライブと同一以上の記憶容量を有するスペアドライブを検索する。
未使用のスペアドライブが発見された場合(S69:YES)、コントローラ200は、そのスペアドライブをエラードライブの代わりとして選択し、コレクションコピーによって、エラードライブに記憶されるべきデータをスペアドライブに記憶させる(S70)。即ち、コントローラ200は、エラードライブの属するパリティグループ312内の正常な各ディスクドライブ310から全てのデータ及びパリティを読み出して、エラードライブに記憶されるべきデータを復元し、この復元されたデータをスペアドライブに書き込む。
全てのデータがスペアドライブに書き込まれた後、コントローラ200は、そのスペアドライブをエラードライブの代わりとして使用する(S71)。即ち、スペアドライブのドライブのドライブ番号とエラードライブのドライブ番号とを入れ替えることにより、スペアドライブは、パリティグループ312に参加する。
未使用のスペアドライブを発見できなかった場合(S69:NO)、コントローラ200は、エラー処理を行う(S72)。このエラー処理では、例えば、回復不能なドライブ障害が発生している旨のメッセージや、スペアドライブが不足している旨のメッセージ等を、管理端末20やホスト10に送信する。
このように構成される本実施例では、以下の効果を奏する。本実施例では、ディスクドライブ310に障害発生または障害発生の予兆を示すエラーが検出された場合に、そのディスクドライブ310(エラードライブ)を直ちに障害ドライブとして扱うのではなく、そのエラードライブをいったん再起動させる構成とした。従って、例えば、ディスクドライブ310のファームウェアがハングアップ等しているだけの場合は、ディスクドライブ310の再起動によってエラーを解消させることができる。従って、障害として取り扱われる件数を低減させることができる。即ち、本実施例では、記憶制御装置100内において、エラーの解消を試みることにより、障害発生件数を低減して信頼性や使い勝手を向上させる。
本実施例では、エラードライブを再起動させる場合に差分管理を行い、再起動されたディスクドライブ310に差分データのみを書き込む構成とした。従って、再起動されたディスクドライブ310の記憶内容を速やかに最新状態にすることができ、障害の回復に要する時間を短くして、使い勝手を高めることができる。さらに、障害回復時間を短くできるため、コレクションコピーによって記憶制御装置100の負荷が増大するのを抑制することができる。
本実施例では、上述のように、記憶制御装置100内でディスクドライブを再起動させることにより、記憶制御装置100の外部から認識される障害の発生件数を低減させることができる。従って、スペアドライブの使用数を低減させることができる。これにより、記憶制御装置100に予め多数のスペアドライブを搭載しておく必要がなく、記憶制御装置100の導入コストや運用コストを低減させることができる。
特に、記憶制御装置100において、ユーザによるディスクドライブ310の交換や追加が禁止されている場合も考えられるが、この場合は、全てのスペアドライブを使い切ってしまうと、それ以後に生じるドライブ障害に対応できない。即ち、スペアドライブを全て使い終わった時が、記憶制御装置100の寿命となる。このような場合でも、本実施例では、障害発生件数を低減して、スペアドライブの消費量を節約することができるため、記憶制御装置100の寿命を長くすることができる。
本実施例では、エラードライブを再起動させる前に差分管理を開始し、エラードライブが正常に動作することを確認した後で差分管理を停止させる。これにより、再起動期間中のデータの消失を防止することができ、信頼性を維持することができる。
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
本発明の全体概念を模式的に示す説明図である。 記憶制御装置の正面を模式的に示す説明図である。 記憶制御装置のハードウェア構成を示すブロック図である。 ディスクドライブとパリティグループ及び論理ボリュームの関係を模式的に示す示す説明図である。 差分ビットマップによって差分を管理する様子を示す説明図である。 パリティグループを管理するテーブルの構成を示す説明図である。 エラーを管理するテーブル及び各エラータイプ毎の閾値を管理するテーブルをそれぞれ示す説明図である。 障害回復方法の全体の流れを示す説明図である。 ライト処理を示すフローチャートである。 リード処理を示すフローチャートである。 エラードライブを検出する処理を示すフローチャートである。 エラードライブを再起動させる処理を示すフローチャートである。
符号の説明
1…記憶制御装置、2…コントローラ、2A…コマンド処理部、2B…エラー管理部、2C…ドライブ再起動制御部、2D…差分管理部、2E…差分ビットマップ、3…記憶部、3A…ディスクドライブ、3B…パリティグループ、4…ホスト、10…ホスト、11…アプリケーションプログラム、20…管理端末、21…ストレージ管理部、100…記憶制御装置、101…筐体、110…LANポート、200…コントローラ、210…制御部、220…データ処理回路、230…上位通信部、240…下位通信部、250…キャッシュメモリ、260…システムメモリ、270…フラッシュメモリ、300…記憶部、310…ディスクドライブ、311…制御回路、312…パリティグループ、313…論理ボリューム、T1…差分ビットマップ、T2…パリティグループ管理テーブル、T3…エラー管理テーブル、T4…閾値管理テーブル

Claims (10)

  1. 複数の記憶デバイスと、各記憶デバイスを制御するコントローラとを備える記憶制御装置であって、
    前記コントローラは、
    上位装置から受信したコマンドを処理し、処理結果を前記上位装置に送信するコマンド処理部と、
    前記各記憶デバイスに生じたエラーをそれぞれ管理し、前記エラーの発生状態に基づいて再起動対象の所定の記憶デバイスを検出するエラー管理部と、
    前記エラー管理部により検出された前記所定の記憶デバイスを再起動させる再起動制御部と、
    前記所定の記憶デバイスが再起動するための期間を含む所定の差分管理期間内に、前記所定の記憶デバイスの属するパリティグループに関するライトコマンドを前記コマンド処理部が処理する場合には、前記ライトコマンドによる更新箇所を管理する差分管理部と、を備え、
    前記再起動制御部は、前記差分管理期間の終了後に、前記パリティグループ内の前記所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されているデータに基づいて、前記更新箇所のデータを復元し、この復元されたデータを前記所定の記憶デバイスに書き込む記憶制御装置。
  2. 前記コマンド処理部は、
    (1)前記差分管理期間内に、前記パリティグループに関するライトコマンドを前記上位装置から受信した場合には、前記パリティグループ内の前記所定の記憶デバイス以外の各記憶デバイスにデータをそれぞれ書込み、
    (2)前記差分期間内に、前記パリティグループに関するリードコマンドを前記上位装置から受信した場合には、前記パリティグループ内の前記所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されているデータに基づいて、前記上位装置から要求されたリードデータを復元し、この復元されたリードデータを前記上位装置に送信する請求項1に記載の記憶制御装置。
  3. 前記エラー管理部は、前記各記憶デバイスのうち、予め設定された所定のエラーの発生回数が予め設定された所定の閾値に達した記憶デバイスを、前記所定の記憶デバイスとして検出する請求項1に記載の記憶制御装置。
  4. 前記差分管理期間の開始時は、前記再起動制御部によって前記所定の記憶デバイスの電源がオフされる時点よりも前に設定されており、前記差分管理期間の終了時は、前記所定の記憶デバイスの電源がオンされた時点よりも後に設定されている請求項1に記載の記憶制御装置。
  5. 前記差分管理期間の開始時は、前記再起動制御部によって前記所定の記憶デバイスの電源がオフされる時点よりも前の時点に設定されており、前記差分管理期間の終了時は、前記所定の記憶デバイスが正常に再起動した時点、または、前記所定の記憶デバイスが正常に再起動した時点よりも後の時点いずれか一つの時点に設定されている請求項1に記載の記憶制御装置。
  6. 前記再起動制御部は、前記パリティグループに属する各記憶デバイスがそれぞれ作動している場合にのみ、前記所定の記憶デバイスを再起動させる請求項1に記載の記憶制御装置。
  7. 前記複数の記憶デバイスには、少なくとも一つ以上の予備の記憶デバイスが含まれており、
    前記再起動制御部は、前記所定の記憶デバイスが正常に再起動しない場合、前記所定の記憶デバイスの代わりに前記予備の記憶デバイスを選択し、前記パリティグループ内の前記所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されている全データに基づいて、正常に再起動しない前記所定の記憶デバイスに記憶されるべきデータを全て復元し、この復元された全データを前記予備の記憶デバイスに記憶させる請求項1に記載の記憶制御装置。
  8. 前記複数の記憶デバイスは、筐体内に交換不能に取り付けられている請求項1に記載の記憶制御装置。
  9. 複数の記憶デバイスと、各記憶デバイスを制御するコントローラとを備える記憶制御装置の障害を回復させるための方法であって、
    前記各記憶デバイスに生じたエラーをそれぞれ管理し、前記エラーの発生状態に基づいて、再起動対象の所定の記憶デバイスを検出するステップと、
    前記所定の記憶デバイスの属するパリティグループに関する差分管理を開始するステップと、
    前記所定の記憶デバイスを再起動させるステップと、
    前記所定の記憶デバイスが正常に再起動したか否かを確認するステップと、
    前記所定の記憶デバイスが正常に再起動した場合には、前記差分管理を停止させるステップと、
    前記パリティグループ内の前記所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されているデータに基づいて、前記差分管理されたデータを復元し、この復元されたデータを前記所定の記憶デバイスに書き込むステップと、
    をそれぞれ実行する記憶制御装置の障害回復方法。
  10. 前記所定の記憶デバイスが正常に再起動しなかった場合には、予め用意されている予備の記憶デバイスを選択し、前記パリティグループ内の前記所定の記憶デバイス以外の各記憶デバイスにそれぞれ記憶されている全データに基づいて、正常に再起動しない前記所定の記憶デバイスに記憶されるべきデータを全て復元し、この復元された全データを前記予備の記憶デバイスに記憶させるステップを、さらに備える請求項9に記載の記憶制御装置の障害回復方法。
JP2006229034A 2006-08-25 2006-08-25 記憶制御装置及び記憶制御装置の障害回復方法 Expired - Fee Related JP4884885B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2006229034A JP4884885B2 (ja) 2006-08-25 2006-08-25 記憶制御装置及び記憶制御装置の障害回復方法
US11/581,421 US7549084B2 (en) 2006-08-25 2006-10-17 Storage control apparatus and failure recovery method for storage control apparatus
DE602006011157T DE602006011157D1 (de) 2006-08-25 2006-12-22 Speichersteuervorrichtung und Wiederherstellungsverfahren nach Ausfall für Speichersteuervorrichtung
EP06256558A EP1895414B1 (en) 2006-08-25 2006-12-22 Storage control apparatus and failure recovery method for storage control apparatus
US12/467,611 US7877632B2 (en) 2006-08-25 2009-05-18 Storage control apparatus and failure recovery method for storage control apparatus
US12/963,313 US8312321B2 (en) 2006-08-25 2010-12-08 Storage control apparatus and failure recovery method for storage control apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006229034A JP4884885B2 (ja) 2006-08-25 2006-08-25 記憶制御装置及び記憶制御装置の障害回復方法

Publications (2)

Publication Number Publication Date
JP2008052547A true JP2008052547A (ja) 2008-03-06
JP4884885B2 JP4884885B2 (ja) 2012-02-29

Family

ID=38515998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006229034A Expired - Fee Related JP4884885B2 (ja) 2006-08-25 2006-08-25 記憶制御装置及び記憶制御装置の障害回復方法

Country Status (4)

Country Link
US (3) US7549084B2 (ja)
EP (1) EP1895414B1 (ja)
JP (1) JP4884885B2 (ja)
DE (1) DE602006011157D1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198464A (ja) * 2009-02-26 2010-09-09 Hitachi Ltd 論理ユニット管理方法、プログラムおよびディスク装置
JP2014119831A (ja) * 2012-12-13 2014-06-30 Fujitsu Ltd ストレージ装置、制御方法及び制御プログラム
WO2014111979A1 (ja) * 2013-01-16 2014-07-24 株式会社 東芝 ディスクアレイ制御装置およびディスクアレイ装置
JP7443404B2 (ja) 2022-01-21 2024-03-05 株式会社日立製作所 ストレージシステム

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373559B2 (en) * 2003-09-11 2008-05-13 Copan Systems, Inc. Method and system for proactive drive replacement for high availability storage systems
FR2882448B1 (fr) * 2005-01-21 2007-05-04 Meiosys Soc Par Actions Simpli Procede de gestion, de journalisation ou de rejeu du deroulement d'un processus applicatif
JP4884885B2 (ja) * 2006-08-25 2012-02-29 株式会社日立製作所 記憶制御装置及び記憶制御装置の障害回復方法
US20080117751A1 (en) * 2006-11-22 2008-05-22 Read Christopher J Jukebox disc deterioration testing
KR100874916B1 (ko) * 2007-02-15 2008-12-19 삼성전자주식회사 데이터 저장장치 및 그의 작동 방법
US8359495B2 (en) * 2007-03-27 2013-01-22 Teradata Us, Inc. System and method for using failure casting to manage failures in computer systems
US7774649B2 (en) * 2008-01-31 2010-08-10 Ncr Corporation Self-service terminal
JP5637552B2 (ja) * 2009-02-17 2014-12-10 日本電気株式会社 ストレージシステム
JP5585332B2 (ja) * 2010-09-14 2014-09-10 日本電気株式会社 耐故障システム、マスタft制御lsi、スレーブft制御lsiおよび耐故障制御方法
US8417851B2 (en) * 2011-06-27 2013-04-09 International Business Machines Corporation Polling of a target register within a peripheral device
US9026842B2 (en) * 2012-03-20 2015-05-05 Blackberry Limited Selective fault recovery of subsystems
US9015694B2 (en) 2012-10-31 2015-04-21 Aruba Networks, Inc Cloud-based firmware distribution service
US20140156815A1 (en) * 2012-12-03 2014-06-05 Hitachi, Ltd. Storage system and method for managing configuration information thereof
JP5910596B2 (ja) * 2013-09-24 2016-04-27 日本電気株式会社 ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム
US10705865B2 (en) * 2014-02-25 2020-07-07 Red Hat, Inc. Disk resize of a virtual machine
JP6269253B2 (ja) * 2014-03-29 2018-01-31 富士通株式会社 分散ストレージシステム、記憶装置制御方法、および記憶装置制御プログラム
US10007432B2 (en) * 2015-10-13 2018-06-26 Dell Products, L.P. System and method for replacing storage devices
US10229014B1 (en) * 2015-11-19 2019-03-12 American Megatrends, Inc. Systems, methods and devices for performing fast RAID re-synchronization using a RAID sandwich architecture
US9880903B2 (en) * 2015-11-22 2018-01-30 International Business Machines Corporation Intelligent stress testing and raid rebuild to prevent data loss
US9858148B2 (en) 2015-11-22 2018-01-02 International Business Machines Corporation Raid data loss prevention
JP6696280B2 (ja) * 2016-04-13 2020-05-20 富士通株式会社 情報処理装置、raid制御方法、およびraid制御プログラム
JP6957845B2 (ja) * 2016-09-13 2021-11-02 富士通株式会社 ストレージ制御装置及びストレージ装置
KR102633091B1 (ko) 2016-09-19 2024-02-06 삼성전자주식회사 메모리 셀의 에러 확인 기능을 갖는 메모리 장치 및 이를 포함하는 메모리 모듈
US20210349782A1 (en) * 2020-05-11 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for fault resilient storage
TWI820814B (zh) * 2022-07-22 2023-11-01 威聯通科技股份有限公司 儲存系統與其硬碟恢復方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03268019A (ja) * 1990-03-19 1991-11-28 Hitachi Ltd 二重書き制御方式
JP2000227839A (ja) * 1999-02-05 2000-08-15 Mitsubishi Electric Corp クラスタシステム及びその障害回復方法
JP2002023967A (ja) * 2000-07-05 2002-01-25 Hitachi Electronics Eng Co Ltd 記憶媒体ライブラリアレイ装置におけるドライブ障害復旧方法
JP2005157739A (ja) * 2003-11-26 2005-06-16 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置の障害回避方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0820059B1 (en) * 1996-07-18 2004-01-14 Hitachi, Ltd. Method and apparatus for controlling a magnetic disk storage device and a disk array system
JP3133004B2 (ja) * 1996-11-21 2001-02-05 株式会社日立製作所 ディスクアレイ装置およびその制御方法
US6249828B1 (en) * 1997-05-13 2001-06-19 Micron Electronics, Inc. Method for the hot swap of a mass storage adapter on a system including a statically loaded adapter driver
JP3400328B2 (ja) 1997-12-26 2003-04-28 株式会社日立製作所 データ記憶方法およびデータ記憶装置
US7031986B2 (en) * 2000-06-27 2006-04-18 Fujitsu Limited Database system with backup and recovery mechanisms
US7171594B2 (en) * 2002-03-06 2007-01-30 Hewlett-Packard Development Company, L.P. Pausing a transfer of data
JP4196579B2 (ja) * 2002-04-10 2008-12-17 株式会社日立製作所 ストレージ運用管理方法およびシステム
US7210061B2 (en) * 2003-04-17 2007-04-24 Hewlett-Packard Development, L.P. Data redundancy for writes using remote storage system cache memory
JP4296050B2 (ja) * 2003-07-14 2009-07-15 三菱電機株式会社 電子制御装置
US7434090B2 (en) * 2004-09-30 2008-10-07 Copan System, Inc. Method and apparatus for just in time RAID spare drive pool management
JP2006139478A (ja) * 2004-11-11 2006-06-01 Hitachi Ltd ディスクアレイシステム
JP2006268673A (ja) * 2005-03-25 2006-10-05 Hitachi Ltd 記憶制御装置及び記憶デバイスのエラー制御方法
JP4756992B2 (ja) * 2005-10-25 2011-08-24 株式会社日立製作所 ストレージシステム及び記憶制御方法
JP2007233903A (ja) * 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
JP4884885B2 (ja) * 2006-08-25 2012-02-29 株式会社日立製作所 記憶制御装置及び記憶制御装置の障害回復方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03268019A (ja) * 1990-03-19 1991-11-28 Hitachi Ltd 二重書き制御方式
JP2000227839A (ja) * 1999-02-05 2000-08-15 Mitsubishi Electric Corp クラスタシステム及びその障害回復方法
JP2002023967A (ja) * 2000-07-05 2002-01-25 Hitachi Electronics Eng Co Ltd 記憶媒体ライブラリアレイ装置におけるドライブ障害復旧方法
JP2005157739A (ja) * 2003-11-26 2005-06-16 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置の障害回避方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198464A (ja) * 2009-02-26 2010-09-09 Hitachi Ltd 論理ユニット管理方法、プログラムおよびディスク装置
JP2014119831A (ja) * 2012-12-13 2014-06-30 Fujitsu Ltd ストレージ装置、制御方法及び制御プログラム
WO2014111979A1 (ja) * 2013-01-16 2014-07-24 株式会社 東芝 ディスクアレイ制御装置およびディスクアレイ装置
JP2014137702A (ja) * 2013-01-16 2014-07-28 Toshiba Corp ディスクアレイ制御装置およびディスクアレイ装置
JP7443404B2 (ja) 2022-01-21 2024-03-05 株式会社日立製作所 ストレージシステム

Also Published As

Publication number Publication date
US20110078495A1 (en) 2011-03-31
US8312321B2 (en) 2012-11-13
DE602006011157D1 (de) 2010-01-28
EP1895414B1 (en) 2009-12-16
US20090228740A1 (en) 2009-09-10
US7877632B2 (en) 2011-01-25
JP4884885B2 (ja) 2012-02-29
US7549084B2 (en) 2009-06-16
US20080126855A1 (en) 2008-05-29
EP1895414A1 (en) 2008-03-05

Similar Documents

Publication Publication Date Title
JP4884885B2 (ja) 記憶制御装置及び記憶制御装置の障害回復方法
JP5768587B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
US7028216B2 (en) Disk array system and a method of avoiding failure of the disk array system
JP4723290B2 (ja) ディスクアレイ装置及びその制御方法
US7529965B2 (en) Program, storage control method, and storage system
US7783922B2 (en) Storage controller, and storage device failure detection method
US7711989B2 (en) Storage system with automatic redundant code component failure detection, notification, and repair
US9081697B2 (en) Storage control apparatus and storage control method
CN103970481A (zh) 重建存储器阵列的方法和装置
JP4693893B2 (ja) 記憶制御装置及び記憶制御装置の制御方法
US20070011579A1 (en) Storage system, management server, and method of managing application thereof
JP4792490B2 (ja) 記憶制御装置及びraidグループの拡張方法
JP2005242555A (ja) 記憶制御システム及び記憶制御システムが有するディスク型記憶装置にファームウェアを搭載する方法
US10503620B1 (en) Parity log with delta bitmap
JP2006268673A (ja) 記憶制御装置及び記憶デバイスのエラー制御方法
US20170220249A1 (en) Systems and Methods to Maintain Consistent High Availability and Performance in Storage Area Networks
JP4491330B2 (ja) ディスクアレイ装置とそのデータのリカバリ方法およびデータリカバリプログラム
WO2021088367A1 (zh) 数据恢复方法及相关设备
JP2013045118A (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JPH09269871A (ja) ディスクアレイ装置におけるデータ再冗長化方式
EP3794451A1 (en) Parity log with by-pass
JP2004213470A (ja) ディスクアレイ装置及びディスクアレイ装置におけるデータ書き込み方法
JP4248164B2 (ja) ディスクアレイのエラー回復方法、ディスクアレイ制御装置及びディスクアレイ装置
US11953985B1 (en) Dial-home and template based automatic recovery of virtual machine guest operating system
JP2009217719A (ja) Raidコントローラ、raidシステム、およびraidシステムの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090609

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141216

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees