JP2007233903A - 記憶制御装置及び記憶制御装置のデータ回復方法 - Google Patents
記憶制御装置及び記憶制御装置のデータ回復方法 Download PDFInfo
- Publication number
- JP2007233903A JP2007233903A JP2006057337A JP2006057337A JP2007233903A JP 2007233903 A JP2007233903 A JP 2007233903A JP 2006057337 A JP2006057337 A JP 2006057337A JP 2006057337 A JP2006057337 A JP 2006057337A JP 2007233903 A JP2007233903 A JP 2007233903A
- Authority
- JP
- Japan
- Prior art keywords
- drive
- copy
- data
- recovery
- status
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0727—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
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
【課題】本発明は、無駄なコピーが行われるのを抑制して、効率的にエラードライブを回復させる。
【解決手段】ディスクドライブ(#1)のエラー回数が第1閾値以上になると、ドライブコピー部5Aによって、そのディスクドライブ(#1)に記憶されているデータがスペアドライブ2Aにコピーされる。ドライブコピーが完了する前に、ディスクドライブ(#1)のエラー回数が第2閾値以上になると、ディスクドライブ(#1)は閉塞処理され、ドライブコピーに代わって、コレクションコピー部5Cによるコレクションコピーが開始される。コレクションコピー部5Cは、コピー進捗状況管理部5Bによって管理されているドライブコピーの完了位置(コピー中断位置)を引き継ぐことにより、ドライブコピーが中断された位置から、コレクションコピーを開始する。
【選択図】図1
【解決手段】ディスクドライブ(#1)のエラー回数が第1閾値以上になると、ドライブコピー部5Aによって、そのディスクドライブ(#1)に記憶されているデータがスペアドライブ2Aにコピーされる。ドライブコピーが完了する前に、ディスクドライブ(#1)のエラー回数が第2閾値以上になると、ディスクドライブ(#1)は閉塞処理され、ドライブコピーに代わって、コレクションコピー部5Cによるコレクションコピーが開始される。コレクションコピー部5Cは、コピー進捗状況管理部5Bによって管理されているドライブコピーの完了位置(コピー中断位置)を引き継ぐことにより、ドライブコピーが中断された位置から、コレクションコピーを開始する。
【選択図】図1
Description
本発明は、記憶制御装置及び記憶制御装置のデータ回復方法に関する。
記憶制御装置は、例えば、ハードディスクドライブのような複数のディスクドライブを用いて、RAID(Redundant Array of Independent Disks)に基づく冗長化された記憶領域を生成し、この記憶領域をホストコンピュータ(以下、「ホスト」)に提供する。RAIDによって冗長化された記憶領域では、いずれかのディスクドライブに障害が生じた場合でも、他のディスクドライブに記憶されている記憶内容に基づいて、障害の発生したディスクドライブの記憶内容を復元することができる。
従来技術では、あるディスクのエラー発生数が第1段階の規定値に達した場合に、そのディスクとスペアディスクとの間でのミラーリングを開始させる。そのディスクのエラー発生数が第2段階の規定値に達した場合、ミラーリングを解除し、スペアディスクを用いて、運用を続行する(特許文献1)。
特開2005−100259号公報
前記文献に記載の従来技術では、スペアディスクを用いて、記憶制御装置の信頼性を高めているが、スペアディスクへの予防的なコピーと、パリティデータを用いたデータの復旧との関係が十分考察されておらず、改善の余地がある。
例えば、スペアディスクへの予防的なコピーが完了するよりも前に、コピー元のディスクに障害が生じてデータを読み出せなくなった場合を考える。この場合、パリティデータに基づくデータの復旧作業が開始される。しかし、このデータ復旧作業は、スペアディスクへの予防的なコピーと同期していないため、予防的なコピーが完了しているか否かを問わずに、障害の生じたディスクの全ての記憶内容について、データの復旧作業が行われることになる。
従って、データ復旧作業を完了するまでの時間が長くなり、記憶制御装置の応答性能も低下する。特に、近年では、ディスクの大容量化が進んでいるため、データ復旧作業に要する時間も長くなりやすい。さらに、RAIDレベルによっても相違するが、データ復旧作業が完了するまでの間に、他のディスクに障害を生じた場合、データを復旧させることができなくなる。RAID5では、1台のディスク障害に耐えることができ、RAID6では、同時に2台までのディスク障害に耐えることができる。データ復旧作業が行われているRAIDグループでは、そのデータ復旧作業が完了するまでの間、信頼性が低下する。
本発明は、上記の問題点に鑑みてなされたもので、その目的は、エラーの生じた記憶デバイスに記憶されている記憶内容を効率的に回復させることができるようにした記憶制御装置及び記憶制御装置のデータ回復方法を提供することにある。本発明の他の目的は、複数種類のコピーモードを同期させることにより、無駄なくデータ移行を行うことができるようにした記憶制御装置及び記憶制御装置のデータ回復方法を提供することにある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明に従う記憶制御装置は、少なくとも1つ以上の予備の記憶デバイスを含む複数の記憶デバイスを備えた記憶制御装置であって、各記憶デバイスのエラー状況を検出するエラー状況検出部と、エラー状況検出部によりエラーが検出された場合に、このエラーの検出された記憶デバイスに対する上位装置からの入出力要求を制御する入出力要求制御部と、エラー状況検出部により検出されたエラー状況が予め設定された閾値を超える場合に、エラーの検出された回復対象の記憶デバイスの記憶内容を予備の記憶デバイス内に回復させる回復制御部と、を備え、回復制御部は、回復対象の記憶デバイスからデータを読み出して、この読み出したデータを予備の記憶デバイスにコピーさせる第1コピーモードと、回復対象の記憶デバイスと同一のRAIDグループに属する他の記憶デバイスから読み出されたデータに基づいて、回復対象の記憶デバイスに記憶されているデータを復元し、この復元されたデータを予備の記憶デバイスにコピーさせる第2コピーモードと、を備えており、かつ、回復制御部は、第1コピーモードから第2コピーモードに移行する場合、第1コピーモードによるコピー中断位置から第2コピーモードを開始させる。
本発明の一態様では、回復制御部は、エラー状況検出部により検出されたエラー状況が、第1閾値以上であって第2閾値未満の場合に、第1コピーモードを実行して、回復対象の記憶デバイスの記憶内容を回復させ、エラー状況検出部により検出されたエラー状況が、第2閾値以上の場合に、第1コピーモードから第2コピーモードに移行することにより、回復対象の記憶デバイスの記憶内容を、引き続いて回復させる。
本発明の一態様では、回復制御部は、第1コピーモードから第2コピーモードへ移行する場合、第1コピーモードで使用されていた予備の記憶デバイスを確保し、この確保された予備の記憶デバイスを使用して第2コピーモードを開始する。
本発明の一態様では、回復制御部は、第1コピーモードと第2モードとを一つの処理として連続的に実行する。
本発明の一態様では、エラー状況検出部により検出されたエラー状況が、第1閾値以上であって第2閾値未満の場合に、回復対象の記憶デバイスには、第1コピーモードを選択するための第1ステータスが設定され、エラー状況検出部により検出されたエラー状況が、第2閾値以上の場合に、回復対象の記憶デバイスには、第2コピーモードを選択するための第2ステータスが設定される。そして、回復制御部は、回復対象の記憶デバイスに第1ステータスが設定された場合に、第1コピーモードを開始して、回復対象の記憶デバイスから予備の記憶デバイスへ所定量ずつデータをコピーし、この所定量ずつのデータコピーが完了するごとに、コピー完了位置を管理するためのコピー位置管理情報を更新し、コピー位置管理情報を更新する度に、回復対象の記憶デバイスのステータスを確認し、回復対象の記憶デバイスのステータスが第1ステータスから第2ステータスへ変更された場合は、コピー位置管理情報を引き続き使用して、第1コピーモードから第2コピーモードに移行する。
本発明の一態様では、入出力要求制御部は、上位装置による予備の記憶デバイスへの更新状況を更新管理情報に記憶して管理しており、回復制御部は、更新された記憶領域以外の記憶領域について、第1コピーモードまたは第2コピーモードを実行させる。
本発明の一態様では、入出力要求制御部は、更新管理情報に基づいて、上位装置からの入出力要求を処理するために使用する記憶デバイスを特定する。
本発明の一態様では、回復制御部は、同一のRAIDグループ内で第2コピーモードが複数起動された場合に、処理の先行している第2コピーモードにより回復されたデータを、この先行している第2コピーモードに係る予備の記憶デバイス及び処理の遅れている第2コピーモードに係る予備の記憶デバイスのそれぞれに記憶させる。
本発明の他の観点に従う記憶制御装置のデータ回復方法は、複数の記憶デバイスから構成されるRAIDグループを備える記憶制御装置に記憶されているデータを回復させるための方法であって、RAIDグループ内の各記憶デバイスに関するエラー状況を検出するステップと、検出されたエラー状況が、第1閾値以上であって第2閾値未満の場合に、エラーの検出された回復対象の記憶デバイスに、第1コピーモードを選択するための第1ステータスを設定するステップと、検出されたエラー状況が、第2閾値以上の場合に、回復対象の記憶デバイスに、第2コピーモードを選択するための第2ステータスを設定するステップと、回復対象の記憶デバイスに第1ステータスが設定された場合に、第1コピーモードを開始して、回復対象の記憶デバイスから予備の記憶デバイスへ所定量ずつデータをコピーするステップと、所定量ずつのデータコピーが完了するごとに、コピー完了位置を管理するためのコピー位置管理情報を更新するステップと、コピー位置管理情報を更新する度に、回復対象の記憶デバイスのステータスを確認するステップと、回復対象の記憶デバイスのステータスが第1ステータスから第2ステータスへ変更された場合には、コピー位置管理情報を引き続き使用して、第1コピーモードから第2コピーモードに移行し、回復対象の記憶デバイスと同一のRAIDグループに属する他の記憶デバイスから読み出されたデータに基づいて、回復対象の記憶デバイスに記憶されているデータを復元するステップと、復元されたデータを予備の記憶デバイスにコピーさせるステップと、を実行する。
本発明の各手段、各部、各ステップの少なくとも一部は、コンピュータプログラムによって実行可能な場合がある。そして、このコンピュータプログラムは、各種記録媒体に固定された状態で配布したり、あるいは、通信媒体を介して送信することができる。
以下、図面に基づき、本発明の実施形態を説明する。図1は、本発明の全体概念を模式的に示す説明図である。本実施形態の記憶制御装置1は、「上位装置」としてのホスト7に大容量の記憶領域を提供する。
記憶制御装置1は、「記憶デバイス」としてのディスクドライブ2,スペアドライブ2Aを備えている。複数のディスクドライブ2によって、RAIDグループ6が形成される。図示の例では、#0〜#3の合計4台のディスクドライブ2によって、例えば、RAID5に基づく冗長化された記憶領域が構築されている様子を示す。RAIDグループ6は、冗長化された物理的な記憶領域であり、この物理的な記憶領域に論理的な記憶領域(論理ボリューム)を設定することができる。ホスト7は、論理ボリュームを認識することができ、論理ボリュームに対してリード要求またはライト要求を発行する。
RAIDについて簡単に説明する。RAID0とは、データを分割して複数のディスクに分散させて記憶させる方式であり、ストライピングとも呼ばれる。RAID0は、単にデータを分散させるだけであり、失われたデータを回復させることはできない。しかし、分散データに並行してアクセスすることができる。RAID0では、冗長性が全く確保されていない。
RAID1とは、同一データを複数のディスクにそれぞれ書込む方式であり、ミラーリングとも呼ばれる。RAID1では、同一のデータを異なるディスクに保持させるので、一方のディスクに障害が発生した場合でも、他方のディスクを用いてデータを処理することができ、耐障害性は向上する。但し、合計ディスクサイズの半分しか使用できないため、コストは増大する。
RAID3とは、データを分割して複数のデータ用ディスクに分散させて書き込むと共に、分割されたデータから生成されるパリティを別のパリティ用ディスクに記憶させる方式である。
RAID5とは、データ及びパリティの両方を複数のディスクに分散させて記憶させる方式である。データを更新する場合は、旧データ及び旧パリティをそれぞれ読出して新しいパリティを算出してから、ディスクにデータを書き戻す必要があるため、RAID1に比べるとライトアクセスの性能は低下する。しかし、RAID5では、パリティ専用のディスクを用いず、データと共にパリティを分散させるため、比較的高速にライトアクセスを行うことができる。また、各ディスクの記憶容量を効率的に使用することができ、冗長性を確保するためのコストも低い。
RAID6とは、1つのデータについて2種類のパリティを生成し、データ及びパリティを各ディスクに分散させて記憶させるものである。RAID6では、同時に2台のディスクに障害が生じた場合でも、運用を継続することができる。従って、構造は複雑であるが、RAID5よりも耐障害性に優れている。
I/O(input/output)要求処理部3は、「入出力要求制御部」に対応する。I/O要求処理部3は、ホスト7から発行されたリード要求及びライト要求を処理する。ホスト7からリード要求が発行された場合、I/O要求処理部3は、要求されたデータがキャッシュメモリに記憶されているか否かを判断し、キャッシュメモリに記憶されていない場合、ディスクドライブ2からデータを読み出す。I/O要求処理部3は、読み出したデータをキャッシュメモリに保存した後、ホスト7に送信する。ホスト7からライト要求が発行された場合、I/O要求処理部3は、ライトデータをキャッシュメモリに記憶させた後、ホスト7に処理完了を通知し、その後に、ライトデータをディスクドライブ2に書き込む。さらに、後述のように、ディスクドライブ2のデータ回復作業が行われている場合、I/O要求処理部3は、所定の障害リカバリ処理を行う。障害リカバリ処理としては、例えば、ホスト7から要求されたデータを、障害の発生していない他のディスクドライブ2から読み出したデータ及びパリティによって復元する処理(コレクションリード処理)や、ホスト7から受信したライトデータをキャッシュメモリに保存する処理等が挙げられる。
エラー状況検出部4は、各ディスクドライブ2の応答状態に基づいて、各ディスクドライブ2のエラーの状況をそれぞれ監視する。エラーの種類としては、例えば、メディアエラー、メカニカルエラー、インターフェースエラー等を挙げることができる。
ドライブ回復制御部5は、「回復制御部」に該当する。ドライブ回復制御部5は、所定値以上のエラーの検出されたディスクドライブ2について、そのディスクドライブ2に記憶されている記憶内容を、スペアドライブ2A内に復元させる。
ドライブ回復制御部5は、ドライブコピー部5Aと、コピー進捗状況管理部5Bと、コレクションコピー部5Cとを備えている。ドライブコピー部5Aは、「第1コピーモード」としてのドライブコピーを行う。ドライブ回復制御部5は、ディスクドライブ2に障害発生の予兆を検出すると、ドライブコピーを開始して障害の発生に備える。ドライブコピーは、予防的措置である。そして、実際にディスクドライブ2に障害が生じた場合、ドライブ回復制御部5は、コレクションコピーを開始し、障害の生じたディスクドライブ2に記憶されているはずのデータを復元し、スペアドライブ2Aにコピーする。スペアドライブ2Aと障害の発生したディスクドライブ2の管理上の番号を入れ替えることにより、障害の発生したディスクドライブ2が回復することになる。
ドライブコピーとは、ディスクドライブ2の記憶内容をスペアドライブ2Aにコピーするモードである。ドライブコピーは、初期コピー段階と二重書き段階とに分けて考えることができる。初期コピー段階では、コピー元のディスクドライブ2に記憶されているデータを、スペアドライブ2Aに全てコピーする。二重書き段階では、ホスト7から受信したライトデータを、コピー元のディスクドライブ2及びスペアドライブ2Aに、それぞれ書き込む。従って、ドライブコピーは、ミラーリングと呼ぶこともできる。ドライブコピーは、ディスクドライブ2に生じたエラー回数が第1閾値以上であって、かつ第2閾値未満の場合に、実行される。従って、第1閾値の値を適切に設定することにより、ディスクドライブ2が使用不能となる前に、ドライブコピーを開始させて、ディスクドライブ2の記憶内容をスペアドライブ2Aに退避させておくことができる。
コピー進捗状況管理部5Bは、例えば、コピー完了位置を示すコピーポインタ等により、ドライブコピーの進捗状況を管理するものである。ドライブコピー部5Aによりコピーが完了した位置の情報は、コレクションコピー部5Cに引き継がれる。コレクションコピー部5Cは、「第2コピーモード」としてのコレクションコピーを行う。コレクションコピーとは、障害の生じていない他のディスクドライブ2に分散して記憶されているデータ及びパリティに基づいて、障害の発生したディスクドライブ2内のデータを復元し、この復元されたデータをスペアドライブ2Aにコピーさせるモードである。コレクションコピーは、ディスクドライブ2のエラー回数が第2閾値以上の場合に、実行される。
例えば、ディスクドライブ2(#1)のエラー回数が第1閾値以上になると、ドライブコピー部5Aによって、そのディスクドライブ2(#1)に記憶されているデータがスペアドライブ2Aにコピーされる。ドライブコピーが正常に完了した後で、コピー元のディスクドライブ2(#1)に障害が発生した場合、スペアドライブ2Aを用いて、運用を続けることができる。
これに対し、ドライブコピーが完了する前に、ディスクドライブ2(#1)のエラー回数が第2閾値以上になると、ディスクドライブ2(#1)は閉塞処理され、ドライブコピーに代わって、コレクションコピー部5Cによるコレクションコピーが開始される。
コレクションコピー部5Cは、コピー進捗状況管理部5Bによって管理されているドライブコピーの完了位置(コピー中断位置)を引き継ぐことにより、ドライブコピーが中断された位置から、コレクションコピーを開始する。即ち、コレクションコピー部5Cは、他のディスクドライブ2(#0,#2,#3)からデータ及びパリティを読出して、ディスクドライブ2(#1)内のデータを復元し、復元したデータを、スペアドライブ2Aに記憶させる。
従って、この場合、スペアドライブ2Aの先頭からドライブコピーの中断位置までの第1領域には、ドライブコピーによってコピーされたデータが記憶される。ドライブコピー中断位置からスペアドライブ2Aの終端までの第2領域には、コレクションコピーによって復元されたデータが記憶される。第1領域と第2領域との間に隙間は無く、両者は連続している。
ドライブコピーとコレクションコピーとは、ドライブコピーの進捗状況に関する情報(コピーポインタ等)を共有し、同一のスペアドライブ2Aを使用する。ここで、ドライブコピーを実行するジョブの中で、コレクションコピーも実行可能に構成することにより、ドライブコピーとコレクションコピーとを比較的簡単に同期させることができる。
スペアドライブ2Aにディスクドライブ2(#1)の記憶内容が復元されると、スペアドライブ2Aは、障害で閉塞されたディスクドライブ2(#1)に代わって、ディスクドライブ(#1)として使用される。実際のディスクドライブを識別する情報(実ドライブ番号)と、RAIDグループ6を構成する各ディスクドライブを識別する情報(仮想ドライブ番号)との対応関係を変えることにより、スペアドライブ2Aをディスクドライブ(#1)として、直ちに使用することができる。
ドライブコピーまたはコレクションコピーが行われている回復期間中に、ホスト7からのアクセス要求を停止させる必要はない。この回復期間中にホスト7からリード要求またはライト要求が発行された場合、I/O要求処理部3は、所定の処理を行う。所定の処理の詳細は、後述の実施例で説明するが、先に簡単に説明する。
例えば、前記の例において、ドライブコピー中に、ホスト7からディスクドライブ2(#1)を対象とするリード要求が発行された場合、I/O要求処理部3は、コピー元であるディスクドライブ2(#1)からデータを読み出して、ホスト7に送信する。ドライブコピー中に、ホスト7からライト要求が発行された場合、I/O要求処理部3は、ディスクドライブ2(#1)及びスペアドライブ2Aの両方にライトデータをそれぞれ書き込む。
コレクションコピー中に、ホスト7からディスクドライブ2(#1)を対象とするリード要求が発行された場合、I/O要求処理部3は、その要求されたデータのアドレスが、移行済の記憶領域(回復済みの記憶領域)に位置するか否かを判定する。要求されたデータが既にスペアドライブ2Aに移行されている場合、I/O要求処理部3は、スペアドライブ2Aからデータを読み出して、ホスト7に送信する。要求されたデータが未だスペアドライブ2Aに移行されていない場合、I/O要求処理部3は、他のディスクドライブ2(#0,#2,#3)から読み出されたデータ及びパリティに基づいてデータを復元し、この復元したデータをホスト7に送信する。
コレクションコピー中に、ホスト7からディスクドライブ2(#1)を対象とするライト要求が発行された場合、I/O要求処理部3は、他のディスクドライブ2(#0,#2,#3)から旧データ及び旧パリティを読出す。I/O要求処理部3は、旧データと旧パリティ及び新ライトデータに基づいて、新パリティを生成し、この新パリティをパリティドライブ(パリティを記憶すべきドライブ)に記憶させる。
なお、コレクションコピーが実行された場合、コピー元のディスクドライブ2(#1)は閉塞され、縮退ドライブとなる。即ち、このディスクドライブ2(#1)は、コレクションコピーの完了後に、記憶制御装置1から取り外される。そして、保守要員により、別の新たなスペアドライブが記憶制御装置1に取り付けられる。
本実施形態は上述のように構成されるので、以下の効果を奏する。本実施形態では、ドライブコピーからコレクションコピーに移行する際に、ドライブコピーの中断位置からコレクションコピーを開始させる構成とした。従って、ドライブコピーとコレクションコピーとを調和させて実行させることができ、ドライブ回復時間を短縮して、使い勝手及び信頼性を高めることができる。
つまり、本実施形態では、ドライブコピーが完了している領域への無駄なコピーが行われるのを防止でき、ディスクドライブ2に記憶されているデータを比較的短時間で回復させることができる。回復時間を低減できるため、冗長性の低下する期間を短縮でき、信頼性の低下を抑制することができる。また、回復時間を低減できるため、記憶制御装置1の応答性能の低下を抑制することができ、使い勝手も向上する。
また、ドライブコピーの完了した範囲については、コレクションコピーを行わない構成のため、スペアドライブ2Aにコピーされたデータを有効に活用することができ、ディスクドライブの二重障害に対する耐久性を高めることもできる。
ディスクドライブ2(#1)に関するコレクションコピーを行っている期間中に、他のディスクドライブ2(#0)で続けて障害が生じた場合を考える。RAID5では、いずれか1つのドライブ障害に打ち勝つことができるが、同時に複数のディスクドライブに障害が発生した場合は、データを回復させることができない。従って、通常の場合、ディスクドライブ2(#0,#1)の両方に同時に障害が発生した場合(二重障害の発生時)、データを回復させることはできず、そのデータは消失する。しかし、本実施形態では、ドライブコピーによってスペアドライブ2Aにコピーされているデータを、コレクションコピーで上書きしないため、スペアドライブ2Aにコピーされたデータを有効に利用することができる。従って、ドライブの二重障害が発生した場合でも、スペアドライブ2Aにコピー済みのデータを利用可能な範囲内で、データを回復させることができ、データを消失する機会を低減することができる。以下、本実施形態を詳細に説明する。
図2は、本実施例による記憶制御装置10を含むストレージシステムの全体構成を示す説明図である。ストレージシステムは、例えば、記憶制御装置10と、ホスト13と、管理端末14及び管理サーバ15を備えて構成することができる。図1との関連を述べると、記憶制御装置10は図1中の記憶制御装置1に、ホスト13は図1中のホスト7に、ディスクドライブ210は図1中のディスクドライブ2に、RAIDグループ212は図1中のRAIDグループ6に、それぞれ対応する。
まず、記憶制御装置10の周辺構成について説明し、次に、記憶制御装置10の構成を説明する。ホスト13は、例えば、パーソナルコンピュータ、サーバコンピュータ、メインフレーム、エンジニアリングワークステーション等のようなコンピュータ装置として構成される。ホスト13は、例えば、LAN(Local Area Network)やSAN(Storage Area Network)等の通信ネットワークCN1を介して、記憶制御装置10に接続される。ホスト13がいわゆるオープン系のサーバである場合、ホスト13と記憶制御装置10とは、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)やFCP(Fibre Channel Protocol)等のプロトコルに従って、データ通信を行う。ホスト13がメインフレームマシンである場合、ホスト13と記憶制御装置10とは、例えば、FICON(Fibre Connection:登録商標)、ESCON(Enterprise System Connection:登録商標)、ACONARC(Advanced Connection Architecture:登録商標)、FIBARC(Fibre Connection Architecture:登録商標)等のプロトコルに従って、データ通信を行う。
管理端末14は、記憶制御装置10の構成等を管理するものである。管理端末14は、例えば、LAN等の通信ネットワークCN2を介して、記憶制御装置10内のサービスプロセッサ(以下、SVP)160に接続されている。また、管理端末14は、例えば、インターネット等の他の通信ネットワークCN5を介して、管理サーバ15に接続することもできる。管理サーバ15は、例えば、記憶制御装置10のベンダ等に設置されており、複数の管理端末14を管理できるようになっている。
次に、記憶制御装置10の構成を説明する。記憶制御装置10は、記憶部20と、コントローラ30とに大別可能である。記憶部20は、例えば、複数のディスクドライブ210をアレイ状に配設することにより構成される。
ディスクドライブ210としては、例えば、ハードディスクドライブ、半導体メモリドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープドライブ等の種々の記憶デバイスを用いることができる。また、ハードディスクドライブを使用する場合、例えば、FC(Fibre Channel)ディスク、SATA(Serial AT Attachment)ディスク、SCSI(Small Computer System Interface)ディスクのように、種々の種類のハードディスクドライブを利用可能である。また、記憶部20内に、異なる種類の記憶デバイスを混在させることもできる。
RAIDレベル等によっても相違するが、所定数のディスクドライブ210によってRAIDグループ212が構成されている。例えば、3個のデータディスクと1個のパリティディスクとから、RAID5の構成を得ることができる(3D+1P)。あるいは、例えば、4個のデータディスクと2個のパリティディスクとから、RAID6の構成を得ることもできる(4D+2P)。さらに、1個の正ディスクと1個の副ディスクとから、RAID1の構成を得ることもできる。
RAIDグループ212は、冗長化された物理的な記憶領域であり、物理的な記憶デバイスと呼ぶこともできる。このRAIDグループ212の提供する物理的な記憶領域上に、論理的な記憶領域213を1つまたは複数設定することができる。論理的な記憶領域213は、例えば、論理ボリューム(図中「LU」と表示)と呼ばれる。この論理ボリューム213は、ホスト13のアクセス対象となる。ホスト13と論理ボリューム213との間に通信パスが設定されると、ホスト13は、論理ボリューム213にデータを書き込んだり、論理ボリューム213からデータを読み出すことができる。
コントローラ30は、記憶制御装置10の動作を制御するものである。コントローラ30は、例えば、チャネルアダプタ(以下、CHA)110と、ディスクアダプタ(以下、DKA)120と、キャッシュメモリ130と、共有メモリ140と、接続制御部150と、SVP160とを備えて構成可能である。
各CHA110は、各ホスト13との間のデータ転送を制御するもので、複数の通信ポート111を備えている。記憶制御装置10には、複数のCHA110を設けることができる。CHA110は、例えば、オープン系サーバ用CHA、メインフレーム系用CHA等のように、ホスト13の種類に応じて用意される。各CHA110は、それぞれに接続されたホスト13から、データの読み書きを要求するコマンドを受信し、ホスト13から受信したコマンドに従って動作する。
各DKA120は、記憶制御装置10内に複数個設けることができる。各DKA120は、各ディスクドライブ210との間のデータ通信を制御する。各DKA120と各ディスクドライブ210とは、例えば、SAN等の通信ネットワークCN4を介して接続されており、ファイバチャネルプロトコルに従ってブロック単位のデータ転送を行う。各DKA120は、ディスクドライブ210の状態を随時監視しており、この監視結果は、内部ネットワークCN3を介して、SVP160に送信される。各CHA110及び各DKA120をそれぞれ別々の制御回路基板として構成することもできるし、一つの制御回路基板にCHA機能及びDKA機能をそれぞれ設けることもできる。
キャッシュメモリ130は、例えば、ユーザデータ等を記憶する。キャッシュメモリ130は、例えば、不揮発メモリから構成可能であるが、揮発メモリから構成することもできる。キャッシュメモリ130が揮発メモリから構成される場合、キャッシュメモリ130はバッテリによってバックアップされる。
共有メモリ(あるいは制御メモリ)140は、記憶制御装置10の作動を制御するための各種制御情報や管理情報等が記憶される。共有メモリ140は、例えば、不揮発メモリから構成される。制御情報等は、複数の共有メモリ140によって多重管理することができる。
なお、キャッシュメモリ130と共有メモリ140とを別々のメモリ回路基板として構成してもよいし、一つのメモリ回路基板内にキャッシュメモリ130及び共有メモリ140を実装してもよい。また、キャッシュメモリの一部を制御情報を格納するための制御領域として使用し、他の部分をデータを記憶するためのキャッシュ領域として使用する構成でもよい。
接続制御部150は、各CHA110と、各DKA120と、キャッシュメモリ130と、共有メモリ140とをそれぞれ接続するものである。接続制御部150により、全てのCHA110,DKA120は、キャッシュメモリ130及び共有メモリ140にそれぞれアクセス可能である。接続制御部150は、例えば、クロスバスイッチ等として構成される。
SVP160は、LAN等の内部ネットワークCN3を介して、各CHA110及び各DKA120とそれぞれ接続されている。あるいは、SVP160は、通信ネットワークCN3を介して、各CHA110にのみ接続することもできる。SVP160は、通信ネットワークCN2を介して、管理端末14に接続されており、記憶制御装置10内の各種状態を収集して、管理端末14に提供する。また、管理端末14あるいは管理サーバ15は、SVP160を介して、記憶制御装置10の構成等を変更することもできる。
以上のように、コントローラ30は、複数種類の基板(CHA110,DKA120等)をコントローラ筐体に実装することにより、構成することができる。これに限らず、単一の制御基板上に、上述した各機能(ホスト13との通信機能、ディスクドライブ210との通信機能、データ処理機能等)を実装する構成でもよい。この場合、複数の制御基板を設けて冗長構成とするのが、記憶制御装置10の信頼性向上の観点からは好ましい。
図3は、コントローラ30のプログラム構成の一部を模式的に示す説明図である。コントローラ30は、エラー状況検出処理31と、障害リカバリ処理32と、ドライブコピー処理33及びコレクションコピー34を、それぞれ実現させる。これらの処理31〜34は、例えば、コンピュータプログラムとして構成されている。各処理の詳細は後述するが、エラー状況検出処理31は、各ディスクドライブ210の応答等に基づいて、各ディスクドライブ210で発生したエラーの状況を監視するための処理である。
障害リカバリ処理32は、エラーの検出されたディスクドライブ(以下、エラードライブまたは障害ドライブあるいは回復元ドライブとも呼ぶ)210についてデータの回復が行われている期間中に、ホスト13からのアクセス要求を処理する。
ドライブコピー処理33は、エラードライブからスペアドライブへのデータコピーを制御するものである。コレクションコピー処理34は、エラードライブと同一RAIDグループ212に属する他のディスクドライブ210に記憶されているデータ及びパリティに基づいて、エラードライブに記憶されているデータを復元し、復元されたデータをスペアドライブにコピーさせるものである。
上述の各処理31〜34は、それぞれ複数のテーブルT11〜T14を利用して、それぞれの機能を実現する。各テーブルT11〜T14は、共有メモリ140にそれぞれ記憶されている。各テーブルT11〜T14の詳細は別の図と共に後述するが、先に簡単に説明する。
エラー管理テーブルT12は、各ディスクドライブ210毎に、それぞれディスクドライブ210で生じたエラーの回数を、エラータイプ毎に分類して管理するためのテーブルである。閾値管理テーブルT13は、各エラータイプ毎にそれぞれ予め設定されている第1閾値Th1及び第2閾値Th2を管理するためのテーブルである。
エラー状況検出処理31は、これらのテーブルT12及びT13を用いて、各ディスクドライブ210にどのような種類のエラーがどの程度発生したかを監視する。エラー状況検出処理31により検出されたエラー状況に基づいて、障害リカバリ処理32,ドライブコピー処理33及びコレクションコピー処理34が、それぞれ起動される。例えば、あるディスクドライブ210において、エラーが検出された場合、このエラードライブ210に関しては、障害リカバリ処理32が行われる。
エラー回数が第1閾値Th1以上第2閾値Th2未満の場合、そのエラードライブ210について、ドライブコピー処理33が開始される。さらに、エラー回数が第2閾値Th2以上になると、そのエラードライブ210について、コレクションコピー処理34が行われる。ここで、ドライブコピー処理33からコレクションコピー処理34に移行する場合は、ドライブコピー処理33によってコピーが完了した位置を示すコピーポインタ35が、コレクションコピー処理34に受け継がれる。コピーポインタ35には、次にコピーすべき位置、即ち、次に回復されるべきデータを格納している格納先のアドレス情報が、論理ブロックアドレス(LBA)の形式で示されている。
ドライブ番号管理テーブルT11は、各ディスクドライブ210がそれぞれ有する実ドライブ番号と仮想ドライブ番号との対応関係を管理するためのものである。ドライブステータス管理テーブルT14は、各ディスクドライブ210のステータスを管理するためのものである。このドライブステータスは、例えば、ドライブアクセスレベルと呼び変えることもできる。
詳細は後述するが、コントローラ30は、複数のテーブルセットT1,T2(図8参照)を切り替えて使用可能となっている。各テーブルセットT1,T2には、それぞれドライブ番号管理テーブルテーブルT11及びドライブステータス管理テーブルT14が含まれている。コントローラ30は、ドライブコピー処理33からコレクションコピー処理34へ移行する際に、データ回復先のディスクドライブ(スペアドライブ)の同一性を維持するために、待機しているテーブルセット中の各テーブルT11,T14の内容を予め書き換えておく。そして、コントローラ30は、書換が完了すると、書き換えられたテーブルセットに切り替えて、制御を続行する。
図4は、ドライブ番号管理テーブルT11の一例を示す説明図である。上述のように、ドライブ番号管理テーブルT11は、実ドライブ番号と仮想ドライブ番号とを対応付けて管理している。
実ドライブ番号とは、現実の各ディスクドライブ210をそれぞれ一意に特定するための識別情報である。図中では、説明の便宜上、数字に”r”を添えて表現している。仮想ドライブ番号とは、RAIDグループ212を構成する各ディスクドライブ210の番号が連続した値となるように設定された仮想的な識別情報である。図中では、数字に”v”を添えて表現している。
このように、実ドライブ番号と仮想ドライブ番号とを分けて管理することにより、ディスクドライブ210の実装位置を変えることなく、RAIDグループ212の構成を柔軟に変更することができる。
図4の上側には、ドライブ番号の対応関係を変更する前の様子が示されている。エラードライブの回復を行う前の状態、即ち、各ディスクドライブ210が正常に稼働している状態では、スペアドライブ(100r)には、”100v”という仮想ドライブ番号が割り当てられているとする。
図4の下側には、ドライブ番号の対応関係を変更した後の様子が示されている。エラードライブ(1r)の回復が開始されると、スペアドライブ(100r)には仮想ドライブ番号”1v”が割り当てられ、エラードライブ(1r)には仮想ドライブ番号”100v”は割り当てられる。これにより、スペアドライブ(100r)は、実際の位置を移動することなく、RAIDグループ212に参加する。
図5は、上述の様子を模式的に示す説明図である。図5(a)は通常の場合を示し、図5(b)はエラードライブを回復させる場合を示す。通常の場合では、各ディスクドライブ210(1)〜210(4)には、連続する仮想ドライブ番号”0v”〜”3v”が割り当てられている。スペアドライブ210(SP)には、仮想ドライブ番号”100v”が割り当てられている。
図5(b)に示すように、ディスクドライブ210(2)に第2閾値Th2以上のエラーが発生し、ディスクドライブ210(2)が閉塞されたとする。このエラードライブ210(2)に記憶されているデータは、他のディスクドライブ210(1),210(3),210(4)に分散して記憶されているデータ及びパリティに基づいて、論理的に復元することができる。
ここで、スペアドライブ210(SP)の仮想ドライブ番号を”1v”とし、エラードライブ210(2)の仮想ドライブ番号を”100v”とすることにより、データの復元されたスペアドライブ210(SP)をエラードライブ210(2)の代わりにRAIDグループ212に組み込むことができる。
図6は、エラー管理テーブルT12及び閾値管理テーブルT13の一例をそれぞれ示す説明図である。図6の上側に示すエラー管理テーブルT12は、例えば、実ドライブ番号と、エラータイプと、エラーカウント値とを対応付けることにより構成される。即ち、エラー管理テーブルT12は、各実ドライブ番号毎に、それぞれのディスクドライブ210で生じたエラーの回数を、エラータイプ別に分類して集計している。
図6の下側に示す閾値管理テーブルT13は、各エラータイプ毎に、第1閾値Th1及び第2閾値Th2をそれぞれ対応付けて管理している。各閾値Th1,Th2は、例えば、管理端末14や管理サーバ15から、SVP160を介して、変更可能である。
エラータイプとしては、例えば、メディアエラー、メカニカルエラー、インターフェースエラー等を挙げることができる。メディアエラーとは、ハードディスクに関するエラーを意味する。メカニカルエラーとは、ディスクドライブ210内の機構に関するエラーを意味する。インターフェースエラーとは、ディスクドライブ210とDKA120との間のインターフェースに関するエラーを意味する。各エラータイプ毎に、それぞれ第1閾値Th1及び第2閾値Th2をそれぞれ設定可能である。
第1閾値Th1は、ドライブコピーを開始するための閾値である。第2閾値Th2は、コレクションコピーを開始するための閾値である。いずれかのエラータイプにおいて、エラーカウント値ECが第1閾値Th1以上になると、ドライブコピーが開始される。エラーカウント値ECがさらに上昇して第2閾値Th2に達すると、ドライブコピーに代えて、コレクションコピーが引き続き実行される。
図7は、ドライブステータス管理テーブルT14の一例を示す説明図である。ドライブステータス管理テーブルT14は、例えば、各仮想ドライブ番号毎に、ドライブステータスをそれぞれ管理している。ドライブステータスとしては、例えば、”通常”、”ドライブコピー中”、”コレクションコピー中”及び”コレクションアクセス”を挙げることができる。
”通常”ステータスは、そのディスクドライブ210が正常であることを示す。”ドライブコピー中”ステータスは、そのディスクドライブ210について、ドライブコピーが行われてることを示す。”コレクションコピー中”ステータスは、そのディスクドライブ210について、コレクションコピーが行われていることを示す。”コレクションアクセス”は、そのディスクドライブ210と同一のRAIDグループ212に属する他の各ディスクドライブ210を利用することにより、ホスト13からのアクセス要求が処理されていることを示す。
図7の最上部には、各ディスクドライブ210がそれぞれ正常に稼働している場合が示されている。もしも、”1v”の仮想ドライブ番号を有するディスクドライブ210のエラーカウント値ECが第1閾値Th1以上になった場合、このエラードライブ”1v”のステータスは、”通常”から”ドライブコピー中”に遷移し、スペアドライブへのデータコピーが開始される。
図8は、コントローラ30がテーブルセットT1,T2を切り替えて使用する様子を模式的に示す説明図である。カレントテーブルポインタ36は、現在使用中のテーブルセットを示すものである。
ここで、ドライブコピーからコレクションコピーに移行する場合、複数の状態変更が行われる。第1の状態変更として、図7に示すドライブステータス管理テーブルT14に示すように、仮想ドライブ番号「1v」のドライブステータスは、”ドライブコピー中”から”コレクションコピー中”に変更される。
第2の状態変更として、図4に示すドライブ番号管理テーブルT11に示すように、ドライブ番号1r,100rが入れ替えられる。
第2の状態変更として、図4に示すドライブ番号管理テーブルT11に示すように、ドライブ番号1r,100rが入れ替えられる。
もしも、第1の状態変更が行われた後、第2の状態変更が行われるまでの間に、時間的な隙間が生じると、ドライブ1rに対して、コレクションコピーが実施されてしまう。正しくは、ドライブ100rに対してコレクションコピーが行われなければならない。このように、ドライブステータスとドライブ番号とは、互いに密接に関連する。
従って、両者の内容がほんの一瞬でも適合しない場合、例えば、コピー先ドライブを間違える等のような誤った動作が行われる可能性がある。本実施例の記憶制御装置は、マルチプロセッサ処理を行うため、あるプロセッサによる処理の隙間で、別のプロセッサの処理が動作する可能性がある。
そこで、図8(a)に示すように、現在使用されていない方のテーブルセットT2において、ドライブコピーからコレクションコピーへ移行させるために、互いに密接に関連するドライブ番号管理テーブルT11及びドライブステータス管理テーブルT14を、予め書き換えておく。
従って、両者の内容がほんの一瞬でも適合しない場合、例えば、コピー先ドライブを間違える等のような誤った動作が行われる可能性がある。本実施例の記憶制御装置は、マルチプロセッサ処理を行うため、あるプロセッサによる処理の隙間で、別のプロセッサの処理が動作する可能性がある。
そこで、図8(a)に示すように、現在使用されていない方のテーブルセットT2において、ドライブコピーからコレクションコピーへ移行させるために、互いに密接に関連するドライブ番号管理テーブルT11及びドライブステータス管理テーブルT14を、予め書き換えておく。
そして、図8(b)に示すように、各テーブルT11,T14の書き換えが完了した後で、カレントテーブルポインタ36をテーブルセットT1からテーブルセットT2に切り替えることにより、ドライブ番号の対応付けとドライブステータスの変更とを同時に行うことができる。従って、ドライブコピーで使用されていたコピー先ドライブをそのまま使用して、コレクションコピーを行うことができる。コピー先ドライブとは、スペアドライブとして記憶部20に実装されていたドライブであり、以下の説明では、回復先ドライブと呼ぶ場合もある。
図9は、記憶制御装置10の通常の動作を示すフローチャートである。以下の説明では、ステップを「S」と略記する。また、各フローチャートは、本発明の理解及び実施に必要な程度で開示されており、実際のプログラムとは相違する。
コントローラ30は、ホスト13からアクセス要求が発行されたか否かを監視している(S11)。ホスト13からのアクセス要求が発行された場合(S11:YES)、コントローラ30は、このアクセス要求のコマンドタイプを判別する(S12)。
ホスト13からリードコマンドが発行された場合、コントローラ30は、ホスト13から要求されたデータがキャッシュメモリ130に記憶されているか否かを判定する(S13)。要求されたデータがキャッシュメモリ130に記憶されている場合(S13:YES)、コントローラ30は、そのデータをキャッシュメモリ130から読み出して、ホスト13に送信する(S15)。ホスト13から要求されたデータがキャッシュメモリ130に記憶されていない場合(S13:NO)、コントローラ30は、要求されたデータをディスクドライブ210から読出して、キャッシュメモリ130に記憶させる(S14)。そして、コントローラ30は、ディスクドライブ210から読み出されたデータを、ホスト13に送信する(S15)。
ホスト13からライトコマンドが発行された場合、コントローラ30は、ホスト13から受信したライトデータを、キャッシュメモリ130に記憶させる(S16)。コントローラ30は、ライトデータをキャッシュメモリ130に記憶させた時点で、ホスト13にライトコマンドの処理が完了した旨を通知する(S17)。その後、コントローラ30は、適当なタイミングを見計らって、キャッシュメモリ130に記憶されたライトデータを、所定のディスクドライブ210に書き込む(S18)。
所定のディスクドライブ210とは、ホスト13により指定された書込み先の論理ボリューム213を構成するディスクドライブ210である。なお、例えば、RAID5やRAID6等のように、パリティデータを生成する場合、コントローラ30は、パリティデータを算出して記憶させる。パリティデータは、所定のパリティドライブに格納される。
ライトデータをディスクドライブ210に書き込む処理をディステージ処理と呼ぶ。ディステージされたライトデータのステータスは、ダーティステータスからクリーンステータスに変化する。コントローラ30は、ディステージ処理を終えると、ライトデータのステータスを更新させる。なお、ライトデータをキャッシュメモリ130に記憶させた時点で、ホスト13に処理完了を通知する方式をライトアフター方式または非同期書込み方式と呼ぶが、これに限らず、ライトデータをディスクドライブ210に書き込んでからホスト13に処理完了を通知する構成でもよい。
ホスト13から発行されたコマンドがリードコマンドでもライトコマンドでもない場合、コントローラ30は、その他のコマンド処理を実行する(S19)。その他のコマンドとしては、例えば、論理ボリューム213の空き容量やステータスを問い合わせる照会コマンド等を挙げることができる。
図10は、エラー状況検出処理31の詳細を示すフローチャートである。コントローラ30(詳しくは、DKA120内のプロセッサ)は、ディスクドライブ210へリードコマンドまたはライトコマンドを発行する(S21)。
コントローラ30は、例えば、ディスクドライブ210の応答状態に基づいて、エラーが発生したか否かを判定する(S22)。予め登録されているエラータイプのいずれかに該当するエラーが検出された場合(S22:YES)、コントローラ30は、そのエラーの検出されたディスクドライブ210について、検出されたエラーパターンのエラーカウント値ECを1つ増加させる(S23)。
コントローラ30は、エラーカウント値ECが第1閾値Th1に達したか否かを判定する(S24)。エラーカウント値ECが第1閾値Th1に達していない場合(S24:NO)、コントローラ30は、障害リカバリ処理32を起動させる(S50)。エラーに応じたアクセス要求処理を行うためである。
エラーカウント値ECが第1閾値Th1に達した場合(S24:YES)、コントローラ30は、エラーカウント値ECが第2閾値に達したか否かを判定する(S25)。エラーカウント値ECが第2閾値Th2に達していない場合(S25:NO)、コントローラ30は、エラーの検出されたディスクドライブ(エラードライブ)について、ドライブコピー処理33を起動させる(S30)。エラードライブに回復不能な障害が発生して閉塞されるよりも前に、そのエラードライブに記憶されているデータを、スペアドライブに予め移行させておくためである。ドライブコピーを起動させる処理については後述する。
もしも、そのエラードライブのエラーカウント値ECが第2閾値Th2に達した場合(S25:YES)、コントローラ30は、そのエラードライブを閉塞させて、コレクションコピー処理34を開始させる(S40)。コレクションコピーの起動処理については、さらに後述する。
図11は、図10中のS30で示したドライブコピー起動処理の詳細を示すフローチャートである。ドライブコピー起動処理は、ドライブコピー処理33を起動させるための処理である。
コントローラ30は、記憶部20に実装されているスペアドライブを検索し(S31)、使用可能なスペアドライブが存在するか否かを判定する(S32)。使用可能なスペアドライブとは、未使用のディスクドライブ210であって、コピー元であるエラードライブと同一サイズ以上の記憶容量を有するディスクドライブである。
ドライブコピーに使用可能なスペアドライブが発見できない場合(S32:NO)、ドライブコピーを行うことができないため、コントローラ30は、障害リカバリ処理32を実行し、ホスト13からのアクセス要求を処理する(S50)。
ドライブコピーに使用可能なスペアドライブを発見した場合(S32:YES)、コントローラ30は、そのスペアドライブを回復先ドライブとして確保し、また、回復元であるエラードライブ(回復元ドライブとも呼ぶ)のドライブステータスを”ドライブコピー中”に変更させる(S33)。そして、コントローラ30は、ドライブコピー処理33を起動させる(S34)。
より詳しくは、図10,図11に示す各フローチャート及び後述するフローチャートは、DKA120内のマイクロプロセッサによって実行される。各ディスクドライブ210は、それぞれ個別に動作可能である。あるディスクドライブ210のエラーカウント値が第2閾値Th2以上になったことを検出したDKA120は、共有メモリ140に、ドライブコピー処理の起動を指示するための起動メッセージを書き込む。このメッセージには、ドライブコピーの対象となるディスクドライブ210を特定するための情報(例えば、仮想ドライブ番号)が含まれている。
共有メモリ140に置かれたメッセージを別のDKA120が発見すると、このDKA120は、ドライブコピー処理33を開始させる。上述したS34では、起動メッセージを共有メモリ140に書き込むことを示している。このように、ドライブコピー処理33の起動を指示するDKA120と、ドライブコピー処理33を実行するDKA120とは、それぞれ異なる場合がある。結果的に、同一のDKA120が、ドライブコピーの起動指示とドライブコピーの実行の両方を担当する場合もある。
図12は、ドライブコピー処理33の詳細を示すフローチャートである。まず最初に、コントローラ30は、回復対象のアドレス(図中、「回復対象LBA」)を0にリセットする(S301)。回復対象のアドレスとは、コピーすべきデータのアドレスである。回復対象のアドレスをリセットすることにより、回復元ドライブ(エラードライブ)のデータ領域の先頭アドレスから順番に、ドライブコピーが開始されることになる。
コントローラ30は、ドライブステータス管理テーブルT14を参照して、回復元ドライブのステータスを確認する(S302)。回復元ドライブのステータスが”ドライブコピー中”である場合、S304〜S307によるドライブコピーが実行される。図11と共に述べたように、S33において、回復元ドライブのステータスは”ドライブコピー中”に変更されているため、S304に移る。
コントローラ30は、回復元ドライブの回復対象アドレスから、所定サイズSB分のデータを読み出して、キャッシュメモリ130に記憶させる(S304)。S301で、回復対象アドレスはリセットされているため、回復元ドライブのデータ領域の先頭からサイズSB分のデータが読み出されることになる。
ここで、所定サイズSBは、例えば、8スロット分のデータサイズとして設定することができる。スロットとは、キャッシュメモリ130に記憶されているデータを管理するための最小単位である。1つのスロットは、例えば、96個のブロックから構成することができる。従って、SBは、例えば、8×96=768個のブロック数として設定することができる。この数値は、一例であって、本発明はこれに限定されない。
コントローラ30は、キャッシュメモリ130に記憶させたサイズSB分のデータを、回復先のディスクドライブのデータ領域の先頭から書き込む(S305)。回復先のディスクドライブとは、確保されたスペアドライブである。サイズSB分のデータは、回復元ドライブにおける記憶位置と同一の記憶位置で、回復先ディスクドライブのデータ領域に格納される。
コントローラ30は、回復対象のアドレスをSBだけ増加させ(S306)、回復元ドライブの全てのデータを読み出したか否かを判定する(S307)。即ち、コントローラ30は、回復対象アドレスと回復元ドライブの終端アドレスとを比較し、回復対象アドレスが終端アドレスを超えたか否かを判定する。未だコピーされていないデータが残っている場合(S307:NO)、コントローラ30は、S302に戻り、上述のステップS302〜S307を繰り返す。これにより、回復元ドライブに記憶されたデータは、サイズSBずつ読み出されて、回復先ドライブに書き込まれていく。回復元ドライブの全データを回復先ドライブにコピーし終わった場合(S307:YES)、コントローラ30は、ドライブコピー処理を終了する。
ところで、S302〜S307のドライブコピーを繰り返す度に、回復元ドライブのステータスが検査される(S303)。従って、もしも、ドライブコピー中に、回復元ドライブのステータスが”ドライブコピー中”から”コレクションコピー中”に変更された場合は、ドライブコピーが直ちに中断されて、コレクションコピー(S308〜S310)に移行する。
回復元ドライブのステータスは、図10中と共に述べたコレクションコピー起動処理(S40)の中で、”コレクションコピー中”に変更される。回復元ドライブにおいて検出されたエラーカウント値ECが第2閾値Th2に達した場合、コレクションコピー起動処理が開始され、この処理の中で、回復元ドライブのステータスは、”コレクションコピー中”に変更される。詳細は、図13と共に後述する。
図12に戻って、コレクションコピーの動作を説明する。回復元ドライブのステータスが”ドライブコピー中”から”コレクションコピー中”に変更されると、コントローラ30は、S308を実行する。
コントローラ30は、回復元ドライブの属するRAIDグループ212と同一のRAIDグループ212に属する他のディスクドライブ210から、データ及びパリティをそれぞれ読み出して、読み出したデータをキャッシュメモリ130に記憶させる(S308)。
より詳しくは、コントローラ30は、同一RAIDグループ212内の他の各ディスクドライブ210のデータ領域にアクセスし、回復対象アドレスからサイズSB分のブロックデータをそれぞれ読み出す。
コントローラ30は、キャッシュメモリ130に記憶された各データ及びパリティに基づいて、回復元ドライブに記憶されていたデータを復元させ(S309)、復元されたデータを回復先ドライブの所定位置に書き込む(S310)。所定位置とは、回復対象アドレスで示された格納場所である。
ここで、留意すべき点は、第1に、ドライブコピー(S304〜S306)とコレクションコピー(S308〜S310,S306)とは、回復対象アドレスの管理(S306)を共有している点である。従って、ドライブコピーを中断してコレクションコピーに移行した場合でも、ドライブコピーが完了した次の記憶領域(回復対象アドレス)から、重複なく、かつ、隙間無く、コレクションコピーを開始することができる。
第2に、ドライブコピー処理の中で、コレクションコピーが行われている点に留意しなければならない。即ち、ドライブコピーとコレクションコピーとは、それぞれ別々のプログラム(ジョブ)として構成されているのではなく、ドライブコピー処理の中に、コレクションコピー機能が一体的に設けられている。従って、コピーの整合性を維持しながら、ドライブコピーからコレクションコピーに直ちに移行させることができる。
第3に、ドライブコピーとコレクションコピーとの切り替えは、回復元ドライブのステータスで定まり、回復元ドライブのステータスは、ドライブコピー処理とは別の処理(図10,図11,図13参照)によって設定される点に留意しなければならない。従って、回復元ドライブに生じるエラー状況の監視と、回復元ドライブから回復先ドライブへのデータ移行とを、それぞれ別々のプロセスとして並列的に実行させることができる。
特に、本実施例のコントローラ30は、複数のプロセッサ(各DKA120内のプロセッサ)を備えるため、エラー状況の監視処理及びコピー処理が特定のプロセッサ(DKA120)に集中するのを防止して、各DKA120間で負荷を分散させることができる。
さらに、各DKA120は、それぞれ個別に動作するため、ディスクドライブ210とのデータ入出力を行うDKA120が、そのときのデータ入出力に対するディスクドライブ210の応答状態に基づいて、ディスクドライブ210のエラー状況を検出し、ドライブコピー起動処理やコレクションコピー起動処理を開始させる。そして、別のタイミングで、別のDKA120が、共有メモリ140に残されたメッセージを確認して、ドライブコピー処理を実行する。このように、本実施例では、それぞれ独立して動作する複数のDKA120を連携させて、ディスクドライブ210のエラー状況の監視処理とコピー処理(ドライブ回復処理)とを並列動作させる。
なお、S303で、回復元ドライブのステータスが”ドライブコピー中”でも”コレクションコピー中”でも無い場合、ドライブコピー処理を終了する。
図13は、図10中にS40で示されたコレクションコピー起動処理を示すフローチャートである。図10で述べたように、ディスクドライブ210のエラーカウント値ECが第2閾値Th2に達すると、コレクションコピー起動処理(S40)が開始される。
コントローラ30は、ドライブステータス管理テーブルT14を参照し、エラーの検出されたディスクドライブ(回復元ドライブ)のステータスを確認する(S401)。コントローラ30は、回復元ドライブのステータスが”ドライブコピー中”に設定されているか否かを判定する(S402)。
回復元ドライブのステータスが”ドライブコピー中”である場合(S402:YES)、コントローラ30は、回復元ドライブのステータスを”コレクションコピー中”に変更させ(S403)、このステータス変更と同時に、ドライブ番号管理テーブルT11の内容を書き換える(S404)。S404では、図5と共に述べたように、エラーの検出されたエラードライブとスペアドライブとの仮想ドライブ番号を入れ替える。そして、コントローラ30は、障害リカバリ処理(S50)を実行する。
図8と共に述べたように、カレントテーブルポインタ36を切り替えることにより、ドライブステータスの変更(S403)及びドライブ番号の変更(S404)は、同時に行われる。これにより、上述のように、コピー先ドライブを間違える等の不当な動作が発生するのを防止している。
ここで、図12を参照する。回復元ドライブのステータスが図13中のS403で”コレクションコピー中”に変更されると、図12中のS303でコレクションコピーの開始指示があったと判断される。従って、コントローラ30は、ドライブコピーを中断し、S308→S309→S310→S306→S307→S302→S303→S308の順番で各ステップを繰り返すことにより、コレクションコピーを実行する。
図13に戻る。回復元ドライブのステータスが”ドライブコピー中”ではない場合(S402:NO)、コントローラ30は、回復元ドライブのステータスを”コレクションアクセス”に変更する(S405)。即ち、ドライブコピー処理が実行されていない場合、回復元ドライブのステータスを”コレクションアクセス”に変更する。(S405)
コントローラ30は、スペアドライブを検索し(S406)、使用可能なスペアドライブが存在するか否かを判定する(S407)。使用可能なスペアドライブが発見された場合(S407:YES)、コントローラ30は、回復元ドライブのステータスを”コレクションコピー中”に変更し(S408)、これと同時に、回復元ドライブとスペアドライブとの間で仮想ドライブ番号を入れ替える(S409)。コレクションコピーの実行準備が整えた後、コントローラ30は、コレクションコピーの実行を指示し(S410)、障害リカバリ処理(S50)を実行する。上述のように、コントローラ30は、例えば、共有メモリ140に所定のメッセージを書き込むことにより、指示を与える。
ここで、S410で実行が指示されるコレクションコピー処理は、図12と共に述べたコレクションコピーとは異なる。図12中のコレクションコピーは、ドライブコピー処理の一部として構成されているが、S410で指示されるコレクションコピー処理は、ドライブコピー処理から分離されている。
図14は、図13中のS410で指示されるコレクションコピー処理の詳細を示すフローチャートである。このコレクションコピー処理は、図12で述べたコレクションコピーと同様に動作する。
コントローラ30は、回復対象アドレスを初期化した後(S4110)、ドライブステータス管理テーブルT14を用いて回復元ドライブのステータスを参照し(S4111)、回復元ドライブのステータスが”コレクションコピー中”であるか否かを判定する(S4112)。
図13中のS408において、回復元ドライブのステータスは”コレクションコピー中”に変更されているため、S4112では「YES」と判定されて、S4113に移る。コントローラ30は、回復元ドライブの属するRAIDグループ内の他のディスクドライブ210からサイズSB分のデータ及びパリティをそれぞれ読出し、読み出したデータ及びパリティをキャッシュメモリ130に記憶させる(S4113)。
コントローラ30は、キャッシュメモリ130に記憶されたデータ及びパリティに基づいて、回復元ドライブ内のデータを復元し(S4114)、この復元されたデータを回復先ドライブの所定位置に書き込む(S4115)。コントローラ30は、回復対象アドレスをSBだけ増加させた後(S4116)、回復元ドライブの全データを読み出したか否か(全データを復元したか否か)を判定する(S4117)。回復元ドライブに記憶されていたはずの全データを復元して、回復先ドライブにコピーするまでの間、S4111〜S4117のステップが繰り返される。即ち、回復元ドライブ内に記憶されているはずのデータは、ブロック数SB分ずつ復元されて、回復先ドライブに書き込まれる。
図15,図16に基づいて、障害リカバリ処理の詳細を説明する。図10,図11,図13でも示したように、ディスクドライブ210にエラーが検出されると、このエラーを回避してデータの入出力を行うために、障害リカバリ処理が実行される。
図15は、エラーが検出されている期間中に、ホスト13から発行されたリードコマンドを処理するためのフローチャートである。コントローラ30は、ホスト13からのリードコマンドを受信すると(S501)、リードコマンド内のアドレスを「仮想ドライブ番号+論理ブロックアドレス」の形式に変換する(S502)。
コントローラ30は、ドライブステータス管理テーブルT14を参照して、リード対象のディスクドライブ210(以下、「リード対象ドライブ」)のステータスを判定する(S503)。
リード対象ドライブのステータスが”コレクションコピー中”である場合、コントローラ30は、リード対象のアドレス(図中、「リード対象LBA」)が、回復対象アドレスよりも小さいか否かを判定する(S504)。上述のように、ドライブのデータ領域の先頭アドレスから順番にサイズSB分ずつデータが回復されていく。従って、リード対象アドレスが回復対象アドレスよりも小さい場合とは、回復済みのデータのリード要求であることを意味する。逆に、リード対象アドレスが回復対象アドレスよりも大きい場合とは、未だ回復されていないデータのリード要求であることを意味する。
リード対象アドレスが回復対象アドレスよりも大きい場合(S504:NO)、コントローラ30は、ドライブ番号管理テーブルT11を参照することにより、リード対象ドライブと同一のRAIDグループ212に属する他の各ディスクドライブ210の実ドライブ番号を特定する(S505)。そして、コントローラ30は、特定された各ディスクドライブ210から、リード要求されたデータに対応する他のデータ及びパリティをそれぞれ読出し(S506)、リード要求されたデータを復元する(S507)。コントローラ30は、復元されたデータをキャッシュメモリ130に記憶させた後(S508)、この復元されたデータをホスト13に送信する(S509)。
S503において、リード対象ドライブのステータスが”コレクションアクセス”であると判定された場合は、S504をスキップして、S505に移る。コントローラ30は、上述したデータの復元を行って(S505〜S508)、ホスト13にデータを送信する(S509)。
S503において、リード対象ドライブのステータスが”通常”または”ドライブコピー中”のいずれかに設定されている場合は、S510に移る。また、リード対象ドライブのステータスが”コレクションコピー中”の場合、リード対象アドレスが回復対象アドレスよりも小さいときは(S504:YES)、S510に移る。
コントローラ30は、リード対象ドライブの実ドライブ番号を特定し(S510)、特定されたディスクドライブ210からリード対象のデータを読み出す(S511)。コントローラ30は、読み出したデータをキャッシュメモリ130に記憶させてから(S512)、ホスト13に送信する(S513)。
より詳しくは、ホスト13からのコマンド受信は、CHA110によって行われる。CHA110は、受信したリードコマンドを共有メモリ140に書き込む。各DKA120は、共有メモリ140を随時参照しており、リードコマンドを発見すると、要求されたデータをディスクドライブ210から読み出してキャッシュメモリ130に記憶させる。DKA120は、要求されたデータがキャッシュメモリ130に記憶された旨のメッセージを、共有メモリ140に書き込む。各CHA110は、共有メモリ140を随時参照しており、DKA120からのメッセージを発見すると、キャッシュメモリ130に記憶されたデータを読み出して、ホスト13に送信する。
図16は、エラーが検出されている期間中に、ホスト13から発行されたライトコマンドを処理するためのフローチャートである。コントローラ30は、ホスト13からライトコマンドを受信すると(S521)、ライトコマンド内のアドレスを「仮想ドライブ番号+論理ブロックアドレス」の形式に変換する(S522)。
なお、より詳しくは、図9で述べたように、コントローラ30は、ホスト13からのコマンドを受信し(S521)、ライトデータをキャッシュメモリ130に記憶させた時点で、ホスト13に書込み完了を報告する(ライトアフター方式)。その後、コントローラ30は、S522以下のステップを実行する。但し、キャッシュメモリ130に障害が生じている場合には、ディステージ処理(ドライブへのライトデータ書込み処理)を完了した後で、ホスト13に書込み完了を報告する。
なお、より詳しくは、図9で述べたように、コントローラ30は、ホスト13からのコマンドを受信し(S521)、ライトデータをキャッシュメモリ130に記憶させた時点で、ホスト13に書込み完了を報告する(ライトアフター方式)。その後、コントローラ30は、S522以下のステップを実行する。但し、キャッシュメモリ130に障害が生じている場合には、ディステージ処理(ドライブへのライトデータ書込み処理)を完了した後で、ホスト13に書込み完了を報告する。
S522に続いて、コントローラ30は、ライトデータに関する旧パリティのアドレス(仮想ドライブ番号+論理ブロックアドレス)を算出する(S523)。RAID5の場合、パリティを記憶するドライブは固定されておらず、所定の順序で、各ディスクドライブ210にパリティがそれぞれ記憶されていく。従って、ライト対象アドレスに基づいて、旧パリティの格納先アドレスを求めることができる。
コントローラ30は、ドライブステータス管理テーブルT14を参照して、ライト対象ドライブのステータスを判定する(S524)。ライト対象ドライブのステータスが”コレクションコピー中”である場合、コントローラ30は、リード対象アドレスが回復対象アドレスよりも小さいか否かを判定する(S525)。RAID5の場合、ライトデータを書き込む前に、旧データ読み出して新パリティを算出する必要があるためである。
リード対象アドレスが回復対象アドレスよりも大きい場合(S525:NO)、コントローラ30は、ライト対象ドライブと同一RAIDグループ212に属する他の各ディスクドライブ210の実ドライブ番号をそれぞれ特定する(S526)。
コントローラ30は、特定された各ディスクドライブ210から旧データをそれぞれ読み出し(S527)、読み出された旧データとライトデータ(新データ)とに基づいて、新パリティを算出する(S528)。以後の処理は、結合子1を介して、図17のフローチャートで行われる。
ライト対象ドライブのステータスが”コレクションアクセス”の場合、コントローラ30は、S525をスキップして、S526に移り、新パリティを算出する(S526〜S528)。
S524において、ライト対象ドライブのステータスが”通常”または”ドライブコピー中”のいずれかであると判定された場合、S529に移る。また、ライト対象ドライブのステータスが”コレクションコピー中”であって、リード対象アドレスが回復対象アドレスよりも小さい場合(S525:YES)、S529に移る。
コントローラ30は、ライトデータに関するパリティ、即ち、更新対象のデータに関して生成されている旧パリティを記憶しているディスクドライブ210のステータスを判定する(S529)。
RAID5の場合、特定の固定されたパリティドライブが存在するわけではないが、説明の便宜上、処理対象のパリティを記憶するディスクドライブ210をパリティドライブと呼ぶこととする。また、図中では、紙面の都合上、”コレクションアクセス”をCAと、”コレクションコピー中”をCCと、”通常”をNと、”ドライブコピー中”をDCと、それぞれ略記する。
パリティドライブのステータスが”コレクションアクセス(CA)”である場合、以後のステップをそれぞれスキップして、結合子1に移る。パリティドライブのステータスが”コレクションコピー中”の場合、コントローラ30は、リード対象アドレスが回復対象アドレスよりも小さいか否かを判定する(S530)。リード対象アドレスが回復対象アドレスよりも大きい場合(S530:NO)、旧パリティは未だ回復されていないため、S526に移り、他のディスクドライブ210から読み出したデータに基づいて、新パリティを算出する(S526〜S528)。
パリティドライブのステータスが”通常”または”ドライブコピー中”のいずれかである場合、コントローラ30は、S530をスキップして、S531に移り、ライト対象ドライブ及びパリティドライブの実ドライブ番号をそれぞれ特定する(S531)。
コントローラ30は、ライト対象ドライブから旧データを(S532)、パリティドライブから旧パリティをそれぞれ読み出す(S533)。コントローラ30は、ライトデータと旧データ及び旧パリティに基づいて、新パリティを算出する(S534)。
図17は、図16に続くフローチャートである。図17に示すフローチャートでは、ライトデータのライト対象ドライブへの書込み(ライトデータのディステージ処理)と、新パリティのパリティドライブへの書込み(パリティのディステージ処理)とを、それぞれ実行する。
コントローラ30は、ライト対象ドライブのステータスを再度判定する(S535)。ライト対象ドライブのステータスが”通常”、”ドライブコピー”、”コレクションコピー中”のいずれかである場合、コントローラ30は、ライト対象ドライブに、ホスト13から受信したライトデータを書き込む(S536)。
より詳しくは、S536では、”ドライブコピー”の場合、回復元ドライブへライトデータが書き込まれる。”ドライブコピー”の場合、回復先ドライブへのライトデータの書込みは、S538で行われる。
”コレクションコピー中”の場合、S536では、回復先ドライブ(スペアドライブ)へライトデータが書き込まれる。つまり、”コレクションコピー中”の場合、ライト対象ドライブは回復先ドライブとなる。
より詳しくは、S536では、”ドライブコピー”の場合、回復元ドライブへライトデータが書き込まれる。”ドライブコピー”の場合、回復先ドライブへのライトデータの書込みは、S538で行われる。
”コレクションコピー中”の場合、S536では、回復先ドライブ(スペアドライブ)へライトデータが書き込まれる。つまり、”コレクションコピー中”の場合、ライト対象ドライブは回復先ドライブとなる。
続いて、コントローラ30は、ライト対象ドライブのステータスが”ドライブコピー中”であるか否かを判定する(S537)。ライト対象ドライブのステータスが”ドライブコピー中”の場合、コントローラ30は、回復先ドライブにもライトデータを書き込む(S538)。即ち、コントローラ30は、回復元ドライブ及び回復先ドライブの両方に、ライトデータをそれぞれ記憶させる。コントローラ30は、回復先ドライブにライトデータを書き込んだ後、キャッシュメモリ130に記憶されているライトデータを破棄する(S539)。ディスクドライブ210への書込み(ディステージ処理)が完了し、キャッシュメモリ130にライトデータを保存しておく必要がないからである。
S537において、ライト対象ドライブのステータスが”ドライブコピー中”ではないと判定された場合(S537:NO)、コントローラ30は、S538をスキップし、S539に移って、キャッシュメモリ130上のライトデータを破棄する。ライト対象ドライブが”通常”または”コレクションコピー中”のいずれかである場合、S536でディステージ処理が完了するため、ライトデータを保存し続ける必要がない。
続いて、コントローラ30は、パリティのディステージ処理を行う。コントローラ30は、パリティドライブのステータスを判定する(S540)。パリティドライブのステータスが”通常”、”ドライブコピー”、”コレクションコピー中”のいずれかである場合、コントローラ30は、パリティドライブに新パリティを書き込む(S541)。そして、コントローラ30は、パリティドライブのステータスが”ドライブコピー中”であるか否かを判定する(S542)。
パリティドライブのステータスが”ドライブコピー中”の場合(S542:YES)、コントローラ30は、回復先ドライブに新パリティを書き込んだ後(S543)、キャッシュメモリ130上の新パリティを破棄する(S544)。パリティドライブのステータスが”ドライブコピー中”ではない場合(S542:NO)、コントローラ30は、S543をスキップして、S544に移り、キャッシュメモリ130上の新パリティを破棄する。また、S540において、パリティドライブのステータスが”コレクションアクセス”であると判定された場合、コントローラ30は、S541〜S543をスキップして、新パリティを破棄する(S544)。
以上、パリティを使用するRAIDを代表してRAID5を例に挙げて、ライトコマンド及びリードコマンドの処理方法を説明した。RAID5以外に、RAID3やRAID6等のように、パリティを用いて冗長記憶を実現する方式が知られている。これらRAID3,RAID6等においても、基本的にRAID5と同様に処理可能であることは、当業者であれば容易に理解でき、実施可能である。そこで、パリティを用いる場合については、これ以上の説明を省略し、RAID1の場合の一例を説明する。
図18は、RAID1の場合のライトコマンド処理を示すフローチャートである。コントローラ30は、ホスト13からライトコマンドを受信すると(S551)、ライトコマンド内のライト対象アドレスを、「仮想ドライブ番号+論理ブロックアドレス」の形式に変換する(S552)。コントローラ30は、ドライブ番号管理テーブルT11を用いて、正ドライブ及び副ドライブの実ドライブ番号をそれぞれ特定する(S553)。正ドライブと副ドライブとは、ミラーリングのペアを構成しており、それぞれ同一の記憶内容を保持している。
コントローラ30は、正ドライブのステータスを確認する(S554)。正ドライブのステータスが”通常”、”ドライブコピー”、”コレクションコピー中”のいずれかである場合、コントローラ30は、正ドライブにライトデータを書き込む(S555)。
コントローラ30は、正ドライブのステータスが”ドライブコピー中”であるか否かを判定し(S556)、”ドライブコピー中”の場合には(S556:YES)、回復先ドライブにもライトデータを書き込む(S557)。なお、S554において、正ドライブのステータスが”コレクションアクセス”であると判定された場合、S555〜S557はスキップされ、S558に移る。
次に、コントローラ30は、副ドライブのステータスを判定する(S558)。正ドライブの場合と同様に、副ドライブのステータスが”通常”、”ドライブコピー”、”コレクションコピー中”のいずれかである場合、コントローラ30は、副ドライブにライトデータを書き込む(S559)。
コントローラ30は、副ドライブのステータスが”ドライブコピー中”である場合(S560:YES)、回復先ドライブにもライトデータを書き込んだ後(S561)、キャッシュメモリ130上のライトデータを破棄する(S562)。
副ドライブのステータスが”通常”または”コレクションコピー中”のいずれかである場合、コントローラ30は、S561をスキップして、キャッシュメモリ130に記憶されているライトデータを破棄する(S562)。なお、S558において、副ドライブのステータスが”コレクションアクセス”であると判定された場合、S559〜S561はスキップされ、キャッシュメモリ130上のライトデータが破棄される(S562)。
本実施例は上述のように構成されるので、以下の効果を奏する。本実施例では、ドライブコピーからコレクションコピーに移行する際に、ドライブコピーで使用したコピーポインタ(回復対象アドレス)を引き継ぐことにより、ドライブコピーの中断位置からコレクションコピーを行うことができる。従って、コピー済みの範囲に無駄な上書きが行われるのを防止して、ドライブの回復時間を短縮することができる。これにより、本実施例では、ドライブ回復中の応答性能低下を抑制し、使い勝手及び信頼性を改善できる。
本実施例では、処理対象のデータが、回復済みであるか否かを判定し、回復済みの場合には、その回復済みのデータを用いて、リードコマンドやライトコマンドを処理する構成とした(図15中のS504,図16中のS525参照)。従って、既に回復されたデータを有効に利用することができ、ディスクドライブの二重障害に対する耐久性を高めることができる。
特に、例えば、大容量のディスクドライブ210において、ドライブコピーが完了間近の時点で、コレクションコピーに移行する場合、本実施例は優れた効果を奏する。もしも、大容量のディスクドライブ210の先頭アドレスからコレクションコピーを行う場合、ドライブコピーによってコピーされた範囲が無駄に上書きされるため、コレクションコピー完了までに長時間を必要とする。これに対し、本実施例では、ドライブコピーの中断位置からコレクションコピーを開始するため、ドライブコピーによりコピーされた範囲をそのまま活かして、無駄なコピーが行われるのを防止できる。従って、コレクションコピーが完了するまでの時間を大幅に短縮することができる。また、ドライブコピーの完了間近でコレクションコピーに移行する場合、ドライブコピーによって大部分のデータが回復先ドライブにコピーされている。従って、別のディスクドライブ210に障害が生じた場合でも、ドライブコピーによるコピー済みデータを用いて、ホスト13からのアクセス要求を処理することができ、ディスクドライブの二重障害に対する耐久性を高め、記憶制御装置10の信頼性を向上させることができる。
本実施例では、第1テーブルセットT1と第2テーブルセットT2とを切り替えることにより、回復元ドライブとスペアドライブとの間の仮想ドライブ番号の入れ替え及びドライブステータスの変更を一括して同時に行う構成とした。従って、ドライブコピーからコレクションコピーへ状態を遷移させる場合でも、同一のスペアドライブを確保して、ドライブコピーとコレクションコピーとの間の整合性を維持することができる。
本実施例では、ドライブコピー処理の中で、コレクションコピーを行う構成とした。即ち、本実施例では、ドライブコピーとコレクションコピーとを一体化して、1つのジョブに構成した。従って、ドライブコピーからコレクションコピーへ円滑に移行させることができる。
図19〜図21に基づいて、第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に該当する。以下の各実施例では、上述した構成と重複する構成の説明を割愛し、特徴部分を中心に説明する。本実施例では、ホスト13によって回復先ドライブが更新された場合、更新された部分をビットマップによって管理する。そして、ビットマップに基づいて、処理対象のデータが回復済みであるか否かを判定する。
図19は、エラー発生期間中にホスト13からライトコマンドを受信した場合のフローチャートの一部である。このフローチャートは、図17に示すフローチャートと対応しており、図16に示すフローチャートから続くものである。
従って、図19のフローチャートは、図17のフローチャートと共通のステップ(S535〜S544)を備えている。本実施例に特徴的なステップを中心に説明すると、本実施例では、回復先ドライブにライトデータが書き込まれた後(S538)、コントローラ30は、回復先ドライブへの書込みが行われたか否かを判定する(S571)。
ここで、S571では、”コレクションコピー中”における回復先ドライブ、または、”ドライブコピー”における回復先ドライブに、ライトデータが書き込まれたか否かをチェックする。そして、コントローラ30は、回復先ドライブへの書込み(つまり、データの更新)を検出すると(S571:YES)、図20に示すビットマップT15を更新させる(S572)。
ここで、S571では、”コレクションコピー中”における回復先ドライブ、または、”ドライブコピー”における回復先ドライブに、ライトデータが書き込まれたか否かをチェックする。そして、コントローラ30は、回復先ドライブへの書込み(つまり、データの更新)を検出すると(S571:YES)、図20に示すビットマップT15を更新させる(S572)。
同様に、コントローラ30は、回復先ドライブに新パリティを書き込んだ場合(S543)、回復先ドライブに新パリティが書き込まれた位置をビットマップT15に記憶させる(S573,S574)。
図20は、更新位置を管理するためのビットマップT15の一例を示す。このビットマップT15は、例えば、各実ドライブ番号毎に、各ブロックが更新されたか否かを示すビットデータ(更新フラグ)を対応付けている。即ち、各ビットはディスクドライブ210内の各ブロックにそれぞれ対応する。ビット”0”は、そのブロックが更新されていないことを示し、ビット”1”は、そのブロックが更新されたことを示す。
図21は、本実施例によるドライブコピー処理を示すフローチャートである。このフローチャートは、図12に示すフローチャートに対応しており、共通のステップ(S301〜S310)を備えている。
本実施例では、コントローラ30は、回復対象アドレスを初期化した後(S301)、回復元ドライブのステータスを確認する前に(S302)、回復先ドライブに関するビットマップT15を参照する(S580)。そして、コントローラ30は、回復対象アドレスからサイズSB内の全ブロックの更新フラグが”1”にセットされているか否かを判定する(S581)。
回復対象アドレスからサイズSB分の全ブロックについて更新フラグが”1”にセットされている場合(S581:YES)、これから回復先ドライブにコピーしようとする範囲が、既にホスト13によって更新されていることを意味する。つまり、回復元ドライブから回復先ドライブにSB分のブロックデータをコピーする必要がない。そこで、コントローラ30は、ドライブコピー及びコレクションコピーを行うことなく、S306に移る。
これに対し、回復対象アドレスからサイズSB分の全ブロックのうち、いずれか1つのブロックの更新フラグに”0”がセットされている場合(S581:NO)、コントローラ30は、図12で述べたと同様に、ドライブコピーまたはコレクションコピーを実行する。
なお、サイズSB分のブロックデータを回復先ドライブにコピーした後(S305,S310)、コントローラ30は、回復先ドライブのビットマップT15を更新させる(S582,S583)。これは、回復先ドライブへの書込みを全て管理するためであり、本実施例において、S582,S583は必ずしも必要ではない。但し、後述の実施例では、S582,S583で更新されるビットマップT15は、有効に利用される。
このように構成される本実施例も、第1実施例と同様の作用効果を奏する。これに加えて、本実施例では、ホスト13による回復先ドライブへの更新状況をビットマップT15で管理し、コピーの必要性があるか否かを判定する(S581)。そして、本実施例では、コピーの必要性があると判定された場合のみ、ドライブコピーまたはコレクションコピーを行う構成とした。従って、ドライブコピー等が無駄に行われる可能性を抑制して、より効率的にドライブを回復させることができる。
図22に基づいて第3実施例を説明する。本実施例は、第2実施例をさらに改良したもので、処理対象のデータが回復済みであるか否かを、ビットマップT15に基づいて判断する。図22は、結合子1を介して、図19に示すフローチャートに続いている。
図22は、ライトコマンドを処理するフローチャートである。このフローチャートは、図16に示すフローチャートに対応しており、S525及びS530以外のステップが共通である。即ち、本実施例では、S525,S530に代えて、S590,S591を採用する。S590,S591では、論理ブロックアドレスを比較するのではなく、リード対象アドレスの更新フラグに基づいて、回復済みのデータであるか否かを判定する。
つまり、コントローラ30は、ビットマップT15を参照することにより、リード要求されたブロックデータに関する全ての更新フラグが”1”にセットされているか否かを判定する(S590,S591)。リード対象の全ブロックについて、更新フラグが”1”にセットされている場合、そのブロックデータは回復済みであると判断される。なお、リードコマンドの場合も、上記同様に構成される。即ち、図15中のS504を、図22中のS590(S591)に置き換えればよい。
本実施例も第1実施例及び第2実施例と同様の作用効果を奏する。これに加えて、本実施例では、ホスト13からのコマンド処理時にも、ビットマップT15を有効に利用することができる。
図23〜図25に基づいて、第4実施例を説明する。本実施例では、例えば、RAID6のように、同一RAIDグループ212内で、複数のコレクションコピーが起動する場合を説明する。本実施例では、処理の先行しているコレクションコピーによって、処理の遅れているコレクションコピーの担当する範囲のコピーも一緒に行う。本実施例では、第2実施例と同様に、ビットマップT15によって、回復先ドライブの更新状況が管理されているものとする。
図23は、RAID6によるドライブ回復の様子を模式的に示す説明図である。図23(a)に示すように、複数のディスクドライブ210(#0〜#5)によって、RAID6の冗長記憶領域が形成されている。各ディスクドライブ210のうち、2つは、それぞれ異なる種類のパリティを記憶するために使用され、残りのディスクドライブ210には、データが記憶される。図23の説明では、ディスクドライブ210(#4,#5)に、それぞれパリティが記憶されているものとする。
図23(b)に示すように、もしも、ディスクドライブ210(#1)に第1閾値Th1以上のエラーが検出されると、将来の障害発生に備えて、このディスクドライブ(第1エラードライブ(#1))から第1スペアドライブ(#100)へ第1ドライブコピーが開始される。
図23(c)に示すように、もしも、第1エラードライブ(#1)に第2閾値Th2以上のエラーが発生すると、第1スペアドライブ(#100)を用いて、第1ドライブコピーの中断位置CP1から、第1コレクションコピーが開始される。即ち、コントローラ30は、他のディスクドライブ210(#0,#2〜#4)からデータ及びパリティを読み出して、第1エラードライブ(#1)内のデータを復元する。復元したデータは、第1スペアドライブ(#100)に記憶される。なお、ここでは、2種類のパリティのうち、いずれか一方のパリティのみを使用する。
図23(d)に示すように、別のディスクドライブ210(#2)において、第1閾値Th1以上のエラーが検出されると、このディスクドライブ(第2エラードライブ(#2))から第2スペアドライブ(#101)への第2ドライブコピーが開始される。
図23(e)に示すように、もしも、第2エラードライブ(#2)に第2閾値Th2以上のエラーが検出されると、第2スペアドライブ(#101)を用いて、第2ドライブコピーの中断位置から、第2コレクションコピーが開始される。この第2コレクションコピーでは、2種類のパリティの両方をそれぞれ使用する。
ここで、第1コレクションコピーの方が、第2コレクションコピーよりも処理が先行している場合、第1コレクションコピーは、第2コレクションコピーの担当部分も一緒に処理する。これにより、第1コレクションコピーによって復元されたデータを有効に利用することができ、重複したデータ復元処理を省略して、第2コレクションコピーの処理負荷を軽減することができる。
図24,図25は、本実施例によるドライブコピー処理のフローチャートである。まず、コントローラ30は、回復対象のアドレスを初期化し(S601)、回復先ドライブに関するビットマップT15を参照する(S602)。
コントローラ30は、回復対象アドレスからサイズSB分の全ブロックについて、更新フラグが”1”にセットされているか否かを判定する(S603)。これからコピーしようとする範囲SB内の全ブロックが、ホスト13によって更新されている場合(S603:YES)、これらのブロックデータをコピーする必要がないため、S609に移る。
回復対象アドレスからサイズSB分の全ブロックのうち、いずれか1つ以上のブロックについて更新フラグに”0”がセットされている場合(S603:NO)、図12で述べたと同様に、ドライブコピーを開始する。
コントローラ30は、回復元ドライブのステータスを確認し(S604)、回復元ドライブのステータスが”ドライブコピー中”の場合(S605)、回復元ドライブからサイズSB分のデータを読出し、キャッシュメモリ130に記憶させる(S606)。
コントローラ30は、キャッシュメモリ130に記憶されたデータを、回復先ドライブに書込み(S607)、ビットマップT15を更新させる(S608)。そして、コントローラ30は、回復対象アドレスをSBだけ増加させ(S609)、回復元ドライブの全データをコピーしたか否かを判定する(S610)。回復元ドライブの全データを回復先ドライブにコピーするまで、S604〜S610のステップを繰り返す。
S605において、回復元ドライブのステータスが”コレクションコピー中”であると判定された場合、図25に移る。コントローラ30は、回復元ドライブと同一のRAIDグループ212内において、別のコレクションコピーが行われているか否かを判定する(S611)。以下、別のコレクションコピーを第2コレクションコピーと呼び、第2コレクションコピーで使用されている回復先ドライブを第2回復先ドライブと呼ぶ。
第2コレクションコピーが行われている場合(S611:YES)、コントローラ30は、他の各ディスクドライブ210からデータ及びパリティを読出して、キャッシュメモリ130に記憶させる(S612)。コントローラ30は、第2回復先ドライブにおけるコピー処理よりも第1回復先ドライブにおけるコピー処理の方が、進んでいるか否かを判定する(S613)。
第1回復先ドライブにおけるコレクションコピーの方が、第2回復先ドライブにおけるコレクションコピーよりも進んでいる場合(S613:YES)、コントローラ30は、キャッシュメモリ130に記憶されたデータ及びパリティに基づいて、処理対象のデータを復元しする(S614)。そして、コントローラ30は、復元されたデータを、第1回復先ドライブ及び第2回復先ドライブの両方にそれぞれ書込み(S615)、各回復先ドライブ用のビットマップT15をそれぞれ更新させる(S616)。ビットマップT15は、各ディスクドライブ毎にそれぞれ用意されている。
コントローラ30は、両方の回復先ドライブにデータを書き込んだ後、図24中のS609に移り、回復対象アドレスをSBだけ増加させる。
S613において、第1回復先ドライブにおけるコレクションコピーが、第2回復先ドライブにおけるコレクションコピーよりも進んでいないと判定された場合(S613:NO)、コントローラ30は、キャッシュメモリ130に記憶されたデータ及びパリティに基づいて、処理対象のデータを復元する(S617)。そして、コントローラ30は、この復元されたデータを、第1回復先ドライブにのみ書込み(S618)、第1回復先ドライブ用のビットマップT15を更新させる(S619)。
同一RAIDグループ212内において、第2コレクションコピーが起動されていない場合(S611:NO)、図12で述べたと同様に、コントローラ30は、他の各ディスクドライブ210からデータ及びパリティを読み出して、キャッシュメモリ130に記憶させ(S620)、データを復元する(S621)。
このように構成される本実施例でも前記各実施例と同様の作用効果を奏する。これに加えて、本実施例では、同一のRAIDグループ212内で複数のコレクションコピーが起動された場合に、いずれか処理の先行しているコレクションコピーによって復元されたデータを、複数の回復先ドライブにそれぞれ書き込む構成とした。従って、重複したデータ復元処理が行われるのを防止して、効率的にコレクションコピーを行うことができる。
図26,図27に基づいて第5実施例を説明する。本実施例では、エラー管理の方法に関する複数の変形例を説明する。図26に示すように、エラー管理テーブルT12Aの管理項目に「RAIDレベル」を追加してもよい。そして、閾値管理テーブルT13Aは、各RAIDレベル毎に、それぞれ用意することができる。
これにより、各RAIDレベル毎に、それぞれ異なる閾値Th1,Th2を設定することができるため、RAIDの種類に応じたエラー監視及びドライブ回復を行うことができる。
図27に示すように、エラー管理テーブルT12Bの管理項目に、「ドライブタイプ」を追加することもできる。閾値管理テーブルT13Bは、各ドライブタイプ毎にそれぞれ用意される。ドライブタイプとは、ディスクドライブ210の種別を示す情報であり、例えば、FCディスク、ATAディスク等を挙げることができる。
これにより、各ドライブタイプ毎に、それぞれ異なる閾値Th1,Th2を設定することができ、ドライブタイプに応じたエラー監視及びドライブ回復が可能となる。
このように構成される本実施例も前記各実施例と同様の作用効果を奏する。これに加えて、本実施例では、RAIDレベルやドライブタイプに応じて、閾値Th1,Th2をそれぞれ設定可能なため、RAIDレベルやドライブタイプに起因する信頼性等に応じて、適切なエラー監視及びドライブ回復を行うことができる。例えば、信頼性の低いディスクドライブやRAIDグループについては、閾値を低めに設定することにより、障害の予兆を速やかに検出して、予防措置としてのドライブコピーを実行することができる。
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
1…記憶制御装置、2…ディスクドライブ、2A…スペアドライブ、3…I/O要求処理部、4…エラー状況検出部、5…ドライブ回復制御部、5A…ドライブコピー部、5B…コピー進捗状況管理部、5C…コレクションコピー部、6…RAIDグループ、7…ホスト、10…記憶制御装置、13…ホスト、14…管理端末、15…管理サーバ、20…記憶部、30… コントローラ、31…エラー状況検出処理、32…障害リカバリ処理、33…ドライブコピー処理、34…コレクションコピー処理、35…コピーポインタ、36…カレントテーブルポインタ、110…チャネルアダプタ(CHA)、111…通信ポート、120…ディスクアダプタ(DKA)、130…キャッシュメモリ、140…キャッシュメモリ、150…接続制御部、210…ディスクドライブ、212…RAIDグループ、213…論理ボリューム
Claims (9)
- 少なくとも1つ以上の予備の記憶デバイスを含む複数の記憶デバイスを備えた記憶制御装置であって、
前記各記憶デバイスのエラー状況を検出するエラー状況検出部と、
前記エラー状況検出部によりエラーが検出された場合に、このエラーの検出された記憶デバイスに対する上位装置からの入出力要求を制御する入出力要求制御部と、
前記エラー状況検出部により検出されたエラー状況が予め設定された閾値を超える場合に、エラーの検出された回復対象の記憶デバイスの記憶内容を前記予備の記憶デバイス内に回復させる回復制御部と、
を備え、
前記回復制御部は、
前記回復対象の記憶デバイスからデータを読み出して、この読み出したデータを前記予備の記憶デバイスにコピーさせる第1コピーモードと、
前記回復対象の記憶デバイスと同一のRAIDグループに属する他の記憶デバイスから読み出されたデータに基づいて、前記回復対象の記憶デバイスに記憶されているデータを復元し、この復元されたデータを前記予備の記憶デバイスにコピーさせる第2コピーモードと、を備えており、かつ、
前記回復制御部は、前記第1コピーモードから前記第2コピーモードに移行する場合、前記第1コピーモードによるコピー中断位置から前記第2コピーモードを開始させる記憶制御装置。 - 前記回復制御部は、
前記エラー状況検出部により検出されたエラー状況が、第1閾値以上であって第2閾値未満の場合に、前記第1コピーモードを実行して、前記回復対象の記憶デバイスの記憶内容を回復させ、
前記エラー状況検出部により検出されたエラー状況が、前記第2閾値以上の場合に、前記第1コピーモードから前記第2コピーモードに移行することにより、前記回復対象の記憶デバイスの記憶内容を、引き続いて回復させる請求項1に記載の記憶制御装置。 - 前記回復制御部は、前記第1コピーモードから前記第2コピーモードへ移行する場合、前記第1コピーモードで使用されていた前記予備の記憶デバイスを確保し、この確保された予備の記憶デバイスを使用して前記第2コピーモードを開始する請求項1に記載の記憶制御装置。
- 前記回復制御部は、前記第1コピーモードと前記第2モードとを一つの処理として連続的に実行する請求項1に記載の記憶制御装置。
- 前記エラー状況検出部により検出されたエラー状況が、第1閾値以上であって第2閾値未満の場合に、前記回復対象の記憶デバイスには、第1コピーモードを選択するための第1ステータスが設定され、
前記エラー状況検出部により検出されたエラー状況が、前記第2閾値以上の場合に、前記回復対象の記憶デバイスには、前記第2コピーモードを選択するための第2ステータスが設定され、
前記回復制御部は、
前記回復対象の記憶デバイスに前記第1ステータスが設定された場合に、前記第1コピーモードを開始して、前記回復対象の記憶デバイスから前記予備の記憶デバイスへ所定量ずつデータをコピーし、
この所定量ずつのデータコピーが完了するごとに、コピー完了位置を管理するためのコピー位置管理情報を更新し、
前記コピー位置管理情報を更新する度に、前記回復対象の記憶デバイスのステータスを確認し、
前記回復対象の記憶デバイスのステータスが前記第1ステータスから前記第2ステータスへ変更された場合は、前記コピー位置管理情報を引き続き使用して、前記第1コピーモードから前記第2コピーモードに移行する請求項1に記載の記憶制御装置。 - 前記入出力要求制御部は、前記上位装置による前記予備の記憶デバイスへの更新状況を更新管理情報に記憶して管理しており、
前記回復制御部は、前記更新された記憶領域以外の記憶領域について、前記第1コピーモードまたは前記第2コピーモードを実行させる請求項1に記載の記憶制御装置。 - 入出力要求制御部は、前記更新管理情報に基づいて、前記上位装置からの入出力要求を処理するために使用する記憶デバイスを特定する請求項6に記載の記憶制御装置。
- 前記回復制御部は、同一のRAIDグループ内で前記第2コピーモードが複数起動された場合に、処理の先行している第2コピーモードにより回復されたデータを、この先行している第2コピーモードに係る予備の記憶デバイス及び処理の遅れている第2コピーモードに係る予備の記憶デバイスのそれぞれに記憶させる請求項1に記載の記憶制御装置。
- 複数の記憶デバイスから構成されるRAIDグループを備える記憶制御装置に記憶されているデータを回復させるための方法であって、
前記RAIDグループ内の各記憶デバイスに関するエラー状況を検出するステップと、
前記検出されたエラー状況が、第1閾値以上であって第2閾値未満の場合に、前記エラーの検出された回復対象の記憶デバイスに、第1コピーモードを選択するための第1ステータスを設定するステップと、
前記検出されたエラー状況が、前記第2閾値以上の場合に、前記回復対象の記憶デバイスに、第2コピーモードを選択するための第2ステータスを設定するステップと、
前記回復対象の記憶デバイスに前記第1ステータスが設定された場合に、前記第1コピーモードを開始して、前記回復対象の記憶デバイスから前記予備の記憶デバイスへ所定量ずつデータをコピーするステップと、
前記所定量ずつのデータコピーが完了するごとに、コピー完了位置を管理するためのコピー位置管理情報を更新するステップと、
前記コピー位置管理情報を更新する度に、前記回復対象の記憶デバイスのステータスを確認するステップと、
前記回復対象の記憶デバイスのステータスが前記第1ステータスから前記第2ステータスへ変更された場合には、前記コピー位置管理情報を引き続き使用して、前記第1コピーモードから前記第2コピーモードに移行し、前記回復対象の記憶デバイスと同一のRAIDグループに属する他の記憶デバイスから読み出されたデータに基づいて、前記回復対象の記憶デバイスに記憶されているデータを復元するステップと、
前記復元されたデータを前記予備の記憶デバイスにコピーさせるステップと、
を実行する記憶制御装置のデータ回復方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006057337A JP2007233903A (ja) | 2006-03-03 | 2006-03-03 | 記憶制御装置及び記憶制御装置のデータ回復方法 |
US11/403,841 US7451346B2 (en) | 2006-03-03 | 2006-04-14 | Storage control device and data recovery method for storage control device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006057337A JP2007233903A (ja) | 2006-03-03 | 2006-03-03 | 記憶制御装置及び記憶制御装置のデータ回復方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007233903A true JP2007233903A (ja) | 2007-09-13 |
Family
ID=38519370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006057337A Pending JP2007233903A (ja) | 2006-03-03 | 2006-03-03 | 記憶制御装置及び記憶制御装置のデータ回復方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7451346B2 (ja) |
JP (1) | JP2007233903A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011092760A1 (ja) * | 2010-01-26 | 2011-08-04 | 日本電気株式会社 | ストレージシステム |
WO2011128936A1 (ja) * | 2010-04-14 | 2011-10-20 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置の制御方法 |
JP2014215990A (ja) * | 2013-04-30 | 2014-11-17 | 富士通株式会社 | ストレージシステム、制御装置、制御プログラムおよび制御方法 |
JP2015156081A (ja) * | 2014-02-20 | 2015-08-27 | 富士通株式会社 | ストレージ制御装置,ストレージシステム及び制御プログラム |
JP2017182385A (ja) * | 2016-03-30 | 2017-10-05 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
CN110321067A (zh) * | 2018-03-30 | 2019-10-11 | 卡巴斯基实验室股份制公司 | 估计和管理存储设备退化的系统和方法 |
JP2021105964A (ja) * | 2019-12-27 | 2021-07-26 | Necソリューションイノベータ株式会社 | 情報処理方法 |
JP2021170223A (ja) * | 2020-04-15 | 2021-10-28 | 株式会社日立製作所 | 計算機システム、制御方法及びプログラム |
US11599297B2 (en) | 2021-01-27 | 2023-03-07 | Hitachi, Ltd. | Storage apparatus, maintenance support method, and maintenance support program |
Families Citing this family (189)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489150B2 (en) | 2003-08-14 | 2016-11-08 | Dell International L.L.C. | System and method for transferring data between different raid data storage types for current data and replay data |
JP2007502470A (ja) | 2003-08-14 | 2007-02-08 | コンペレント・テクノロジーズ | 仮想ディスク・ドライブのシステムおよび方法 |
JP2005293363A (ja) * | 2004-04-01 | 2005-10-20 | Toshiba Corp | ディスクアレイコントローラおよび情報処理装置 |
US7533292B2 (en) * | 2004-07-15 | 2009-05-12 | International Business Machines Corporation | Management method for spare disk drives in a raid system |
JP2007299213A (ja) * | 2006-04-28 | 2007-11-15 | Fujitsu Ltd | Raid制御装置および障害監視方法 |
US20070294565A1 (en) * | 2006-04-28 | 2007-12-20 | Network Appliance, Inc. | Simplified parity disk generation in a redundant array of inexpensive disks |
WO2007140260A2 (en) | 2006-05-24 | 2007-12-06 | Compellent Technologies | System and method for raid management, reallocation, and restriping |
JP4884885B2 (ja) * | 2006-08-25 | 2012-02-29 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置の障害回復方法 |
JP5057741B2 (ja) * | 2006-10-12 | 2012-10-24 | 株式会社日立製作所 | ストレージ装置 |
US20080115171A1 (en) * | 2006-11-09 | 2008-05-15 | Eric Lawrence Barsness | Detecting Interruptions in Scheduled Programs |
US9116823B2 (en) | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
US7937728B2 (en) * | 2006-12-06 | 2011-05-03 | International Business Machines Corporation | Retrieving lost content for a scheduled program |
US8074011B2 (en) | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
KR20090087498A (ko) | 2006-12-06 | 2009-08-17 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 고-용량, 비-휘발성 스토리지를 위한 캐시로서의 솔리드-스테이트 스토리지 장치, 시스템 및 방법 |
JP4961997B2 (ja) * | 2006-12-22 | 2012-06-27 | 富士通株式会社 | ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム |
US7702953B2 (en) * | 2007-01-04 | 2010-04-20 | International Business Machines Corporation | Storage management in cascaded replication of data |
US7975171B2 (en) * | 2007-09-12 | 2011-07-05 | International Business Machines Corporation | Automated file recovery based on subsystem error detection results |
US8195912B2 (en) | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US7975169B2 (en) * | 2008-06-03 | 2011-07-05 | International Business Machines Corporation | Memory preserved cache to prevent data loss |
US8453021B2 (en) * | 2009-07-29 | 2013-05-28 | Stec, Inc. | Wear leveling in solid-state device |
JP2011113624A (ja) * | 2009-11-30 | 2011-06-09 | Hitachi-Lg Data Storage Inc | 記録再生装置 |
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 |
US8386834B1 (en) * | 2010-04-30 | 2013-02-26 | Network Appliance, Inc. | Raid storage configuration for cached data storage |
US10157002B2 (en) * | 2010-08-26 | 2018-12-18 | International Business Machines Corporation | Migrating an encoded data slice based on an end-of-life memory level of a memory device |
US8589625B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of reconstructive I/O read operations in a storage environment |
US8732426B2 (en) | 2010-09-15 | 2014-05-20 | Pure Storage, Inc. | Scheduling of reactive I/O operations in a storage environment |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US8589655B2 (en) | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US8468318B2 (en) | 2010-09-15 | 2013-06-18 | Pure Storage Inc. | Scheduling of I/O writes in a storage environment |
US11275509B1 (en) | 2010-09-15 | 2022-03-15 | Pure Storage, Inc. | Intelligently sizing high latency I/O requests in a storage environment |
US9244769B2 (en) | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US8726261B2 (en) * | 2011-04-06 | 2014-05-13 | Hewlett-Packard Development Company, L.P. | Zero downtime hard disk firmware update |
US8589724B2 (en) * | 2011-06-30 | 2013-11-19 | Seagate Technology Llc | Rapid rebuild of a data set |
US11636031B2 (en) | 2011-08-11 | 2023-04-25 | Pure Storage, Inc. | Optimized inline deduplication |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
WO2013038618A1 (ja) * | 2011-09-14 | 2013-03-21 | パナソニック株式会社 | 情報記憶媒体ライブラリアレイ装置、情報記録方法及び情報記録プログラム |
US8799705B2 (en) * | 2012-01-04 | 2014-08-05 | Emc Corporation | Data protection in a random access disk array |
JP5614419B2 (ja) * | 2012-02-29 | 2014-10-29 | 富士通株式会社 | 情報処理装置、制御方法および制御プログラム |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US9798623B2 (en) * | 2012-05-11 | 2017-10-24 | Seagate Technology Llc | Using cache to manage errors in primary storage |
GB2503274A (en) * | 2012-06-22 | 2013-12-25 | Ibm | Restoring redundancy in a RAID |
US8745415B2 (en) | 2012-09-26 | 2014-06-03 | Pure Storage, Inc. | Multi-drive cooperation to generate an encryption key |
US11032259B1 (en) | 2012-09-26 | 2021-06-08 | Pure Storage, Inc. | Data protection in a storage system |
US10623386B1 (en) | 2012-09-26 | 2020-04-14 | Pure Storage, Inc. | Secret sharing data protection in a storage system |
US20140149787A1 (en) * | 2012-11-29 | 2014-05-29 | Lsi Corporation | Method and system for copyback completion with a failed drive |
US11733908B2 (en) | 2013-01-10 | 2023-08-22 | Pure Storage, Inc. | Delaying deletion of a dataset |
US9589008B2 (en) | 2013-01-10 | 2017-03-07 | Pure Storage, Inc. | Deduplication of volume regions |
US10908835B1 (en) | 2013-01-10 | 2021-02-02 | Pure Storage, Inc. | Reversing deletion of a virtual machine |
US11768623B2 (en) | 2013-01-10 | 2023-09-26 | Pure Storage, Inc. | Optimizing generalized transfers between storage systems |
EP2946296A4 (en) * | 2013-01-17 | 2016-11-16 | Xockets Ip Llc | DELIBRATION PROCESSOR MODULES FOR CONNECTING TO A SYSTEM MEMORY |
US9081753B2 (en) * | 2013-03-14 | 2015-07-14 | Microsoft Technology Licensing, Llc | Virtual disk recovery and redistribution |
CN105453180A (zh) * | 2013-07-15 | 2016-03-30 | 惠普发展公司,有限责任合伙企业 | 重建驱动数据 |
US10365858B2 (en) | 2013-11-06 | 2019-07-30 | Pure Storage, Inc. | Thin provisioning in a storage device |
US11128448B1 (en) | 2013-11-06 | 2021-09-21 | Pure Storage, Inc. | Quorum-aware secret sharing |
US10263770B2 (en) | 2013-11-06 | 2019-04-16 | Pure Storage, Inc. | Data protection in a storage system using external secrets |
US9516016B2 (en) | 2013-11-11 | 2016-12-06 | Pure Storage, Inc. | Storage array password management |
US9208086B1 (en) | 2014-01-09 | 2015-12-08 | Pure Storage, Inc. | Using frequency domain to prioritize storage of metadata in a cache |
US10656864B2 (en) | 2014-03-20 | 2020-05-19 | Pure Storage, Inc. | Data replication within a flash storage array |
US9513820B1 (en) | 2014-04-07 | 2016-12-06 | Pure Storage, Inc. | Dynamically controlling temporary compromise on data redundancy |
US9075773B1 (en) | 2014-05-07 | 2015-07-07 | Igneous Systems, Inc. | Prioritized repair of data storage failures |
US9779268B1 (en) | 2014-06-03 | 2017-10-03 | Pure Storage, Inc. | Utilizing a non-repeating identifier to encrypt data |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US9218407B1 (en) | 2014-06-25 | 2015-12-22 | Pure Storage, Inc. | Replication and intermediate read-write state for mediums |
US9201735B1 (en) | 2014-06-25 | 2015-12-01 | Igneous Systems, Inc. | Distributed storage data repair air via partial data rebuild within an execution path |
US10496556B1 (en) | 2014-06-25 | 2019-12-03 | Pure Storage, Inc. | Dynamic data protection within a flash storage system |
US10296469B1 (en) | 2014-07-24 | 2019-05-21 | Pure Storage, Inc. | Access control in a flash storage system |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9053114B1 (en) | 2014-08-07 | 2015-06-09 | Igneous Systems, Inc. | Extensible data path |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9864761B1 (en) | 2014-08-08 | 2018-01-09 | Pure Storage, Inc. | Read optimization operations in a storage system |
US10430079B2 (en) | 2014-09-08 | 2019-10-01 | Pure Storage, Inc. | Adjusting storage capacity in a computing system |
US10164841B2 (en) | 2014-10-02 | 2018-12-25 | Pure Storage, Inc. | Cloud assist for storage systems |
US9489132B2 (en) | 2014-10-07 | 2016-11-08 | Pure Storage, Inc. | Utilizing unmapped and unknown states in a replicated storage system |
US10430282B2 (en) | 2014-10-07 | 2019-10-01 | Pure Storage, Inc. | Optimizing replication by distinguishing user and system write activity |
US9098451B1 (en) * | 2014-11-21 | 2015-08-04 | Igneous Systems, Inc. | Shingled repair set for writing data |
US9727485B1 (en) | 2014-11-24 | 2017-08-08 | Pure Storage, Inc. | Metadata rewrite and flatten optimization |
US9773007B1 (en) | 2014-12-01 | 2017-09-26 | Pure Storage, Inc. | Performance improvements in a storage system |
US9552248B2 (en) | 2014-12-11 | 2017-01-24 | Pure Storage, Inc. | Cloud alert to replica |
US9588842B1 (en) * | 2014-12-11 | 2017-03-07 | Pure Storage, Inc. | Drive rebuild |
US9864769B2 (en) | 2014-12-12 | 2018-01-09 | Pure Storage, Inc. | Storing data utilizing repeating pattern detection |
US10545987B2 (en) | 2014-12-19 | 2020-01-28 | Pure Storage, Inc. | Replication to the cloud |
US9569357B1 (en) | 2015-01-08 | 2017-02-14 | Pure Storage, Inc. | Managing compressed data in a storage system |
US11947968B2 (en) | 2015-01-21 | 2024-04-02 | Pure Storage, Inc. | Efficient use of zone in a storage device |
US10296354B1 (en) | 2015-01-21 | 2019-05-21 | Pure Storage, Inc. | Optimized boot operations within a flash storage array |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
US9276900B1 (en) | 2015-03-19 | 2016-03-01 | Igneous Systems, Inc. | Network bootstrapping for a distributed storage system |
JP2016184372A (ja) * | 2015-03-27 | 2016-10-20 | 富士通株式会社 | ストレージシステム,情報処理装置,パリティ生成プログラム及びパリティ生成方法 |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9547441B1 (en) | 2015-06-23 | 2017-01-17 | Pure Storage, Inc. | Exposing a geometry of a storage device |
US10310740B2 (en) | 2015-06-23 | 2019-06-04 | Pure Storage, Inc. | Aligning memory access operations to a geometry of a storage device |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
KR20170028825A (ko) | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색 |
US9934083B2 (en) | 2015-10-14 | 2018-04-03 | International Business Machines Corporation | Requesting manual intervention on failure of initial microcode load attempts during recovery of modified customer data |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10452297B1 (en) | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
US10133503B1 (en) | 2016-05-02 | 2018-11-20 | Pure Storage, Inc. | Selecting a deduplication process based on a difference between performance metrics |
US9921913B2 (en) * | 2016-05-12 | 2018-03-20 | Dell Products L.P. | Flushing host cache data before rebuilding degraded redundant virtual disk |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10613974B2 (en) | 2016-10-04 | 2020-04-07 | Pure Storage, Inc. | Peer-to-peer non-volatile random-access memory |
US10162523B2 (en) | 2016-10-04 | 2018-12-25 | Pure Storage, Inc. | Migrating data between volumes using virtual copy operation |
US10191662B2 (en) | 2016-10-04 | 2019-01-29 | Pure Storage, Inc. | Dynamic allocation of segments in a flash storage system |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10185505B1 (en) | 2016-10-28 | 2019-01-22 | Pure Storage, Inc. | Reading a portion of data to replicate a volume based on sequence numbers |
US10359942B2 (en) | 2016-10-31 | 2019-07-23 | Pure Storage, Inc. | Deduplication aware scalable content placement |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
US11093146B2 (en) | 2017-01-12 | 2021-08-17 | Pure Storage, Inc. | Automatic load rebalancing of a write group |
US10915401B2 (en) * | 2017-02-06 | 2021-02-09 | Hitachi, Ltd. | Data saving caused by a partial failure of the memory device |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US12045487B2 (en) | 2017-04-21 | 2024-07-23 | Pure Storage, Inc. | Preserving data deduplication in a multi-tenant storage system |
US11403019B2 (en) | 2017-04-21 | 2022-08-02 | Pure Storage, Inc. | Deduplication-aware per-tenant encryption |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
JP6867591B2 (ja) * | 2017-06-16 | 2021-04-28 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10776202B1 (en) | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
US10789211B1 (en) | 2017-10-04 | 2020-09-29 | Pure Storage, Inc. | Feature-based deduplication |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US11144638B1 (en) | 2018-01-18 | 2021-10-12 | Pure Storage, Inc. | Method for storage system detection and alerting on potential malicious action |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US10970395B1 (en) | 2018-01-18 | 2021-04-06 | Pure Storage, Inc | Security threat monitoring for a storage system |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
KR102505920B1 (ko) * | 2018-02-01 | 2023-03-06 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US11934322B1 (en) | 2018-04-05 | 2024-03-19 | Pure Storage, Inc. | Multiple encryption keys on storage drives |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US10678433B1 (en) | 2018-04-27 | 2020-06-09 | Pure Storage, Inc. | Resource-preserving system upgrade |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10678436B1 (en) | 2018-05-29 | 2020-06-09 | Pure Storage, Inc. | Using a PID controller to opportunistically compress more data during garbage collection |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US10776046B1 (en) | 2018-06-08 | 2020-09-15 | Pure Storage, Inc. | Optimized non-uniform memory access |
US11281577B1 (en) | 2018-06-19 | 2022-03-22 | Pure Storage, Inc. | Garbage collection tuning for low drive wear |
US11869586B2 (en) | 2018-07-11 | 2024-01-09 | Pure Storage, Inc. | Increased data protection by recovering data from partially-failed solid-state devices |
US11194759B2 (en) | 2018-09-06 | 2021-12-07 | Pure Storage, Inc. | Optimizing local data relocation operations of a storage device of a storage system |
US11133076B2 (en) | 2018-09-06 | 2021-09-28 | Pure Storage, Inc. | Efficient relocation of data between storage devices of a storage system |
US10846216B2 (en) | 2018-10-25 | 2020-11-24 | Pure Storage, Inc. | Scalable garbage collection |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
US11194473B1 (en) | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
US11588633B1 (en) | 2019-03-15 | 2023-02-21 | Pure Storage, Inc. | Decommissioning keys in a decryption storage system |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US11397674B1 (en) | 2019-04-03 | 2022-07-26 | Pure Storage, Inc. | Optimizing garbage collection across heterogeneous flash devices |
US10990480B1 (en) | 2019-04-05 | 2021-04-27 | Pure Storage, Inc. | Performance of RAID rebuild operations by a storage group controller of a storage system |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10929046B2 (en) | 2019-07-09 | 2021-02-23 | Pure Storage, Inc. | Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device |
US12135888B2 (en) | 2019-07-10 | 2024-11-05 | Pure Storage, Inc. | Intelligent grouping of data based on expected lifespan |
US11422751B2 (en) | 2019-07-18 | 2022-08-23 | Pure Storage, Inc. | Creating a virtual storage system |
US11086713B1 (en) | 2019-07-23 | 2021-08-10 | Pure Storage, Inc. | Optimized end-to-end integrity storage system |
US11963321B2 (en) | 2019-09-11 | 2024-04-16 | Pure Storage, Inc. | Low profile latching mechanism |
US11403043B2 (en) | 2019-10-15 | 2022-08-02 | Pure Storage, Inc. | Efficient data compression by grouping similar data within a data segment |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11520907B1 (en) | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11720714B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Inter-I/O relationship based detection of a security threat to a storage system |
US11625481B2 (en) | 2019-11-22 | 2023-04-11 | Pure Storage, Inc. | Selective throttling of operations potentially related to a security threat to a storage system |
US11755751B2 (en) | 2019-11-22 | 2023-09-12 | Pure Storage, Inc. | Modify access restrictions in response to a possible attack against data stored by a storage system |
US12079333B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Independent security threat detection and remediation by storage systems in a synchronous replication arrangement |
US12050683B2 (en) * | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US12067118B2 (en) | 2019-11-22 | 2024-08-20 | Pure Storage, Inc. | Detection of writing to a non-header portion of a file as an indicator of a possible ransomware attack against a storage system |
US12079356B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Measurement interval anomaly detection-based generation of snapshots |
US11657155B2 (en) | 2019-11-22 | 2023-05-23 | Pure Storage, Inc | Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US11675898B2 (en) | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
US12050689B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Host anomaly-based generation of snapshots |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US12079502B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Storage element attribute-based determination of a data protection policy for use within a storage system |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US11704040B2 (en) * | 2019-12-09 | 2023-07-18 | International Business Machines Corporation | Transparent drive-to-drive copying |
US20210349780A1 (en) * | 2020-05-11 | 2021-11-11 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device |
US12026055B2 (en) | 2020-07-13 | 2024-07-02 | Samsung Electronics Co., Ltd. | Storage device with fault resilient read-only mode |
JP7380635B2 (ja) * | 2021-04-09 | 2023-11-15 | 横河電機株式会社 | プログラム修正支援装置及びプログラム修正支援方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802264A (en) * | 1991-11-15 | 1998-09-01 | Fujitsu Limited | Background data reconstruction in a storage device array system |
JPH08249133A (ja) * | 1994-12-15 | 1996-09-27 | Internatl Business Mach Corp <Ibm> | ディスク・ドライブ・アレイの故障対策の方法及びシステム |
US6886108B2 (en) * | 2001-04-30 | 2005-04-26 | Sun Microsystems, Inc. | Threshold adjustment following forced failure of storage device |
US7058762B2 (en) * | 2003-06-09 | 2006-06-06 | Hewlett-Packard Development Company, L.P. | Method and apparatus for selecting among multiple data reconstruction techniques |
JP2005100259A (ja) | 2003-09-26 | 2005-04-14 | Hitachi Ltd | ドライブの2重障害を防止するアレイ型ディスク装置、プログラム、及び方法 |
JP2005107675A (ja) * | 2003-09-29 | 2005-04-21 | Toshiba Corp | ディスクアレイコントローラ及びディスクドライブの複製方法 |
US7409582B2 (en) * | 2004-05-06 | 2008-08-05 | International Business Machines Corporation | Low cost raid with seamless disk failure recovery |
US7313721B2 (en) * | 2004-06-21 | 2007-12-25 | Dot Hill Systems Corporation | Apparatus and method for performing a preemptive reconstruct of a fault-tolerant RAID array |
JP4303187B2 (ja) * | 2004-11-10 | 2009-07-29 | 富士通株式会社 | プログラム、記憶制御方法及び記憶装置 |
US20070079170A1 (en) * | 2005-09-30 | 2007-04-05 | Zimmer Vincent J | Data migration in response to predicted disk failure |
-
2006
- 2006-03-03 JP JP2006057337A patent/JP2007233903A/ja active Pending
- 2006-04-14 US US11/403,841 patent/US7451346B2/en not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652325B2 (en) | 2010-01-26 | 2017-05-16 | Nec Corporation | Storage system and method to support scheduled and operational going down of a storing unit |
JP2011154428A (ja) * | 2010-01-26 | 2011-08-11 | Nec Corp | ストレージシステム |
WO2011092760A1 (ja) * | 2010-01-26 | 2011-08-04 | 日本電気株式会社 | ストレージシステム |
WO2011128936A1 (ja) * | 2010-04-14 | 2011-10-20 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置の制御方法 |
CN102741801A (zh) * | 2010-04-14 | 2012-10-17 | 株式会社日立制作所 | 存储控制装置和存储控制装置的控制方法 |
JP5451874B2 (ja) * | 2010-04-14 | 2014-03-26 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置の制御方法 |
US8984352B2 (en) | 2010-04-14 | 2015-03-17 | Hitachi, Ltd. | Storage control apparatus and control method of storage control apparatus |
CN102741801B (zh) * | 2010-04-14 | 2015-03-25 | 株式会社日立制作所 | 存储控制装置和存储控制装置的控制方法 |
JP2014215990A (ja) * | 2013-04-30 | 2014-11-17 | 富士通株式会社 | ストレージシステム、制御装置、制御プログラムおよび制御方法 |
JP2015156081A (ja) * | 2014-02-20 | 2015-08-27 | 富士通株式会社 | ストレージ制御装置,ストレージシステム及び制御プログラム |
JP2017182385A (ja) * | 2016-03-30 | 2017-10-05 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
CN110321067A (zh) * | 2018-03-30 | 2019-10-11 | 卡巴斯基实验室股份制公司 | 估计和管理存储设备退化的系统和方法 |
CN110321067B (zh) * | 2018-03-30 | 2023-04-14 | 卡巴斯基实验室股份制公司 | 估计和管理存储设备退化的系统和方法 |
JP2021105964A (ja) * | 2019-12-27 | 2021-07-26 | Necソリューションイノベータ株式会社 | 情報処理方法 |
JP7491545B2 (ja) | 2019-12-27 | 2024-05-28 | Necソリューションイノベータ株式会社 | 情報処理方法 |
JP2021170223A (ja) * | 2020-04-15 | 2021-10-28 | 株式会社日立製作所 | 計算機システム、制御方法及びプログラム |
JP7261763B2 (ja) | 2020-04-15 | 2023-04-20 | 株式会社日立製作所 | 計算機システム、制御方法及びプログラム |
US11599297B2 (en) | 2021-01-27 | 2023-03-07 | Hitachi, Ltd. | Storage apparatus, maintenance support method, and maintenance support program |
Also Published As
Publication number | Publication date |
---|---|
US7451346B2 (en) | 2008-11-11 |
US20070220313A1 (en) | 2007-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007233903A (ja) | 記憶制御装置及び記憶制御装置のデータ回復方法 | |
JP5285610B2 (ja) | グローバルホットスペアディスクが存在するときに、故障したドライブを復元、及びコピーバックする最適化された方法 | |
JP3732869B2 (ja) | 外部記憶装置 | |
JP4900816B2 (ja) | 記憶制御装置、記憶制御装置の制御方法 | |
EP2350839B1 (en) | A mass-storage system utilizing solid-state storage and non-solid-state storage | |
US8464094B2 (en) | Disk array system and control method thereof | |
JP4884885B2 (ja) | 記憶制御装置及び記憶制御装置の障害回復方法 | |
JP4486348B2 (ja) | ドライブの稼働時間を抑止するディスクアレイ | |
US7966471B2 (en) | Storage controller and method for control of a data storage device | |
US8312315B2 (en) | Storage control device and RAID group extension method | |
JP4693893B2 (ja) | 記憶制御装置及び記憶制御装置の制御方法 | |
US8819522B2 (en) | Storage device array system, information processing apparatus, storage device array control method, and program | |
JP5285611B2 (ja) | グローバルホットスペアディスクが存在するときに、切断されたドライブを復元、及びコピーバックする最適化された方法 | |
US20080010500A1 (en) | RAID controller, RAID system and control method for RAID controller | |
JP2008509474A (ja) | 耐故障性raidアレイプリエンプティブ復元の実行 | |
JP2008046986A (ja) | ストレージシステム | |
WO2002091111A2 (en) | Parity mirroring between controllers in an active-active controller pair | |
WO2015011825A1 (ja) | ストレージシステムおよびストレージシステムの制御方法 | |
JP2005301419A (ja) | ディスクアレイ装置およびそのデータ処理方法 | |
JP2010055210A (ja) | ストレージシステム及びデータ保証方法 | |
JP2009026240A (ja) | 記憶制御システムおよび記憶制御方法 | |
US8938641B2 (en) | Method and apparatus for synchronizing storage volumes | |
JP2009163562A (ja) | ストレージシステム、ストレージシステムの制御部、ストレージシステムの制御方法 | |
JP3776438B2 (ja) | 記憶装置 | |
JP4398596B2 (ja) | ディスクアレイ装置 |