(57)【要約】【課題】ストレージのバックアップを行う際，ユーザミスによって失ったファイルをユーザ操作によって回復し，アプリケーションから再度使用することができない。【解決手段】２台のディスク装置１７０の間でミラーリングを行う。伝播する更新データを一定時間キャッシュ装置１６０に蓄えることで，ミラーリングを遅延する。ミラー先のディスク装置とキャッシュ装置から過去のファイルを回復する。更新データはファイルを関連づけて蓄え，またファイルのオープン・クローズに関する情報も蓄える。更新データを移動する際にオープン・クローズ情報を利用することによって，書きかけでないファイルを回復する。【効果】ユーザミスの回復に適したバックアップ方法を提供することができる。【選択図】  図１
2004348193.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ装置と、メモリ装置と、第１のディスク装置と、第２のディスク装置を有する情報処理システムにおいて，
上記第１のディスク装置から上記第２のディスク装置へ遅延ミラーリングを行う第１の手段と，
上記第１のディスク装置のファイルのオープン・クローズ情報を上記メモリ装置に記録する第２の手段と，
上記遅延ミラーリングを行う際に上記ファイルのオープン・クローズ情報を利用する第３の手段を有する情報処理システム。
【請求項２】
上記メモリ装置は、上記ファイルのオープン・クローズ情報、ファイルの更新箇所、および、ファイルの更新内容に関する情報を格納する請求項１記載の情報処理システム。
【請求項３】
上記第１のディスク装置のファイルをオープン・クローズすることなしに、上記メモリ装置のオープン・クローズ情報のみを操作する機能を有する請求項２記載の情報処理システム。
【請求項４】
上記第１のディスク装置のファイルをオープン後所定時間内にクローズする機能を有する請求項２記載の情報処理システム。
【請求項５】
上記メモリ装置に格納された情報を、当該情報格納後所定時間経過した後にコピーする第３のディスク装置を有する請求項２記載の情報処理システム。
【請求項６】
上記第１の手段が、ハードウエアにより構成されている請求項２記載の情報処理システム。
【請求項７】
遅延ミラーリングを、をボリューム単位でなくディレクトリ単位で行うことを特徴とする請求項２記載の情報処理システム。
【請求項８】
プロセッサ装置とメモリ領域とディスク装置から成るシステムにおいて，上記ディスク装置の内容をバックアップする方法であって，
上記ディスク装置への更新を上記メモリ領域へバッファリングする第１のステップと，
ファイルのオープン・クローズ情報を上記メモリ装置に記録する第２のステップと，
上記バッファリングを制御する際に上記ファイルのオープン・クローズ情報を利用する第３のステップを設けたことを特徴とするバックアップ方法。
【請求項９】
上記メモリ領域として、上記ディスク装置の一部の領域を利用する請求項８記載のバックアップ方法。
【請求項１０】
プロセッサ装置と、
上記プロセッサ装置によりアクセス可能な第１の記憶装置と、
上記プロセッサ装置によりアクセス可能な第２の記憶装置と、
第３の記憶装置と、
を有する情報処理システムにおいて、
上記プロセッサ装置は、上記第１の記憶装置から上記第２の記憶装置へバックアップを行う制御装置を有し、
上記第３の記憶装置は、上記第１の記憶装置の更新履歴と、ファイルのオープン・クローズの情報を有し、
上記制御装置は、上記第１の記憶装置の更新履歴と、ファイルのオープン・クローズの情報を用いて、上記第２の記憶装置の書き換えを行う情報処理システム。
【請求項１１】
上記制御装置は、上記第１の記憶装置の更新履歴と、ファイルのオープン・クローズの時間情報を用いて、オープン後クローズされていないファイルの、上記第２の記憶装置への書き込みを防止する情報処理システム。
【請求項１２】
上記第１の記憶装置の更新履歴として、情報の格納場所、更新内容を示す情報、および、更新時間を含む請求項１１記載の情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，ネットワークファイルサーバおよびネットワークストレージのバックアップおよび回復を行う方法に関する。特に，ミラーリングおよびスナップショットを利用したバックアップ方法に関する。
【０００２】
【従来の技術】
【非特許文献１】米国特許６，２６０，１２５号
ストレージのバックアップはオフラインバックアップとオンラインバックアップに大別できる。さらに，オンラインバックアップはミラーリングおよびスナップショットに分けられる。以下，それぞれのバックアップの概要を示す。
オフラインバックアップは，ストレージに接続されたサーバを停止してからストレージをボリューム単位でバックアップする。典型的には毎晩業務のない深夜に行う。
ミラーリングは，ボリュームの内容を常に別のミラーボリュームに複製する。ミラーリングを開始するときはまず運用中のボリュームの内容でミラーボリュームを初期化する。初期化が済むと，運用ボリュームに書き込まれたデータをミラーボリュームにも書き込んでいくことでミラーリングを開始する。ここで，初期化中新たに運用ボリュームに書き込まれたデータは，ミラーボリュームにもミラーされる。このとき，初期化データが新しいミラーデータを上書きしないように，ストレージがつじつま合わせの制御を行う。
【０００３】
スナップショットはある時点でのボリュームを複製するバックアップ方法である。ストレージによる実装と，サーバによる実装の，２つの種類がある。
ストレージによるスナップショットは，ミラーリングを応用して実現しており，スプリットミラーとも呼ばれる。ミラーリングの初期化時と同様に，運用ボリュームの内容を，スナップショット用ボリュームにコピーする。このとき運用ボリュームの内容に変更が生じた場合には，古いデータをスナップショット用ボリュームにミラーリングする。つじつま合わせはストレージが行う。
サーバによるスナップショットは，ボリュームをいくつかの「世代」と呼ばれる領域に分割し，ある時間範囲における変更点をひとつの世代の中にまとめることで実現する。ある時刻におけるスナップショットは，その時刻より古い世代を集めて算出できる。
ストレージのバックアップは以上のように分類できる。
【０００４】
一方，ミラーリングの新しい方法として，米国特許第６，２６０，１２５において，遅延ミラーリング方法が開示されている。この方法は，ボリュームとミラーディスクの間に設けたキューにミラーデータを一定時間滞留させるという特徴を持つ。本明細書では、ボリュームとミラーディスク間のバックアップ処理の際に、ボリュームとミラーディスクの間にミラーデータを所定期間滞留させることを「遅延ミラーリング」ということにする。
【０００５】
【発明が解決しようとする課題】
以下，各バックアップの得失を示す。
オフラインバックアップは，バックアップに先立って，サーバのアプリケーションを正常終了させるので，回復したファイルは再びアプリケーションから正常に使用できるという利点を持つ。しかし，バックアップをボリューム単位で行うために，ユーザがファイル単位で回復操作を行うことができず，ユーザ操作ミスの回復に伴う運用コストが大きいという欠点を持つ。また，業務を停止するという性質上バックアップ間隔を１日程度と長くせざるを得ず，最近作成したファイルは回復できない。
【０００６】
ミラーリングは，ディスク障害時でも障害直前の最新データを回復できるが，２０分前に作成して１０分前に失ったデータなどは回復できない。また，オフラインバックアップと異なってアプリケーションを停止せずにバックアップを行うので，書きかけのファイルをバックアップしてしまう。その結果多くの場合，アプリケーションがファイルを再使用できない。また，ユーザによる回復操作やファイル単位の回復に関しては，オフラインバックアップ同様不可能である。
【０００７】
ストレージまたはサーバによるスナップショットはいずれも，複数時点のスナップショットを作成すればそのいずれかの時点のデータを回復することができる。ストレージをサーバと切り離してバックアップする点でオフラインバックアップと似ているが，アプリケーションの正常終了を伴わないので，アプリケーションによるファイルの再利用は保証できない。また，ユーザ操作回復およびファイル単位回復もできない。
【０００８】
ストレージによるスナップショットは，ボリュームの完全な複製を作るので，耐障害性は高くなるが，大量の入出力を伴うためストレージの性能が大きく落ち，スナップショット間隔もあまり短くはできない。
【０００９】
サーバによるスナップショットは，ボリュームの完全な複製を作るわけでないので，耐障害性が低いが，ストレージに負荷をかけない。また，サーバが各スナップショットに対するインタフェースを提供できるので，ユーザ操作によるファイル単位の回復が可能である。
【００１０】
米国特許第６，２６０，１２５で開示されている遅延ミラーリングを行う方法は，一定時間内であればどの時点のデータもミラーボリュームおよびキューから回復することができるという利点を持つ。しかし，ユーザ操作回復およびファイル単位回復ができない。またアプリケーションがファイルを再利用できる保証もない。
以上に述べた技術のいずれもストレージ障害時におけるボリューム全体の回復という観点からは有用である。しかし，いずれの技術も，次に述べる典型的なユーザミスの救済ができない。
【００１１】
典型的なユーザミスとは，３０分前に作成したファイルを誤って削除した，という種類の操作ミスである。また，上記で述べた救済では，誤削除したファイルをユーザの操作によって回復でき，かつ，再度アプリケーションで使用できることを保証する必要がある。
【００１２】
いずれの技術も，回復できる時点がまばらであったり，回復にはストレージ管理者の操作が必要であったり，アプリケーションの停止を伴ったり，回復してもアプリケーションから再使用できない場合があったりなど，すべての条件を同時に満足しない。
本発明の目的は，このようなユーザミスの回復に適したバックアップ方法を提供することにある。
【００１３】
【課題を解決するための手段】
本発明の情報処理システムは、プロセッサ装置と、メモリ装置と、第１のディスク装置と、第２のディスク装置を有する情報処理システムにおいて，第１のディスク装置から第２のディスク装置へ遅延ミラーリングを行う第１の手段と，第１のディスク装置のファイルのオープン・クローズ情報をメモリ装置に記録する第２の手段と，遅延ミラーリングを行う際にファイルのオープン・クローズ情報を利用する第３の手段を有する。
【００１４】
各手段はハードウェアでも、プロセッサ上で実行されるソフトウェアでもよい。上記構成によれば、ミラーリングしようとするメモリ中のファイルが、オープン後クローズされたもの（書き換え済み）か、あるいは、オープンされたままのもの（書き換え中）かを弁別することができる。
【００１５】
本発明の一側面では、書き換え済みのファイルを単位として、第２のディスク装置へのバックアップを行う。これにより、ユーザの操作による回復、ファイル単位での回復を容易とする。また、アプリケーションがバックアップファイルを再利用できることを保証できる。
【００１６】
メモリ装置は、ファイルのオープン・クローズ情報、ファイルの更新箇所、および、ファイルの更新内容に関する情報を格納することができる。メモリ装置としては、ＤＲＡＭなどのメモリの他、第１または第２のディスク装置の一部を用いても良い。
【００１７】
第１のディスク装置のファイルのオープン・クローズとは無関係に、メモリ装置のオープン・クローズ情報を操作することにより、メモリ装置中にオープン後クローズされているファイル（すなわち、書き換え済みのファイル）を形成することができる。これによって、第１のディスク装置が長時間書き換え中であっても、メモリ装置から第２のディスク装置への、書き換え済みのファイルを単位としたバックアップをより短周期で行うことが可能となる。
【００１８】
第１のディスク装置のファイルをオープン後、所定時間内に強制的にクローズする機能を付加することもできる。この構成によれば、書き換え時間を有限化することができる。これによりメモリ装置から第２のディスク装置への、書き換え済みのファイルを単位としたバックアップ周期を限定化することが可能となる。
【００１９】
メモリ装置に格納された情報を、情報格納後所定時間経過した後にコピーする第３のディスク装置を備えることとすれば、メモリのあふれを防止することができる。
【００２０】
遅延ミラーリングをボリューム（ディスク）単位でなくディレクトリ単位で行うことをもでき、より、高信頼性を得ることも可能である。
【００２１】
本発明のバックアップ方法では、プロセッサ装置とメモリ領域とディスク装置から成るシステムにおいて，ディスク装置の内容をバックアップする方法であって，ディスク装置への更新をメモリ領域へバッファリングする第１のステップと，ファイルのオープン・クローズ情報をメモリ装置に記録する第２のステップと，バックアップを制御する際にファイルのオープン・クローズ情報を利用する第３のステップを設けたことを特徴とする。
【００２２】
本発明の他のシステムは、プロセッサ装置と、プロセッサ装置によりアクセス可能な第１の記憶装置と、プロセッサ装置によりアクセス可能な第２の記憶装置と、第３の記憶装置と、を有する情報処理システムにおいて、プロセッサ装置は、第１の記憶装置から第２の記憶装置へバックアップを行う制御装置を有し、第３の記憶装置は、第１の記憶装置の更新履歴と、ファイルのオープン・クローズの情報を有し、制御装置は、第１の記憶装置の更新履歴と、ファイルのオープン・クローズの情報を用いて、第２の記憶装置の書き換えを行う。好ましくは、制御装置は、第１の記憶装置の更新履歴と、ファイルのオープン・クローズの時間情報を用いて、オープン後クローズされていないファイルの、第２の記憶装置への書き込みを防止する。
更新履歴として、情報の格納場所、更新内容を示す情報、および、更新時間を含むことができる。
【００２３】
本発明の代表的なバックアップおよび回復方法の動作詳細は次の通りである。ネットワークに接続されファイルアクセスサービスを提供するプロセッサと，上記プロセッサに接続されたキャッシュと，上記キャッシュに接続される第１および第２のディスクからなるストレージ装置がある。上記ファイルアクセスサービスとは，ファイルをオープンするｏｐｅｎ要求と，現在または過去のファイルからデータを読むｒｅａｄ要求と，ファイルにデータを書くｗｒｉｔｅ要求と，ファイルをクローズするｃｌｏｓｅ要求と，過去のディスク内容すべてを回復するリストア要求を受け付けて処理するサービスである。上記プロセッサは，上記ｗｒｉｔｅ要求を受けると，更新データを上記第１のディスクに書き込むと共に，上記キャッシュにも，更新ファイル名など更新に関するメタ情報と共に書き込む。上記プロセッサが，定期的に起動されると，上記キャッシュに蓄えられた更新データを上記第２のディスクに書き込む。このとき，更新データを選別することによって，上記第２のディスクの内容が，上記第１のディスクの内容より一定時間遅れており，かつ，すべてのファイルがｏｐｅｎされていない状態に保つ。上記プロセッサが，上記ｒｅａｄ要求を受けると，要求されたファイルの時刻が現在か過去かを判別し，現在であれば上記第１のディスクよりファイルを読み，過去であれば上記第２のディスクおよび上記キャッシュより過去のファイルを再構成する。上記プロセッサが，上記リストア要求を受けると，上記第２のディスクおよび上記キャッシュより最新のディスク内容を上記第１のディスクに回復する。このとき，上記キャッシュ内の更新データを選別することによって，上記第１のディスクにあるすべてのファイルがｏｐｅｎされていない状態にする。上記プロセッサが，上記ｏｐｅｎ要求を受けると，上記第１のディスク装置にあるファイルをオープンすると共に，上記キャッシュ装置にもファイル名などのメタ情報と共にオープンした旨を書き込む。上記プロセッサが，上記ｃｌｏｓｅ要求を受けると，上記第１のディスク装置にあるファイルをクローズすると共に，上記キャッシュ装置にもファイル名などのメタ情報と共にクローズした旨を書き込む。
【００２４】
その他の本願が提供するバックアップ方法は，以下の説明で明らかにされる。
【００２５】
【発明の実施の形態】
以下，本発明に係るバックアップ方法の実施例を図面に示し，さらに詳細に説明する。
〔実施例１〕
本実施例では，遅延ミラーによってバックアップを行うＮｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ装置（以下「ＮＡＳ装置」）について説明している。ＮＡＳ装置はストレージにファイルサーバ機能を付加した装置である。本実施例のＮＡＳ装置は１０分前〜６０分前の任意ファイルが，ユーザから容易に取り出すことができ，かつアプリケーションから正しくオープンすることができる。
【００２６】
図１は，本発明によるバックアップ方法の概略構成図を示している。ＮＡＳ装置１００はネットワークで接続されたクライアント装置２００からのファイルアクセス要求を処理するネットワークファイルサーバである。ＮＡＳ装置１００はプロセッサ装置１１０，キャッシュ装置１６０と，ディスク装置１７０から構成されており，プロセッサ装置１１０とキャッシュ装置１６０が，キャッシュ装置１６０とディスク装置１７０が，それぞれ接続されている。
プロセッサ装置１１０はクライアント装置２００からのファイルアクセス要求を受けとり，キャッシュ装置１６０を経由してディスク装置１７０にアクセスし，結果をクライアント装置２００に返す。キャッシュ装置１６０は不揮発なメモリであり，その領域のほとんどがディスク装置１７０へのアクセスを高速化するためのキャッシュメモリとして用いられるが，一部の領域を更新履歴テーブル１６１として用いる。更新履歴テーブル１６１は遅延ミラーを実現するためのデータ構造であり，複数の更新履歴１６２から構成される。プロセッサ装置１１０はコンピュータシステムであり，ファイルアクセスを担当するファイル制御プログラム１２０と，ミラーリングを担当するミラー制御プログラム１３０から構成される。
【００２７】
ファイル制御プログラム１２０は，ファイルに書くｗｒｉｔｅルーチン１２１，ファイルを読むｒｅａｄルーチン１２２，ファイルをオープンするｏｐｅｎルーチン１２３，ファイルをクローズするｃｌｏｓｅルーチン１２４から構成される。ミラー制御プログラム１３０は，ファイル更新情報を蓄える履歴蓄積ルーチン１３１，ファイル更新情報をミラーリングする履歴反映ルーチン１３２，過去のファイルを読む再構成ルーチン１３３，ミラーからディスクを回復するリストアルーチン１３４から構成される。
【００２８】
図２はクライアント装置２００から，ファイルへの書き出し要求が来た場合の，ＮＡＳ装置１００の処理概要を示している。ｗｒｉｔｅルーチン１２１はクライアント装置２００からの書き出し要求を受け取ると（２１），通常運用に用いるディスク装置である運用ディスク１７１に出力を行い（２２），さらに履歴蓄積ルーチン１３１にも書き出し要求を通知する（２３）。履歴蓄積ルーチン１３１は書き出し要求を通知されると，書き出し要求を更新履歴テーブル１６１内の更新履歴１６２に蓄える（２４）。履歴反映ルーチン１３２は１０分間隔で起動され，更新履歴テーブル１６１内の現在時刻より６０分以前の更新履歴１６２をミラーリングに用いるディスク装置であるミラーディスク１７２に出力し，ミラーディスク１７２の状態を現在時刻よりも６０分前の状態に保つ（２５，２６）。この際，履歴反映ルーチン１３２は，書きかけのファイルに関する更新履歴１６２を排除することで，ミラーディスク１７２内のすべてのファイルが常に書きかけではない状態に保つ。ここで，書きかけのファイルとはオープンされた後にクローズされていないファイルを示す。すなわち，ミラーディスク１７２内のすべてのファイルは常にクローズされた状態となる。
【００２９】
図３はクライアント装置２００から，現在のファイルの読み込み要求が来た場合の，ＮＡＳ装置１００の処理概要を示している。ｒｅａｄルーチン１２２はクライアント装置２００から現在ファイルに対する読み込み要求を受け取ると（３１），運用ディスク１７１から入力を行い（３２），クライアント装置２００にデータを返す（３３）。
【００３０】
図４はクライアント装置２００から，過去のファイルに対する読み込み要求が来た場合の，ＮＡＳ装置１００の処理概要を示している。ｒｅａｄルーチン１２２はクライアント装置２００から過去ファイルに対する読み込み要求を受け取ると（４１），再構成ルーチン１３３に読み込み要求を通知する（４２）。再構成ルーチン１３３は読み込み要求を受けとると，ミラーディスク１７２からファイルを読み込み（４３），更新履歴テーブル１６１内の指定時刻以前の更新履歴１６２をファイルに適用し（４４），ｒｅａｄルーチン１２２に返す（４５）。この際，再構成ルーチン１３３は，クローズされていない更新履歴１６２を排除するので，読み込んだ過去ファイルはクローズされた状態，すなわち書きかけでない状態である。ｒｅａｄルーチン１２２は再構成ルーチン１３３から返ったデータをクライアント装置２００に返す（４６）。
【００３１】
図５はクライアント装置２００から，ミラーよりディスクを回復するリストア指令が来た場合の，ＮＡＳ装置１００の処理概要を示している。まず，リストアルーチン１３４は，クライアント装置２００からのリストア指令を受けとると（５１），更新履歴テーブル１６１内のすべての更新履歴１６２をミラーディスク１７２に適用してミラーディスク１７２の状態を最新の状態にする（５２，５３）。この際，リストアルーチン１３４が，ファイルがクローズされていない書きかけの更新履歴１６２を排除するので，すべてのファイルはクローズされた状態である。次に，リストアルーチン１３４は，ミラーディスク１７２の内容すべてを運用ディスク１７１にコピーしてリストアを実現する（５４）。更新履歴テーブル１６１の内容も初期化して，再度ミラーリングが行なえるようにする。
【００３２】
図６はクライアント装置２００から，ファイルのオープン要求が来た場合のＮＡＳ装置１００の，処理概要を示している。ｏｐｅｎルーチン１２３はクライアント装置２００からのオープン要求を受けとると（６１），運用ディスク１７１よりファイルをオープンし（６２），さらに履歴蓄積ルーチン１３１にオープン要求を通知する（６３）。履歴蓄積ルーチン１３１はオープン要求を受けとると，オープン要求を更新履歴テーブル１６１内の更新履歴１６２に蓄える（６４）。
【００３３】
図７はクライアント装置２００から，ファイルのクローズ要求が来た場合の，ＮＡＳ装置１００の処理概要を示している。ｃｌｏｓｅルーチン１２４はクライアント装置２００からのクローズ要求を受けとると（７１），運用ディスク１７１よりファイルをクローズし（７２），さらに履歴蓄積ルーチン１３１にクローズ要求を通知する（７３）。履歴蓄積ルーチン１３１はクローズ要求を受けとると，クローズ要求を更新履歴テーブル１６１内の更新履歴１６２に蓄える（７４）。
【００３４】
図８はクライアント装置２００からのファイル更新情報を保存する更新履歴テーブル１６１の構造とその使用例を示している。１つのエントリには１つの更新に関する情報を格納する。カラム１６３には更新が行なわれた時刻を格納する。カラム１６４には更新の対象となったファイル名を格納する。カラム１６５には更新の種類を格納する。ファイル書き出しの場合は「ｗｒｉｔｅ」を，ファイルオープンの場合は「ｏｐｅｎ」を，ファイルクローズの場合は「ｃｌｏｓｅ」を，それぞれ格納する。カラム１６６とカラム１６７はカラム１６５が「ｗｒｉｔｅ」の場合のみ使用する。カラム１６６にはファイルの更新範囲を先頭からのオフセットの組で格納する。カラム１６７には更新データを格納する。更新履歴テーブル１６１のエントリは常に時刻順に並んでいるよう管理する。
【００３５】
図９はクライアント装置２００の操作画面例を示している。画面２１０では「／ｔｍｐ／ＰＡＴ．ｄｏｃ」というファイルのみが存在しているＮＡＳ装置１００の内容を閲覧している。アイコン２１１にアクセスすると「／ｔｍｐ／ＰＡＴ．ｄｏｃ」というファイルの現在のデータが得られる。ＮＡＳ装置１００は，ディレクトリ階層の最上位に過去のファイルにアクセスするための特殊ディレクトリ「＄＄ｂａｃｋｕｐ＄＄」を常に提供しており，画面２１０ではアイコン２１２として表示されている。特殊ディレクトリ「／＄＄ｂａｃｋｕｐ＄＄」の下に時刻を名前とするディレクトリを作成すると，その下にその時刻でのディスクの内容が表示される。ただし，時刻は現在から過去６０分間の間でなくてはならない。アイコン２１３は３６分前のディスクの最上位ディレクトリを示し，その下のファイルはすべてクローズされた状態であり，書きかけのファイルは存在しない。ファイル２１４にアクセスするとファイル「／ｔｍｐ／ＰＡＴ．ｄｏｃ」の３６分前のデータが得られる。ただし，３０分前時点において，オープンしたままの状態だった場合，オープンする前のデータが得られる。同様に，アイコン１２５にアクセスすると５４分前の「／ｔｍｐ／ＰＡＴ．ｄｏｃ」が得られる。
【００３６】
図１０はｗｒｉｔｅルーチン１２１のフローチャートを示している。ｗｒｉｔｅルーチン１２１はクライアント装置２００からのファイル書き出し要求を処理する。ステップ１００１では，クライアント装置２００より引数を受けとる。引数は，対象ファイル名Ｆ，範囲Ｒ，データＤ，の３つである。ステップ１００２では，クライアント装置２００の要求を処理するために運用ディスク１７１にデータＤを書き出す。ステップ１００３では，次のステップの準備として現在の時刻Ｔを求める。ステップ１００４では，遅延ミラーを実現するために履歴蓄積ルーチン１３１を呼ぶ。引数として，更新種類「ｗｒｉｔｅ」，更新時刻Ｔ，更新ファイル名Ｆ，更新範囲Ｒ，更新データＤ，を渡す。
【００３７】
図１１は履歴蓄積ルーチン１３１のフローチャートを示している。履歴蓄積ルーチン１３１は，ｗｒｉｔｅルーチン１２１，ｏｐｅｎルーチン１２３，ｃｌｏｓｅルーチン１２４，の３つのルーチンから呼び出され，ファイルに対する更新情報を更新履歴テーブル１６１に蓄積する。ステップ１１０１では，呼出し元ルーチンより更新情報である引数を受けとる。引数は，更新種類Ｋ，更新時刻Ｔ，更新対象ファイル名Ｆ，更新範囲Ｒ，更新データＤ，の５つである。ただし，ｏｐｅｎルーチン１２３およびｃｌｏｓｅルーチン１２４からは，更新範囲Ｒおよび更新データＤは渡されない。ステップ１１０２では，更新情報を格納するための更新履歴テーブル１６１の空きエントリＥをひとつ獲得する。空きエントリが確保できない場合は，後述する履歴反映ルーチン１３２と同様の処理を行って適当な時刻以前の更新履歴６１２をミラーディスク１７２に追い出すことで空きエントリを確保する。ステップ１１０３では，エントリＥに更新情報（Ｋ，Ｔ，Ｆ，Ｒ，Ｄ）を格納する。
【００３８】
図１２は履歴反映ルーチン１３２のフローチャートを示している。履歴反映ルーチン１３２は１０分間隔で定期的に呼び出され，更新履歴テーブル１６１の更新情報の適切な部分を適用することで，ミラーディスク１７２を常に１時間前の状態に保つ。ただし，すべてのファイルがクローズされた状態であるようにする。ステップ１２０１では，１時間前の時刻Ｔを求める。ステップ１２０２では，更新履歴テーブル１６１内のカラム１６４よりファイル名Ｆをひとつ選ぶ。ステップ１２０３では，更新履歴テーブル１６１から，ファイルＦに関する時刻Ｔ以前のすべての更新履歴の列Ｘを取り出す。更新履歴列Ｘは更新履歴テーブル１６１から削除する。ステップ１２０４では，更新履歴列Ｘの中にｃｌｏｓｅされてないｏｐｅｎがあれば，そのｏｐｅｎ以降は書きかけの更新履歴であるので，Ｘから除いて更新履歴テーブル１６１に書き戻す。ステップ１２０５では，更新履歴列Ｘのｗｒｉｔｅのデータを順番にミラーディスク１７２に書き出して，ミラーリングを実施する。ステップ１２０６では，更新履歴テーブル１６１内に未処理のファイルがまだあるか調べ，あればステップ１２０２に分岐して処理を繰り返す。そうでない場合はステップ１２０７に分岐する。
【００３９】
図１３はｒｅａｄルーチン１２２のフローチャートを示している。ｒｅａｄルーチン１２２はクライアント装置２００からのファイル読み込み要求を処理する。過去のファイルに対する要求であれば再構成ルーチン１３３を呼び出す。ステップ１３０１では，クライアント装置２００より引数を受けとる。引数は，対象ファイル名Ｆ，範囲Ｒ，の２つである。ステップ１３０２では，読み込み対象が現在のファイルか過去のファイルかを調べるため，ファイル名Ｆの最上位ディレクトリ名Ｄを求める。ステップ１３０３では，最上位ディレクトリ名Ｄが「＄＄ｂａｃｋｕｐ＄＄」であるかを調べ，そうであれば現在のファイルを読むためにステップ１３０４に分岐する。そうでない場合，過去のファイルを読むためにステップ１３０６に分岐する。ステップ１３０４では，運用ディスク１７１からファイルＦの範囲ＲのデータＤを読む。ステップ１３０５では，クライアント装置２００に読み込みデータＤを返す。ステップ１３０６では，ファイル名Ｆから読みたいファイルの時刻Ｔを求める。例えば，ファイル名Ｆの上から２番目のディレクトリ名が「１０分前」であれば，現在時刻の１０分前をＴとする。ステップ１３０７では，真のファイル名を得るためにファイル名Ｆから上位２ディレクトリ名称を削除する。ステップ１３０８では，過去のファイルを読むために再構成ルーチン１３３を呼び出す。引数として，（修正後の）ファイル名Ｆ，読み込み範囲Ｒ，ファイルの時刻Ｔ，を渡す。ステップ１３０９では，再構成ルーチン１３３を呼び出した結果として時刻Ｔのファイルの読み込みデータＤを得る。ステップ１３１０では，クライアント装置２００に読み込みデータＤを返す。
【００４０】
図１４は再構成ルーチン１３３のフローチャートを示している。再構成ルーチン１３３はｒｅａｄルーチン１２２から呼び出され，過去のファイルに対する読み込み要求を処理する。ステップ１４０１では，呼出し元のｒｅａｄルーチン１２２より引数を受けとる。引数は，対象ファイル名Ｆ，範囲Ｒ，である。ステップ１４０２では，ミラーディスク１７２からファイルＦの１時間前のデータＤを読み出す。ステップ１４０３では，更新履歴テーブル１６１からファイルＦに関する時刻Ｔ以前のすべての更新履歴の列Ｘを読み出す。更新履歴列Ｘは更新履歴テーブル１６１から削除しない。ステップ１４０４では，更新履歴列Ｘの中にｃｌｏｓｅされてないｏｐｅｎがあれば，そのｏｐｅｎ以降をＸから除く。ステップ１４０５では，更新履歴列Ｘのｗｒｉｔｅのデータを順番にデータＤに適用して時刻Ｔのファイルを最構成する。ステップ１４０６では，データＤのうち範囲Ｒの部分をクライアント装置２００に返す。
【００４１】
図１５はリストアルーチン１３４のフローチャートを示している。リストアルーチン１３４はミラーディスク１７２に障害が発生したときなどにクライアント装置２００から呼び出され，ミラーディスク１７２と更新履歴テーブル１６１を用いて運用ディスク１７１の内容を回復する。ステップ１５０１〜１５０５では，遅延させている履歴を適用させることでミラーディスク１７２の内容を最新にする。ステップ１５０１では，更新履歴テーブル１６１内のカラム１６４よりファイル名Ｆをひとつ選ぶ。ステップ１５０２では，更新履歴テーブル１６１から，ファイルＦに関する時刻Ｔ以前のすべての更新履歴の列Ｘを取り出す。ステップ１５０３では，更新履歴列Ｘの中にｃｌｏｓｅされてないｏｐｅｎがあれば，そのｏｐｅｎ以降をＸから除く。ステップ１５０４では，更新履歴列Ｘのｗｒｉｔｅのデータを順番にミラーディスク１７２に書き出す。ステップ１５０５では，更新履歴テーブル１６１内に未処理のファイルがまだあるか調べ，あればステップ１５０１に分岐して処理を繰り返す。そうでない場合はステップ１５０６に分岐する。ステップ１５０６では，内容が最新になったミラーディスク１７２のすべての内容を運用ディスク１７１にコピーする。ステップ１５０７では，初期化のために更新履歴テーブル１６１からすべてのエントリを削除する。
【００４２】
図１６はｏｐｅｎルーチン１２３のフローチャートを示している。ｏｐｅｎルーチン１２３はクライアント装置２００からのファイルオープン要求を処理する。ステップ１６０１では，クライアント装置２００より引数としてファイル名Ｆを受けとる。ステップ１６０２では，クライアント装置２００の要求を処理するため，運用ディスク１７１のファイルＦをオープンする。ステップ１６０３では，次のステップの準備として現在の時刻Ｔを求める。ステップ１６０４では，遅延ミラーを実現するために履歴蓄積ルーチン１３１を呼ぶ。引数として，更新種類「ｏｐｅｎ」，更新時刻Ｔ，更新ファイル名Ｆ，を渡す。
【００４３】
図１７はｃｌｏｓｅルーチン１２４のフローチャートを示している。ｃｌｏｓｅルーチン１２４はクライアント装置２００からのファイルクローズ要求を処理する。ステップ１７０１では，クライアント装置２００より引数としてファイル名Ｆを受けとる。ステップ１７０２では，クライアント装置２００の要求を処理するために運用ディスク１７１上のファイルＦをクローズする。ステップ１７０３では，次のステップの準備として現在の時刻Ｔを求める。ステップ１７０４では，遅延ミラーを実現するために履歴蓄積ルーチン１３１を呼ぶ。引数として，更新種類「ｃｌｏｓｅ」，更新時刻Ｔ，更新ファイル名Ｆ，を渡す。
【００４４】
以上，実施例１のシステム構成および処理フローを説明した。本実施例によれば，最近の任意の時点のファイルを選び，ユーザ操作により回復し，アプリケーションから再使用することを保証できる。
【００４５】
また，本実施例ではミラーリングの遅延時間を固定長としていたが，任意の時間にすることにも適用可能である。たとえば，ファイルをクローズすると即時ミラーリングを完了させることなどである。
〔実施例２〕
本実施例は図１に示す実施例１と同様であるが，ＮＡＳ装置１００が新たにｃｏｍｍｉｔ要求も受け付ける点が異なる。
【００４６】
本実施例のＮＡＳ装置１００は，上記のｃｏｍｍｉｔ要求を受け付けると，ｃｌｏｓｅ要求とｏｐｅｎ要求を連続して受け付けたものとみなして処理をする。それ以外の処理は実施例１と同じである。
【００４７】
本実施例の目的は，データの損失を小さくすることである。以下，その理由を説明する。
【００４８】
ファイルを排他的に使用する目的などで，ファイルをオープンしてから長時間クローズせずに使い続けるアプリケーションが多く存在する。たとえばワードプロセッサなどがそうである。このような使用方法では，ファイルのチェックポイント間隔が大きくなり，実施例１のＮＡＳ装置１００では失うデータが多くなってしまう。
【００４９】
本実施例によって，ファイルをクローズしなくても，ファイルの内容がアプリケーションにとって整合性のとれた状態のときにアプリケーションが明示的にｃｏｍｍｉｔ要求を出すことによって，長時間連続使用しているファイルでもチェックポイントをこまめにとれる。
【００５０】
アプリケーションがｃｏｍｍｉｔ要求を出す契機としては，たとえばワードプロセッサにユーザがファイルの保存を指示したときなどがある。
〔実施例３〕
本実施例は図１に示す実施例１と同様であるが，ＮＡＳ装置１００が一定時間を経過するとファイルを強制的にクローズする点が異なる。
【００５１】
本実施例のＮＡＳ装置１００は，オープンしてから一定時間（たとえば１０時間）を経過したファイルがあれば，そのファイルに対するｃｌｏｓｅ要求がきたものとみなして処理する。それ以外の処理は実施例１と同じである。
【００５２】
本実施例の目的は，ＮＡＳ装置１００のサービス停止の防止による可用性の向上である。
【００５３】
実施例１のＮＡＳ装置１００は，ファイルがクローズされない限り更新履歴を蓄え続ける。その結果，更新履歴テーブル１６２が枯渇してしまう場合がある。枯渇した場合，それ以上すべてのファイルに対するｗｒｉｔｅ要求を処理できず，その後ｃｌｏｓｅ要求が来るまでＮＡＳ装置１００のサービスが停止してしまう。
【００５４】
本実施例によって，更新履歴の滞留時間を有限にすることによって，無限にサービスが停止することを防ぐ。バックアップに大きな負荷をかけるファイルをバックアップの対象から除外することで，それ以外のファイルをバックアップでき，サービスを停止しない。長時間オープンするファイルを救済することよりも，サービスの停止しない方が重要な業務においては，本実施例によるバックアップが有効である。
〔実施例４〕
本実施例は図１に示す実施例１と同様であるが，ＮＡＳ装置１００において，新たにスワップ用のディスク装置１７０を設ける点が異なる。
【００５５】
本実施例のＮＡＳ装置１００は，更新履歴テーブル１６２に最初に書き込まれてから一定時間を経過した更新履歴を，上記スワップ用のディスク装置１７０に書き出す。履歴反映ルーチン１３２の処理対象として，更新履歴テーブル１６１だけでなく上記スワップ用のディスク装置１７０も扱う。それ以外の処理は実施例１と同じである。
【００５６】
本実施例の目的は，上更新履歴テーブル１６１の容量を拡大してより多くの更新履歴を蓄えることで，損失するデータを減らすことである。
【００５７】
一般に，キャッシュ（メモリ）はディスクに比べて容量が小さい。キャッシュ装置１６０よりもディスク装置１７０の方が，大きな更新履歴テーブル１６１を保存できる。一方で，一般に，ディスクはキャッシュより低速である。上記スワップ用のディスク装置１７０に書き出した更新履歴を，すぐにミラーディスク１７２に書き出すような処理が多発すると性能が大きく劣化する。しかし，本実施例においては，そのような処理はあまり発生せず大きな性能劣化につながらない。なぜなら，上記スワップ用のディスク装置１７０に書き出す更新履歴の対象ファイルは長時間クローズされておらず，従って近い将来にもクローズされない，すなわちすぐにはミラーディスク１７２に書き出されないことが期待できるからである。
〔実施例５〕
本実施例は図１に示す実施例１と同様であるが，ＮＡＳ装置１００が，新たにハードウェアによる遅延ミラー機構を備える点が異なる。
【００５８】
本実施例のＮＡＳ装置１００は，ハードウェアで実装された上記遅延ミラー機構を備えており，運用ディスク１７１に書き込まれたデータをキャッシュ装置１６０に一定時間滞留させてからミラーディスク１７２にも書き出す。ミラー制御プログラム１３０は，更新履歴テーブル１６１の更新履歴にアクセスするとき，カラム１６７を更新データそのものではなく更新データの存在する位置を保存するために使用する。ここでいう位置とは，上記遅延ミラー機構がキャッシュ装置１６０に書き込んだ位置を示す。それ以外の処理は実施例１と同じである。
【００５９】
本実施例の目的はプロセッサ装置１１０の負荷を軽減して，ＮＡＳ装置１００の性能を向上することである。
【００６０】
実施例１のバックアップを実現するためにプロセッサ装置１１０が行う主な処理は更新データのコピーであり，ＮＡＳ装置１００の性能に大きな影響を与える。
【００６１】
本実施例によって，このような単純なデータコピー処理を高速なハードウェア機構にまかせることで，プロセッサ装置１１０が本来のサービスをより高速に処理できる。
〔実施例６〕
本実施例は図１に示す実施例１と同様であるが，ＮＡＳ装置１００のバックアップ対象がディスク単位ではなく，ディレクトリ単位である点が異なる。
【００６２】
本実施例のＮＡＳ装置１００は，あらかじめ指定されたバックアップ対象ディレクトリを記憶しておく。ファイル制御プログラム１３０は，ファイルに対するアクセス要求を受け付けると，そのファイル名と上記対象ディレクトリを比較する。バックアップの対象でない場合には，ミラー制御プログラムを呼び出さない。それ以外の処理は実施例１と同じである。
【００６３】
本実施例の目的はバックアップ範囲を細かく制御することで，より重要なファイルを多くバックアップすることである。
【００６４】
実施例１のＮＡＳ装置１００では，キャッシュ装置１６０の領域は，バックアップのための更新履歴テーブル１６１と，ディスクアクセスを高速化するためのキャッシュ領域に分けられる。また，バックアップを実現するためにプロセッサ装置１１０が行う主な処理は更新データのコピーであり，ＮＡＳ装置１００の性能に大きな影響を与える。バックアップを多くとるためには更新履歴テーブル１６１を大きくする必要がある。そうすると，上記キャッシュ領域が減少してディスクアクセス性能が劣化する。また，データコピー処理が頻発してプロセッサ性能が劣化する。結果として，ＮＡＳ装置１００の性能が大きく劣化する。
【００６５】
本実施例によって，バックアップ対象を重要なデータに絞ることでＮＡＳ装置１００を高速化することができる。
〔実施例７〕
本実施例は図１に示す実施例１と同様であるが，ディスクを２つではなく１つしか使わない点が異なる。
【００６６】
本実施例のＮＡＳ装置１００は，運用ディスク１７１は用いない。ファイルへの書き込みは更新履歴テーブル１６１経由でミラーディスク１７２に書き込むのみで，運用ディスク１７１には書き込まない。ファイルを読んだりオープン・クローズするときは，逐一再構成ルーチン１３３によって現在時点のファイルを生成する。リストアは行わない。それ以外の処理は実施例１と同じである。
【００６７】
本実施例の目的は，バックアップ用のディスク容量を減らすことによるコスト削減である。
【００６８】
実施例１のＮＡＳ装置１００では，運用ディスク１７１と同容量のミラーディスク１７２を用意する必要があった，リストア処理を行うためには必須であるが，過去ファイルの回復だけが目的であれば冗長である。
【００６９】
本実施例によって，必要なディスク容量が半減し，コストを削減することができる。
【００７０】
また，本実施例では更新履歴テーブル１６１をキャッシュ装置１６０上に格納していたが，別途用意する履歴保存用ディスク装置１７０上に格納するＮＡＳ装置１００にも適用可能である。
【００７１】
また，本実施例では更新履歴テーブル１６１をキャッシュ装置１６０上に格納していたが，ミラーディスク１７２内に格納するＮＡＳ装置１００にも適用可能である。
【００７２】
以上，本発明の実施例１乃至８を説明したが，これらの実施例を適宜組み合わせた形態も考えられる。例えば，実施例２において，実施例３と同様にタイムアウトするバックアップが考えられる。
【００７３】
【発明の効果】
以上説明したように，本発明によれば，ユーザミスの回復に適したバックアップ方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例におけるコンピュータシステムの構成を説明するブロック図。
【図２】ファイルに書く処理の流れを説明するブロック図。
【図３】現在のファイルを読む処理の流れを説明するブロック図。
【図４】過去のファイルを読む処理の流れを説明するブロック図。
【図５】ミラーディスクからリストアする処理の流れを説明するブロック図。
【図６】ファイルをオープンする処理の流れを説明するブロック図。
【図７】ファイルをクローズする処理の流れを説明するブロック図。
【図８】更新履歴テーブルの構成例を示すチャート図。
【図９】クライアント装置の走査画面例平面図である。
【図１０】ｗｒｉｔｅルーチンのフローチャートである。
【図１１】履歴蓄積ルーチンのフローチャートである。
【図１２】履歴反映ルーチンのフローチャートである。
【図１３】ｒｅａｄルーチンのフローチャートである。
【図１４】再構成ルーチンのフローチャートである。
【図１５】リストアルーチンのフローチャートである。
【図１６】ｏｐｅｎルーチンのフローチャートである。
【図１７】ｃｌｏｓｅルーチンのフローチャートである。
【符号の説明】
２００…クライアント装置，１００…ＮＡＳ装置，１１０…プロセッサ装置，１６０…キャッシュ装置，１７０…ディスク装置，１２０…ファイル制御プログラム，１３０…ミラー制御プログラム，１７１…運用ディスク，１７２…ミラーディスク，１６２…更新履歴テーブル，１２１…ｗｒｉｔｅルーチン，１２２…ｒｅａｄルーチン，１２３…ｏｐｅｎルーチン，１２４…ｃｌｏｓｅルーチン，１３１…履歴蓄積ルーチン，１３２…履歴反映ルーチン，１３３…再構成ルーチン，１３４…リストアルーチン。
【図１】
2004348193.tif 000003
【図２】
2004348193.tif 000004
【図３】
2004348193.tif 000005
【図４】
2004348193.tif 000006
【図５】
2004348193.tif 000007
【図６】
2004348193.tif 000008
【図７】
2004348193.tif 000009
【図８】
2004348193.tif 000010
【図９】
2004348193.tif 000011
【図１０】
2004348193.tif 000012
【図１１】
2004348193.tif 000013
【図１２】
2004348193.tif 000014
【図１３】
2004348193.tif 000015
【図１４】
2004348193.tif 000016
【図１５】
2004348193.tif 000017
【図１６】
2004348193.tif 000018
【図１７】
2004348193.tif 000019