以下、図1〜図10に基づき、本発明の実施の形態を説明する。
まず最初に、図1に基づいて、外部記憶システムの全体概要を説明する。
先にシステムの全体構成を図1に基づいて説明する。記憶装置システム60は、記憶デバイス制御装置10と記憶デバイス30とを備えて構成されている。記憶デバイス制御装置10は、情報処理装置20から受信したコマンドに従って、記憶デバイス30に対する制御を行う。例えば、記憶デバイス制御装置10は、情報処理装置20からデータの入出力要求を受信すると、記憶デバイス30に記憶されているデータの入出力処理を行う。記憶デバイス30が備えるディスクドライブにより提供される物理的な記憶領域上には、論理ボリューム(Logical Unit)(以下、LUと略記)が設定されている。LUは、論理的な記憶領域であり、このLU上にデータは記憶されている。また、記憶デバイス制御装置10は、情報処理装置20との間で、記憶装置システム60を管理するための各種コマンドの授受も行う。
情報処理装置20は、CPU(Central Processing Unit)やメモリ等を備えたコンピュータシステムである。情報処理装置20のCPUが各種プログラムを実行することにより、種々の機能が実現される。情報処理装置20は、例えば、パーソナルコンピュータやワークステーションである場合もあるし、メインフレームコンピュータの場合もある。図1では、説明の便宜上、第1〜第5の5台の情報処理装置を図示する。各情報処理装置20を識別するために、図1中では「情報処理装置1」、「情報処理装置2」等のように連番を付し、第1〜第5の情報処理装置20とする。後述のチャネル制御部11及びディスク制御部14も同様に連番を付して区別する。
第1〜第3の情報処理装置20は、LAN(Local Area Network)40を介して、記憶デバイス制御装置10と接続されている。LAN40は、例えば、インターネットとすることもできるし、専用のネットワークとすることもできる。第1〜第3の情報処理装置20と記憶デバイス制御装置10との間のデータ通信は、LAN40を介して、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルに従って行われる。第1〜第3の情報処理装置20からは、記憶装置システム60に対して、ファイル名指定によるデータアクセス要求(ファイル単位でのデータ入出力要求である。以下、「ファイルアクセス要求」と略記)が送信される。
LAN40には、バックアップデバイス71が接続されている。バックアップデバイス91としては、例えば、MO(magneto-optic:光磁気型記憶装置)、CD−R(CD-Recordable:読み書き可能なコンパクトディスク)、DVD-RAM(Digital Versatile Disk-RAM:読み書き可能なDVD)等のディスク系記憶デバイスや、例えば、DAT(Digital Audio Tape)テープ、カセットテープ、オープンテープ、カートリッジテープ等のテープ系記憶デバイスを用いることができる。バックアップデバイス71は、LAN40を介して記憶デバイス制御装置10との間で通信を行うことにより、記憶デバイス30に記憶されているデータのバックアップデータを記憶する。また、バックアップデバイス71は、第1の情報処理装置20と接続されるように構成することもできる。この場合は、第1の情報処理装置20を介して、記憶デバイス30に記憶されているデータのバックアップデータを取得するようにする。
記憶デバイス制御装置10は、第1〜第4のチャネル制御部11により、LAN40を介して第1〜第3の情報処理装置20やバックアップデバイス71との間で通信を行う。第1〜第4のチャネル制御部11は、第1〜第3の情報処理装置20からのファイルアクセス要求を個々に受け付ける。即ち、第1〜第4のチャネル制御部11には、それぞれLAN40上のネットワークアドレス(例えば、IPアドレス)が割り当てられており、第1〜第4の各チャネル制御部11はそれぞれが個別にNAS(Network Attached Storage)として振る舞うようになっている。第1〜第4のチャネル制御部11は、それぞれが独立したNASであるかのように、第1〜第3の情報処理装置20に対しNASとしてのサービスを提供可能である。以下、第1〜第4のチャネル制御部11をCHNと略す場合がある。このように、1台の記憶装置システム60内にそれぞれ個別にNASとしてのサービスを提供する第1〜第4のチャネル制御部11を備えるように構成したことにより、従来、独立したコンピュータで個々に運用されていたNASサーバが1台の記憶装置システム60に集約される。そして、これにより、記憶装置システム60の統括的な運用が可能となり、各種設定・制御や障害管理、バージョン管理といった保守業務の効率化を図ることができる。
なお、記憶デバイス制御装置10の第1〜第4のチャネル制御部11は、例えば、一体的にユニット化された回路基板上に形成されたハードウェア、このハードウェアにより実行されるOS(Operating System)、このOS上で動作するアプリケーションプログラム等のソフトウェアにより実現される。記憶装置システム60では、従来ハードウェアの一部として実装されてきた機能がソフトウェアにより実現されている。従って、記憶装置システム60を用いることにより、柔軟性に富んだシステム運用が可能となり、多様で変化の激しいユーザニーズにきめ細やかに対応可能となる。
第3及び第4の情報処理装置20は、SAN(Storage Area Network)50を介して、記憶デバイス制御装置10と接続されている。SAN50は、記憶デバイス30が提供する記憶領域におけるデータの管理単位であるブロックを単位として、第3及び第4の情報処理装置20との間でデータの授受を行うためのネットワークである。SAN50を介して行われる第3及び第4の情報処理装置20と記憶デバイス制御部10との間の通信は、一般にファイバチャネルプロトコルに従う。第3及び第4の情報処理装置20からは、記憶装置システム60に対して、ファイバチャネルプロトコルに従ってブロック単位でのデータアクセス要求(以下、ブロックアクセス要求と略記)が送信される。
SAN50には、SAN対応のバックアップデバイス70が接続されている。SAN対応バックアップデバイス70は、SAN50を介して記憶デバイス制御装置10との間で通信を行うことにより、記憶デバイス30に記憶されているデータのバックアップデータを記憶する。
記憶デバイス制御装置10は、第5及び第6のチャネル制御部11により、SAN50を介して第3及び第4の情報処理装置20及びSAN対応バックアップデバイス70との間の通信を行う。以下、第5及び第6のチャネル制御部11をCHFと略記する場合がある。
また、第5の情報処理装置20は、LAN40やSAN50等のネットワークを介さずに、記憶デバイス制御装置10と直接的に接続されている。第5の情報処理装置20としては、例えば、メインフレームコンピュータとすることができるが、もちろんこれに限定されない。第5の情報処理装置20と記憶デバイス制御装置10との間の通信は、例えば、FICON(Fibre Connection)(登録商標)やESCON(Enterprise System Connection)(登録商標)、ACONARC(Advanced Connection Architecture)(登録商標)、FIBARC(Fibre Connection Architecture)(登録商標)等の通信プロトコルに従う。第5の情報処理装置20からは、記憶装置システム60に対して、これらの通信プロトコルに従ってブロックアクセス要求が送信される。
記憶デバイス制御装置10は、第7及び第8のチャネル制御部11により、第5の情報処理装置20との間で通信を行う。以下、第7及び第8のチャネル制御部11をCHAと略す場合がある。
SAN50には、記憶装置システム60の設置場所(プライマリサイト)から遠隔した場所(セカンダリサイト)に設置される他の記憶装置システム61が接続されている。他の記憶装置システム61は、レプリケーションまたはリモートコピーの機能におけるデータ複製先の装置として利用される。なお、他の記憶装置システム61は、SAN50以外にも例えばATM(Asynchronous Transfer Mode)等の通信回線を介して記憶装置システム60に接続される場合もある。この場合には、上記通信回線を利用するためのインターフェース(チャネルエクステンダ)を備えたチャネル制御部11が採用される。
次に、記憶デバイス30の構成について説明する。記憶デバイス30は、多数のディスクドライブ(物理ディスク)を備えており、情報処理装置20に対して記憶領域を提供する。データは、論理的記憶領域であるLUに記憶されている。ディスクドライブとしては、例えば、ハードディスク装置、フレキシブルディスク装置、半導体記憶装置等の種々のデバイスを用いることができる。なお、記憶デバイス30は、例えば、複数のディスクドライブによりディスクアレイを構成するようにすることもできる。この場合、情報処理装置20に対しては、RAID(Redundant Array of Independent(Inexpensive)Disks)により管理された複数のディスクドライブにより記憶領域を提供することができる。
記憶デバイス制御装置10と記憶デバイス30とは、図1に示すように、直接的に接続してもよいし、ネットワークを介して間接的に接続するようにしてもよい。さらに、記憶デバイス30は、記憶デバイス制御装置10と一体のものとして構成することもできる。
記憶デバイス30に設定されるLUには、情報処理装置20からアクセス可能なユーザLUや、チャネル制御部11の制御のために使用されるシステムLU等がある。システムLUには、CHN11で実行されるOSも格納される。また、各LUには、各チャネル制御部11が予め対応付けられている。これにより、各チャネル制御部11毎にアクセス可能なLUがそれぞれ割り当てられている。また、上記対応付けは、複数のチャネル制御部11で一つのLUを共有するように設定することもできる。なお、以下の説明において、ユーザLUをユーザディスク、システムLUをシステムディスクと記す場合がある。また、複数のチャネル制御部11により共有されるLUを、共有LUまたは共有ディスクと記す場合がある。
次に、記憶デバイス制御装置10の構成を説明する。記憶デバイス制御装置10は、チャネル制御部11、共有メモリ12、キャッシュメモリ13、ディスク制御部14、接続部15及び管理端末16を備えている。
チャネル制御部11は、情報処理装置20との間で通信を行うための通信インターフェースを有し、情報処理装置20との間でデータ入出力コマンド等を授受する機能を備えている。例えば、CHN11は、第1〜第3の情報処理装置20からのファイルアクセス要求を受け付ける。これにより、記憶装置システム60は、NASとしてのサービスを第1〜第3の情報処理装置20に提供することができる。また、CHF11は、第3及び第4の情報処理装置20からのファイバチャネルプロトコルに従ったブロックアクセス要求を受け付ける。これにより、記憶装置システム60は、高速アクセス可能なデータ記憶サービスを第3及び第4の情報処理装置20に対して提供することができる。また、CHA11は、第5の情報処理装置20からのFICONやESCON、ACONARC、FIBARC等のプロトコルに従ったブロックアクセス要求を受け付ける。これにより、記憶装置システム60は、第5の情報処理装置20のようなメインフレームコンピュータ等に対してもデータ記憶サービスを提供することができる。
各チャネル制御部11は、管理端末16と共に内部LAN17で接続されている。これにより、チャネル制御部11に実行させるプログラム等を、管理端末16からチャネル制御部11に送信してインストールさせることも可能となっている。チャネル制御部11の構成については、さらに後述する。
接続部15は、各チャネル制御部11、共有メモリ12、キャッシュメモリ13、各ディスク制御部14を相互に接続する。チャネル制御部11、共有メモリ12、キャッシュメモリ13及びディスク制御部14間でのデータやコマンドの授受は、接続部15を介することにより行われる。接続部15は、例えば、高速スイッチングによりデータ伝送を行う超高速クロスバスイッチ等の高速バスで構成される。チャネル制御部11同士を高速バスで接続することにより、個々のコンピュータ上で動作するNASサーバをLANを介して接続する場合よりも、チャネル制御部11間の通信パフォーマンスが向上する。また、これにより、高速なファイル共有機能や高速フェイルオーバ等が可能となる。
共有メモリ12及びキャッシュメモリ13は、各チャネル制御部11及び各ディスク制御部14により共有される記憶メモリである。共有メモリ12は、主に制御情報やコマンド等を記憶するために利用される。キャッシュメモリ13は、主にデータを記憶するために利用される。
例えば、あるチャネル制御部11が情報処理装置20から受信したデータ入出力コマンドが書込みコマンドであった場合、当該チャネル制御部11は、書込みコマンドを共有メモリ12に書き込むと共に、情報処理装置20から受信した書込みデータをキャッシュメモリ13に書き込む。一方、ディスク制御部14は、共有メモリ12を監視している。ディスク制御部14は、共有メモリ12に書込みコマンドが書き込まれたことを検出すると、当該コマンドに従ってキャッシュメモリ13から書込みデータを読出し、読み出したデータを記憶デバイス30に書き込む。
ディスク制御部14は、記憶デバイス30の制御を行う。例えば、上述のように、ディスク制御部14は、チャネル制御部11が情報処理装置20から受信した書込みコマンドに従って、記憶デバイス30へデータの書込みを行う。また、ディスク制御部14は、チャネル制御部11から送信された論理アドレス指定によるLUへのデータアクセス要求を、物理アドレス指定による物理ディスクへのデータアクセス要求に変換する。ディスク制御部14は、記憶デバイス30における物理ディスクがRAIDにより管理されている場合は、RAID構成に従ったデータのアクセスを行う。また、ディスク制御部14は、記憶デバイス30に記憶されたデータの複製管理の制御及びバックアップ制御も行う。さらに、ディスク制御部14は、災害発生時のデータ消失防止(ディザスタリカバリ)等を目的として、プライマリサイトの記憶装置システム60のデータの複製をセカンダリサイトに設置された他の記憶装置システム61にも記憶させる制御(レプリケーション機能またはリモートコピー機能と呼ばれる)等も行う。
各ディスク制御部14は、管理端末16と共に内部LAN17を介して接続されており、相互に通信を行うことが可能である。これにより、ディスク制御部14に実行させるプログラム等を、管理端末16からディスク制御部14に送信してインストールさせることが可能となっている。
次に、管理端末16について説明する。管理端末16は、記憶装置システム60を保守・管理するためのコンピュータである。管理端末16を操作することにより、例えば、記憶デバイス30内の物理ディスク構成の設定や、LUの設定、チャネル制御部11で実行させるためのプログラムのインストール等を行うことができる。ここで、記憶デバイス30内の物理ディスク構成の設定としては、例えば、物理ディスクの増設や減設、RAID構成の変更(RAID1からRAID5への変更等)などを挙げることができる。さらに、管理端末16からは、記憶装置システム60の動作状態の確認や故障部位の特定、チャネル制御部11で実行されるOSのインストール等の作業を行うこともできる。また、管理端末16は、LANや電話回線等で外部保守センタと接続されており、外部保守センタから管理端末16を利用して記憶装置システム60の障害監視を行ったり、障害が発生した場合に迅速に対応することも可能である。障害の発生は、例えば、OSやアプリケーションプログラム、ドライバソフトウェア等から通知される。この通知は、例えば、HTTP(HyperText Transfer Protocol)プロトコルやSNMP(Simple Network Management Protocol)プロトコル、電子メール等により行うことができる。これらの設定や制御は、管理端末16上で動作するウェブサーバが提供するウェブページをユーザインターフェースとして、オペレータ等が操作することにより行うことができる。オペレータ等は、管理端末16を操作して、障害監視の対象や内容を設定したり、障害通知先を設定等する。
管理端末16は、記憶デバイス制御装置10内に内蔵させる構成でもよいし、記憶デバイス制御装置10に外付けする構成でもよい。また、管理端末16は、記憶デバイス制御装置10及び記憶デバイス30の保守・管理を専用に行うコンピュータとして構成してもよいし、あるいは、汎用コンピュータに保守・管理機能を持たせることにより構成してもよい。
次に、図2を参照して本発明によるデータ回復方法の一例を説明する。図2は、図1と共に述べた記憶装置システムの要部を抜き出した概略構成図である。図2に示す外部記憶システムは、それぞれ後述するように、ホストコンピュータ10と外部記憶装置とに大別され、外部記憶装置は、ディスク制御装置200と大容量記憶装置400とに大別される。ここで、図1と図2との対応関係を簡単に説明すると、図1中の記憶装置システム60が図2中のディスク制御装置200に、図1中のチャネル制御部11が図2中のチャネルポート210及びマイクロプロセッサ220に、図1中の共有メモリ12及びキャッシュメモリ13が図2中のバッファメモリ230に、図1中の接続部15がバスやスイッチ類等(図示せず)に、図1中のディスク制御部14が図2中のマイクロプロセッサ220に、図1中の記憶デバイス30が図2中の記憶装置400に、図1中の情報処理装置20が図2中のホストコンピュータ100に、それぞれ対応する。マイクロプロセッサ220は、チャネル制御部11またはディスク制御部14のいずれの側に存在してもよい。
ホストコンピュータ100は、例えば、パーソナルコンピュータやワークステーション等から構成されるもので、データベースを扱うアプリケーションプログラム110(以下、アプリケーションと略記)を有する。また、図示を省略しているが、ホストコンピュータ100は、例えば、ポインティングデバイス、キーボードスイッチ、モニタディスプレイ等を通じてオペレータと情報を交換するためのユーザインターフェースを備えている。アプリケーション110は、ディスク制御装置200を介して記憶装置400内のデータにアクセスすることにより、所定の業務を処理する。
ディスク制御装置200は、記憶装置400を制御するもので、チャネルポート210、マイクロプロセッサ220及びバッファメモリ230を備えている。
マイクロプロセッサ220は、チャネルポート210を介して、ホストコンピュータ100と双方向のデータ通信を行う。マイクロプロセッサ220は、ディスク制御プログラム300を実行する。ディスク制御プログラム300には、書き込み制御処理310、書込みデータ処理320、ディスク管理処理330、データ回復制御処理340、データ回復処理350、データ同期処理360が含まれている。
主要な処理については、詳細をさらに後述するが、書込み制御処理310は、主としてデータ書込み時の書込み制御情報(ジャーナル制御情報)を管理するものである。書込みデータ処理320は、所定のディスク装置へのデータ書込みを行うものである。ディスク管理処理330は、主としてジャーナルデータ格納ディスク430の管理を行うものである。データ回復制御処理340は、ホストコンピュータ100から設定される回復契機の登録と、登録された回復契機のリストデータをホストコンピュータ100に送信するものである。データ回復処理350は、指定されたディスク装置のデータを指定された時点まで回復させるものである。データ同期処理360は、ホストコンピュータ100からの指示に応じて、データのバックアップ処理を行うものである。
バッファメモリ230には、例えば、回復データ情報D10、ジャーナルデータD20、書込み制御情報D30、更新データD40が記憶されている。回復データ情報D10は、データの回復処理(復旧処理)の履歴情報であり、例えば、データ回復先や回復時点等を記録している。ジャーナルデータD20は、データ操作の更新履歴であり、バッファメモリ230から順次ジャーナル格納ディスク430に移される。書込み制御情報D30は、任意の時点にデータを回復させるために必要な情報を含んでいる。更新データD40は、アプリケーション110により更新が指示されたデータであり、バッファメモリ230からデータ格納ディスク410に移される。なお、以上のデータは、バッファメモリ230上に同時に存在する必要はない。また、説明の便宜上、バッファメモリ230を単一のメモリのように示したが、例えば、複数種類のメモリ装置の集合体として構成してもよい。
大容量記憶装置400は、データ格納ディスク410、バックアップデータ格納ディスク420及びジャーナルデータ格納ディスク430を備えている。データ格納ディスク410には、現在使用中の最新データ(実データ)が格納されている。バックアップデータ格納ディスク420には、ある時点のバックアップデータが格納されている。ジャーナルデータ格納ディスク430には、ジャーナルデータが格納されている。なお、各ディスク410〜430は、正確にはディスク装置であり、それぞれ複数のディスクを備えている。以下、データ格納ディスクをデータディスク、バックアップデータ格納ディスクをバックアップディスク、ジャーナルデータ格納ディスクをジャーナルディスクと呼ぶ。
図3は、ジャーナルデータD20及び書込み制御情報D30の概略構造を示すデータ構造図である。
本実施の形態によるジャーナルデータD20は、書込み制御情報D30と更新データ(書込みデータ)D40とが含まれている。書込み制御情報D30は、ジャーナル制御情報としての機能を果たすもので、例えば、データ書込み位置D31、データサイズD32、タイムスタンプD33、回復フラグD34、その他制御情報D35等の情報を含んでいる。データ書込み位置D31は、どのディスク装置のどこにデータが書き込まれたかを示す位置情報である。データサイズD32は、書き込まれたデータのサイズを示す情報である。タイムスタンプD33は、データ書込み時刻を示す情報である。回復フラグD34は、回復可能な時点(復元ポイント)であることを示す標識情報であり、回復フラグD34をセットすると、回復可能なデータとして設定され、回復フラグD34をリセットすると、復元ポイントの設定が解除される。その他の制御情報D35には、例えば、書込み制御情報D30を一意に特定するための制御番号やデータ種別等のその他必要な情報が含まれる。
本実施形態では、図3に示すように、ジャーナルデータD20の構造を独自に拡張し、ジャーナルデータD20内に回復フラグD34を設けている。これにより、少量のデータを追加するだけで任意の時点を回復可能時点として自由に設定することができ、任意の時点にデータを回復させることができる。但し、これに限らず、ジャーナルデータD20と回復フラグD34とを分離し、ユニークなID(識別コード)等で両者を対応付ける構成でもよい。
次に、図4は、ホストコンピュータ100及びディスク制御装置200のプログラム構造の概略を示すブロック図である。
アプリケーション110は、ホストコンピュータ100のOS120を介してディスク制御プログラム300と双方向のデータ通信を行う。OS120は、API(Application Program Interface)群130を有する。API群130には、データ書込み用API131、回復契機通知用API132、回復契機リスト取得要求用API133、回復指示用API134が含まれている。アプリケーション110は、これらAPI131〜134を適宜呼び出して利用することにより、所望の時点を回復契機として設定し、設定済の回復契機リストを読み出し、所望の時点を選択してデータの回復を指示することができる。
図4を参照しつつ全体の動作を簡単に説明する。アプリケーション110が、データ書込み用API131を介して、ディスク制御装置200にデータ更新要求(コミット要求)を指示すると(S1)、ディスク制御プログラム300の書込み制御処理310は、書込みデータ処理320を介して所定のディスクにデータを書き込ませ、更新要求を処理した旨をアプリケーション110に通知する(S2)。
アプリケーション110は、業務処理中に、例えば、定期的に又は不定期に所望の時点を、回復可能な時点としての回復契機(復元ポイント)として設定することができる。アプリケーション110は、回復契機通知用API132を呼び出すことにより、回復契機を設定するデータをディスク制御装置200に対し指示する(S3)。回復契機が通知されると、ディスク制御プログラム300のデータ回復制御処理340は、指定されたデータの回復フラグをセットし、回復契機が設定された旨をアプリケーション110に通知する(S4)。
障害発生等の要因によりデータを回復させる場合は、アプリケーション110は、回復契機リスト取得要求用API133を呼び出し、回復可能な時点のリスト情報をディスク制御装置200に要求する(S5)。リストを要求されると、データ回復制御処理340は、ジャーナルディスク430を検査して回復フラグがセットされたデータの情報を取得し、回復契機リストを作成する。データ回復制御処理340は、回復契機リストをアプリケーション110に返信する(S6)。
アプリケーション110は、メモリ140に格納された回復契機リストを参照し、回復を希望する時点を少なくとも1つ選択する。アプリケーション110は、回復指示用API134を呼び出すことにより、希望する時点まで所定ディスクのデータを回復させるように、ディスク制御装置200に指示する(S8)。データ回復処理350は、アプリケーション110から回復指示を受けると、バックアップディスク420及びジャーナルディスク430を用いて、指定されたデータを指定された時点まで回復させる。回復処理350は、回復処理が完了した旨をアプリケーション110に通知する(S9)。
次に、図5〜図9を参照して各部の詳細な制御を説明する。まず、図5は、書込み制御処理を示すフローチャートである。なお、以下の説明でも同様であるが、図示するフローチャートは発明の理解のために動作の要部を示すものであり、実際のプログラムとは相違する可能性がある。図中、「ステップ」を「S」と略記する。
アプリケーション110が書込み要求を出すと、バッファメモリ230上のデータD40が更新されると共に(S21)、バッファメモリ230上の書込み制御情報D30が更新される(S22)。次に、ジャーナルディスク430に十分な空き容量があるか否かを判定する(S23)。例えば、ジャーナルディスク430の現在の空き容量が、これから書き込もうとするデータのデータサイズを上回っているか否かで判定することができる。ジャーナルディスク430の空き容量が不足している場合は(S23:NO)、図6と共に後述するジャーナルディスク管理処理を実行して空き容量を確保し(S24)、必要な場合は、バッファメモリ230上の書込み制御情報を更新する(S25)。必要な場合とは、例えば、後述のジャーナル自動拡張により、ジャーナルデータの書込み位置が変動等した場合である。
ジャーナルディスク430に十分な空き容量が存在した場合(S23:YES)及びジャーナルディスク430に十分な空き容量が確保された場合は、書込みデータD40及び書き込み制御情報D30(即ち、ジャーナルデータD20)をジャーナルディスク430に追加して書き込む(S26)。また、バッファメモリ230上の書込みデータD40をデータディスク410の所定位置に書き込み(S27)、データ書込みが完了した旨をホストコンピュータ100(正確にはホストコンピュータ100上のアプリケーション110である。以下同様)に通知する(S28)。
なお、S26及びS27は、本書込み制御処理とは別契機(非同期)に行っても良い。その場合、例えば、バッファメモリ上の該データにディスクへ反映したか否かのフラグを設けることにより管理することができる。
そして、バックアップ更新フラグがオンになっているか否かを判定する(S29)。バックアップ更新フラグとは、ジャーナルディスク430の空き容量を確保するために、最古のジャーナルデータをバックアップディスク420に移し替えたことを示す標識情報である。ジャーナルデータの移し替えにより、バックアップデータから回復可能な最古の時点が変更されるため、バックアップ更新フラグがオン状態にセットされている場合は(S29:YES)、バックアップデータが更新された旨をホストコンピュータ100に通知する(S30)。バックアップ更新をホストコンピュータ100に通知した後、バックアップ更新フラグをオフ状態にリセットさせる(S31)。
次に、図6は、図5中のジャーナルディスク管理処理S24の詳細を示すフローチャートである。まず、ジャーナルディスク430の自動拡張モードが設定されているか否かを判定する(S41)。自動拡張モードとは、未使用のディスク、未使用の記憶領域を探索してジャーナルディスク430の論理的サイズを自動的に拡大させるモードである。
自動拡張モードが設定されていない場合は(S41:NO)、ジャーナルディスク430に記憶されているジャーナルデータのうち最も古いデータを選択して、バックアップディスク420に反映させる(S42)。バックアップディスク420に移し替えられた最古のジャーナルデータは、ジャーナルディスク430から消去される(S43)。これによりジャーナルディスク430の空き容量が増加する。ジャーナルディスク430の空き容量が所定値に達するまで、最古のジャーナルデータから順番にバックアップディスク420に移し替える(S44)。ジャーナルディスク430の空き容量が所定値に達した場合は(S44:YES)、バックアップ更新フラグをオン状態にセットする(S45)。これにより、図5中のS30に示したように、バックアップデータが更新され、バックアップデータから回復可能な最古の時点が変更された旨がホストコンピュータ100に通知される。なお、S44中の所定値は、予め設定された固定値であっても良いし、例えば、バックアップディスクの空き容量やデータディスク410に書き込まれるデータサイズ等に応じて動的に変更される値であってもよい。
一方、ジャーナルディスク430の自動拡張モードが設定されている場合は(S41:YES)、接続されているディスク装置の中から未使用の記憶エリア(未使用エリアと呼ぶ)を検索し、ジャーナルデータを保存可能な未使用エリアが存在するか否かを判断する(S46,S47)。未使用エリアが発見されなかった場合は(S47:NO)、S42に移り、上述のように最古のジャーナルデータをバックアップディスク420に移し替えることにより、ジャーナルディスク430に空き容量を確保する。未使用エリアが発見された場合は(S47:YES)、発見された未使用エリアをジャーナルディスクとして利用すべく、ジャーナルディスク430の論理サイズを拡張すると共に、ディスク管理マップを更新する(S48)。そして、ジャーナルディスク430の論理サイズ拡張により生じた空き容量が所定値に達したか否かを判定し(S49)、ジャーナルディスク430の空き容量が所定値に達するまで、S46〜S49の処理を繰り返しながら、未使用エリアをジャーナルデータの記憶エリアとして自動的に拡張させる。
次に、図7は、ホストコンピュータ100から指示される回復契機の登録処理を示す。上述の通り、本実施形態では、ホストコンピュータ100は、任意の時点を回復可能な契機(復元ポイント)として複数個設定することができる。
登録すべき回復契機がホストコンピュータ100からディスク制御装置200に通知されると、データ回復制御処理340は、ジャーナルディスク430に記憶されている最新データの位置を検索し(S51)、最新の書込みデータに対応する書込み制御情報中の回復フラグをオン状態にセットして更新する(S52)。そして、ホストコンピュータ100に、回復契機の設定が完了した旨を報告すると共に、書込み制御情報を特定するための制御番号を通知する(S53)。このように、ホストコンピュータ100のアプリケーション110は、データ書込み時に、任意の時点のデータについて回復契機を設定指示できるようになっている。
次に、図8は、ホストコンピュータ100からの要求に応じて、回復契機のリスト情報を返信する回復契機リストの送信処理を示す。まず、ジャーナルディスク430のうち、ホストコンピュータ100から回復を指定されたデータに対応するディスクを選択し、選択されたディスク中の最古のジャーナルデータにポインタを合わせる(S61)。
そして、最古のジャーナルデータから読み込み(S62)、読み込んだジャーナルデータに関する書き込み制御情報中の回復フラグがオン状態にセットされているか否かを検査し(S63)、回復フラグがセットされている場合は、読み込んだジャーナルデータを回復契機のリスト情報に追加して記録する(S64)。S61で選択されたディスクに記憶されている最終データを読み出すまで、上記S62〜S64が繰り返される(S65)。このようにして、指定されたデータに対応するジャーナルデータを最古のデータから最新のデータまで順番に検査し、回復フラグがセットされているジャーナルデータを抽出して回復契機リストを生成する。生成された回復契機リストは、完了報告と共にまたは非同期にホストコンピュータ100に送信される(S66)。
次に、図9は、データ回復処理を示す。ホストコンピュータ100上のアプリケーションプログラム110は、図8に示す処理により取得した回復契機のリスト情報に基づいて、所望の時点までデータの回復を指示することができる。
ホストコンピュータ100から回復指示が通知されると、データ回復処理350は、バックアップディスク420及びジャーナルディスク430のうち、回復が指定されたデータに対応するディスクをそれぞれ選択する(S71)。
次に、ホストコンピュータ100からデータ回復先として指定されたディスクがバックアップディスク420であるか否かを判定する(S72)。つまり、本実施形態では、バックアップディスク420以外の他のディスク装置に、指定された時点までのデータを回復させることができるようになっている。回復先として指定されたディスク装置がバックアップディスク420以外の他のディスク装置である場合は、バックアップディスク420に記憶されているバックアップデータを、指定されたディスク装置にコピーし、データ回復の土台となるバックアップデータの準備を完了させる(S73)。
次に、ジャーナルディスク430から最古のジャーナルデータを検索し(S74)、最古のジャーナルデータから順番にデータを読み出して、回復先に指定されたディスクの記憶内容に反映させていく(S75)。ホストコンピュータ100から指定された時点までデータが回復されるまで、ジャーナルデータを読み出して、回復先ディスクの記憶内容を更新させる(S76)。
指定された時点までデータが回復した場合は、ホストコンピュータ100にデータ回復が完了した旨を通知する(S77)。また、回復時点及び回復先等の情報を回復データ情報D10に記録する(S78)。
本実施の形態によれば、外部記憶装置内で自動的にデータの回復を行うため、ホストコンピュータ100のコンピュータ資源をデータ回復処理のために消費することがなく、ホストコンピュータ100上の他の業務処理の効率を低下させることがない。特に、大容量の外部記憶装置を用いるアプリケーション110では、大規模なデータを取り扱うため、データ回復処理の負担が大きくなり、コンピュータ資源を多量に消費する。従って、ホストコンピュータ100上で行われる他の業務の処理速度が低下する上に、データ回復完了までの処理時間も長くなる。しかし、本実施形態では、回復契機の設定指示、回復契機リストの取得要求及び回復指示という僅かな処理だけをホストコンピュータ100で実行し、実際のデータ回復処理を外部記憶装置に委ねる構成のため、ホストコンピュータ100の負担を軽減することができる。外部記憶装置内でデータの回復を行っている間、ホストコンピュータ100は、他の業務を効率的に処理することができる。
また、任意の複数時点を回復契機として設定可能であり、所望の時点までデータを回復可能なため、単純に直前のデータに回復させるだけの従来技術とは異なり、利便性が高い。
さらに、本実施形態では、回復契機の設定指示や回復契機リストの取得要求等をホストコンピュータ100側から行うためのAPI131〜134を用意したので、これら独自のAPIをホストコンピュータが備えるだけで、本発明に従う外部記憶装置を利用可能となる。
また、本実施形態では、外部記憶装置内でジャーナルデータを自動的に収集すると共に、ジャーナルディスク430の空き容量管理も行うため、ジャーナルディスク430が満杯となってデータ回復が不能となるのを未然に防止できる。
また、本実施形態では、ジャーナルデータD20のデータ構造を拡張し、ジャーナルデータD20内に(ジャーナル制御情報としての書込み制御情報D30内に)回復フラグを設定する構成のため、比較的簡易な構成でありながら、任意の複数時点へのデータ回復を実現することができる。
図10は、本発明の第2の実施形態を示す。本実施形態では、複数世代のデータ管理を行っている。即ち、最新のデータを保持するデータディスク410に加えて、1世代前のデータを格納する1世代前データディスク410(1GA)、2世代前のデータを格納する2世代前データディスク410(2GA)等のように、複数世代でデータを管理できる。
例えば、1世代前データディスク410(1GA)にバックアップディスク420の記録内容をリストアした後、ジャーナルディスク430に記憶されているデータdBのジャーナルデータを読み出して1世代前データディスク410(1GA)に反映させれば、1世代前のデータに戻すことができる。同様に、2世代前データディスク410(2GA)に、バックアップデータをコピーしてからデータdB及びデータdCのジャーナルデータを反映させることにより、2世代前のデータに戻すことができる。このように、複数世代でデータを管理する場合も、本発明に従えば、ホストコンピュータ100に処理負担をかけることなく、外部記憶装置内で複数世代のデータを構築し管理することができる。
なお、本発明は、上述した各実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。