(57)【要約】【課題】ファイルのリストア処理における繰り返し作業の時間を短縮する。【解決手段】ストレージ装置であって、ディスクドライブを備え、プロセッサは、ファイルシステム入出力処理部と、ブロック入出力処理部と、を実現し、前記ブロック入出力処理部は、前記ディスクドライブの記憶領域を、第１ボリュームと、ブロック書き込み履歴を記憶する第２ボリュームと、特定の時点における前記第１ボリュームの複製データを記憶する第３ボリュームと、を含む複数のボリュームとして、前記ファイルシステム入出力処理部に提供し、前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第１ボリュームの複製データに書き換え、前記第２ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とする。【選択図】図４
2008033527.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機に接続されるストレージ装置であって、
前記ホスト計算機に接続される一つ以上のインタフェースと、前記インタフェースに接続される一つ以上のプロセッサと、前記プロセッサに接続される一つ以上のメモリと、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブと、を備え、
前記プロセッサは、ファイルに対する読み出し要求及び書き込み要求を前記ホスト計算機から受信するファイルシステム入出力処理部と、前記ディスクドライブのブロックに対してデータを読み書きするブロック入出力処理部と、を前記メモリに記憶されるプログラムを実行することによって実現し、
前記ブロック入出力処理部は、
前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第１ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第２ボリュームと、特定の時点における前記第１ボリュームの複製データを記憶する第３ボリュームと、を含む複数のボリュームとして、前記ファイルシステム入出力処理部に提供し、
前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第１ボリュームの複製データに書き換え、
前記第２ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とするストレージ装置。
【請求項２】
前記ブロック入出力処理部は、前記ファイルシステム入出力処理部から前記ファイルの指定を受けると、前記第２ボリュームに記憶されるブロック書き込み履歴から、当該指定されたファイルに対応するブロックに関するブロック書き込み履歴のみを抽出することを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記ブロック書き込み履歴は、書き込み前に前記ブロックに記憶されていたデータ及び書き込み後に前記ブロックに記憶されるデータのうち少なくとも一方を含み、
前記ブロック入出力処理部は、
前記抽出されたブロック書き込み履歴を、前記ファイルシステム入出力処理部に送信し、
前記送信したブロック書き込み履歴に含まれる書き込み時点のうちの一つの書き込み時点の指定を前記ファイルシステム入出力処理部から受けると、前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記指定された書き込み時点における前記第１ボリュームの複製データに書き換えることを特徴とする請求項２に記載のストレージ装置。
【請求項４】
前記ブロック入出力処理部は、
前記抽出されたブロック書き込み履歴に含まれる書き込み時点の中から、最新の書き込み時点を特定し、
前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定された最新の書き込み時点における前記第１ボリュームの複製データに書き換えることを特徴とする請求項２に記載のストレージ装置。
【請求項５】
ファイルに対する読み出し要求及び書き込み要求をホスト計算機から受信するＮＡＳ装置に接続されるディスク装置であって、
前記ＮＡＳ装置に接続される一つ以上のインタフェースと、前記インタフェースに接続される一つ以上のプロセッサと、前記プロセッサに接続される一つ以上のメモリと、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブと、を備え、
前記プロセッサは、
前記ディスクドライブのブロックに対してデータを読み書きし、
前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第１ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第２ボリュームと、特定の時点における前記第１ボリュームの複製データを記憶する第３ボリュームと、を含む複数のボリュームとして、前記ＮＡＳ装置に提供し、
前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第１ボリュームの複製データに書き換え、
前記第２ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とするディスク装置。
【請求項６】
前記プロセッサは、前記ＮＡＳ装置から前記ファイルの指定を受けると、前記第２ボリュームに記憶されるブロック書き込み履歴から、当該指定されたファイルに対応するブロックに関するブロック書き込み履歴のみを抽出することを特徴とする請求項５に記載のディスク装置。
【請求項７】
前記ブロック書き込み履歴は、書き込み前に前記ブロックに記憶されていたデータ及び書き込み後に前記ブロックに記憶されるデータのうち少なくとも一方を含み、
前記プロセッサは、
前記抽出されたブロック書き込み履歴を、前記ＮＡＳ装置に送信し、
前記送信したブロック書き込み履歴に含まれる書き込み時点のうちの一つの書き込み時点の指定を前記ＮＡＳ装置から受けると、前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記指定された書き込み時点における前記第１ボリュームの複製データに書き換えることを特徴とする請求項６に記載のディスク装置。
【請求項８】
前記プロセッサは、
前記抽出されたブロック書き込み履歴に含まれる書き込み時点の中から、最新の書き込み時点を特定し、
前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定された最新の書き込み時点における前記第１ボリュームの複製データに書き換えることを特徴とする請求項６に記載のディスク装置。
【請求項９】
ホスト計算機に接続されるストレージ装置におけるデータ復元方法であって、
前記ストレージ装置は、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブを備え、
前記データ復元方法は、
ファイルに対する読み出し要求及び書き込み要求を前記ホスト計算機から受信するステップと、
前記受信した読み出し要求及び書き込み要求に基づいて、前記ディスクドライブのブロックに対してデータを読み書きするステップと、
前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第１ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第２ボリュームと、特定の時点における前記第１ボリュームの複製データを記憶する第３ボリュームと、を含む複数のボリュームとして提供するステップと、
前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第１ボリュームの複製データに書き換えるステップと、を含み、
前記第２ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とするデータ復元方法。
【請求項１０】
更に、前記ファイルの指定を受けると、前記第２ボリュームに記憶されるブロック書き込み履歴から、当該指定されたファイルに対応するブロックに関するブロック書き込み履歴のみを抽出するステップを含むことを特徴とする請求項９に記載のデータ復元方法。
【請求項１１】
前記ブロック書き込み履歴は、書き込み前に前記ブロックに記憶されていたデータ及び書き込み後に前記ブロックに記憶されるデータのうち少なくとも一方を含み、
前記データ復元方法は、更に、
前記抽出されたブロック書き込み履歴を送信するステップと、
前記送信したブロック書き込み履歴に含まれる書き込み時点のうちの一つの書き込み時点の指定を受けると、前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記指定された書き込み時点における前記第１ボリュームの複製データに書き換えるステップと、を含むことを特徴とする請求項１０に記載のデータ復元方法。
【請求項１２】
更に、前記抽出されたブロック書き込み履歴に含まれる書き込み時点の中から、最新の書き込み時点を特定するステップと、
前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定された最新の書き込み時点における前記第１ボリュームの複製データに書き換えるステップと、を含むことを特徴とする請求項１０に記載のデータ復元方法。
【請求項１３】
ホスト計算機に接続されるストレージ装置であって、
前記ホスト計算機に接続される一つ以上のインタフェースと、前記インタフェースに接続される一つ以上のプロセッサと、前記プロセッサに接続される一つ以上のメモリと、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブと、を備え、
前記プロセッサは、ファイルに対する読み出し要求及び書き込み要求を前記ホスト計算機から受信するファイルシステム入出力処理部と、前記ディスクドライブのブロックに対してデータを読み書きするブロック入出力処理部と、を前記メモリに記憶されるプログラムを実行することによって実現し、
前記ブロック入出力処理部は、
前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第１ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第２ボリュームと、特定の時点における前記第１ボリュームの複製データを記憶する第３ボリュームと、を含む複数のボリュームとして、前記ファイルシステム入出力処理部に提供し、
前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第１ボリュームの複製データに書き換え、
前記ファイルシステム入出力処理部から前記ブロックの指定を受けると、前記第２ボリュームに記憶されるブロック書き込み履歴から、当該指定されたブロックに関するブロック書き込み履歴のみを抽出し、
前記抽出されたブロック書き込み履歴を、前記ファイルシステム入出力処理部に送信することを特徴とするストレージ装置。
【請求項１４】
前記第１ボリュームは、前記ファイルと当該ファイルにデータが書き込まれた時点との対応を示す書き込みログを記憶し、
前記ファイルシステム入出力処理部は、
前記送信されたブロック書き込み履歴に基づいて、前記第１ボリュームに記憶されていた過去の書き込みログを復元し、
前記第１ボリュームに記憶されている書き込みログ及び復元された過去の書き込みログに基づいて、ファイルの書き込み時点の一覧を作成することを特徴とする請求項１３に記載のストレージ装置。
【請求項１５】
前記ブロック書き込み履歴は、書き込み前に前記ブロックに記憶されていたデータ及び書き込み後に前記ブロックに記憶されるデータのうち少なくとも一方を含み、
前記ファイルシステム入出力処理部は、前記作成されたファイルの書き込み時点の一覧を、前記ホスト計算機に送信し、
前記ファイルシステム入出力処理部が、前記送信したファイルの書き込み時点の一覧に含まれる一つの書き込み時点の指定を前記ホスト計算機から受けると、前記ブロック入出力処理部は、前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記指定された書き込み時点における前記第１ボリュームの複製データに書き換えることを特徴とする請求項１４に記載のストレージ装置。
【請求項１６】
前記ファイルシステム入出力処理部は、前記作成されたファイルの書き込み時点の一覧から、最新の書き込み時点を特定し、
前記ブロック入出力処理部は、前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定された最新の書き込み時点における前記第１ボリュームの複製データに書き換えることを特徴とする請求項１４に記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置に関し、特に、記憶されているデータをリストアする技術に関する。
【背景技術】
【０００２】
企業情報システムは、ハードウェアの故障、ソフトウェアのバグ又はユーザの操作ミス等によって異常終了することがありうる。このような時の多くの場合、データ異常又はデータ破壊が発生する。そこで、企業情報システムには、データをリストアする技術が重要となる。
【０００３】
例えば、ジャーナルを用いたデータリストア技術が、特許文献１に開示されている。当該データリストア技術によると、主ボリュームの複製である副ボリュームが作成される。更に、主ボリュームへの更新データがジャーナルボリュームに記憶される。
【特許文献１】特開２００４−２５２６８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ジャーナルを用いたデータリストア技術によれば、ストレージ装置は、更新データを常に記録し続けるので、障害時に失われるデータを最小限に抑えることができる。しかし、業務全体でのリストア作業では、常に最新データが必要であるとは限らない。この場合、データのリストア時点となる障害発生時点又は障害要因発生時点が容易に特定できない。
【０００５】
そこで、障害発生時点又は障害要因発生時点と推測される時点へのリストアが行われる。そして、リストアされたデータに問題があれば、更に異なる時点へのリストアが行われる。このような繰り返し作業は、時間を要するので、業務の停止時間を長引かせる。
【０００６】
特に、特定のファイルのみをリストアすればよい場合であっても、ボリューム全体でリストアする必要がある。そのため、特定のファイルに関する更新時点のみでなく、ボリュームに含まれるすべてのブロックの更新時点が、リストア時点の候補となる。よって、無駄な繰り返し回数が発生する。
【０００７】
本発明は、前述した問題点に鑑みてなされたものであって、ファイルのリストア処理における繰り返し作業の時間を短縮するストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の代表的な形態は、ホスト計算機に接続されるストレージ装置であって、前記ホスト計算機に接続される一つ以上のインタフェースと、前記インタフェースに接続される一つ以上のプロセッサと、前記プロセッサに接続される一つ以上のメモリと、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブと、を備え、前記プロセッサは、ファイルに対する読み出し要求及び書き込み要求を前記ホスト計算機から受信するファイルシステム入出力処理部と、前記ディスクドライブのブロックに対してデータを読み書きするブロック入出力処理部と、を前記メモリに記憶されるプログラムを実行することによって実現し、前記ブロック入出力処理部は、前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第１ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第２ボリュームと、特定の時点における前記第１ボリュームの複製データを記憶する第３ボリュームと、を含む複数のボリュームとして、前記ファイルシステム入出力処理部に提供し、前記第２ボリュームに記憶されるブロック書き込み履歴を参照して、前記第３ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第１ボリュームの複製データに書き換え、前記第２ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とする。
【発明の効果】
【０００９】
本発明の代表的な形態によれば、ファイルのリストア処理における繰り返し作業の時間を短縮できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を図面を参照して説明する。
【００１１】
（第１の実施の形態）
図１は、本発明の第１の実施の形態のストレージ装置１００の構成のブロック図である。
【００１２】
ストレージ装置１００は、ネットワーク１０２を介してホスト計算機１０１と接続される。ストレージ装置１００は、ファイル入出力要求に応じて、ファイルに対してデータを入出力する。
【００１３】
ストレージ装置１００は、ＮＡＳ装置１０３及びディスク装置１０５を備える。ＮＡＳ装置１０３とディスク装置１０５とは、ファイバチャネル１０４によって接続される。
【００１４】
ＮＡＳ装置１０３は、ホスト計算機１０１からファイル入出力要求を受信する。すると、ＮＡＳ装置１０３は、受信したファイル入出力要求を、ブロック入出力要求に変換する。そして、ＮＡＳ装置１０３は、変換されたブロック入出力要求をディスク装置１０５に送信する。
【００１５】
ＮＡＳ装置１０３は、ＮＡＳプロセッサ１０６及びＮＡＳメモリ１０７を備える。ＮＡＳプロセッサ１０６は、ＮＡＳメモリ１０７に記憶されるプログラムを実行することによって、各種処理を行う。
【００１６】
ＮＡＳメモリ１０７は、ＮＡＳプロセッサ１０６によって実行されるプログラム及びＮＡＳプロセッサ１０６によって必要とされる情報等を記憶する。具体的には、ＮＡＳメモリ１０７は、ＮＡＳ制御プログラム１０８を記憶する。ＮＡＳ制御プログラム１０８は、ホスト計算機１０１から要求を受信し、受信した要求に応じた処理を行う。なお、ＮＡＳ制御プログラム１０８については、図２で詳細を説明する。
【００１７】
また、第２の実施の形態では、ＮＡＳメモリ１０７の一部は、ログバッファ１０９として使用される。ログバッファ１０９は、現在のファイル更新ログテーブル及び過去のファイル更新ログテーブルを一時的に記憶する。なお、ファイル更新ログテーブルについては、後述する。
【００１８】
なお、ＮＡＳ装置１０３の機能は、ディスク装置１０５に備わるディスクコントローラ１１９によって実現されてもよい。この場合、ストレージ装置１００は、ＮＡＳ装置１０３を備えなくてもよい。
【００１９】
ディスク装置１０５は、ディスクコントローラ１１９及び物理ディスクを備える。ディスクコントローラ１１９は、物理ディスクに対するデータの入出力を制御する。また、ディスクコントローラ１１９は、物理ディスクの記憶領域を、一つ以上の論理ボリュームとしてＮＡＳ装置１０３に提供する。
【００２０】
ディスクコントローラ１１９は、ディスクプロセッサ１１０及びディスクメモリ１１１を備える。ディスクプロセッサ１１０は、ディスクメモリ１１１に記憶されるプログラムを実行することによって、各種処理を行う。
【００２１】
ディスクメモリ１１１は、ディスクプロセッサ１１０によって実行されるプログラム及びディスクプロセッサ１１０によって必要とされる情報等を記憶する。具体的には、ディスクメモリ１１１は、ディスク制御プログラム１１２を記憶する。ディスク制御プログラム１１２は、ＮＡＳ装置１０３から要求を受信し、受信した要求に応じた処理を行う。なお、ディスク制御プログラム１１２については、図３で詳細を説明する。
【００２２】
論理ボリュームは、主ボリューム１１３、ジャーナルボリューム１１４及び副ボリューム１１５を含む。なお、本説明図では、主ボリューム１１３、ジャーナルボリューム１１４及び副ボリューム１１５は、それぞれ一つずつ図示されているが、ディスク装置１０５にいくつ含まれてもよい。
【００２３】
主ボリューム１１３は、ホスト計算機１０１に書き込み要求されたデータを、ファイル単位で記憶する。なお、主ボリューム１１３に記憶されるデータは、ファイルシステムによって管理される。
【００２４】
副ボリューム１１５は、特定の時点における主ボリューム１１３の複製データを記憶する。
【００２５】
ジャーナルボリューム１１４は、主ボリューム１１３に対する更新データ（ジャーナルデータ）を記憶する。具体的には、ジャーナルボリューム１１４は、ジャーナルテーブル１１６及び副ボリューム管理テーブル（副ＶＯＬ管理テーブル）１１８を記憶する。
【００２６】
ジャーナルテーブル１１６は、主ボリューム１１３に対する更新データを管理する。なお、ジャーナルテーブル１１６については、図４で詳細を説明する。副ＶＯＬ管理テーブル１１８は、副ボリューム１１５が主ボリューム１１３のいつの時点における複製データを記憶するかを示す。なお、副ＶＯＬ管理テーブル１１８については、図５で詳細を説明する。
【００２７】
ディスクコントローラ１１９は、副ボリューム１１５に記憶されるデータを、任意の時点における主ボリューム１１３の複製に書き換えることができる。当該任意の時点は、ジャーナルテーブル１１６に更新データが記憶されている範囲内である。
【００２８】
図２は、本発明の第１の実施の形態のＮＡＳ装置１０３に記憶されるＮＡＳ制御プログラム１０８のブロック図である。
【００２９】
ＮＡＳ制御プログラム１０８は、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１、ＮＡＳ＿ｈｉｓｔｏｒｙルーチン２０２及びＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３を含む。
【００３０】
ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１は、ホスト計算機１０１からファイル入出力要求を受信し、受信したファイル入出力要求を処理する。なお、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１の処理については、図１０で詳細を説明する。
【００３１】
ＮＡＳ＿ｈｉｓｔｏｒｙルーチン２０２は、ホスト計算機１０１からファイル更新時点一覧取得要求を受信し、受信したファイル更新時点一覧取得要求を処理する。なお、ＮＡＳ＿ｈｉｓｔｏｒｙルーチン２０２の処理については、図１１で詳細を説明する。
【００３２】
ＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３は、ホスト計算機１０１から過去ファイルデータ取得要求を受信し、受信した過去ファイルデータ取得要求を処理する。なお、ＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３の処理については、図１２で詳細を説明する。
【００３３】
図３は、本発明の第１の実施の形態のディスク装置１０５に記憶されるディスク制御プログラム１１２のブロック図である。
【００３４】
ディスク制御プログラム１１２は、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４、ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５及びＤＩＳＫ＿ｗａｒｐルーチン２０６を含む。
【００３５】
ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４は、ＮＡＳ装置１０３からブロック入出力要求を受信し、受信したブロック入出力要求を処理する。なお、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４の処理については、図１３で詳細を説明する。
【００３６】
ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５は、ＮＡＳ装置１０３からブロック更新時点一覧取得要求を受信し、受信したブロック更新時点一覧取得要求を処理する。なお、ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５の処理については、図１４で詳細を説明する。
【００３７】
ＤＩＳＫ＿ｗａｒｐルーチン２０６は、ＮＡＳ装置１０３から指定時点のスナップ作成要求を受信し、受信した指定時点のスナップ作成要求を処理する。なお、ＤＩＳＫ＿ｗａｒｐルーチン２０６の処理については、図１５で詳細を説明する。
【００３８】
図４は、本発明の第１の実施の形態のジャーナルボリューム１１４に記憶されるジャーナルテーブル１１６の構成図である。
【００３９】
ジャーナルテーブル１１６に含まれる一つのレコードは、一つの更新データに対応する。ジャーナルテーブル１１６は、ＪＩＤ３０１、時刻３０２、ブロック番号３０３、ＦＩＤ３０４、旧データ３０５及び新データ３０６を含む。
【００４０】
ＪＩＤ３０１は、主ボリューム１１３に対する更新処理の一意な識別子である。時刻３０２は、当該レコードのＪＩＤ３０１によって識別される更新処理が行われた時刻である。ブロック番号３０３は、主ボリューム３０３に含まれるブロックのうち、当該レコードのＪＩＤ３０１によって識別される更新処理においてデータが更新されたブロックの一意な識別子である。
【００４１】
ＦＩＤ３０４は、当該レコードのＪＩＤ３０１によって識別される更新処理においてデータが更新されたファイルの一意な識別子である。ＦＩＤ３０４は、従来のジャーナル技術におけるジャーナルテーブルには含まれない。
【００４２】
旧データ３０５は、当該レコードのＪＩＤ３０１によって識別される更新処理の直前に、当該レコードのブロック番号３０３によって識別されるブロックに格納されていたデータである。新データ３０６は、当該レコードのＪＩＤ３０１によって識別される更新処理によって、当該レコードのブロック番号３０３によって識別されるブロックに格納されたデータである。
【００４３】
ここでは、ＪＩＤ３０１の「５００１」によって識別される更新処理について説明する。ホスト計算機１０１は、ＦＩＤ３０４の「３」によって識別されるファイルに対するファイル入出力要求をＮＡＳ装置１０３に送信する。ＮＡＳ装置１０３は、ファイル入出力要求を受信する。次に、ＮＡＳ装置１０３は、受信したファイル入出力要求をブロック入出力要求に変換し、変換したブロック入出力要求をディスク装置１０５に送信する。
【００４４】
ディスク装置１０５は、ブロック入出力要求を受信し、受信したブロック入出力要求に基づいて、主ボリューム１１３のデータを更新する。具体的には、ディスク装置１０５は、時刻３０２の「２２時３３分４４．５１秒」に、主ボリューム１１３に含まれるブロックのデータを更新する。このとき、データが更新されたブロックは、ブロック番号３０３の「１０１」によって識別される。また、更新処理直前の当該ブロックには、旧データ３０５の「０ｘ１０１０１０……」が格納されていた。そして、更新後の当該ブロックには、新データ３０６の「０ｘ１１１１１１……」が格納される。
【００４５】
ジャーナルテーブル１１６は、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４によって更新される。また、ジャーナルテーブル１１６は、ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５及びＤＩＳＫ＿ｗａｒｐルーチン２０６によって参照される。具体的には、ＤＩＳＫ＿ｗａｒｐルーチン２０６は、ジャーナルテーブル１１６を参照して、副ボリューム１１５に記憶されるデータを、任意の時点における主ボリューム１１３の複製データに書き換える。
【００４６】
本実施の形態のジャーナルーテーブル１１６は、従来のジャーナル技術におけるジャーナルテーブルと異なり、ＦＩＤ３０４を含む。そのため、ストレージ装置１００は、ジャーナルテーブル１１６に含まれるすべての更新時点の中から、指定されたファイルに関連する更新時点だけを抽出できる。
【００４７】
図５は、本発明の第１の実施の形態のジャーナルボリューム１１４に記憶される副ＶＯＬ管理テーブル１１８の構成図である。
【００４８】
副ＶＯＬ管理テーブル１１８は、一つのレコードから構成される。なお、副ＶＯＬ管理テーブル１１８は、副ボリューム１１５が主ボリューム１１３のいつの時点における複製データを記憶するかを示す。そのため、副ＶＯＬ管理テーブル１１８は、ＪＩＤ４０１及び時刻４０２を含む。
【００４９】
ＪＩＤ４０１は、副ボリューム１１５に記憶される主ボリューム１１３の複製データと対応する時点の直前に行われた更新処理の一意な識別子である。時刻４０２は、副ボリューム１１５に記憶される主ボリューム１１３の複製データと対応する時刻である。
【００５０】
本説明図によると、副ボリューム１１５は、ＪＩＤ４０１の「５００１」によって識別される更新処理が行われた直後における主ボリューム１１３の複製データを記憶する。言い換えると、副ボリューム１１５は、時刻４０２の「２２時３３分４４．５１秒」における主ボリューム１１３の複製データを記憶する。
【００５１】
なお、一つの副ＶＯＬ管理テーブル１１８は、一つの副ボリューム１１５に対応する。そのため、副ＶＯＬ管理テーブル１１８は、ディスク装置１０５に備わる副ボリューム１１５と同じ数だけ、ディスク装置１０５に記憶される。
【００５２】
副ＶＯＬ管理テーブル１１８は、ＤＩＳＫ＿ｗａｒｐルーチン２０６によって更新及び参照される。具体的には、ＤＩＳＫ＿ｗａｒｐルーチン２０６は、副ＶＯＬ管理テーブル１１８を参照して、副ボリューム１１５に記憶されるデータを、任意の時点における主ボリューム１１３の複製データに書き換える。
【００５３】
図６は、本発明の第１の実施の形態の主ボリューム１１３の内部構成のブロック図である。
【００５４】
主ボリューム１１３に記憶されるデータは、ファイルシステムによって管理される。主ボリューム１１３は、複数のブロック５０１を含む。ブロック５０１は、例えば、５１２バイト固定長である。
【００５５】
主ボリューム１１３は、ファイル更新ログテーブル５０２、ファイル管理テーブル５０３及びデータブロック領域５０４を含む。
【００５６】
ファイル更新ログテーブル５０２は、ファイルに対するデータの更新履歴を管理する。ファイル更新ログテーブル５０２は、例えば、０〜９９番ブロックから構成される。なお、ファイル更新ログテーブル５０２については、図７で詳細を説明する。
【００５７】
ファイル管理テーブル５０３は、ファイルの構成に関する情報を示す。ファイル管理テーブル５０３は、例えば、１００〜１９９番ブロックから構成される。なお、ファイル管理テーブル５０３については、図８で詳細を説明する。
【００５８】
データブロック領域５０４には、ファイルを構成するデータが格納される。データブロック領域５０４は、ファイル更新ログテーブル５０２及びファイル管理テーブル５０３を構成するブロック以外のブロックから構成される。
【００５９】
なお、副ボリューム１１５は、主ボリューム１１３の複製データを記憶するので、主ボリューム１１３と同様の内部構成となる。よって、副ボリューム１１５の内部構成については、説明を省略する。
【００６０】
図７は、本発明の第１の実施の形態の主ボリューム１１３に記憶されるファイル更新ログテーブル５０２の構成図である。
【００６１】
ファイル更新ログテーブル５０２に含まれる一つのレコードは、ファイルに対する一回の更新処理に対応する。ファイル更新ログテーブル５０２は、ＬＩＤ６０１、時刻６０２、ＦＩＤ６０３及びブロック番号６０４を含む。
【００６２】
ＬＩＤ６０１は、ファイルに対する更新処理の一意な識別子である。時刻６０２は、当該レコードのＬＩＤ６０１によって識別される更新処理が行われた時刻である。ＦＩＤ６０３は、当該レコードのＬＩＤ６０１によって識別される更新処理においてデータが更新されたファイルの一意な識別子である。ブロック番号６０４は、主ボリューム３０３に含まれるブロックのうち、当該レコードのＬＩＤ６０１によって識別される更新処理においてデータが更新されたブロックの一意な識別子である。
【００６３】
ここでは、ＬＩＤ６０１の「３０１」によって識別される更新処理について説明する。ホスト計算機１０１は、ＦＩＤ６０３の「３」によって識別されるファイルに対するファイル入出力要求をＮＡＳ装置１０３に送信する。ＮＡＳ装置１０３は、ファイル入出力要求を受信する。次に、ＮＡＳ装置１０３は、受信したファイル入出力要求をブロック入出力要求に変換する。そして、ＮＡＳ装置１０３は、時刻３０２の「２２時３３分４４．５１秒」に、変換したブロック入出力要求をディスク装置１０５に送信する。当該ブロック入出力要求は、主ボリューム１１３に含まれるブロックのデータ更新を要求する。なお、当該ブロック入出力要求によってデータが更新されるブロックは、ブロック番号３０３の「１０１」によって識別される。
【００６４】
ファイル更新ログテーブル５０２は、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１によって更新される。具体的には、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１は、ファイルにデータを書き込むたびに、ファイル更新ログテーブル５０２に新たなレコードを追加する。
【００６５】
図８は、本発明の第１の実施の形態の主ボリューム１１３に記憶されるファイル管理テーブル５０３の構成図である。
【００６６】
ファイル管理テーブル５０３に含まれる一つのレコードは、一つのファイルに対応する。ファイル管理テーブル５０３は、ＦＩＤ７０１、ファイル名７０２、ブロック数７０３、ブロックリスト７０４を含む。
【００６７】
ＦＩＤ７０１は、主ボリューム１１３に記憶されるファイルの一意な識別子である。ファイル名７０２は、当該レコードのＦＩＤ７０１によって識別されるファイルの名称である。ブロック数７０３は、当該レコードのＦＩＤ７０１によって識別されるファイルを構成するブロックの数である。
【００６８】
ブロックリスト７０４は、当該レコードのＦＩＤ７０１によって識別されるファイルを構成するブロックの一意な識別子である。つまり、ブロックリスト７０４は、当該レコードのＦＩＤ７０１によって識別されるファイルのデータが格納されるブロックの一意な識別子である。なお、ファイルが複数のブロックから構成される場合、ブロックリスト７０４には、ファイルを構成するすべてのブロックの識別子が格納される。
【００６９】
ここでは、ＦＩＤ７０１の「１」によって識別されるファイルについて説明する。当該ファイルの名称は、ファイル名７０２の「ｍｅｍｏ．ｔｘｔ」である。また、当該ファイルは、ブロック番号の「５０」によって識別される一つのブロックから構成される。
【００７０】
次に、本発明の第１の実施の形態において使用されるコマンドについて説明する。
【００７１】
図９は、本発明の第１の実施の形態のホスト計算機―ＮＡＳ装置間コマンド一覧表８０１である。
【００７２】
ホスト計算機―ＮＡＳ装置間コマンド一覧表８０１は、ホスト計算機１０１からＮＡＳ装置１０３に送信されるコマンドを示す。
【００７３】
ホスト計算機１０１からＮＡＳ装置１０３に送信されるコマンドは、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンド（ファイル入出力要求）、ＮＡＳ＿ｈｉｓｔｏｒｙコマンド（ファイル更新時点一覧取得要求）及びＮＡＳ＿ｇｅｔ＿ｏｌｄコマンド（過去ファイルデータ取得要求）を含む。
【００７４】
ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドは、ファイルに対するデータの読み書きを要求する。ホスト計算機１０１は、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドと共に、読み書き種別、ファイル名、開始ブロック番号及びブロック数を、ＮＡＳ装置１０３に送信する。ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによって書き込みが要求される場合、ホスト計算機１０１は、更に、書き込みデータをＮＡＳ装置１０３に送信する。一方、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによって読み出しが要求される場合、ＮＡＳ装置１０３は、読み出しデータを、ホスト計算機１０１に送信する。
【００７５】
読み書き種別は、当該ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドが読み出し又は書き込みのいずれを要求するかを示す。ファイル名は、当該ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによってデータが読み書きされるファイルの名称である。開始ブロック番号は、当該ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによってデータが読み書きされる範囲に含まれる先頭のブロックの一意な識別子である。ブロック数は、当該ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによってデータが読み書きされる範囲に含まれるブロックの数である。
【００７６】
書き込みデータは、当該ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによって主ボリューム１１３に書き込まれるデータである。読み出しデータは、当該ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによって主ボリューム１１３から読み出されたデータである。
【００７７】
なお、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドは、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１によって処理される。
【００７８】
ＮＡＳ＿ｈｉｓｔｏｒｙコマンドは、指定されたファイルに関する更新時点の一覧の取得を要求する。ホスト計算機１０１は、ＮＡＳ＿ｈｉｓｔｏｒｙコマンドと共に、ファイル名をＮＡＳ装置１０３に送信する。すると、ＮＡＳ装置１０３は、受信したファイル名によって識別されるファイルに関する更新時点の一覧を、ホスト計算機１０１に送信する。ファイルに関する更新時点の一覧は、例えば、ＪＩＤと時刻との組のリストである。
【００７９】
なお、ＮＡＳ＿ｈｉｓｔｏｒｙコマンドは、ＮＡＳ＿ｈｉｓｔｏｒｙルーチン２０２によって処理される。
【００８０】
ＮＡＳ＿ｈｉｓｔｏｒｙコマンドは、本実施の形態の特徴の一つである。ホスト計算機１０１は、ＮＡＳ＿ｈｉｓｔｏｒｙコマンドを送信することによって、主ボリューム１１３に関するすべての更新時点でなく、指定したファイルに関する更新時点だけを取得できる。そのため、ファイルのリストア時点の特定が容易となる。
【００８１】
ＮＡＳ＿ｇｅｔ＿ｏｌｄコマンドは、ファイルの過去のデータの取得を要求する。ホスト計算機１０１は、ＮＡＳ＿ｇｅｔ＿ｏｌｄコマンドと共に、ファイル名及びＪＩＤをＮＡＳ装置１０３に送信する。すると、ＮＡＳ装置１０３は、受信したＪＩＤに対応する時点における、受信したファイル名によって識別されるファイルのデータを、ホスト計算機１０１に送信する。
【００８２】
なお、ＮＡＳ＿ｇｅｔ＿ｏｌｄコマンドは、ＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３によって処理される。
【００８３】
図１０は、本発明の第１の実施の形態のＮＡＳ装置―ディスク装置間コマンド一覧表８０２である。
【００８４】
ＮＡＳ装置―ディスク装置間コマンド一覧表８０２は、ＮＡＳ装置１０３からディスク装置１０５に送信されるコマンドを示す。
【００８５】
ＮＡＳ装置１０３からディスク装置１０５に送信されるコマンドは、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンド（ブロック入出力要求）、ＤＩＳＫ＿ｈｉｓｔｏｒｙコマンド（ブロック更新時点一覧取得要求）及びＤＩＳＫ＿ｗａｒｐコマンド（指定時点のスナップ作成要求）を含む。
【００８６】
ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドは、ブロックに対するデータの読み書きを要求する。ＮＡＳ装置１０３は、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドと共に、読み書き種別、ブロック番号及びＦＩＤを、ディスク装置１０５に送信する。ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによって書き込みが要求される場合、ＮＡＳ装置１０３は、更に、書き込みデータをディスク装置１０５に送信する。一方、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによって読み出しが要求される場合、ディスク装置１０５は、読み出しデータを、ＮＡＳ装置１０３に送信する。
【００８７】
読み書き種別は、当該ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドが読み出し又は書き込みのいずれを要求するかを示す。ブロック番号は、当該ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによってデータが読み書きされるブロックの一意な識別子である。ＦＩＤは、当該ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによってデータが読み書きされるファイルの一意な識別子である。
【００８８】
書き込みデータは、当該ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによって主ボリューム１１３に書き込まれるデータである。読み出しデータは、当該ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドによって主ボリューム１１３から読み出されたデータである。
【００８９】
なお、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドは、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４によって処理される。
【００９０】
本実施の形態のディスク装置１０５は、ブロックレベルの要求であるＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドと共に、ファイルレベルの情報であるＦＩＤを受信する。これによって、ディスク装置１０５は、ＦＩＤ３０４を含むジャーナルテーブル１１６を作成及び更新できる。
【００９１】
ＤＩＳＫ＿ｈｉｓｔｏｒｙコマンドは、指定されたファイルに関する更新時点の一覧の取得を要求する。ＮＡＳ装置１０３は、ＤＩＳＫ＿ｈｉｓｔｏｒｙコマンドと共に、ＦＩＤをディスク装置１０５に送信する。すると、ディスク装置１０５は、受信したＦＩＤによって識別されるファイルに関する更新時点の一覧を、ＮＡＳ装置１０３に送信する。ファイルに関する更新時点の一覧は、例えば、ＪＩＤと時刻との組のリストである。
【００９２】
なお、ＤＩＳＫ＿ｈｉｓｔｏｒｙコマンドは、ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５によって処理される。
【００９３】
本実施の形態のディスク装置１０５は、ブロックレベルの要求であるＤＩＳＫ＿ｈｉｓｔｏｒｙコマンドと共に、ファイルレベルの情報であるＦＩＤを受信する。これによって、ディスク装置１０５は、ＦＩＤ３０４を含むジャーナルテーブル１１６の中から、受信したＦＩＤによって識別されるファイルに関する更新時点を特定できる。
【００９４】
ＤＩＳＫ＿ｗａｒｐコマンドは、副ボリューム１１５に記憶されるデータを、指定された時点における主ボリューム１１３の複製データへの書き換えることを要求する。ＮＡＳ装置１０３は、ＤＩＳＫ＿ｗａｒｐコマンドと共に、ＪＩＤをディスク装置１０５に送信する。
【００９５】
なお、ＤＩＳＫ＿ｗａｒｐコマンドは、ＤＩＳＫ＿ｗａｒｐルーチン２０６によって処理される。
【００９６】
図１１は、本発明の第１の実施の形態のＮＡＳ装置１０３によって実行されるＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１のフローチャートである。
【００９７】
ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１において、ＮＡＳ装置１０３は、ディスク装置１０５と連携して、ホスト計算機１０１から受信したＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドを処理する。
【００９８】
まず、ＮＡＳ装置１０３は、読み書き種別（Ｔ）、ファイル名（Ｎ）、開始ブロック番号（Ｂ）及びブロック数（Ｃ）をホスト計算機１０１から受信する（９０１）。
【００９９】
次に、ＮＡＳ装置１０３は、受信したファイル名とファイル管理テーブル５０３のファイル名７０２とが一致するレコードを、ファイル管理テーブル５０３から選択する。次に、ＮＡＳ装置１０３は、選択したレコードから、ＦＩＤ（Ｉ）７０１及びブロックリスト（Ｌ）７０４を抽出する（９０２）。
【０１００】
次に、ＮＡＳ装置１０３は、受信した開始ブロック番号、受信したブロック数及び抽出したブロックリスト７０４に基づいて、読み書き対象ブロックのブロック番号の集合（Ｂ１〜Ｂｎ）を特定する（９０３）。読み書き対象ブロックのブロック番号の集合は、抽出されたブロックリスト７０４に含まれるブロック番号のうち、受信された開始ブロック番号から、受信されたブロック数個分となる。
【０１０１】
次に、ＮＡＳ装置１０３は、受信した読み書き種別が書き込みを示すか否かを判定する（９０４）。読み書き種別が読み出しを示す場合、ＮＡＳ装置１０３は、ファイル更新ログテーブル５０２を更新する必要がない。よって、ＮＡＳ装置１０３は、そのままステップ９０７に進む。
【０１０２】
一方、読み書き種別が書き込みを示す場合、ＮＡＳ装置１０３は、書き込みデータ（Ｄ）をホスト計算機１０１から受信する（９０５）。次に、ＮＡＳ装置１０３は、ファイル更新ログテーブル５０２を更新する（９０６）。
【０１０３】
具体的には、ＮＡＳ装置１０３は、ステップ９０３で特定した読み書き対象ブロックのブロック番号の集合に含まれるブロック番号を、順番に選択する。
【０１０４】
そして、ＮＡＳ装置１０３は、選択したブロック番号のそれぞれに対して以下の処理を行う。まず、ＮＡＳ装置１０３は、ファイル更新ログテーブル５０２に、新たなレコードを作成する。次に、ＮＡＳ装置１０３は、作成した新たなレコードのＬＩＤ６０１に、他のすべてのレコードのＬＩＤ６０１と重複しない値を格納する。次に、ＮＡＳ装置１０３は、作成した新たなレコードの時刻６０２に、現在の時刻を格納する。次に、ＮＡＳ装置１０３は、作成した新たなレコードのＦＩＤ６０３に、ステップ９０２で抽出したＦＩＤ７０１を格納する。次に、ＮＡＳ装置１０３は、作成した新たなレコードのブロック番号６０４に、選択したブロック番号を格納する。
【０１０５】
以上のように、ＮＡＳ装置１０３は、選択したブロック番号によって識別されるブロックへの更新処理に対応するレコードを、ファイル更新ログテーブル５０２に作成する。そして、ＮＡＳ装置１０３は、特定した読み書き対象ブロックのブロック番号の集合に含まれるすべてのブロック番号を選択するまでこの処理を繰り返す。これによって、ＮＡＳ装置１０３は、ファイル更新ログテーブル５０２を更新する。
【０１０６】
次に、ＮＡＳ装置１０３は、ホスト計算機１０１から受信したＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅコマンドを、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドに変換する。そして、ＮＡＳ装置１０３は、変換したＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドをディスク装置１０５に送信することによって、データを読み書きする（９０７）。
【０１０７】
具体的には、ＮＡＳ装置１０３は、ステップ９０３で特定した読み書き対象ブロックのブロック番号の集合に含まれるブロック番号を、順番に選択する。次に、ＮＡＳ装置１０３は、選択したブロック番号ごとにＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドを作成し、作成したＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドをディスク装置１０５に送信する。このとき、ＮＡＳ装置１０３は、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドと共に、受信した読み書き種別、選択したブロック番号及び抽出したＦＩＤ７０１を、ディスク装置１０５に送信する。
【０１０８】
受信した読み書き種別が書き込みを示す場合には、ＮＡＳ装置１０３は、更に、書き込みデータをディスク装置１０５に送信する。そして、ＮＡＳ装置１０３は、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１の処理を終了する。
【０１０９】
一方、受信した読み書き種別が読み出しを示す場合には、ＮＡＳ装置１０３は、読み出しデータをディスク装置１０５から受信する。すると、ＮＡＳ装置１０３は、受信した読み出しデータをホスト計算機１０１に送信する。そして、ＮＡＳ装置１０３は、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１を終了する。
【０１１０】
以上のように、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１によると、ＮＡＳ装置１０３は、書き込み処理の場合に、ファイルの一意な識別子であるＦＩＤをディスク装置１０５に送信する。
【０１１１】
図１２は、本発明の第１の実施の形態のＮＡＳ装置１０３によって実行されるＮＡＳ＿ｈｉｓｔｏｒｙルーチン２０２のフローチャートである。
【０１１２】
ＮＡＳ＿ｈｉｓｔｏｒｙルーチン２０２において、ＮＡＳ装置１０３は、ディスク装置１０５と連携して、ホスト計算機１０１から受信したＮＡＳ＿ｈｉｓｔｏｒｙコマンドを処理する。
【０１１３】
まず、ＮＡＳ装置１０３は、ファイル名（Ｎ）をホスト計算機１０１から受信する（１００１）。次に、ＮＡＳ装置１０３は、受信したファイル名とファイル管理テーブル５０３のファイル名７０２とが一致するレコードを、ファイル管理テーブル５０３から選択する。次に、ＮＡＳ装置１０３は、選択したレコードから、ＦＩＤ７０１を抽出する（１００２）。
【０１１４】
次に、ＮＡＳ装置１０３は、抽出したＦＩＤ７０１と共に、ＤＩＳＫ＿ｈｉｓｔｏｒｙコマンドをディスク装置１０５に送信する。すると、ＮＡＳ装置１０３は、更新時点の一覧をディスク装置１０５から受信する（１００３）。なお、当該更新時点の一覧は、ステップＳ１００１で受信したファイル名によって識別されるファイルに関するものであり、ＪＩＤと時刻との組のリストである。
【０１１５】
次に、ＮＡＳ装置１０３は、受信した更新時点の一覧をホスト計算機１０１に送信する（１００４）。そして、ＮＡＳ装置１０３は、ＮＡＳ＿ｈｉｓｔｏｒｙルーチン２０２を終了する。
【０１１６】
これによって、ホスト計算機１０１は、指定したファイルに関する更新時点の一覧を取得できる。そして、ホスト計算機１０１は、受信した更新時点の一覧を表示する。その後、ホスト計算機１０１は、表示された更新時点の一覧のうちの一つの更新時点の指定を受け付ける。すると、ホスト計算機１０１は、指定された更新時点に対応するＪＩＤ及びデータの取得が要求されるファイル名と共に、ＮＡＳ＿ｇｅｔ＿ｏｌｄコマンドをＮＡＳ装置１０３に送信する。これによって、ホスト計算機１０１は、指定された更新時点における、指定されたファイルのデータを取得できる。
【０１１７】
なお、ホスト計算機１０１でなく、ＮＡＳ装置１０３又はディスク装置１０５のいずれかが、更新時点の一覧の中から、一つの更新時点を自動的に選択してもよい。例えば、ＮＡＳ装置１０３又はディスク装置１０５は、更新時点の一覧の中から、最新の更新時点を選択する。すると、ディスク装置１０５は、ＤＩＳＫ＿ｗａｒｐルーチン２０６を実行することによって、ＮＡＳ装置１０３又はディスク装置１０５によって選択された更新時点に、ファイルのデータをリストアする。そして、ディスク装置１０５は、ＮＡＳ装置１０３を介して、ＮＡＳ装置１０３又はディスク装置１０５によって選択された更新時点におけるファイルのデータを、ホスト計算機１０１に送信する。
【０１１８】
図１３は、本発明の第１の実施の形態のＮＡＳ装置１０３によって実行されるＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３のフローチャートである。
【０１１９】
ＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３において、ＮＡＳ装置１０３は、ディスク装置１０５と連携して、ホスト計算機１０１から受信したＮＡＳ＿ｇｅｔ＿ｏｌｄコマンドを処理する。
【０１２０】
まず、ＮＡＳ装置１０３は、ファイル名（Ｎ）及びＪＩＤ（Ｊ）をホスト計算機１０１から受信する（１１０１）。次に、ＮＡＳ装置１０３は、受信したＪＩＤと共に、ＤＩＳＫ＿ｗａｒｐコマンドをディスク装置１０５に送信する（１１０２）。すると、ディスク装置１０５は、ＤＩＳＫ＿ｗａｒｐルーチン２０６を実行する。これによって、ディスク装置１０５は、副ボリューム１１５に記憶されるデータを、受信したＪＩＤに対応する時点における主ボリューム１１３の複製データに書き換える。
【０１２１】
次に、ＮＡＳ装置１０３は、副ボリューム１１５をマウントする。そして、ＮＡＳ装置１０３は、受信したファイル名によって識別されるファイルのデータを、マウントされた副ボリュームから読み出す。次に、ＮＡＳ装置１０３は、読み出したデータを、ホスト計算機１０１に送信する（１１０３）。そして、ＮＡＳ装置１０３は、ＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３を終了する。
【０１２２】
以上のように、ＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３によると、ＮＡＳ装置１０３は、ホスト計算機１０１によって指定された時点におけるファイルをホスト計算機１０１に送信できる。
【０１２３】
図１４は、本発明の第１の実施のディスク装置１０５によって実行されるＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４のフローチャートである。
【０１２４】
ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４において、ディスク装置１０５は、ＮＡＳ装置１０３から受信したＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドを処理する。
【０１２５】
ディスク装置１０５は、読み書き種別（Ｔ）、ＦＩＤ（Ｉ）及びブロック番号（Ｂ）をＮＡＳ装置１０３から受信する（１２０１）。
【０１２６】
次に、ディスク装置１０５は、受信した読み書き種別が書き込みを示すか否かを判定する（１２０２）。読み書き種別が読み出しを示す場合、ディスク装置１０５は、ジャーナルテーブル１１６を更新する必要がない。よって、ディスク装置１０５は、そのままステップ１２０７に進む。
【０１２７】
一方、読み書き種別が書き込みを示す場合、ディスク装置１０５は、書き込みデータ（Ｄ）をＮＡＳ装置１０３から受信する（１２０３）。次に、ディスク装置１０５は、ジャーナルテーブル１１６を更新する。
【０１２８】
具体的には、ジャーナルテーブル１１６に新たなレコード（Ｒ）を作成する。次に、ディスク装置１０５は、作成した新たなレコードのＪＩＤ３０１に、他のすべてのレコードのＪＩＤと重複しない値を格納する。次に、ディスク装置１０５は、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンドを受信した時刻を、作成した新たなレコードの時刻３０２に格納する。次に、ディスク装置１０５は、受信したブロック番号を、作成した新たなレコードのブロック番号３０３に格納する。次に、ディスク装置１０５は、受信したＦＩＤを、作成した新たなレコードのＦＩＤ３０４に格納する（１２０４）。
【０１２９】
次に、ディスク装置１０５は、受信したブロック番号によって識別されるブロックに記憶されているデータを、作成した新たなレコードの旧データ３０５に格納する（１２０５）。次に、ディスク装置１０５は、受信した書き込みデータを、作成した新たなレコードの新データ３０６に格納する（１２０６）。これによって、ディスク装置１０５は、ジャーナルテーブル１１６を更新する。
【０１３０】
次に、ディスク装置１０５は、受信した受信したブロック番号によって識別されるブロックに対して、データを読み書きする（１２０７）。
【０１３１】
具体的には、読み書き種別が読み出しを示す場合、ディスク装置１０５は、受信したブロック番号によって識別されるブロックからデータを読み出す。次に、ディスク装置１０５は、読み出したデータを、ＮＡＳ装置１０３に送信する。そして、ディスク装置１０５は、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４を終了する。
【０１３２】
一方、読み書き種別が書き込みを示す場合、ディスク装置１０５は、受信したブロック番号によって識別されるブロックに、受信した書き込みデータを書き込む。そして、ディスク装置１０５は、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４を終了する。
【０１３３】
以上のように、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４によると、ディスク装置１０５は、ブロック入出力を行うと共に、ファイルの識別子を含むジャーナルテーブル１１６を更新できる。
【０１３４】
図１５は、本発明の第１の実施のディスク装置１０５によって実行されるＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５のフローチャートである。
【０１３５】
ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５において、ディスク装置１０５は、ＮＡＳ装置１０３から受信したＤＩＳＫ＿ｈｉｓｔｏｒｙコマンドを処理する。
【０１３６】
まず、ディスク装置１０５は、ＦＩＤ（Ｉ）をＮＡＳ装置１０３から受信する（１３０１）。
【０１３７】
次に、ディスク装置１０５は、受信したＦＩＤとジャーナルテーブル１１６のＦＩＤ３０４とが一致するすべてのレコードを、ジャーナルテーブル１１６から選択する。次に、ディスク装置１０５は、選択したレコードから、ＪＩＤ（Ｊ）３０１及び時刻（Ｔ）３０２を抽出する。次に、ディスク装置１０５は、同一のレコードから抽出したＪＩＤ３０１と時刻３０２とを一つの組として含む更新時点の一覧を作成する（１３０２）。
【０１３８】
次に、ディスク装置１０５は、作成した更新時点の一覧を、ＮＡＳ装置１０３に送信する。そして、ディスク装置１０５は、ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５を終了する。
【０１３９】
以上のように、ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン２０５によると、ディスク装置１０５は、ジャーナルテーブル１１６を一度走査するだけで、特定のファイルに関するすべての更新時点のみを、ジャーナルテーブル１１６から抽出できる。そのため、ディスク１０５は、ＤＩＳＫ＿ｈｉｓｔｏｒｙコマンドを高速に処理できる。これは、ジャーナルテーブル１１６がＦＩＤ３０４を含むからである。
【０１４０】
図１６は、本発明の第１の実施のディスク装置１０５によって実行されるＤＩＳＫ＿ｗａｒｐルーチン２０６のフローチャートである。
【０１４１】
ＤＩＳＫ＿ｗａｒｐルーチン２０６において、ディスク装置１０５は、ＮＡＳ装置１０３から受信したＤＩＳＫ＿ｗａｒｐコマンドを処理する。
【０１４２】
まず、ディスク装置１０５は、ＪＩＤ（Ｊ１）をＮＡＳ装置１０３から受信する（１４０１）。次に、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８から、ＪＩＤ（Ｊ２）４０１を抽出する（１４０２）。
【０１４３】
次に、ディスク装置１０５は、ＮＡＳ装置１０３から受信したＪＩＤが、副ＶＯＬ管理テーブル１１８から抽出したＪＩＤ４０１より大きいか否かを判定する（１４０３）。
【０１４４】
ＮＡＳ装置１０３から受信したＪＩＤが、副ＶＯＬ管理テーブル１１８から抽出したＪＩＤ４０１より大きい場合、ディスク装置１０５は、副ボリューム１１５に記憶されるデータを、未来に進める。
【０１４５】
具体的には、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８から抽出したＪＩＤ４０１に「１」を加算する。次に、ディスク装置１０５は、加算した結果とジャーナルテーブル１１６のＪＩＤ３０１とが一致するレコード（Ｒ）を、ジャーナルテーブル１１６から選択する（１４０４）。
【０１４６】
次に、ディスク装置１０５は、選択したレコードから、時刻３０２、ブロック番号３０３及び新データ３０６を抽出する。次に、ディスク装置１０５は、抽出したブロック番号３０３によって識別されるブロックに、抽出した新データ３０６を格納する（１４０５）。これによって、ディスク装置１０５は、副ボリューム１１５に記憶されるデータを、一回の更新処理分だけ未来に進める。
【０１４７】
次に、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８を更新する。具体的には、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８のＪＩＤ４０１に、「１」を加算する。更に、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８の時刻４０２に、抽出した時刻３０２を格納する（１４０６）。
【０１４８】
そして、ディスク装置１０５は、ＮＡＳ装置１０３から受信したＪＩＤと、副ＶＯＬ管理テーブル１１８のＪＩＤ４０１とが同一であるか否かを判定する（１４１０）。
【０１４９】
ＮＡＳ装置１０３から受信されたＪＩＤと、副ＶＯＬ管理テーブル１１８のＪＩＤ４０１とが同一であると、副ボリューム１１５に記憶されるデータが、ＮＡＳ装置１０３から受信されたＪＩＤに対応する時点における主ボリューム１１３の複製データとなっている。そのため、ディスク装置１０５は、ＤＩＳＫ＿ｗａｒｐルーチン２０６を終了する。
【０１５０】
一方、ＮＡＳ装置１０３から受信されたＪＩＤと、副ＶＯＬ管理テーブル１１８のＪＩＤ４０１とが異なると、副ボリューム１１５に記憶されるデータが、ＮＡＳ装置１０３から受信されたＪＩＤに対応する時点における主ボリューム１１３の複製データとなっていない。そこで、ディスク装置１０５は、ステップＳ１４０２に戻る。そして、ディスク装置１０５は、処理を繰り返す。
【０１５１】
一方、ＮＡＳ装置１０３から受信したＪＩＤが、副ＶＯＬ管理テーブル１１８から抽出したＪＩＤ４０１以下の場合（ステップ１４０３において）、ディスク装置１０５は、副ボリューム１１５に記憶されるデータを、過去に戻す。
【０１５２】
具体的には、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８から抽出したＪＩＤ４０１から、「１」を減算する。次に、ディスク装置１０５は、減算した結果とジャーナルテーブル１１６のＪＩＤ３０１とが一致するレコード（Ｒ）を、ジャーナルテーブル１１６から選択する（１４０７）。
【０１５３】
次に、ディスク装置１０５は、選択したレコードから、時刻３０２、ブロック番号３０３及び旧データ３０５を抽出する。次に、ディスク装置１０５は、抽出したブロック番号３０３によって識別されるブロックに、抽出した旧データ３０５を格納する（１４０８）。これによって、ディスク装置１０５は、副ボリューム１１５に記憶されるデータを、一回の更新処理分だけ過去に戻す。
【０１５４】
次に、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８を更新する。具体的には、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８のＪＩＤ４０１から、「１」を減算する。更に、ディスク装置１０５は、副ＶＯＬ管理テーブル１１８の時刻４０２に、抽出した時刻３０２を格納する（１４０６）。
【０１５５】
そして、ディスク装置１０５は、ＮＡＳ装置１０３から受信したＪＩＤと、副ＶＯＬ管理テーブル１１８のＪＩＤ４０１とが同一であるか否かを判定する（１４１０）。
【０１５６】
ＮＡＳ装置１０３から受信されたＪＩＤと、副ＶＯＬ管理テーブル１１８のＪＩＤ４０１とが同一であると、副ボリューム１１５に記憶されるデータが、ＮＡＳ装置１０３から受信されたＪＩＤに対応する時点における主ボリューム１１３の複製データとなっている。そのため、ディスク装置１０５は、ＤＩＳＫ＿ｗａｒｐルーチン２０６を終了する。
【０１５７】
一方、ＮＡＳ装置１０３から受信されたＪＩＤと、副ＶＯＬ管理テーブル１１８のＪＩＤ４０１とが異なると、副ボリューム１１５に記憶されるデータが、ＮＡＳ装置１０３から受信されたＪＩＤに対応する時点における主ボリューム１１３の複製データとなっていない。そこで、ディスク装置１０５は、ステップＳ１４０２に戻る。そして、ディスク装置１０５は、処理を繰り返す。
【０１５８】
以上のように、ＤＩＳＫ＿ｗａｒｐルーチン２０６では、ディスク装置１０５は、物理ディスクに対する入出力を多数伴うので、多くの実行時間を必要とする。
【０１５９】
ある更新時点へリストアされたファイルが役に立たなかった場合、別の更新時点へのリストアが行われる。このような繰り返し作業が従来のようにブロックレベルで行われる場合、繰り返し作業がブロックレベルの更新時点の数だけ最大で行われる。ブロックレベルの更新時点は、目的のファイルに関する更新時点だけでなく、目的のファイルと関係ない別のファイルに関する更新時点も含む。
【０１６０】
しかし、本実施の形態によると、ファイルレベルで繰り返し作業が行われる。そのため、繰り返し作業は、目的のファイルに関する更新時点の数だけ最大で行われればよいので、効率よくリストアできる。
【０１６１】
（第２の実施の形態）
第２の実施の形態では、ジャーナルテーブル１１６の代わりに、ファイル更新ログテーブル５０２を用いる。
【０１６２】
本発明の第２の実施の形態のストレージ装置１００の構成は、ＮＡＳメモリ１０７に記憶されるＮＡＳ制御プログラム１０８及びディスクメモリ１１１に記憶されるディスク制御プログラム１１２を除き、第１の実施の形態のストレージ装置（図１）と同一である。よって、ストレージ装置１００の構成の詳細な説明は省略する。また、第２の実施の形態のストレージ装置１００の処理は、後述する処理を除き、第１の実施の形態と同一である。よって、同一の処理の説明は省略する。
【０１６３】
なお、本実施の形態では、ファイル更新ログテーブル５０２に含まれる一つのレコードのサイズは、ブロックサイズと同じ５１２バイトとする。
【０１６４】
図１７は、本発明の第２の実施の形態のＮＡＳ装置１０３に記憶されるＮＡＳ制御プログラム１０８のブロック図である。
【０１６５】
ＮＡＳ制御プログラム１０８は、ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１、ＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン２０７及びＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３を含む。ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０１及びＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン２０３は、第１の実施の形態のＮＡＳ制御プログラム１０８に含まれるものと同一なので、説明を省略する。
【０１６６】
ＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン２０７は、ホスト計算機１０１からファイル更新時点一覧取得要求（ＮＡＳ＿ｈｉｓｔｏｒｙコマンド）を受信し、受信したファイル更新時点一覧取得要求を処理する。なお、ＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン２０７の処理については、図２０で詳細を説明する。
【０１６７】
図１８は、本発明の第２の実施の形態のディスク装置１０５に記憶されるディスク制御プログラム１１２のブロック図である。
【０１６８】
ディスク制御プログラム１１２は、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４、ＤＩＳＫ＿ｗａｒｐルーチン２０６及びＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチン２０８を含む。ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン２０４及びＤＩＳＫ＿ｗａｒｐルーチン２０６は、第１の実施の形態のディスク制御プログラム１１２に含まれるものと同一なので、説明を省略する。
【０１６９】
ＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチン２０８は、ＮＡＳ装置１０３から過去のブロック情報取得要求（ＤＩＳＫ＿ｇｅｔ＿ｏｌｄコマンド）を受信し、受信した過去のブロック取得要求を処理する。なお、ＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチン２０８の処理については、図２１で詳細を説明する。
【０１７０】
図１９は、本発明の第２の実施の形態のＮＡＳ装置―ディスク装置間コマンド一覧表８０３である。
【０１７１】
ＮＡＳ装置―ディスク装置間コマンド一覧表８０３は、ＮＡＳ装置１０３からディスク装置１０５に送信されるコマンドを示す。
【０１７２】
ＮＡＳ装置１０３からディスク装置１０５に送信されるコマンドは、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンド（ブロック入出力要求）、ＤＩＳＫ＿ｗａｒｐコマンド（指定時点のスナップ作成要求）及びＤＩＳＫ＿ｇｅｔ＿ｏｌｄコマンド（過去のブロック情報取得要求）を含む。なお、ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅコマンド及びＤＩＳＫ＿ｗａｒｐコマンドは、第１の実施の形態で用いられるコマンドと同一なので、説明を省略する。
【０１７３】
ＤＩＳＫ＿ｇｅｔ＿ｏｌｄコマンドは、ブロックに格納されていた過去のデータの取得を要求する。ＮＡＳ装置１０３は、ＤＩＳＫ＿ｇｅｔ＿ｏｌｄコマンドと共に、先頭ブロック番号及び終了ブロック番号をディスク装置１０５に送信する。すると、ディスク装置１０５は、受信した先頭ブロック番号から終了ブロック番号までに対応する範囲のブロックに格納されていた過去のデータを、ＮＡＳ装置１０３に送信する。
【０１７４】
なお、ＤＩＳＫ＿ｇｅｔ＿ｏｌｄコマンドは、ＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチン２０８によって処理される。
【０１７５】
図２０は、本発明の第２の実施の形態のＮＡＳ装置１０３によって実行されるＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン２０７のフローチャートである。
【０１７６】
ＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン２０７において、ＮＡＳ装置１０３は、ディスク装置１０５と連携して、ホスト計算機１０１から受信したＮＡＳ＿ｈｉｓｔｏｒｙコマンドを処理する。
【０１７７】
まず、ＮＡＳ装置１０３は、ファイル名（Ｎ）をホスト計算機１０１から受信する（１７０１）。次に、ＮＡＳ装置１０３は、受信したファイル名とファイル管理テーブル５０３のファイル名７０２とが一致するレコードを、ファイル管理テーブル５０３から選択する。次に、ＮＡＳ装置１０３は、選択したレコードから、ＦＩＤ７０１を抽出する（１７０２）。
【０１７８】
次に、ＮＡＳ装置１０３は、ファイル更新ログテーブル５０２の複製を、ログバッファ１０９に格納する（１７０３）。これによって、ＮＡＳ装置１０３は、直近の更新時点に関する情報をログバッファ１０９に格納できる。
【０１７９】
次に、ＮＡＳ装置１０３は、ＮＡＳ装置１０３は、ファイル更新ログテーブル５０２が格納されているブロックの範囲の先頭ブロック番号及び終了ブロック番号を特定する。ファイル更新ログテーブル５０２が０〜９９番ブロックから構成される場合、ＮＡＳ装置１０３は、「０」を先頭ブロック番号として特定し、「９９」を終了ブロック番号として特定する。
【０１８０】
次に、ＮＡＳ装置１０３は、特定した先頭ブロック番号及び終了ブロック番号と共に、ＤＩＳＫ＿ｇｅｔ＿ｏｌｄコマンドをディスク装置１０５に送信する。すると、ＮＡＳ装置１０３は、送信した先頭ブロック番号から終了ブロック番号までに対応する範囲のブロックに格納されていた過去のデータを、ディスク装置１０５から受信する。そして、ＮＡＳ装置１０３は、受信した過去のデータを、ログバッファ１０９に格納する（１７０４）。なお、当該過去のデータは、過去のファイル更新ログテーブル５０２である。そのため、ログバッファ１０９には、ジャーナル期間全体にわたるファイル更新ログテーブル５０２が記憶される。
【０１８１】
次に、ＮＡＳ装置１０３は、抽出したＦＩＤ７０１とファイル更新ログテーブル５０２のＦＩＤ６０３とが一致するすべてのレコードを、ログバッファ１０９に記憶されるファイル更新ログテーブル５０２から選択する。次に、ＮＡＳ装置１０３は、選択したレコードから、ＬＩＤ６０１及び時刻６０２を抽出する。次に、ＮＡＳ装置１０３は、同一のレコードから抽出したＬＩＤ６０１と時刻６０２とを一つの組として含む更新時点の一覧を作成する（１７０５）。このとき、ＮＡＳ装置１０３は、ＬＩＤ６０１又は時刻６０２の順番にソートした更新時点の一覧を作成する。
【０１８２】
次に、ＮＡＳ装置１０３は、作成した更新時点の一覧を、ホスト計算機１０１に送信する（１７０６）。そして、ＮＡＳ装置１０３は、ＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン２０７を終了する。
【０１８３】
第１の実施の形態のＮＡＳ＿ｈｉｓｔｏｒｙルーチン２０２では、ＮＡＳ装置１０３は、ジャーナルテーブル１１６から更新時点を取得した。一方、ＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン２０７では、ＮＡＳ装置１０３は、ファイル更新ログテーブル５０２から更新時点を取得する。
【０１８４】
しかしこの場合、ＮＡＳ装置１０３は、直近の更新時点しか取得できない。なぜなら、ファイル更新ログテーブル５０２は、システム障害時に処理中だった更新を回復するために使用されるテーブルであるので、領域が小さいからである。つまり、ファイル更新ログテーブル５０２のそれぞれのレコードには、更新時点に関する情報が循環して上書きされる。
【０１８５】
一方、過去のファイル更新ログテーブル５０２は、ジャーナルテーブル１１６に保存されている。よって、ＮＡＳ装置１０３は、ジャーナルテーブル１１６から、過去のファイル更新ログテーブル５０２を取得できる。そこで、ＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン２０７では、ＮＡＳ装置１０３は、現在及び過去のファイル更新ログテーブル５０２をログバッファ１０９に格納する。これによって、ＮＡＳ装置１０３は、ジャーナル期間全体にわたるファイル更新ログテーブル５０２を作成できる。
【０１８６】
図２１は、本発明の第２の実施のディスク装置１０５によって実行されるＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチン２０８のフローチャートである。
【０１８７】
ＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチン２０８において、ディスク装置１０５は、ＮＡＳ装置１０３から受信したＤＩＳＫ＿ｇｅｔ＿ｏｌｄコマンドを処理する。
【０１８８】
まず、ディスク装置１０５は、開始ブロック番号（Ｂ１）及び終了ブロック番号（Ｂ２）をＮＡＳ装置１０３から受信する（１８０１）。
【０１８９】
次に、ディスク装置１０５は、ジャーナルテーブル１１６のブロック番号３０３が、受信した開始ブロック番号以上であり、且つ受信した終了ブロック番号以下であるすべてのレコードを、ジャーナルテーブル１１６から選択する。次に、ディスク装置１０５は、選択したレコードから、旧データ３０５を抽出する。次に、ディスク装置１０５は、抽出した旧データ３０５を、ＮＡＳ装置１０３に送信する。そして、ディスク装置１０５は、ＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチン２０８を終了する。
【０１９０】
以上のように、第２の実施の形態では、ストレージ装置１００は、ジャーナルテーブル１１６でなく、ファイル更新ログテーブル５０２から、更新時点を取得する。ただし、ストレージ装置１００は、主ボリューム１１３に記憶されるファイル更新ログテーブル５０２から、直近の更新時点しか取得できない。そこで、ストレージ装置１００は、過去のファイル更新ログテーブル５０２を、ジャーナルテーブル１１６から取得する。
【０１９１】
第２の実施の形態では、ジャーナルテーブル１１６は、ファイルレベルの情報であるＦＩＤ３０４を含まなくてもよい。よって、第２の実施の形態によれば、ディスク装置１０５を改造せずに、ストレージ装置１００に本発明を適用できる。
【図面の簡単な説明】
【０１９２】
【図１】本発明の第１の実施の形態のストレージ装置の構成のブロック図である。
【図２】本発明の第１の実施の形態のＮＡＳ装置に記憶されるＮＡＳ制御プログラムのブロック図である。
【図３】本発明の第１の実施の形態のディスク装置に記憶されるディスク制御プログラムのブロック図である。
【図４】本発明の第１の実施の形態のジャーナルボリュームに記憶されるジャーナルテーブルの構成図である。
【図５】本発明の第１の実施の形態のジャーナルボリュームに記憶される副ＶＯＬ管理テーブルの構成図である。
【図６】本発明の第１の実施の形態の主ボリュームの内部構成のブロック図である。
【図７】本発明の第１の実施の形態の主ボリュームに記憶されるファイル更新ログテーブルの構成図である。
【図８】本発明の第１の実施の形態の主ボリュームに記憶されるファイル管理テーブルの構成図である。
【図９】本発明の第１の実施の形態のホスト―ＮＡＳ装置間コマンド一覧表である。
【図１０】本発明の第１の実施の形態のＮＡＳ装置―ディスク装置間コマンド一覧表である。
【図１１】本発明の第１の実施の形態のＮＡＳ装置によって実行されるＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチンのフローチャートである。
【図１２】本発明の第１の実施の形態のＮＡＳ装置によって実行されるＮＡＳ＿ｈｉｓｔｏｒｙルーチンのフローチャートである。
【図１３】本発明の第１の実施の形態のＮＡＳ装置によって実行されるＮＡＳ＿ｇｅｔ＿ｏｌｄルーチンのフローチャートである。
【図１４】本発明の第１の実施のディスク装置によって実行されるＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチンのフローチャートである。
【図１５】本発明の第１の実施のディスク装置によって実行されるＤＩＳＫ＿ｈｉｓｔｏｒｙルーチンのフローチャートである。
【図１６】本発明の第１の実施のディスク装置によって実行されるＤＩＳＫ＿ｗａｒｐルーチンのフローチャートである。
【図１７】本発明の第２の実施の形態のＮＡＳ装置に記憶されるＮＡＳ制御プログラムのブロック図である。
【図１８】本発明の第２の実施の形態のディスク装置に記憶されるディスク制御プログラムのブロック図である。
【図１９】本発明の第２の実施の形態のＮＡＳ装置―ディスク装置間コマンド一覧表である。
【図２０】本発明の第２の実施の形態のＮＡＳ装置によって実行されるＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチンのフローチャートである。
【図２１】本発明の第２の実施のディスク装置によって実行されるＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチンのフローチャートである。
【符号の説明】
【０１９３】
１００  ストレージ装置
１０１  ホスト計算機
１０２  ネットワーク
１０３  ＮＡＳ装置
１０４  ファイバチャネル
１０５  ディスク装置
１０６  ＮＡＳプロセッサ
１０７  ＮＡＳメモリ
１０８  ＮＡＳ制御プログラム
１０９  ログバッファ
１１０  ディスクプロセッサ
１１１  ディスクメモリ
１１２  ディスク制御プログラム
１１３  主ボリューム
１１４  ジャーナルボリューム
１１５  副ボリューム
１１６  ジャーナルテーブル
１１８  副ＶＯＬ管理テーブル
１１９  ディスクコントローラ
２０１  ＮＡＳ＿ｒｅａｄ＿ｗｒｉｔｅルーチン
２０２  ＮＡＳ＿ｈｉｓｔｏｒｙルーチン
２０３  ＮＡＳ＿ｇｅｔ＿ｏｌｄルーチン
２０４  ＤＩＳＫ＿ｒｅａｄ＿ｗｒｉｔｅルーチン
２０５  ＤＩＳＫ＿ｈｉｓｔｏｒｙルーチン
２０６  ＤＩＳＫ＿ｗａｒｐルーチン
２０７  ＮＡＳ＿ｈｉｓｔｏｒｙ２ルーチン
２０８  ＤＩＳＫ＿ｇｅｔ＿ｏｌｄルーチン
５０１  ブロック
５０２  ファイル更新ログテーブル
５０３  ファイル管理テーブル
５０４  データブロック領域
【図１】
2008033527.tif 000003
【図２】
2008033527.tif 000004
【図３】
2008033527.tif 000005
【図４】
2008033527.tif 000006
【図５】
2008033527.tif 000007
【図６】
2008033527.tif 000008
【図７】
2008033527.tif 000009
【図８】
2008033527.tif 000010
【図９】
2008033527.tif 000011
【図１０】
2008033527.tif 000012
【図１１】
2008033527.tif 000013
【図１２】
2008033527.tif 000014
【図１３】
2008033527.tif 000015
【図１４】
2008033527.tif 000016
【図１５】
2008033527.tif 000017
【図１６】
2008033527.tif 000018
【図１７】
2008033527.tif 000019
【図１８】
2008033527.tif 000020
【図１９】
2008033527.tif 000021
【図２０】
2008033527.tif 000022
【図２１】
2008033527.tif 000023