以下に、図面を参照して、本発明にかかる制御プログラム、制御方法、および制御装置の実施の形態を詳細に説明する。
(実施の形態にかかる制御方法の一実施例)
図1は、実施の形態にかかる制御方法の一実施例を示す説明図である。図1において、制御装置100は、アプリケーションソフトウェア101、複数の記憶装置を用いてデータを冗長化して記憶するミラーリングを制御するソフトウェア102、複数の記憶装置のそれぞれに応じたディスクドライバ103を起動するコンピュータである。以下の説明では、アプリケーションソフトウェア101を「アプリ101」と表記する場合がある。以下の説明では、ミラーリングを制御するソフトウェア102を「ミラーソフト102」と表記する場合がある。以下の説明では、ディスクドライバ103を「ドライバ103」と表記する場合がある。
ここで、アプリ101、ミラーソフト102、ドライバ103は、それぞれ、下記のように動作する場合が考えられる。例えば、アプリ101は、OS(Operating System)からバッファを確保し、バッファに書き込み対象のデータを格納して、バッファの制御権とともにデータの書き込み要求をミラーソフト102に送信する。そして、アプリ101は、ミラーソフト102から書き込みの成功の応答を受け付けるまで、書き込み要求したデータの読み出しなどを含む業務を行わない。
また、ミラーソフト102は、データの書き込み要求を受け付けると、制御権を受け付けたバッファを流用して、バッファの制御権とともにデータの書き込み要求を複数の記憶装置のそれぞれに応じたドライバ103に送信して、記憶装置にデータを書き込ませる。そして、ミラーソフト102は、データの整合性を保つために、複数のドライバ103のそれぞれから書き込み成否の応答を受け付けてから、アプリ101に書き込みの成否を応答する。また、ミラーソフト102は、複数のドライバ103のそれぞれから書き込み成否の応答を受け付けるまでは、アプリ101に書き込みの成否を応答しない。
また、ドライバ103は、データの書き込み要求を受け付けると、データの書き込み要求に応じたタスクをキューに登録して、キューから取り出したタスクにしたがって、制御権を受け付けたバッファに基づいて記憶装置に対するデータの書き込みを試行する。ドライバ103は、データの書き込みがタイムアウトした場合には、試行回数が所定回数になるまでは記憶装置に対するデータの書き込みを再試行する。ここで、ドライバ103は、データの書き込みが成功した場合には、データの書き込み成功の応答を、ミラーソフト102に送信する。一方で、ドライバ103は、データの書き込みが所定回数タイムアウトした場合には、記憶装置に対するデータの書き込みを再試行せず、データの書き込み失敗の応答を、ミラーソフト102に送信する。
しかしながら、このように動作する場合では、下記のように、第1の要因、第2の要因などによって、アプリ101から受け付けたデータの書き込み要求に対するミラーソフト102の応答時間が増大してしまう場合がある。これにより、アプリ101の業務について停滞を招いてしまい、アプリ101の利用者が要求する処理能力を保証することができなくなることがある。
例えば、第1の要因は、複数の記憶装置のうち、何れかの記憶装置に異常があることである。何れかの記憶装置に異常があることは、制御装置100から何れかの記憶装置までの伝送路に異常があることを含んでよい。第1の要因によれば、ドライバ103が、記憶装置に対するデータの書き込みを所定回数試行してからミラーソフト102に応答することになるため、ミラーソフト102からの書き込み要求に対するドライバ103の応答時間が増大してしまう。そして、ミラーソフト102が、ドライバ103から応答を受け付けるまではアプリ101に応答しないため、アプリ101からの書き込み要求に対するミラーソフト102の応答時間の増大も招いてしまう。
第2の要因は、第1の要因に加えて、アプリ101が、連続的にデータの書き込み要求をミラーソフト102に送信することである。第2の要因によれば、ドライバ103が、キューに蓄積されたタスクのそれぞれについて、記憶装置に対するデータの書き込みを所定回数試行してからミラーソフト102に応答することになる。このため、ミラーソフト102からの書き込み要求に対するドライバ103の応答時間が、さらに増大してしまう。
そこで、本実施の形態では、複数の記憶装置の何れかに異常がある場合であっても、アプリ101から受け付けたデータの書き込み要求に対するミラーソフト102の応答時間の増大を抑制することができる制御方法について説明する。かかる制御方法によれば、アプリ101およびドライバ103の動作を変更しなくても、ミラーソフト102の応答時間の増大を抑制することができる。
図1において、制御装置100は、ミラーリングの対象になる複数の記憶装置(ディスク)と接続されている。ディスクは、例えば、磁気ディスクや光ディスク、ディスクアレイ、SSD(Solid State Drive)、オールフラッシュのディスクアレイなどである。制御装置100において、アプリ101が起動されている。また、制御装置100において、ミラーソフト102が起動されている。また、制御装置100において、複数のディスクのそれぞれに応じたドライバ103が起動されている。ドライバ103は、例えば、ディスクドライバ103である。
図1の例では、アプリ101は、第1の記憶領域m1を確保し、第1の記憶領域m1に格納したデータの書き込み要求をミラーソフト102に送信する。第1の記憶領域m1は、書き込み対象のデータを格納する領域を有する。データの書き込み要求は、例えば、第1の記憶領域m1の制御権とともに送信される。
アプリ101は、例えば、第1の記憶領域m1をOSから確保して、書き込み対象のデータを第1の記憶領域m1に格納する。より具体的には、書き込み対象のデータは、第1の記憶領域m1が有する書き込み対象のデータを格納する領域に格納される。そして、アプリ101は、第1の記憶領域m1の制御権とともに、第1の記憶領域m1に格納されたデータの書き込み要求を、ミラーソフト102に送信する。ここで、第1の記憶領域m1が不使用になった場合には、第1の記憶領域m1を確保したアプリ101が、第1の記憶領域m1を解放するという規則がある。
(1−1)ミラーソフト102は、第1の記憶領域m1に格納されたデータの書き込み要求を、アプリ101から受け付ける。ミラーソフト102は、例えば、第1の記憶領域m1の制御権とともに、第1の記憶領域m1に格納されたデータの書き込み要求を、アプリ101から受け付ける。
(1−2)ミラーソフト102は、書き込み要求を受け付けた場合に、第1の記憶領域m1とは異なる第2の記憶領域m2を取得して確保する。第2の記憶領域m2は、書き込み対象のデータを格納する領域を有する。ミラーソフト102は、例えば、第1の記憶領域m1とは異なる第2の記憶領域m2をOSに要求して、OSから割り当てられた第2の記憶領域m2を確保する。
(1−3)ミラーソフト102は、第1の記憶領域m1に格納されたデータを、確保した第2の記憶領域m2に複製する。以下の説明では、第2の記憶領域m2に複製されたデータを「複製データ」と表記する場合がある。
(1−4)ミラーソフト102は、ミラーリングの対象になるディスクd1,d2のそれぞれに対する複製データの書き込み要求を、ディスクd1,d2のそれぞれに応じたドライバ103に送信する。ミラーソフト102は、例えば、第2の記憶領域m2が有する複製データを格納する領域の制御権とともに、複数のディスクのそれぞれに対する複製データの書き込み要求を、複数のディスクのそれぞれに応じたドライバ103に送信する。
これにより、ミラーソフト102は、第1の記憶領域m1を流用せずに、データの書き込み要求を、複数のドライバ103のそれぞれに送信することができる。そして、ミラーソフト102は、第1の記憶領域m1の制御権をアプリ101に返却しても、ドライバ103による動作を続行可能にすることができる。
複数のドライバ103のそれぞれは、例えば、当該ドライバ103に応じたディスクに対する、第2の記憶領域m2に格納された複製データの書き込み要求を、ミラーソフト102から受け付け、当該ディスクに対する複製データの書き込みを試行する。複数のドライバ103のそれぞれは、例えば、第2の記憶領域m2が有する複製データを格納する領域の制御権とともに、当該ドライバ103に応じたディスクに対する複製データの書き込み要求を、ミラーソフト102から受け付け、当該ディスクに対する複製データの書き込みを試行する。そして、複数のドライバ103のそれぞれは、複製データの書き込みの成否をミラーソフト102に応答する。
(1−5)ミラーソフト102は、複製データの書き込み要求をドライバ103に送信してからの経過時間を監視して、複製データの書き込み要求をドライバ103に送信してからドライバ103によるデータの書き込み処理がリトライオーバーするより前に所定時間が経過したことを検出する。ミラーソフト102は、例えば、複製データの書き込み要求をドライバ103に送信した際に監視タイマーを起動し、複製データの書き込み要求をドライバ103に送信してからドライバ103によるデータの書き込み処理がリトライオーバーするより前に所定時間が経過したことを検出する。
所定時間は、例えば、ドライバ103がデータの書き込み要求を受け付けてから当該データの書き込みがリトライオーバーするまでにかかる時間より短い時間が設定される。所定時間は、さらに、ドライバ103がデータの書き込み要求を受け付けてから1回目のデータの書き込みを試行するまでにかかる時間より長い時間が設定されてもよい。
これにより、ミラーソフト102は、まだドライバ103から書き込みの成否の応答がなくても、所定時間が経過したときに書き込みの成否の応答がないディスクを異常がある可能性があるディスクであると判定することができる。また、ミラーソフト102は、ドライバ103から書き込み成功の応答があるディスクであっても、ドライバ103がデータの書き込みを複数回試行した不安定なディスクであり、間欠故障の可能性があるディスクであると判定することができる。
(1−6)ミラーソフト102は、所定時間が経過した際に、複数のディスクd1,d2のうち少なくとも何れかのディスクd1に対する書き込み成功の応答がある場合には、書き込みの応答がないディスクd2をミラーリングの対象から切り離して除外する。ミラーソフト102は、例えば、所定時間が経過したことを検出した際に、複数のディスクのうち、少なくとも何れかのディスクに対する書き込み成功の応答がある場合には、書き込みの応答がないディスクをミラーリングの対象から除外する。書き込みの応答がないディスクは、上述したように故障の可能性があるディスクである。
これにより、ミラーソフト102は、データの整合性を保つために、故障の可能性があるディスクを、ミラーリングの対象から除外することができる。また、ミラーソフト102は、必ずデータの書き込みが失敗する状態でなくても、不安定になったディスクであり、間欠故障の可能性があるディスクを、ミラーリングの対象から除外することができる。このため、ミラーソフト102は、不安定なディスクを使い続けてデータの損失などが発生することを防止して、データの整合性を保証しやすくすることができる。
(1−7)ミラーソフト102は、所定時間が経過した際に、複数のディスクd1,d2のうち、少なくとも何れかのディスクd1に対する書き込み成功の応答がある場合には、アプリ101に書き込み成功を応答する。ミラーソフト102は、例えば、所定時間が経過したことを検出した際に、複数のディスクのうち、少なくとも何れかのディスクに対する書き込み成功の応答がある場合には、アプリ101に書き込み成功を応答する。
これによれば、ミラーソフト102は、ドライバ103に第1の記憶領域m1を使用させずにディスクd1,d2に対する書き込みを試行させ、ドライバ103がディスクd1,d2に対する書き込みを試行中であってもアプリ101に応答可能になる。また、ミラーソフト102は、所定時間が経過したことを検出した際に、まだ書き込み成功の応答がなく、故障の可能性があるディスクを、ミラーリングの対象から除外することができる。
これにより、ミラーソフト102は、複数のドライバ103のそれぞれからの応答を待たなくても、アプリ101に応答することができ、応答時間の増大を抑制することができ、応答遅延を防止することができる。換言すれば、ミラーソフト102は、ディスクに異常がある場合であっても、応答時間の増大を抑制することができる。また、ミラーソフト102は、連続的なデータの書き込み要求を受け付けた場合であっても、応答時間の増大を抑制することができる。また、ミラーソフト102は、アプリ101からデータの読み出し要求などを受け付けた場合に、ディスクd1,d2のうち、故障の可能性があるディスクからデータの読み出しなどを行ってしまうことを防止することができる。
アプリ101は、ドライバ103がデータの書き込みを試行中であっても、書き込み成功の応答を受け付けて第1の記憶領域m1を解放可能になり、データの読み出しなどを含む業務を再開することができる。そして、アプリ101は、アプリ101の利用者が要求する処理能力を保証しやすくなる。
また、ミラーソフト102は、複数のドライバ103のそれぞれからの応答があった場合に、第2の記憶領域m2を解放してもよい。これにより、ミラーソフト102は、ミラーリングの対象からディスクd1,d2の何れかを除外したり、アプリ101に応答した後であっても、第2の記憶領域m2を確保したままにせず解放することができ、OSに返却することができる。
ここでは、制御装置100が、ディスクd1,d2のそれぞれに応じた独立したドライバ103を有する場合について説明したが、これに限らない。例えば、制御装置100が有する1つのドライバ103が、複数のディスクd1,d2のそれぞれに対するデータの書き込みを制御する共通したドライバ103であってもよい。
ここでは、説明の簡略化のため、詳細な説明を省略したが、第1の記憶領域m1は、さらに、書き込み対象のデータについての管理情報を格納する領域を有する。同様に、第2の記憶領域m2は、さらに、書き込み対象のデータについての管理情報を格納する領域を有する。
(制御装置100のシステム構成例)
次に、図2を用いて、制御装置100のシステム構成例について説明する。
図2は、制御装置100のシステム構成例を示す説明図である。図2において、制御装置100と、ディスク装置202とは、伝送路201によって接続される。伝送路201は、例えば、FC(Fiber Channel)、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)などである。
制御装置100は、OSを有する。OSは、ハードウェア資源などをソフトウェアに割り当てる。OSは、例えば、図3に後述するメモリ302に設けられたバッファの空きプールを管理し、ソフトウェアの要求に応じて空きプールから当該ソフトウェアにバッファを割り当てる。制御装置100は、階層構造になったソフトウェアを有する。制御装置100は、例えば、上位から順に、アプリ101、ミラーソフト102、ディスクドライバ103を有する。アプリ101、ミラーソフト102、ディスクドライバ103の動作については、図6および図7に後述する。ディスク装置202は、ミラーリングの対象になる複数のディスクを有する。図2の例では、ディスク装置202は、ディスクd1およびディスクd2を有する。
(制御装置100のハードウェア構成例)
次に、図3を用いて、制御装置100のハードウェア構成例について説明する。
図3は、制御装置100のハードウェア構成例を示すブロック図である。図3において、制御装置100は、CPU(Central Processing Unit)301と、メモリ302と、ディスクI/F303とを有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、制御装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ディスクI/F303は、ディスク装置202に接続され、ディスク装置202と内部のインターフェースを司り、ディスク装置202と内部に対するデータの入出力を制御する。ディスクI/F303は、例えば、上述した伝送路201となる。
制御装置100は、上述した構成部のほか、例えば、SSD、半導体メモリ、キーボード、マウス、ディスプレイなどを有することにしてもよい。また、制御装置100は、SSDおよび半導体メモリなどを有していてもよい。制御装置100は、例えば、サーバ、PC(Personal Computer)などによって実現される。
(各種テーブルの記憶内容)
次に、図4を用いて、ミラー状態管理テーブル400、発行I/Oのキュー管理テーブル410と、発行I/O管理テーブル420などを含む各種テーブルの記憶内容の一例について説明する。各種テーブルは、例えば、図3に示したメモリ302、ディスク装置202などの記憶領域によって実現される。また、各種テーブルは、例えば、ミラーソフト102によって作成される。具体的には、例えば、ミラー状態管理テーブル400と発行I/Oのキュー管理テーブル410とは、ミラーリングの対象となるディスク群ごとにセットで作成される。
図4は、各種テーブルの記憶内容の一例を示す説明図である。図4に示すように、ミラー状態管理テーブル400は、ミラーに含まれる各ディスクの状態のフィールドを有する。ミラー状態管理テーブル400は、ミラーを設定する毎に、ミラー状態管理情報がレコード400−1などとして記憶される。
ミラーに含まれるディスクの状態とは、ミラー管理されたディスクが正常であるか異常であるかを示すフラグである。ミラーに含まれるディスクの状態は、ミラー管理されたディスクが正常であれば「0」である。ミラーに含まれるディスクの状態は、ミラー管理されたディスクが異常であれば「1」である。ミラー状態管理テーブル400は、第2制御機能からの応答(通知)により、どちらかの書き込みに異常があれば、ミラー状態管理テーブル400のミラーに含まれるディスクの状態を「1」に変更することで、異常側のディスクを除外(閉塞)する。
例えば、ミラーに含まれるディスクの状態が「0,0」であれば、ミラーリングが正常であることを示す。また、例えば、ミラーに含まれるディスクの状態が「0,1」であれば、ミラー元のディスクが正常であり、ミラー先のディスクが異常であることを示す。また、例えば、ミラーに含まれるディスクの状態が「1,0」であれば、ミラー元のディスクが異常であり、ミラー先のディスクが正常であることを示す。
また、図4に示すように、発行I/Oのキュー管理テーブル410は、I/O発行中と、I/O完了待ちとのフィールドを有する。発行I/Oのキュー管理テーブル410は、ミラーを設定する毎に、発行I/Oのキュー管理情報がレコード410−1などとして記憶される。
発行I/Oのキュー管理テーブル410は、アプリ101からの書き込み要求に応じてミラーソフト102から複数のディスクドライバ103のそれぞれに送信される書き込み要求(発行I/O)群を管理するテーブルである。I/O発行中とは、書き込み要求(発行I/O)群を管理する発行I/O管理テーブル420を指し示すアドレスである。I/O発行中は、例えば、複数のディスクドライバ103に書き込み要求を行い、どちらのディスクドライバ103に対しても応答待ち、かつ、所定時間が経過していない状態に対応する発行I/O管理テーブル420を指し示すアドレスである。また、どちらか一方のディスクドライバ103からの書き込み正常応答があり、所定時間が経過していないもう片方のディスクドライバ103からの応答を待ち続ける状態を含んでもよい。
I/O完了待ちとは、書き込み要求(発行I/O)群を管理する発行I/O管理テーブル420を指し示すアドレスである。I/O完了待ちは、例えば、どちらか一方のディスクドライバ103からの書き込み正常応答があり、所定時間が経過した後のもう片方のディスクドライバ103からの応答を待ち続ける状態に対応する発行I/O管理テーブル420を指し示すアドレスである。この時、ミラー状態管理テーブル400のミラーに含まれるディスクの状態に関して、応答を待ち続けるディスクは、異常の状態となる。
また、図4に示すように、発行I/O管理テーブル420は、発行I/Oのキュー管理テーブル410のアドレス先に格納された管理テーブルであり、各ディスクドライバ103への書き込み要求(発行I/O)に対応したレコード420−1、420−2、420−3として格納されている。そして発行I/Oのキュー管理テーブル410のアドレスを参照することでその書き込み要求(発行I/O)に対応したレコード420−1、420−2、420−3が取得できる。各レコード420−1、420−2、420−3は、書き込み要求(発行I/O)ごとの書き込みと応答に必要なフィールドを有する。発行I/O管理テーブル420は、例えば、書き込み要求(発行I/O)ごとに、各バッファのアドレスと、バッファb2およびバッファb2’に対して、I/O発行有無と、I/O応答状態とのフィールドをそれぞれ有する。さらに、書き込み要求(発行I/O)がI/O発行中からI/O完了待ちに変わると、それに応じて発行I/Oのキュー管理テーブル410のI/O発行中に対応した発行I/O管理テーブル420からI/O完了待ちに対応した発行I/O管理テーブル420に移し変える。(例えば、破線で表現したように発行I/O管理テーブルのレコード420−3は、フィールドの情報を更新し、レコード421−1に移し変えられる。)
バッファb2I/O発行有無とは、ディスクドライバ103に対する書き込み要求の有無を示すフラグである。バッファb2I/O発行の有無は、例えば、未発行であれば「0」であり、発行済であれば「1」である。バッファb2’I/O発行有無は、バッファb2I/O発行有無と同様である。
バッファb1とは、アプリ101が、ディスク装置202に対してデータを書き込むために、OSから確保したバッファb1であり、管理域ma1とデータ域da1を有したバッファb1のアドレスである。バッファb1は、例えば、図1に示した第1の記憶領域m1に対応する。
バッファb2とは、ミラーソフト102が、書き込み要求を受け付けた後、アプリ101への応答と、ディスクドライバ103からの応答待ちとを、別々に扱うことができるように、第2の制御機能により確保したバッファb2であり、バッファb1とは異なる、管理域ma2とデータ域da2を有したバッファb2のアドレスである。バッファb2は、例えば、図1に示した第2の記憶領域m2に該当し、ミラーリングの書き込み対象となる一方のディスクに対応するバッファである。
バッファb2’は、バッファb2と同様であるが、バッファb2のデータ域da2を利用可能であるため、データ域を有さなくても良い。バッファb2’は、例えば、図1に示した第2の記憶領域m2に該当し、ミラーリングの書き込み対象となる他方のディスクに対応するバッファである。なお、ミラーソフト102は、アプリ101から受け付けたバッファb1に格納された書き込み対象のデータをバッファb2のデータ域da2に複製し、管理情報をバッファb2の管理域ma2に設定する。また、ミラーソフト102は、バッファb2に格納した管理情報を、バッファb2’の管理域ma2’に複製する。
バッファb2I/O応答状態とは、ディスクドライバ103から応答があったか否かを示すフラグである。バッファb2I/O応答状態とは、例えば、I/O応答待ちであれば「0」であり、I/O応答ありであれば「1」である。バッファb2’I/O応答状態は、バッファb2I/O応答状態と同様である。
(制御装置100の機能的構成例)
次に、図5を用いて、制御装置100の機能的構成例について説明する。
図5は、制御装置100の機能的構成例を示すブロック図である。制御装置100は、第1の制御機能と、第2の制御機能とを有する。制御装置100は、第1の制御機能となる、第1の受付部511と、第1の管理部512と、第1の応答部513を含む。制御装置100は、第2の制御機能となる、第2の受付部521と、複製部522と、要求部523と、第2の管理部524と、第2の応答部525と、解放部526を含む。
例えば、第1の制御機能では、第1の受付部511はアプリからの書き込み要求を受け付ける受付部、第1の管理部512はミラー状態管理テーブル400に基づいてミラー状態を確認し書き込み要求を発行するディスクを決定するミラー管理部、書き込み要求とバッファの制御権を第2の受付部521に送信するミラー管理部、第2の応答部525からの応答を受けそれぞれの状態に合わせてアプリ101への応答と異常側のミラーリングを除外(閉塞)するミラー管理部、第1の応答部513は第2の応答部525からの応答と第1の管理部512からの指示によりアプリ101への応答を行う応答部、また第2の応答部525からの応答を受け、異常のディスクを除外するとともにアプリ101への応答を行うミラー切離部を含んで良い。さらに第2の制御機能では、第2の受付部521は第1の管理部512からの書き込み要求を受け付ける受付部、複製部522は複製バッファを獲得し書き込み要求の対象となるデータを複製する複製部、要求部523は監視タイマーを起動し複製データの書き込み要求をドライバ103へ行う書込要求部、第2の管理部524は監視タイマーおよびドライバ103からの応答を監視し第1の応答部513へ書き込み要求に対する応答を返す管理部、また第1の応答部513へ書き込み要求に対する応答を返す第2の応答部525を含んで良い、また第2の管理部524からの指示でバッファを解放するバッファ解放部526を含んで良い。
第1の受付部511〜解放部526は、制御部となる機能であり、具体的には、例えば、図3に示したメモリ302、ディスク装置202などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、ディスクI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302、ディスク装置202などの記憶装置に記憶される。
第1の受付部511は、アプリ101によって取得された第1の記憶領域m1に格納されたデータの書き込み要求を、アプリ101から受け付ける。第1の記憶領域m1とは、アプリ101からOSに要求され、OSからアプリ101に割り当てられた記憶領域である。第1の記憶領域m1は、例えば、書き込み対象のデータが格納される記憶領域と、管理情報が格納される記憶領域とを含む。第1の記憶領域m1は、例えば、バッファb1に対応する。第1の受付部511は、例えば、バッファb1の制御権とともに、バッファb1に格納されたデータの書き込み要求を、アプリ101から受け付ける。
第1の管理部512は、ミラー状態管理テーブル400に基づいてミラーリングの状態を確認し、書き込み要求を発行するディスクを決定し、書き込み要求を第2の受付部521に送信する。第1の管理部512は、例えば、ミラーリングの対象になる両方のディスクとも正常で、ミラーリングが解除されていなければ、第2の受付部521に対してバッファb1の制御権を送信し、両方のディスクに書き込むように、書き込み要求を送信する。一方で、第1の管理部512は、例えば、一方のディスクが異常で、ミラーリングが解除されていれば、第2の受付部521に対して、バッファb1の制御権を送信し、正常な他方のディスクに書き込むように、書き込み要求を送信する。上述した第1の管理部512の機能は、第1の受付部511が含んでもよい。
第2の受付部521は、第1の受付部511がアプリ101から受け付けたバッファb1の制御権とともに、バッファb1に格納されたデータの書き込み要求を、第1の管理部512から受け付ける。
第2の受付部521は、書き込み要求を受け付けると、発行I/O管理テーブル420を更新する。第2の受付部521は、例えば、両方のディスクとも正常で、ミラーリングが解除されておらず、両方のディスクに書き込むように書き込み要求を受信した場合、バッファb2I/O発行有無に「1」、バッファb2’I/O発行有無に「1」を設定する。第2の受付部521は、一方のディスクが異常で、ミラーリングが解除されており、正常な他方のディスクに書き込むように書き込み要求を受信した場合、バッファb2I/O発行有無に「1」、バッファb2’I/O発行有無に「0」を設定する。
複製部522は、第2の受付部521が書き込み要求を受け付けた場合に、第1の記憶領域m1とは異なる第2の記憶領域m2を取得して確保する。第2の記憶領域m2とは、OSから割り当てられる記憶領域である。第2の記憶領域m2は、例えば、書き込み対象のデータが格納される記憶領域と、複数のディスクドライバ103のそれぞれが用いる管理情報が格納される記憶領域とを含む。第2の記憶領域m2は、例えば、バッファb2とバッファb2’との組み合わせに対応する。そして、複製部522は、データを、取得した第2の記憶領域m2に複製する。
複製部522は、例えば、複数のディスクドライバ103の何れかが用いるバッファb2、および、残余のディスクドライバ103のそれぞれが用いるバッファb2’をOSに要求する。残余のディスクドライバ103が複数ある場合、バッファb2’は残余のディスクドライバ103のそれぞれに合わせて複数あってよい。複製部522は、OSから割り当てられた、何れかのディスクドライバ103が用いるバッファb2、および、残余のディスクドライバ103のそれぞれが用いるバッファb2’を確保する。そして、複製部522は、バッファb1に格納された書き込み対象のデータを、確保したバッファb2に複製し、管理情報を設定する。また、複製部522は、バッファb2に格納された管理情報を、確保した残余のディスクドライバ103のそれぞれが用いるバッファb2’に複製する。
複製部522は、具体的には、発行I/O管理テーブル420のバッファb2I/O発行有無に「1」、バッファb2’I/O発行有無に「1」が設定されていれば、一方のディスクに対応するディスクドライバ103が用いるバッファb2、および、他方のディスクに対応するディスクドライバ103が用いるバッファb2’をOSに要求する。そして、複製部522は、バッファb1に格納された書き込み対象のデータを、確保したバッファb2に複製し、管理情報を設定するとともに、バッファb2に格納された管理情報を、確保したバッファb2’に複製する。
また、複製部522は、具体的には、発行I/O管理テーブル420のバッファb2I/O発行有無に「1」、バッファb2’I/O発行有無に「0」が設定されていれば、正常な一方のディスクに対応するディスクドライバ103が用いるバッファb2をOSに要求し、異常な他方のディスクに対応するディスクドライバ103が用いるバッファb2’について要求しない。そして、複製部522は、バッファb1に格納された書き込み対象のデータを、確保したバッファb2に複製し、管理情報を設定する。
要求部523は、複数のディスクのそれぞれに対する複製データの書き込み要求を、複数のディスクのそれぞれに応じたドライバ103に送信する。複数のディスクは、例えば、ミラーリングの対象になり、データを冗長化して記憶することに用いられる、図1に示したディスクd1,d2である。ドライバ103は、ディスクへのデータの書き込みを制御するソフトウェアである。ドライバ103は、例えば、ディスクドライバ103である。
要求部523は、例えば、バッファb2の制御権とともに、バッファb2に複製された書き込み対象のデータの書き込み要求を、何れかのディスクドライバ103に送信する。また、要求部523は、例えば、残余のディスクドライバ103のそれぞれについて確保されたバッファb2’の制御権とともに、バッファb2に複製された書き込み対象のデータの書き込み要求を、残余のディスクドライバ103のそれぞれに送信する。
要求部523は、具体的には、発行I/O管理テーブル420のバッファb2I/O発行有無に「1」、バッファb2’I/O発行有無に「1」が設定されていれば、確保されたバッファb2の制御権とともに、バッファb2に複製された書き込み対象のデータの書き込み要求を、一方のディスクに対応するディスクドライバ103に送信する。また、要求部523は、確保されたバッファb2’の制御権とともに、バッファb2に複製された書き込み対象のデータの書き込み要求を、他方のディスクに対応するディスクドライバ103に送信する。
また、要求部523は、具体的には、発行I/O管理テーブル420のバッファb2I/O発行有無に「1」、バッファb2’I/O発行有無に「0」が設定されていれば、確保されたバッファb2の制御権とともに、バッファb2に複製された書き込み対象のデータの書き込み要求を、正常な一方のディスクに対応するディスクドライバ103に送信する。
また、要求部523は、書き込み要求をディスクドライバ103に送信すると、書き込み要求を送信してから経過した時間の計測を開始する。要求部523は、例えば、監視タイマーt1を起動する。
第2の管理部524は、例えば、両方のディスクへの書き込みが指示された場合に、両方のディスクドライバ103からの応答を待ち受け、監視タイマーt1のタイムアウトを監視する。第2の管理部524は、監視タイマーt1のタイムアウトまでに、両方のディスクドライバ103から書き込み成功の応答があれば、書き込みが正常であるとして、第1の応答部513に対して正常の応答を行い、バッファb1の制御権を返却する。
一方で、第2の管理部524は、例えば、両方のディスクへの書き込みが指示された場合に、両方のディスクドライバ103からの応答を待ち受け、監視タイマーt1のタイムアウトを監視する。第2の管理部524は、監視タイマーt1のタイムアウトまでに、一方のディスクドライバ103からしか書き込み成功の応答がなければ、他方の書き込みが異常であるとして、第1の応答部513に対して一方が正常であり他方が異常であるとの応答を行い、バッファb1の制御権を返却する。
また、第2の管理部524は、例えば、一方のディスクのみへの書き込みが指示された場合に、一方のディスクドライバ103からの応答を待ち受け、監視タイマーt1のタイムアウトを監視する。第2の管理部524は、監視タイマーt1のタイムアウトまでに、一方のディスクドライバ103から書き込み成功の応答があれば、書き込みが正常であるとして、第1の応答部513に対して正常の応答を行い、バッファb1の制御権を返却する。
以下では、両方のディスクへの書き込みが指示されたが、一方のディスクドライバ103からしか書き込み成功の応答がなく、他方の書き込みが異常である場合について詳細に説明する。ここで、第2の管理部524は、例えば、書き込み要求をディスクドライバ103に送信してからの経過時間を監視し、書き込み要求をディスクドライバ103に送信してから所定時間が経過したことを検出する監視部、またディスクドライバ103から書き込み成功の応答を待ち続けるディスクドライバ応答待ち部を含んでよい。なお、第2の管理部524は、第2の応答部525や解放部526の機能を含んでもよい。なお、第2の管理部524は、第2の管理部524からの指示でバッファを解放するバッファ解放部526を含んでもよい。
第2の管理部524は、複数のディスクドライバ103のそれぞれからの応答を待ち続ける。第2の管理部524は、何れかのディスクドライバ103から応答を受け付けると、発行I/O管理テーブル420のバッファb2I/O応答状態とバッファb2’I/O応答状態とのうち、応答を受け付けたディスクドライバ103に対応するI/O応答状態を「0」から「1」に更新する。
第2の管理部524は、複製データの書き込み要求をディスクドライバ103に送信してから所定時間が経過した際に、少なくとも何れかのディスクに対する書き込み成功の応答がある場合には、書き込みの応答がないディスクを記録する。ここで、所定時間は、例えば、ディスクドライバ103がデータの書き込み要求を受け付けてからディスクに対する書き込みがリトライオーバーするまでの時間よりも短い時間に設定される。
第2の管理部524は、書き込み要求をディスクドライバ103に送信してからの経過時間を監視し、書き込み要求をディスクドライバ103に送信してから所定時間が経過したことを検出する。例えば、書き込み要求がディスクドライバ103に送信された後、所定時間の監視と複数のディスクドライバ103のそれぞれからの応答の状態に基づいて、発行I/Oのキュー管理テーブル410に記録する。その際に、第2の管理部524は発行I/O管理テーブル420を参照し、応答状態の情報に基づいて各ディスクの応答あり・なしを判定し、その判定に応じた応答がないディスクを特定する。さらに、第2の管理部524は第1の応答部513に対して異常の応答を行う。この異常の応答により、第1の管理部512は異常の応答があったディスクに対応するミラー状態管理テーブル400を更新し、第1の管理部512は異常の応答があったディスクをミラーリングの対象から除外する。
第2の応答部525は、要求部523が複製データの書き込み要求をディスクドライバ103に送信してから所定時間が経過する前に、複数のディスクのそれぞれに対する書き込み成功の応答がある場合には、第1の応答部513に書き込み成功を応答する。第2の応答部525は、例えば、所定時間が経過したことを検出する前であっても、複数のディスクのそれぞれに対する書き込み成功の応答がある場合には、第1の応答部513に書き込み成功を応答する。また、第2の応答部525は、バッファb1の制御権を、第1の応答部513に返却する。
第2の応答部525は、要求部523が複製データの書き込み要求をディスクドライバ103に送信してから所定時間が経過した際に、複数のディスクのうち、少なくとも何れかのディスクに対する書き込み成功の応答がある場合には、他方のディスクに対する書き込みが異常であるとして、第1の応答部513に対して何れかのディスクに対する書き込みが正常であり、他方のディスクに対する書き込みが異常であるとの応答をする。第2の応答部525は、例えば、所定時間が経過したことを検出した際に、複数のディスクのうち、少なくとも何れかのディスクに対する書き込み成功の応答がある場合には、他方のディスクに対する書き込みが異常であるとして、第1の応答部513に対して何れかのディスクに対する書き込みが正常であり、他方のディスクに対する書き込みが異常であるとの応答をする。また、第2の応答部525は、バッファb1の制御権を、第1の応答部513に返却する。
第1の管理部512は、第2の応答部525からの応答を受け、第1の応答部513にアプリ101に応答を返すための指示と、ミラー状態管理テーブル400を更新する。例えば、第2の応答部525からの応答が、複数のディスクのそれぞれに対する書き込み成功の応答がある場合には、第1の応答部513にアプリ101に書き込み成功の応答を返すように指示する。さらに、複数のディスクのそれぞれに対する書き込みに関し、第1の管理部512は、成功の応答があったディスクに対しては第2の応答部525の応答により第1の応答部513にアプリ101に書き込み成功の応答を返すように指示し、異常の応答があったディスクに対しては対応するミラー状態管理テーブル400の情報を更新し、ミラーリングの対象から除外する。
第1の管理部512は、第1の応答部513がアプリ101に書き込み成功を応答するとともに、ディスクをミラーリングの対象から除外してもよい。また、第1の管理部512は、第1の応答部513がアプリ101に書き込み成功を応答してから、アプリ101から新たな書き込み要求が送信されるまでの間に、ディスクをミラーリングの対象から除外してもよい。また、第1の管理部512がアプリ101に直接書き込み成功を応答するとともに、ディスクをミラーリングの対象から除外してもよい。
第1の応答部513は、第2の応答部525の応答と第1の管理部512からの指示の両方があった場合には、アプリ101への応答とともにバッファb1の制御権を、アプリ101に返却する。
第1の応答部513は、第1の管理部512がディスクをミラーリングの対象から除外するとともに、アプリ101に書き込み成功を応答してもよい。また、第1の応答部513は、第1の管理部512がディスクをミラーリングの対象から除外した後に、アプリ101に書き込み成功を応答してもよい。また第2の応答部525からの応答を受け、異常のディスクを除外するとともにアプリへの応答を行うミラー切離部を含んで良い。
解放部526は、発行I/O管理テーブル420を参照し、複数のディスクのそれぞれに応じたドライバ103からの応答がすべてある場合には、第2の記憶領域m2を解放する。ここで、応答は、ディスクについての書き込み成功の応答であっても、書き込み失敗の応答であってもよい。解放部526は、例えば、複数のディスクドライバ103のそれぞれから書き込みの成否の応答がすべてある場合には、バッファb2およびバッファb2’を解放する。
(制御装置100における制御の流れ)
次に、図6を用いて、制御装置100における制御の流れについて説明する。
図6は、制御装置100における制御の流れを示す説明図である。図6において、ディスク装置202が、ディスクd1およびディスクd2の2つのディスクを含む場合を例に挙げる。
(6−1)アプリ101は、ディスク装置202に対してデータを書き込むため、OSからバッファb1を確保する。バッファb1は、管理域ma1とデータ域da1を有する。管理域ma1は、管理情報が格納される領域である。データ域da1は、書き込み対象のデータが格納される領域である。
(6−2)アプリ101は、(6−1)で確保したバッファb1の管理域ma1およびデータ域da1に、それぞれ、管理情報および書き込み対象のデータを格納し、ミラーソフト102に対して書き込み要求と、バッファb1の制御権とを送信する。
(6−3)ミラーソフト102は、書き込み要求を受け付けると、アプリ101への応答と、ディスクドライバ103からの応答待ちとを、別々に扱うことができるように、バッファb1とは異なるバッファb2およびバッファb2’をOSから確保する。バッファb2は、管理域ma2とデータ域da2を有する。管理域ma2は、管理情報が格納される領域である。データ域da2は、書き込み対象のデータが格納される領域である。
バッファb2’は、管理域ma2’を有する。管理域ma2’は、管理情報が格納される領域である。バッファb2’は、バッファb2のデータ域da2を利用可能であるため、データ域を有さなくてもよい。バッファb2’は、バッファb2のデータ域da2を利用しない場合には、さらにデータ域を有する。
(6−4)ミラーソフト102は、アプリ101から受け付けたバッファb1に格納された書き込み対象のデータをバッファb2のデータ域da2に複製し、管理情報をバッファb2の管理域ma2に設定する。また、ミラーソフト102は、バッファb2の管理情報を、バッファb2’の管理域ma2’に複製する。
(6−5)ミラーソフト102は、(6−4)で書き込み対象のデータを複製したバッファb2およびバッファb2’を用いて、ディスクドライバ103を制御してディスクd1およびディスクd2に対する書き込みを行わせる。このとき、ミラーソフト102は、監視タイマーt1を起動する。
(6−6)ディスクドライバ103は、監視タイマーt2を用いて、監視タイマーt2がタイムアウトするまでディスクに対するデータの書き込みを試行する。ディスクドライバ103は、監視タイマーt2がタイムアウトした場合には、データの書き込みの試行回数が所定回数になるまで、ディスクに対するデータの書き込みを再試行する。
(6−7)ミラーソフト102は、監視タイマーt1がタイムアウトしても、ディスクd2について応答がないため、ディスクd2は異常である可能性があると判定する。そして、ミラーソフト102は、ディスクd2について応答がなくても、ディスクd1について書き込み成功の応答があれば、ディスクd2をミラーリングの対象から除外する。
また、ミラーソフト102は、ミラーリングの対象から除外した際に、アプリ101に書き込み成功の応答とともに、バッファb1の制御権を返却する。このとき、ディスクd2に応じたディスクドライバ103は、データの書き込みを再試行中である。
(6−8)アプリ101は、書き込み成功の応答を受け付けると、OSから確保したバッファb1を解放して、バッファb1をOSの空きプールに返却する。
(6−9)ミラーソフト102は、(6−4)で書き込み対象のデータや管理情報を格納したバッファb2およびバッファb2’を解放せずに、異常と判定したディスクd2からの応答を待つ。ミラーソフト102は、異常と判定したディスクd2に応じたディスクドライバ103からの応答があれば、バッファb2およびバッファb2’を使用終了したと判定して、バッファb2およびバッファb2’を解放する。
(制御装置100における制御の一例)
次に、図7を用いて、制御装置100における制御の一例について説明する。
図7は、制御装置100における制御の一例を示す説明図である。図7において、ディスク装置202が、ディスクd1およびディスクd2の2つのディスクを含む場合を例に挙げる。
<アプリ101の書き込み要求の処理>
アプリ101は、バッファb1をOSから確保する。書き込み対象のデータをバッファb1に格納して、バッファb1の制御権とともに、バッファb1に格納された書き込み対象のデータの書き込み要求を、ミラーソフト102に送信する。
<ミラーソフト102の第1の受付部511、第1の管理部512の処理>
ミラーソフト102は、第1の制御機能によって、上位であるアプリ101から書き込み要求を受け付けると、ミラー状態管理テーブル400を参照して、ミラーリングの状態を確認する。ミラーリングの状態は、例えば、両方のディスクとも正常である第1の状態と、片方のディスクが異常である第2の状態とがある。
ここで、ミラーソフト102は、ミラーリングの対象になる両方のディスクとも正常であれば、第2の制御機能に対してバッファb1の制御権を送信し、両方のディスクに書き込むように指示する。一方で、ミラーソフト102は、一方のディスクが異常であれば、第2の制御機能に対して、バッファb1の制御権を送信し、正常な他方のディスクに書き込むように指示する。
<第1の状態でのミラーソフト102の第2の受付部521、複製部522、要求部523の処理>
ミラーソフト102は、書き込みが指示されると、第2の制御機能によって、発行I/O管理テーブル420を更新し、何れのディスクに書き込みが指示されたかを管理する。ミラーソフト102は、発行I/O管理テーブル420を参照し、両方のディスクへの書き込みが指示された場合には、第2の制御機能によって、OSからバッファb2およびバッファb2’を確保する。ミラーソフト102は、バッファb1に格納された書き込み対象のデータを、OSから確保したバッファb2に複製し、管理情報をバッファb2に設定する。
ミラーソフト102は、第2の制御機能によって、バッファb2に設定した管理情報を、OSから新たに確保したバッファb2’に複製する。ミラーソフト102は、監視タイマーt1を起動する。ミラーソフト102は、バッファb2とバッファb2’の制御権とともに、バッファb2とバッファb2’を用いた書き込み要求を、ディスクドライバ103−1およびディスクドライバ103−2に送信する。
<第2の状態でのミラーソフト102の第2の受付部521、複製部522、要求部523の処理>
ミラーソフト102は、書き込みが指示されると、第2の制御機能によって、発行I/O管理テーブル420を更新し、何れのディスクに書き込みが指示されたかを管理する。ミラーソフト102は、発行I/O管理テーブル420を参照し、片方のディスクへの書き込みが指示された場合には、第2の制御機能によって、OSからバッファb2を確保する。ミラーソフト102は、バッファb1に格納された書き込み対象のデータを、OSから確保したバッファb2に複製し、管理情報をバッファb2に設定する。ミラーソフト102は、監視タイマーt1を起動する。ミラーソフト102は、バッファb2の制御権とともに、バッファb2を用いた書き込み要求を、正常なディスクに応じたディスクドライバ103に送信する。
<ディスクドライバ103のディスクに対する書き込みの処理>
複数のディスクのそれぞれに応じたディスクドライバ103−1,103−2は、上位であるミラーソフト102から書き込み要求を受け付ける。例えば、ディスクドライバ103−1は、書き込み要求を受け付けると、ディスクに対してデータの書き込みを行い、監視タイマーt2により経過時間を監視する。このとき、ディスクドライバ103−1は、ディスクやディスクまでの伝送路201に異常が発生し、監視タイマーt2がタイムアウトするまでに書き込みの応答がない場合には、試行回数が所定回数になるまで書き込みを再試行する。
再試行では、ディスクドライバ103−1は、再び、ディスクに対してデータの書き込みを行い、監視タイマーt2により経過時間を監視し、タイムアウトするまでに書き込みが成功するか否かを判定する。ディスクドライバ103−1は、書き込みが成功したか、または、書き込みを所定回数試行しても書き込みの応答がない場合、ミラーソフト102に書き込みの成否を応答する。ディスクドライバ103−2は、ディスクドライバ103−1と同様の処理を行うため、説明を省略する。
<第1の状態でのミラーソフト102の第2の管理部524、第2の応答部525、解放部526、第2の管理部524が有するディスクドライバ応答待ち部、監視部の処理>
ミラーソフト102は、両方のディスクへの書き込みが指示された場合には、第2の制御機能によって、両方のディスクドライバ103からの応答の受け付け、および監視タイマーt1のタイムアウトを監視する。ミラーソフト102は、応答を受け付ける都度、発行I/O管理テーブル420を更新し、両方のディスクドライバ103からの応答状態を管理する。
ミラーソフト102は、第2の制御機能によって、監視タイマーt1のタイムアウトまでに、両方のディスクドライバ103から書き込み成功の応答があれば、第1の制御機能に両方のディスクが正常であることを通知し、バッファb1の制御権を返却する。このとき、ミラーソフト102は、第2の制御機能によって、バッファb2およびバッファb2’を解放する。
一方で、監視タイマーt1のタイムアウトの前に、一方のディスクドライバ103から書き込み成功の応答があり、かつ、他方のディスクドライバ103から書き込みの応答がない場合がある。この場合、ミラーソフト102は、第2の制御機能によって、監視タイマーt1のタイムアウトがあるか否かを判定する。ミラーソフト102は、第2の制御機能によって、タイムアウトがなければ、引き続き、ディスクドライバ103からの応答を待つ。
ミラーソフト102は、第2の制御機能によって、タイムアウトがあれば、第1の制御機能に一方のディスクが正常であり他方のディスクが異常であることを通知し、バッファb1の制御権を返却する。このとき、ミラーソフト102は、第2の制御機能によって、異常であると判定したディスクについての応答を待つ。そして、ミラーソフト102は、第2の制御機能によって、両方のディスクドライバ103からの応答がある場合には、OSから確保したバッファb2およびバッファb2’を解放する。
<第1の状態でのミラーソフト102の第1の管理部512、第1の応答部513の処理>
ミラーソフト102は、第1の制御機能によって、第2の制御機能からの書き込み成否の通知を受け付け、両方のディスクに対する書き込みが成功したか確認する。ミラーソフト102は、第1の制御機能によって、両方のディスクに対する書き込みが成功していれば、アプリ101に対して書き込み成功の応答とともに、バッファb1の制御権を返却する。
ミラーソフト102は、第1の制御機能によって、一方のディスクに対する書き込みが成功し、他方のディスクに対する書き込みが成功していなければ、ミラー状態管理テーブル400を更新し、異常があると判定したディスクをミラーリングの対象から除外する。そして、ミラーソフト102は、第1の制御機能によって、アプリ101に対して書き込み成功の応答とともに、バッファb1の制御権を返却する。
<第2の状態でのミラーソフト102の第2の管理部524、第2の応答部525、解放部526、第2の管理部524が有するディスクドライバ応答待ち部、監視部の処理>
ミラーソフト102は、片方のディスクへの書き込みが指示された場合には、第2の制御機能によって、片方のディスクドライバ103からの応答の受け付け、および監視タイマーt1のタイムアウトを監視する。ミラーソフト102は、応答を受け付けると発行I/O管理テーブル420を更新し、片方のディスクドライバ103からの応答状態を管理する。
ミラーソフト102は、第2の制御機能によって、監視タイマーt1のタイムアウトまでに、片方のディスクドライバ103から書き込み成功の応答があれば、第1の制御機能に片方のディスクが正常であることを通知し、バッファb1の制御権を返却する。このとき、ミラーソフト102は、第2の制御機能によって、バッファb2を解放する。
<第2の状態でのミラーソフト102の第1の管理部512、第1の応答部513の処理>
ミラーソフト102は、第1の制御機能によって、第2の制御機能からの書き込み成否の通知を受け付け、片方のディスクに対する書き込みが成功したか確認する。ミラーソフト102は、第1の制御機能によって、片方のディスクに対する書き込みが成功していれば、アプリ101に対して書き込み成功の応答とともに、バッファb1の制御権を返却する。
<アプリ101の解放の処理>
アプリ101は、ミラーソフト102からの書き込み成功の応答を受け付け、OSから確保したバッファb1を解放し、業務を再開する。これにより、アプリ101の書き込み要求に対するミラーソフト102の応答時間の増大を抑制することができる。
(制御装置100における各種処理の流れ)
次に、図8〜図10を用いて、ディスク装置202に2つのディスクが含まれる場合を例に挙げて、制御装置100におけるアプリ101、ミラーソフト102、ディスクドライバ103などによる各種処理の流れについて説明する。
図8〜図10は、制御装置100の各種処理の流れを示すフローチャートである。図8において、アプリ101は、バッファb1を確保して、書き込み対象のデータを書き込む(ステップS801)。そして、アプリ101は、バッファb1の制御権とともに、書き込み対象のデータのディスクd1およびディスクd2を有するディスク装置202に対する書き込み要求を、ミラーソフト102に送信する(ステップS802)。
ミラーソフト102は、第1の制御機能によって、ミラー状態管理テーブル400を参照し、ミラーリングの状態を確認して、ミラーリングが解除されていなければ、ミラーリングの対象となる2つのディスクd1およびディスクd2を書込先として設定する(ステップS803)。そして、ミラーソフト102は、第1の制御機能によって、バッファb1の制御権を、ミラーソフト102の第2の制御機能に送信する(ステップS804)。
ミラーソフト102は、第2の制御機能によって、バッファb2を確保してバッファb1のデータを複製し管理情報を設定するとともに、バッファb2’を確保してバッファb2の管理情報を複製する(ステップS805)。そして、ミラーソフト102は、第2の制御機能によって、バッファb2の制御権とともに、書き込み対象のデータの書き込み要求を、一方のディスクd1に応じたディスクドライバ103−1に送信する(ステップS806)。
また、ミラーソフト102は、第2の制御機能によって、バッファb2’の制御権とともに、書き込み対象のデータの書き込み要求を、他方のディスクd2に応じたディスクドライバ103−2に送信する(ステップS807)。また、ミラーソフト102は、第2の制御機能によって、応答時間の増大を抑制するための応答のトリガーとなる監視タイマーt1を起動する(ステップS808)。ステップS806〜S808は、並列して実行される。
ディスクドライバ103−1は、書き込みに対するタイムアウトを判定するトリガーとなる監視タイマーt2を起動し、バッファb2に格納されたデータのディスクd1に対する書き込みを試行する(ステップS809)。次に、ディスクドライバ103−1は、ディスクd1からの応答、または、タイムアウトがあるか否かを判定する(ステップS810)。
ここで、応答、および、タイムアウトがない場合(ステップS810:No)、ディスクドライバ103−1は、ステップS810の処理に戻る。一方で、応答、または、タイムアウトがある場合(ステップS810:Yes)、ディスクドライバ103−1は、バッファb2の制御権とともに、書き込みの成否の応答を、ミラーソフト102に送信する(ステップS811)。
また、ディスクドライバ103−2は、書き込みに対するタイムアウトを判定するトリガーとなる監視タイマーt2’を起動し、バッファb2’に格納されたデータのディスクd2に対する書き込みを試行する(ステップS812)。次に、ディスクドライバ103−2は、ディスクd2からの応答、または、タイムアウトがあるか否かを判定する(ステップS813)。
ここで、応答、および、タイムアウトがない場合(ステップS813:No)、ディスクドライバ103−2は、ステップS813の処理に戻る。一方で、応答、または、タイムアウトがある場合(ステップS813:Yes)、ディスクドライバ103−2は、バッファb2’の制御権とともに、書き込みの成否の応答を、ミラーソフト102に送信する(ステップS814)。
ミラーソフト102は、第2の制御機能によって、ディスクドライバ103−1からの応答を受け付ける(ステップS815)。また、ミラーソフト102は、第2の制御機能によって、ディスクドライバ103−2からの応答を受け付ける(ステップS816)。このとき、ミラーソフト102は、応答を受け付ける都度、発行I/O管理テーブル420を更新し、両方のディスクドライバ103からの応答状態を管理する。また、ミラーソフト102は、第2の制御機能によって、応答時間の増大を抑制するための応答のトリガーとなる監視タイマーt1のタイムアウトを待つ(ステップS817)。
ここで、ミラーソフト102は、ディスクドライバ103−1からの応答、または、ディスクドライバ103−2からの応答を受け付けたときに、図9の処理、および、図10の処理が未実行であれば、並列して実行する。
図9において、ミラーソフト102は、第2の制御機能によって、ディスクドライバ103−1からの応答、または、ディスクドライバ103−2からの応答があるか否かを判定する(ステップS901)。ここで、応答がない場合(ステップS901:No)、ミラーソフト102は、ステップS901の処理に戻る。
一方で、応答がある場合(ステップS901:Yes)、ミラーソフト102は、第2の制御機能によって、ディスクドライバ103−1、および、ディスクドライバ103−2からの応答があるか否かを判定する(ステップS902)。ここで、すべて応答がある場合(ステップS902:Yes)、ミラーソフト102は、ステップS903の処理に移行する。
ステップS903では、ミラーソフト102は、第2の制御機能によって、バッファb1の制御権とともに、複数のディスクd1およびディスクd2のそれぞれに対する書き込み成功の応答を、第1の制御機能に送信する(ステップS903)。そして、ミラーソフト102は、ステップS906の処理に移行する。
一方で、片方のディスクドライバから応答がない場合(ステップS902:No)、ミラーソフト102は、第2の制御機能によって、応答時間の増大を抑制するための応答のトリガーとなる監視タイマーt1のタイムアウトがあるか否かを判定する(ステップS904)。ここで、タイムアウトがない場合(ステップS904:No)、ミラーソフト102は、ステップS901の処理に戻る。一方で、タイムアウトがある場合(ステップS904:Yes)、ミラーソフト102は、ステップS905の処理に移行する。
ステップS905では、ミラーソフト102は、第2の制御機能によって、バッファb1の制御権とともに、一方のディスクの書き込み成功と、他方のディスクの書き込み失敗との応答を、第1の制御機能に送信する(ステップS905)。そして、ミラーソフト102は、ステップS906の処理に移行する。
ステップS906では、ミラーソフト102は、第1の制御機能によって、ディスクd1、および、ディスクd2のうち、異常があると判定されたディスクがあるか否かを判定する(ステップS906)。ここで、異常があると判定されたディスクがない場合(ステップS906:No)、ミラーソフト102は、ステップS908の処理に移行する。
一方で、異常があると判定されたディスクがある場合(ステップS906:Yes)、ミラーソフト102は、第1の制御機能によって、ミラー状態管理テーブル400を更新し、異常があると判定されたディスクを、ミラーリングの対象から除外する(ステップS907)。そして、ミラーソフト102は、ステップS908の処理に移行する。
ステップS908では、ミラーソフト102は、第1の制御機能によって、バッファb1の制御権とともに、書き込み成功の通知をアプリ101に送信する(ステップS908)。アプリ101は、後処理を実行する(ステップS909)。次に、アプリ101は、バッファb1をOSに解放する(ステップS910)。そして、アプリ101は、業務を再開する(ステップS911)。このように、制御装置100は、並行して実行された図9の処理、および、図10の処理のうち、図9の処理を終了する。
図10において、ミラーソフト102は、第2の制御機能によって、ディスクd1およびディスクd2のそれぞれに応じたディスクドライバ103−1およびディスクドライバ103−2からの応答があるか否かを判定する(ステップS1001)。ここで、どちらか一方でも応答がない場合(ステップS1001:No)、ミラーソフト102は、ステップS1001の処理に戻る。
一方で、すべて応答がある場合(ステップS1001:Yes)、ミラーソフト102は、第2の制御機能によって、バッファb2、および、バッファb2’を、OSに解放する(ステップS1002)。このように、制御装置100は、並行して実行された図9の処理、および、図10の処理のうち、図10の処理を終了する。制御装置100が、図8の処理を行い、並行して実行された図9の処理、および、図10の処理すべてを行うことにより、制御装置100における各種処理が行われる。これにより、アプリ101の書き込み要求に対するミラーソフト102の応答時間の増大を抑制することができる。
(制御装置100の全体処理手順)
次に、図11を用いて、制御装置100の全体処理手順の一例について説明する。
図11は、制御装置100の全体処理手順の一例を示すフローチャートである。図11において、制御装置100は、アプリ101の書き込み処理を実行する(ステップS1101)。次に、制御装置100は、ミラーソフト102の第1の書き込み処理を実行する(ステップS1102)。そして、制御装置100は、ミラーソフト102の第2の書き込み処理を実行する(ステップS1103)。
次に、制御装置100は、ディスクドライバ103の書き込み処理を実行開始する(ステップS1104)。そして、制御装置100は、ミラーソフト102の第2の応答処理として解放処理および異常判定処理を並行して実行開始する(ステップS1105)。
次に、制御装置100は、少なくとも異常判定処理が終了していれば、ミラーソフト102の第1の応答処理を実行する(ステップS1106)。そして、制御装置100は、アプリ101の応答処理を実行して(ステップS1107)、全体処理を終了する。これにより、アプリ101の書き込み要求に対するミラーソフト102の応答時間の増大を抑制することができる。
(アプリ101の書き込み処理手順)
次に、図12を用いて、アプリ101の書き込み処理手順の一例について説明する。
図12は、アプリ101の書き込み処理手順の一例を示すフローチャートである。図12において、アプリ101は、OSから、書き込み対象のデータの格納先として、バッファb1を確保する(ステップS1201)。次に、アプリ101は、書き込み対象のデータを、確保したバッファb1に書き込む(ステップS1202)。
そして、アプリ101は、バッファb1の制御権とともに、書き込み対象のデータのディスクに対する書き込み要求を、ミラーソフト102に送信して(ステップS1203)、書き込み処理を終了する。これにより、アプリ101は、ミラーソフト102にデータの書き込みを依頼することができる。
(ミラーソフト102の第1の書き込み処理手順)
次に、図13を用いて、ミラーソフト102の第1の書き込み処理手順の一例について説明する。
図13は、ミラーソフト102の第1の書き込み処理手順の一例を示すフローチャートである。図13において、ミラーソフト102は、アプリ101から書き込み要求を受け付けると、ミラー状態管理テーブル400を参照して、ミラーリングが解除されているか否かを判定する(ステップS1301)。
ここで、ミラーリングが解除されていない場合(ステップS1301:No)、ミラーソフト102は、書き込み対象のデータの書込先として、ミラーリングの対象となる複数のディスクを設定し、バッファb1の制御権とともに、第2の書き込み処理手順に送信する(ステップS1302)。そして、ミラーソフト102は、第1の書き込み処理を終了する。
一方で、ミラーリングが解除されている場合(ステップS1301:Yes)、ミラーソフト102は、書き込み対象のデータの書込先として、異常がないと判定された何れかのディスクを設定し、バッファb1の制御権とともに、第2の書き込み処理手順に送信する(ステップS1303)。そして、ミラーソフト102は、第1の書き込み処理を終了する。これにより、ミラーソフト102は、データの書込先を決定することができる。
(ミラーソフト102の第2の書き込み処理手順)
次に、図14を用いて、ミラーソフト102の第2の書き込み処理手順の一例について説明する。
図14は、ミラーソフト102の第2の書き込み処理手順の一例を示すフローチャートである。図14において、ミラーソフト102は、書込先として設定されたディスクが複数あるか否かを判定する(ステップS1401)。
ここで、書込先として設定されたディスクが複数ある場合(ステップS1401:Yes)、ミラーソフト102は、書込先として設定された複数のディスクの何れかのディスクに応じたバッファb2を確保するとともに、他のディスクに応じたバッファb2’を確保する(ステップS1402)。次に、ミラーソフト102は、バッファb1に格納された書き込み対象のデータを、確保したバッファb2に複製し、管理情報を設定するとともに、バッファb2に格納された管理情報を、確保したバッファb2’に複製する(ステップS1403)。そして、ミラーソフト102は、ステップS1406の処理に移行する。
一方で、書込先として設定されたディスクが1つである場合(ステップS1401:No)、ミラーソフト102は、バッファb2を確保する(ステップS1404)。次に、ミラーソフト102は、バッファb1に格納された書き込み対象のデータを、確保したバッファb2に複製し、管理情報を設定する(ステップS1405)。そして、ミラーソフト102は、ステップS1406の処理に移行する。
ステップS1406では、ミラーソフト102は、応答時間の増大を抑制するための応答のトリガーとなる監視タイマーt1を起動する(ステップS1406)。次に、ミラーソフト102は、書込先として設定されたディスクが複数あるか否かを判定する(ステップS1407)。ここで、書込先として設定されたディスクが複数ある場合(ステップS1407:Yes)、ミラーソフト102は、ステップS1408の処理に移行する。
ステップS1408では、ミラーソフト102は、書込先として設定された複数のディスクの何れかのディスクに応じたバッファb2の制御権とともに、他のディスクに応じたバッファb2’の制御権を、それぞれのディスクに応じたディスクドライバ103に送信する(ステップS1408)。そして、ミラーソフト102は、第2の書き込み処理を終了する。
一方で、書込先として設定されたディスクが1つである場合(ステップS1407:No)、ミラーソフト102は、ステップS1409の処理に移行する。ステップS1409では、ミラーソフト102は、バッファb2の制御権を、書込先として設定された何れかのディスクに応じたディスクドライバ103に送信する(ステップS1409)。そして、ミラーソフト102は、第2の書き込み処理を終了する。これにより、ミラーソフト102は、アプリ101が確保したバッファb1を流用せずに、ディスクドライバ103に書き込み要求を送信することができる。
(ディスクドライバ103の書き込み処理手順)
次に、図15を用いて、ディスクドライバ103の書き込み処理手順の一例について説明する。
図15は、ディスクドライバ103の書き込み処理手順の一例を示すフローチャートである。図15において、ディスクドライバ103は、書き込み要求をキューの待ち行列に入れる(ステップS1501)。次に、ディスクドライバ103は、書き込みに対するタイムアウトを判定するトリガーとなる監視タイマーt2を起動する(ステップS1502)。そして、ディスクドライバ103は、キュー内の最も古い書き込み要求を取り出して、ディスクに対する書き込みを試行する(ステップS1503)。
次に、ディスクドライバ103は、ディスクからの応答があるか否かを判定する(ステップS1504)。ここで、応答がある場合(ステップS1504:Yes)、ディスクドライバ103は、書き込み成功と判定する(ステップS1505)。次に、ディスクドライバ103は、ミラーソフト102から受信したバッファの制御権とともに、書き込み成功の応答を、ミラーソフト102に送信する(ステップS1506)。そして、ディスクドライバ103は、ステップS1511の処理に移行する。
一方で、応答がない場合(ステップS1504:No)、ディスクドライバ103は、書き込みに対するタイムアウトを判定するトリガーとなる監視タイマーt2がタイムアウトしたか否かを判定する(ステップS1507)。ここで、タイムアウトしていない場合(ステップS1507:No)、ディスクドライバ103は、ステップS1504の処理に戻る。
一方で、タイムアウトした場合(ステップS1507:Yes)、ディスクドライバ103は、ディスクへの書き込みを再試行するか否かを判定する(ステップS1508)。ここで、再試行する場合(ステップS1508:Yes)、ディスクドライバ103は、取り出した書き込み要求を、キューの元の位置に入れて(ステップS1509)、ステップS1502の処理に戻る。
一方で、再試行しない場合(ステップS1508:No)、ディスクドライバ103は、ミラーソフト102から受信したバッファの制御権とともに、書き込み失敗の応答を、ミラーソフト102に送信する(ステップS1510)。そして、ディスクドライバ103は、ステップS1511の処理に移行する。
ステップS1511では、ディスクドライバ103は、キューに書き込み要求があるか否かを判定する(ステップS1511)。ここで、書き込み要求がある場合(ステップS1511:Yes)、ディスクドライバ103は、ステップS1502の処理に戻る。一方で、書き込み要求がない場合(ステップS1511:No)、ディスクドライバ103は、書き込み処理を終了する。これにより、ディスクドライバ103は、ディスクにデータを書き込むことができる。
(ミラーソフト102の第2の応答処理手順)
次に、図16および図17を用いて、ミラーソフト102の第2の応答処理手順の一例について説明する。
図16および図17は、ミラーソフト102の第2の応答処理手順の一例を示すフローチャートである。図16では、第2の応答処理における解放処理について示す。図17では、第2の応答処理において解放処理と並行して行われる異常判定処理について示す。
図16において、ミラーソフト102は、何れかのディスクドライバ103からの応答を受け付ける(ステップS1601)。このとき、ミラーソフト102は、応答を受け付ける都度、発行I/O管理テーブル420を更新し、両方のディスクドライバ103からの応答状態を管理する。次に、ミラーソフト102は、発行I/O管理テーブル420を参照し、複数のディスクドライバ103のそれぞれからの応答があるか否かを判定する(ステップS1602)。ここで、応答がある場合(ステップS1602:Yes)、ミラーソフト102は、複数のディスクの何れかのディスクに応じたバッファb2と、他のディスクに応じたバッファb2’とを、OSに解放する(ステップS1603)。そして、ミラーソフト102は、解放処理を終了する。
一方で、片方のディスクドライバから応答がない場合(ステップS1602:No)、ミラーソフト102は、書込先となるディスクが1つであるか否かを判定する(ステップS1604)。ここで、1つではない場合(ステップS1604:No)、ミラーソフト102は、ステップS1601の処理に戻る。一方で、1つである場合(ステップS1604:Yes)、ミラーソフト102は、バッファb2をOSに解放する(ステップS1605)。そして、ミラーソフト102は、解放処理を終了する。
図17において、ミラーソフト102は、ディスクドライバ103からの応答があるか否かを判定する(ステップS1701)。ここで、応答がない場合(ステップS1701:No)、ミラーソフト102は、ステップS1701の処理に戻る。
一方で、応答がある場合(ステップS1701:Yes)、ミラーソフト102は、複数のディスクドライバ103のそれぞれからの応答があるか否かを判定する(ステップS1702)。ここで、応答がある場合(ステップS1702:Yes)、ミラーソフト102は、ステップS1704の処理に移行する。
一方で、片方のディスクドライバから応答がない場合(ステップS1702:No)、ミラーソフト102は、書込先となるディスクが1つであって、書込先となるディスクに応じたディスクドライバ103からの応答があるか否かを判定する(ステップS1703)。ここで、1つであって、応答がある場合(ステップS1703:Yes)、ミラーソフト102は、ステップS1704の処理に移行する。ステップS1704では、ミラーソフト102は、複数のディスクのそれぞれに対する、または、書込先となるディスクが1つであって、その書込先となるディスクに対する書き込み成功と判定して(ステップS1704)、第2の応答処理を終了する。
一方で、1つではない場合(ステップS1703:No)、ミラーソフト102は、応答時間の増大を抑制するための応答のトリガーとなる監視タイマーt1のタイムアウトがあるか否かを判定する(ステップS1705)。ここで、タイムアウトがない場合(ステップS1705:No)、ミラーソフト102は、ステップS1701の処理に戻る。
一方で、タイムアウトがある場合(ステップS1705:Yes)、ミラーソフト102は、応答がないディスクを、異常があるディスクであると判定して(ステップS1706)、第2の応答処理を終了する。これにより、ミラーソフト102は、ディスクに異常があるか否かを判定することができる。
(ミラーソフト102の第1の応答処理手順)
次に、図18を用いて、ミラーソフト102の第1の応答処理手順の一例について説明する。
図18は、ミラーソフト102の第1の応答処理手順の一例を示すフローチャートである。図18において、ミラーソフト102は、ミラーリングの対象となる複数のディスクのうち、異常があると判定されたディスクがあるか否かを判定する(ステップS1801)。ここで、異常があると判定されたディスクがない場合(ステップS1801:No)、ミラーソフト102は、ステップS1803の処理に移行する。
一方で、異常があると判定されたディスクがある場合(ステップS1801:Yes)、ミラーソフト102は、ミラー状態管理テーブル400を更新し、異常があると判定されたディスクを、ミラーリングの対象から除外する(ステップS1802)。そして、ミラーソフト102は、ステップS1803の処理に移行する。
ステップS1803では、ミラーソフト102は、バッファb1の制御権とともに、書き込み成功の応答をアプリ101に送信する(ステップS1803)。そして、ミラーソフト102は、第1の応答処理を終了する。これにより、ミラーソフト102は、異常があるディスクがあれば、異常があるディスクをミラーリングの対象から除外しつつ、アプリ101に応答することができる。
(アプリ101の応答処理手順)
次に、図19を用いて、アプリ101の応答処理手順の一例について説明する。
図19は、アプリ101の応答処理手順の一例を示すフローチャートである。図19において、アプリ101は、後処理を実行する(ステップS1901)。次に、アプリ101は、バッファb1をOSに解放する(ステップS1902)。そして、アプリ101は、応答処理を終了する。これにより、アプリ101は、業務を再開することができる。
以上説明したように、制御装置100によれば、アプリ101が確保したバッファb1に格納された書き込み対象のデータの書き込み要求をアプリ101から受け付け、バッファb1とは異なるバッファb2およびバッファb2’を確保することができる。次に、制御装置100によれば、バッファb1に格納された書き込み対象のデータを、確保したバッファb2に複製し、管理情報を設定するとともに、バッファb2に格納された管理情報を、確保したバッファb2’に複製することができる。そして、制御装置100によれば、バッファb2の制御権とともに、バッファb2に格納された書き込み対象のデータの書き込み要求を、複数のディスクの何れかに応じたドライバ103に送信することができる。また、制御装置100によれば、残余のディスクドライバ103のそれぞれについて確保されたバッファb2’の制御権とともに、バッファb2に複製された書き込み対象のデータの書き込み要求を、残余のディスクドライバ103のそれぞれに送信することができる。これにより、制御装置100は、バッファb1を流用せずに、書き込み対象のデータの書き込み要求を複数のドライバ103のそれぞれに送信することができ、ドライバ103がディスクに対する書き込みを試行中であってもアプリ101に応答可能になる。
また、制御装置100によれば、書き込み対象のデータの書き込み要求をドライバ103に送信してからドライバ103によるデータの書き込み処理がリトライオーバーするより前に所定時間が経過したことを検出することができる。そして、制御装置100によれば、検出した際に、複数のディスクのうち、少なくとも何れかのディスクに対する書き込み成功の応答がある場合には、アプリ101に書き込み成功を応答することができる。また、制御装置100によれば、検出した際に、複数のディスクのうち、少なくとも何れかのディスクに対する書き込み成功の応答がある場合には、書き込みの応答がないディスクをミラーリングの対象から除外することができる。これにより、制御装置100は、データの整合性を保つために、故障の可能性があるディスクを、ミラーリングの対象から除外することができる。
これらのことから、ミラーソフト102は、複数のドライバ103のそれぞれからの応答を待たなくても、アプリ101に応答することができ、応答時間の増大を抑制することができる。さらに、ミラーソフト102は、アプリ101からデータの読み出し要求などを受け付けた場合に、故障の可能性があるディスクd1,d2からデータの読み出しなどを行ってしまうことを防止することができる。
また、制御装置100によれば、書き込み要求をドライバ103に送信してから所定時間が経過する前に、複数のディスクのそれぞれに対する書き込み成功の応答がある場合には、アプリ101に書き込み成功を応答することができる。これにより、制御装置100は、書き込み要求を送信してから所定時間が経過するまで待たなくても、複数のディスクのそれぞれが正常であって書き込みが成功していればアプリ101に応答することができる。
また、制御装置100によれば、複数のディスクのそれぞれに対する書き込みの応答がある場合には、バッファb2およびバッファb2’を解放することができる。これにより、制御装置100は、ミラーリングの対象からディスクを除外したり、アプリ101に応答した後であっても、バッファb2およびバッファb2’を確保したままにせず解放し、OSに返却することができ、OSの空きプールの記憶容量の枯渇を防止することができる。
また、制御装置100によれば、所定時間として、ドライバ103がデータの書き込み要求を受け付けてからディスクに対する書き込みに失敗したと判定(リトライオーバー)するまでの時間よりも短い時間を用いることができる。これにより、制御装置100は、まだドライバ103から書き込みの成否の応答がなくても、所定時間が経過したときに書き込みの成否の応答がないディスクを異常がある可能性があるディスクであると判定することができる。また、制御装置100は、ドライバ103から書き込み成功の応答があるディスクであっても、ドライバ103がデータの書き込みを複数回試行した不安定なディスクであり、間欠故障の可能性があるディスクであると判定することができる。
なお、本実施の形態で説明した制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
アプリケーションソフトウェアによって取得された第1の記憶領域に格納されたデータの書き込み要求を、前記アプリケーションソフトウェアから受け付け、
前記書き込み要求を受け付けた場合に、前記第1の記憶領域とは異なる第2の記憶領域を取得し、
前記データを、取得した前記第2の記憶領域に複製し、
ミラーリングの対象になる複数の記憶装置のそれぞれに対する複製された前記データの書き込み要求を、前記複数の記憶装置のそれぞれに応じたドライバに送信し、
複製された前記データの書き込み要求を前記ドライバに送信してから前記ドライバによるデータの書き込み処理がリトライオーバーするより前に所定時間が経過した際に、前記複数の記憶装置のうち、少なくとも何れかの記憶装置に対する書き込み成功の応答がある場合には、前記アプリケーションソフトウェアに書き込み成功を応答し、書き込み成功の応答がない記憶装置をミラーリングの対象から除外する、
処理を実行させることを特徴とする制御プログラム。
(付記2)前記コンピュータに、
前記複数の記憶装置のそれぞれに対する書き込み成功の応答がある場合には、前記第2の記憶領域を解放する、
処理を実行させることを特徴とする付記1に記載の制御プログラム。
(付記3)前記コンピュータに、
前記複数の記憶装置のそれぞれに対する書き込み成功の応答がない場合であっても、前記アプリケーションソフトウェアの応答とは別に、前記複数の記憶装置のそれぞれからの応答を待った後に前記第2の記憶領域を解放する、
処理を実行させることを特徴とする付記1または2に記載の制御プログラム。
(付記4)前記所定時間は、前記ドライバがデータの書き込み要求を受け付けてから前記記憶装置に対する書き込みに失敗したと判定するまでの時間よりも短い時間に設定される、ことを特徴とする付記1〜3の何れか一つに記載の制御プログラム。
(付記5)コンピュータが、
アプリケーションソフトウェアによって取得された第1の記憶領域に格納されたデータの書き込み要求を、前記アプリケーションソフトウェアから受け付け、
前記書き込み要求を受け付けた場合に、前記第1の記憶領域とは異なる第2の記憶領域を取得し、
前記データを、取得した前記第2の記憶領域に複製し、
ミラーリングの対象になる複数の記憶装置のそれぞれに対する複製された前記データの書き込み要求を、前記複数の記憶装置のそれぞれに応じたドライバに送信し、
複製された前記データの書き込み要求を前記ドライバに送信してから前記ドライバによるデータの書き込み処理がリトライオーバーするより前に所定時間が経過した際に、前記複数の記憶装置のうち、少なくとも何れかの記憶装置に対する書き込み成功の応答がある場合には、前記アプリケーションソフトウェアに書き込み成功を応答し、書き込み成功の応答がない記憶装置をミラーリングの対象から除外する、
処理を実行することを特徴とする制御方法。
(付記6)アプリケーションソフトウェアによって取得された第1の記憶領域に格納されたデータの書き込み要求を、前記アプリケーションソフトウェアから受け付け、
前記書き込み要求を受け付けた場合に、前記第1の記憶領域とは異なる第2の記憶領域を取得し、
前記データを、取得した前記第2の記憶領域に複製し、
ミラーリングの対象になる複数の記憶装置のそれぞれに対する複製された前記データの書き込み要求を、前記複数の記憶装置のそれぞれに応じたドライバに送信し、
複製された前記データの書き込み要求を前記ドライバに送信してから前記ドライバによるデータの書き込み処理がリトライオーバーするより前に所定時間が経過した際に、前記複数の記憶装置のうち、少なくとも何れかの記憶装置に対する書き込み成功の応答がある場合には、前記アプリケーションソフトウェアに書き込み成功を応答し、書き込み成功の応答がない記憶装置をミラーリングの対象から除外する、
制御部を有することを特徴とする制御装置。