JP2008033527A - ストレージ装置、ディスク装置及びデータ復元方法 - Google Patents

ストレージ装置、ディスク装置及びデータ復元方法 Download PDF

Info

Publication number
JP2008033527A
JP2008033527A JP2006204791A JP2006204791A JP2008033527A JP 2008033527 A JP2008033527 A JP 2008033527A JP 2006204791 A JP2006204791 A JP 2006204791A JP 2006204791 A JP2006204791 A JP 2006204791A JP 2008033527 A JP2008033527 A JP 2008033527A
Authority
JP
Japan
Prior art keywords
block
volume
data
file
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006204791A
Other languages
English (en)
Inventor
Atsushi Sudo
敦之 須藤
Yasuo Yamazaki
康雄 山▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006204791A priority Critical patent/JP2008033527A/ja
Priority to US11/526,167 priority patent/US7680983B2/en
Publication of JP2008033527A publication Critical patent/JP2008033527A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ファイルのリストア処理における繰り返し作業の時間を短縮する。
【解決手段】ストレージ装置であって、ディスクドライブを備え、プロセッサは、ファイルシステム入出力処理部と、ブロック入出力処理部と、を実現し、前記ブロック入出力処理部は、前記ディスクドライブの記憶領域を、第1ボリュームと、ブロック書き込み履歴を記憶する第2ボリュームと、特定の時点における前記第1ボリュームの複製データを記憶する第3ボリュームと、を含む複数のボリュームとして、前記ファイルシステム入出力処理部に提供し、前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第1ボリュームの複製データに書き換え、前記第2ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とする。
【選択図】図4

Description

本発明は、ストレージ装置に関し、特に、記憶されているデータをリストアする技術に関する。
企業情報システムは、ハードウェアの故障、ソフトウェアのバグ又はユーザの操作ミス等によって異常終了することがありうる。このような時の多くの場合、データ異常又はデータ破壊が発生する。そこで、企業情報システムには、データをリストアする技術が重要となる。
例えば、ジャーナルを用いたデータリストア技術が、特許文献1に開示されている。当該データリストア技術によると、主ボリュームの複製である副ボリュームが作成される。更に、主ボリュームへの更新データがジャーナルボリュームに記憶される。
特開2004−252686号公報
ジャーナルを用いたデータリストア技術によれば、ストレージ装置は、更新データを常に記録し続けるので、障害時に失われるデータを最小限に抑えることができる。しかし、業務全体でのリストア作業では、常に最新データが必要であるとは限らない。この場合、データのリストア時点となる障害発生時点又は障害要因発生時点が容易に特定できない。
そこで、障害発生時点又は障害要因発生時点と推測される時点へのリストアが行われる。そして、リストアされたデータに問題があれば、更に異なる時点へのリストアが行われる。このような繰り返し作業は、時間を要するので、業務の停止時間を長引かせる。
特に、特定のファイルのみをリストアすればよい場合であっても、ボリューム全体でリストアする必要がある。そのため、特定のファイルに関する更新時点のみでなく、ボリュームに含まれるすべてのブロックの更新時点が、リストア時点の候補となる。よって、無駄な繰り返し回数が発生する。
本発明は、前述した問題点に鑑みてなされたものであって、ファイルのリストア処理における繰り返し作業の時間を短縮するストレージ装置を提供することを目的とする。
本発明の代表的な形態は、ホスト計算機に接続されるストレージ装置であって、前記ホスト計算機に接続される一つ以上のインタフェースと、前記インタフェースに接続される一つ以上のプロセッサと、前記プロセッサに接続される一つ以上のメモリと、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブと、を備え、前記プロセッサは、ファイルに対する読み出し要求及び書き込み要求を前記ホスト計算機から受信するファイルシステム入出力処理部と、前記ディスクドライブのブロックに対してデータを読み書きするブロック入出力処理部と、を前記メモリに記憶されるプログラムを実行することによって実現し、前記ブロック入出力処理部は、前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第1ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第2ボリュームと、特定の時点における前記第1ボリュームの複製データを記憶する第3ボリュームと、を含む複数のボリュームとして、前記ファイルシステム入出力処理部に提供し、前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第1ボリュームの複製データに書き換え、前記第2ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とする。
本発明の代表的な形態によれば、ファイルのリストア処理における繰り返し作業の時間を短縮できる。
以下、本発明の実施の形態を図面を参照して説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態のストレージ装置100の構成のブロック図である。
ストレージ装置100は、ネットワーク102を介してホスト計算機101と接続される。ストレージ装置100は、ファイル入出力要求に応じて、ファイルに対してデータを入出力する。
ストレージ装置100は、NAS装置103及びディスク装置105を備える。NAS装置103とディスク装置105とは、ファイバチャネル104によって接続される。
NAS装置103は、ホスト計算機101からファイル入出力要求を受信する。すると、NAS装置103は、受信したファイル入出力要求を、ブロック入出力要求に変換する。そして、NAS装置103は、変換されたブロック入出力要求をディスク装置105に送信する。
NAS装置103は、NASプロセッサ106及びNASメモリ107を備える。NASプロセッサ106は、NASメモリ107に記憶されるプログラムを実行することによって、各種処理を行う。
NASメモリ107は、NASプロセッサ106によって実行されるプログラム及びNASプロセッサ106によって必要とされる情報等を記憶する。具体的には、NASメモリ107は、NAS制御プログラム108を記憶する。NAS制御プログラム108は、ホスト計算機101から要求を受信し、受信した要求に応じた処理を行う。なお、NAS制御プログラム108については、図2で詳細を説明する。
また、第2の実施の形態では、NASメモリ107の一部は、ログバッファ109として使用される。ログバッファ109は、現在のファイル更新ログテーブル及び過去のファイル更新ログテーブルを一時的に記憶する。なお、ファイル更新ログテーブルについては、後述する。
なお、NAS装置103の機能は、ディスク装置105に備わるディスクコントローラ119によって実現されてもよい。この場合、ストレージ装置100は、NAS装置103を備えなくてもよい。
ディスク装置105は、ディスクコントローラ119及び物理ディスクを備える。ディスクコントローラ119は、物理ディスクに対するデータの入出力を制御する。また、ディスクコントローラ119は、物理ディスクの記憶領域を、一つ以上の論理ボリュームとしてNAS装置103に提供する。
ディスクコントローラ119は、ディスクプロセッサ110及びディスクメモリ111を備える。ディスクプロセッサ110は、ディスクメモリ111に記憶されるプログラムを実行することによって、各種処理を行う。
ディスクメモリ111は、ディスクプロセッサ110によって実行されるプログラム及びディスクプロセッサ110によって必要とされる情報等を記憶する。具体的には、ディスクメモリ111は、ディスク制御プログラム112を記憶する。ディスク制御プログラム112は、NAS装置103から要求を受信し、受信した要求に応じた処理を行う。なお、ディスク制御プログラム112については、図3で詳細を説明する。
論理ボリュームは、主ボリューム113、ジャーナルボリューム114及び副ボリューム115を含む。なお、本説明図では、主ボリューム113、ジャーナルボリューム114及び副ボリューム115は、それぞれ一つずつ図示されているが、ディスク装置105にいくつ含まれてもよい。
主ボリューム113は、ホスト計算機101に書き込み要求されたデータを、ファイル単位で記憶する。なお、主ボリューム113に記憶されるデータは、ファイルシステムによって管理される。
副ボリューム115は、特定の時点における主ボリューム113の複製データを記憶する。
ジャーナルボリューム114は、主ボリューム113に対する更新データ(ジャーナルデータ)を記憶する。具体的には、ジャーナルボリューム114は、ジャーナルテーブル116及び副ボリューム管理テーブル(副VOL管理テーブル)118を記憶する。
ジャーナルテーブル116は、主ボリューム113に対する更新データを管理する。なお、ジャーナルテーブル116については、図4で詳細を説明する。副VOL管理テーブル118は、副ボリューム115が主ボリューム113のいつの時点における複製データを記憶するかを示す。なお、副VOL管理テーブル118については、図5で詳細を説明する。
ディスクコントローラ119は、副ボリューム115に記憶されるデータを、任意の時点における主ボリューム113の複製に書き換えることができる。当該任意の時点は、ジャーナルテーブル116に更新データが記憶されている範囲内である。
図2は、本発明の第1の実施の形態のNAS装置103に記憶されるNAS制御プログラム108のブロック図である。
NAS制御プログラム108は、NAS_read_writeルーチン201、NAS_historyルーチン202及びNAS_get_oldルーチン203を含む。
NAS_read_writeルーチン201は、ホスト計算機101からファイル入出力要求を受信し、受信したファイル入出力要求を処理する。なお、NAS_read_writeルーチン201の処理については、図10で詳細を説明する。
NAS_historyルーチン202は、ホスト計算機101からファイル更新時点一覧取得要求を受信し、受信したファイル更新時点一覧取得要求を処理する。なお、NAS_historyルーチン202の処理については、図11で詳細を説明する。
NAS_get_oldルーチン203は、ホスト計算機101から過去ファイルデータ取得要求を受信し、受信した過去ファイルデータ取得要求を処理する。なお、NAS_get_oldルーチン203の処理については、図12で詳細を説明する。
図3は、本発明の第1の実施の形態のディスク装置105に記憶されるディスク制御プログラム112のブロック図である。
ディスク制御プログラム112は、DISK_read_writeルーチン204、DISK_historyルーチン205及びDISK_warpルーチン206を含む。
DISK_read_writeルーチン204は、NAS装置103からブロック入出力要求を受信し、受信したブロック入出力要求を処理する。なお、DISK_read_writeルーチン204の処理については、図13で詳細を説明する。
DISK_historyルーチン205は、NAS装置103からブロック更新時点一覧取得要求を受信し、受信したブロック更新時点一覧取得要求を処理する。なお、DISK_historyルーチン205の処理については、図14で詳細を説明する。
DISK_warpルーチン206は、NAS装置103から指定時点のスナップ作成要求を受信し、受信した指定時点のスナップ作成要求を処理する。なお、DISK_warpルーチン206の処理については、図15で詳細を説明する。
図4は、本発明の第1の実施の形態のジャーナルボリューム114に記憶されるジャーナルテーブル116の構成図である。
ジャーナルテーブル116に含まれる一つのレコードは、一つの更新データに対応する。ジャーナルテーブル116は、JID301、時刻302、ブロック番号303、FID304、旧データ305及び新データ306を含む。
JID301は、主ボリューム113に対する更新処理の一意な識別子である。時刻302は、当該レコードのJID301によって識別される更新処理が行われた時刻である。ブロック番号303は、主ボリューム303に含まれるブロックのうち、当該レコードのJID301によって識別される更新処理においてデータが更新されたブロックの一意な識別子である。
FID304は、当該レコードのJID301によって識別される更新処理においてデータが更新されたファイルの一意な識別子である。FID304は、従来のジャーナル技術におけるジャーナルテーブルには含まれない。
旧データ305は、当該レコードのJID301によって識別される更新処理の直前に、当該レコードのブロック番号303によって識別されるブロックに格納されていたデータである。新データ306は、当該レコードのJID301によって識別される更新処理によって、当該レコードのブロック番号303によって識別されるブロックに格納されたデータである。
ここでは、JID301の「5001」によって識別される更新処理について説明する。ホスト計算機101は、FID304の「3」によって識別されるファイルに対するファイル入出力要求をNAS装置103に送信する。NAS装置103は、ファイル入出力要求を受信する。次に、NAS装置103は、受信したファイル入出力要求をブロック入出力要求に変換し、変換したブロック入出力要求をディスク装置105に送信する。
ディスク装置105は、ブロック入出力要求を受信し、受信したブロック入出力要求に基づいて、主ボリューム113のデータを更新する。具体的には、ディスク装置105は、時刻302の「22時33分44.51秒」に、主ボリューム113に含まれるブロックのデータを更新する。このとき、データが更新されたブロックは、ブロック番号303の「101」によって識別される。また、更新処理直前の当該ブロックには、旧データ305の「0x101010……」が格納されていた。そして、更新後の当該ブロックには、新データ306の「0x111111……」が格納される。
ジャーナルテーブル116は、DISK_read_writeルーチン204によって更新される。また、ジャーナルテーブル116は、DISK_historyルーチン205及びDISK_warpルーチン206によって参照される。具体的には、DISK_warpルーチン206は、ジャーナルテーブル116を参照して、副ボリューム115に記憶されるデータを、任意の時点における主ボリューム113の複製データに書き換える。
本実施の形態のジャーナルーテーブル116は、従来のジャーナル技術におけるジャーナルテーブルと異なり、FID304を含む。そのため、ストレージ装置100は、ジャーナルテーブル116に含まれるすべての更新時点の中から、指定されたファイルに関連する更新時点だけを抽出できる。
図5は、本発明の第1の実施の形態のジャーナルボリューム114に記憶される副VOL管理テーブル118の構成図である。
副VOL管理テーブル118は、一つのレコードから構成される。なお、副VOL管理テーブル118は、副ボリューム115が主ボリューム113のいつの時点における複製データを記憶するかを示す。そのため、副VOL管理テーブル118は、JID401及び時刻402を含む。
JID401は、副ボリューム115に記憶される主ボリューム113の複製データと対応する時点の直前に行われた更新処理の一意な識別子である。時刻402は、副ボリューム115に記憶される主ボリューム113の複製データと対応する時刻である。
本説明図によると、副ボリューム115は、JID401の「5001」によって識別される更新処理が行われた直後における主ボリューム113の複製データを記憶する。言い換えると、副ボリューム115は、時刻402の「22時33分44.51秒」における主ボリューム113の複製データを記憶する。
なお、一つの副VOL管理テーブル118は、一つの副ボリューム115に対応する。そのため、副VOL管理テーブル118は、ディスク装置105に備わる副ボリューム115と同じ数だけ、ディスク装置105に記憶される。
副VOL管理テーブル118は、DISK_warpルーチン206によって更新及び参照される。具体的には、DISK_warpルーチン206は、副VOL管理テーブル118を参照して、副ボリューム115に記憶されるデータを、任意の時点における主ボリューム113の複製データに書き換える。
図6は、本発明の第1の実施の形態の主ボリューム113の内部構成のブロック図である。
主ボリューム113に記憶されるデータは、ファイルシステムによって管理される。主ボリューム113は、複数のブロック501を含む。ブロック501は、例えば、512バイト固定長である。
主ボリューム113は、ファイル更新ログテーブル502、ファイル管理テーブル503及びデータブロック領域504を含む。
ファイル更新ログテーブル502は、ファイルに対するデータの更新履歴を管理する。ファイル更新ログテーブル502は、例えば、0〜99番ブロックから構成される。なお、ファイル更新ログテーブル502については、図7で詳細を説明する。
ファイル管理テーブル503は、ファイルの構成に関する情報を示す。ファイル管理テーブル503は、例えば、100〜199番ブロックから構成される。なお、ファイル管理テーブル503については、図8で詳細を説明する。
データブロック領域504には、ファイルを構成するデータが格納される。データブロック領域504は、ファイル更新ログテーブル502及びファイル管理テーブル503を構成するブロック以外のブロックから構成される。
なお、副ボリューム115は、主ボリューム113の複製データを記憶するので、主ボリューム113と同様の内部構成となる。よって、副ボリューム115の内部構成については、説明を省略する。
図7は、本発明の第1の実施の形態の主ボリューム113に記憶されるファイル更新ログテーブル502の構成図である。
ファイル更新ログテーブル502に含まれる一つのレコードは、ファイルに対する一回の更新処理に対応する。ファイル更新ログテーブル502は、LID601、時刻602、FID603及びブロック番号604を含む。
LID601は、ファイルに対する更新処理の一意な識別子である。時刻602は、当該レコードのLID601によって識別される更新処理が行われた時刻である。FID603は、当該レコードのLID601によって識別される更新処理においてデータが更新されたファイルの一意な識別子である。ブロック番号604は、主ボリューム303に含まれるブロックのうち、当該レコードのLID601によって識別される更新処理においてデータが更新されたブロックの一意な識別子である。
ここでは、LID601の「301」によって識別される更新処理について説明する。ホスト計算機101は、FID603の「3」によって識別されるファイルに対するファイル入出力要求をNAS装置103に送信する。NAS装置103は、ファイル入出力要求を受信する。次に、NAS装置103は、受信したファイル入出力要求をブロック入出力要求に変換する。そして、NAS装置103は、時刻302の「22時33分44.51秒」に、変換したブロック入出力要求をディスク装置105に送信する。当該ブロック入出力要求は、主ボリューム113に含まれるブロックのデータ更新を要求する。なお、当該ブロック入出力要求によってデータが更新されるブロックは、ブロック番号303の「101」によって識別される。
ファイル更新ログテーブル502は、NAS_read_writeルーチン201によって更新される。具体的には、NAS_read_writeルーチン201は、ファイルにデータを書き込むたびに、ファイル更新ログテーブル502に新たなレコードを追加する。
図8は、本発明の第1の実施の形態の主ボリューム113に記憶されるファイル管理テーブル503の構成図である。
ファイル管理テーブル503に含まれる一つのレコードは、一つのファイルに対応する。ファイル管理テーブル503は、FID701、ファイル名702、ブロック数703、ブロックリスト704を含む。
FID701は、主ボリューム113に記憶されるファイルの一意な識別子である。ファイル名702は、当該レコードのFID701によって識別されるファイルの名称である。ブロック数703は、当該レコードのFID701によって識別されるファイルを構成するブロックの数である。
ブロックリスト704は、当該レコードのFID701によって識別されるファイルを構成するブロックの一意な識別子である。つまり、ブロックリスト704は、当該レコードのFID701によって識別されるファイルのデータが格納されるブロックの一意な識別子である。なお、ファイルが複数のブロックから構成される場合、ブロックリスト704には、ファイルを構成するすべてのブロックの識別子が格納される。
ここでは、FID701の「1」によって識別されるファイルについて説明する。当該ファイルの名称は、ファイル名702の「memo.txt」である。また、当該ファイルは、ブロック番号の「50」によって識別される一つのブロックから構成される。
次に、本発明の第1の実施の形態において使用されるコマンドについて説明する。
図9は、本発明の第1の実施の形態のホスト計算機―NAS装置間コマンド一覧表801である。
ホスト計算機―NAS装置間コマンド一覧表801は、ホスト計算機101からNAS装置103に送信されるコマンドを示す。
ホスト計算機101からNAS装置103に送信されるコマンドは、NAS_read_writeコマンド(ファイル入出力要求)、NAS_historyコマンド(ファイル更新時点一覧取得要求)及びNAS_get_oldコマンド(過去ファイルデータ取得要求)を含む。
NAS_read_writeコマンドは、ファイルに対するデータの読み書きを要求する。ホスト計算機101は、NAS_read_writeコマンドと共に、読み書き種別、ファイル名、開始ブロック番号及びブロック数を、NAS装置103に送信する。NAS_read_writeコマンドによって書き込みが要求される場合、ホスト計算機101は、更に、書き込みデータをNAS装置103に送信する。一方、NAS_read_writeコマンドによって読み出しが要求される場合、NAS装置103は、読み出しデータを、ホスト計算機101に送信する。
読み書き種別は、当該NAS_read_writeコマンドが読み出し又は書き込みのいずれを要求するかを示す。ファイル名は、当該NAS_read_writeコマンドによってデータが読み書きされるファイルの名称である。開始ブロック番号は、当該NAS_read_writeコマンドによってデータが読み書きされる範囲に含まれる先頭のブロックの一意な識別子である。ブロック数は、当該NAS_read_writeコマンドによってデータが読み書きされる範囲に含まれるブロックの数である。
書き込みデータは、当該NAS_read_writeコマンドによって主ボリューム113に書き込まれるデータである。読み出しデータは、当該NAS_read_writeコマンドによって主ボリューム113から読み出されたデータである。
なお、NAS_read_writeコマンドは、NAS_read_writeルーチン201によって処理される。
NAS_historyコマンドは、指定されたファイルに関する更新時点の一覧の取得を要求する。ホスト計算機101は、NAS_historyコマンドと共に、ファイル名をNAS装置103に送信する。すると、NAS装置103は、受信したファイル名によって識別されるファイルに関する更新時点の一覧を、ホスト計算機101に送信する。ファイルに関する更新時点の一覧は、例えば、JIDと時刻との組のリストである。
なお、NAS_historyコマンドは、NAS_historyルーチン202によって処理される。
NAS_historyコマンドは、本実施の形態の特徴の一つである。ホスト計算機101は、NAS_historyコマンドを送信することによって、主ボリューム113に関するすべての更新時点でなく、指定したファイルに関する更新時点だけを取得できる。そのため、ファイルのリストア時点の特定が容易となる。
NAS_get_oldコマンドは、ファイルの過去のデータの取得を要求する。ホスト計算機101は、NAS_get_oldコマンドと共に、ファイル名及びJIDをNAS装置103に送信する。すると、NAS装置103は、受信したJIDに対応する時点における、受信したファイル名によって識別されるファイルのデータを、ホスト計算機101に送信する。
なお、NAS_get_oldコマンドは、NAS_get_oldルーチン203によって処理される。
図10は、本発明の第1の実施の形態のNAS装置―ディスク装置間コマンド一覧表802である。
NAS装置―ディスク装置間コマンド一覧表802は、NAS装置103からディスク装置105に送信されるコマンドを示す。
NAS装置103からディスク装置105に送信されるコマンドは、DISK_read_writeコマンド(ブロック入出力要求)、DISK_historyコマンド(ブロック更新時点一覧取得要求)及びDISK_warpコマンド(指定時点のスナップ作成要求)を含む。
DISK_read_writeコマンドは、ブロックに対するデータの読み書きを要求する。NAS装置103は、DISK_read_writeコマンドと共に、読み書き種別、ブロック番号及びFIDを、ディスク装置105に送信する。DISK_read_writeコマンドによって書き込みが要求される場合、NAS装置103は、更に、書き込みデータをディスク装置105に送信する。一方、DISK_read_writeコマンドによって読み出しが要求される場合、ディスク装置105は、読み出しデータを、NAS装置103に送信する。
読み書き種別は、当該DISK_read_writeコマンドが読み出し又は書き込みのいずれを要求するかを示す。ブロック番号は、当該DISK_read_writeコマンドによってデータが読み書きされるブロックの一意な識別子である。FIDは、当該DISK_read_writeコマンドによってデータが読み書きされるファイルの一意な識別子である。
書き込みデータは、当該DISK_read_writeコマンドによって主ボリューム113に書き込まれるデータである。読み出しデータは、当該DISK_read_writeコマンドによって主ボリューム113から読み出されたデータである。
なお、DISK_read_writeコマンドは、DISK_read_writeルーチン204によって処理される。
本実施の形態のディスク装置105は、ブロックレベルの要求であるDISK_read_writeコマンドと共に、ファイルレベルの情報であるFIDを受信する。これによって、ディスク装置105は、FID304を含むジャーナルテーブル116を作成及び更新できる。
DISK_historyコマンドは、指定されたファイルに関する更新時点の一覧の取得を要求する。NAS装置103は、DISK_historyコマンドと共に、FIDをディスク装置105に送信する。すると、ディスク装置105は、受信したFIDによって識別されるファイルに関する更新時点の一覧を、NAS装置103に送信する。ファイルに関する更新時点の一覧は、例えば、JIDと時刻との組のリストである。
なお、DISK_historyコマンドは、DISK_historyルーチン205によって処理される。
本実施の形態のディスク装置105は、ブロックレベルの要求であるDISK_historyコマンドと共に、ファイルレベルの情報であるFIDを受信する。これによって、ディスク装置105は、FID304を含むジャーナルテーブル116の中から、受信したFIDによって識別されるファイルに関する更新時点を特定できる。
DISK_warpコマンドは、副ボリューム115に記憶されるデータを、指定された時点における主ボリューム113の複製データへの書き換えることを要求する。NAS装置103は、DISK_warpコマンドと共に、JIDをディスク装置105に送信する。
なお、DISK_warpコマンドは、DISK_warpルーチン206によって処理される。
図11は、本発明の第1の実施の形態のNAS装置103によって実行されるNAS_read_writeルーチン201のフローチャートである。
NAS_read_writeルーチン201において、NAS装置103は、ディスク装置105と連携して、ホスト計算機101から受信したNAS_read_writeコマンドを処理する。
まず、NAS装置103は、読み書き種別(T)、ファイル名(N)、開始ブロック番号(B)及びブロック数(C)をホスト計算機101から受信する(901)。
次に、NAS装置103は、受信したファイル名とファイル管理テーブル503のファイル名702とが一致するレコードを、ファイル管理テーブル503から選択する。次に、NAS装置103は、選択したレコードから、FID(I)701及びブロックリスト(L)704を抽出する(902)。
次に、NAS装置103は、受信した開始ブロック番号、受信したブロック数及び抽出したブロックリスト704に基づいて、読み書き対象ブロックのブロック番号の集合(B1〜Bn)を特定する(903)。読み書き対象ブロックのブロック番号の集合は、抽出されたブロックリスト704に含まれるブロック番号のうち、受信された開始ブロック番号から、受信されたブロック数個分となる。
次に、NAS装置103は、受信した読み書き種別が書き込みを示すか否かを判定する(904)。読み書き種別が読み出しを示す場合、NAS装置103は、ファイル更新ログテーブル502を更新する必要がない。よって、NAS装置103は、そのままステップ907に進む。
一方、読み書き種別が書き込みを示す場合、NAS装置103は、書き込みデータ(D)をホスト計算機101から受信する(905)。次に、NAS装置103は、ファイル更新ログテーブル502を更新する(906)。
具体的には、NAS装置103は、ステップ903で特定した読み書き対象ブロックのブロック番号の集合に含まれるブロック番号を、順番に選択する。
そして、NAS装置103は、選択したブロック番号のそれぞれに対して以下の処理を行う。まず、NAS装置103は、ファイル更新ログテーブル502に、新たなレコードを作成する。次に、NAS装置103は、作成した新たなレコードのLID601に、他のすべてのレコードのLID601と重複しない値を格納する。次に、NAS装置103は、作成した新たなレコードの時刻602に、現在の時刻を格納する。次に、NAS装置103は、作成した新たなレコードのFID603に、ステップ902で抽出したFID701を格納する。次に、NAS装置103は、作成した新たなレコードのブロック番号604に、選択したブロック番号を格納する。
以上のように、NAS装置103は、選択したブロック番号によって識別されるブロックへの更新処理に対応するレコードを、ファイル更新ログテーブル502に作成する。そして、NAS装置103は、特定した読み書き対象ブロックのブロック番号の集合に含まれるすべてのブロック番号を選択するまでこの処理を繰り返す。これによって、NAS装置103は、ファイル更新ログテーブル502を更新する。
次に、NAS装置103は、ホスト計算機101から受信したNAS_read_writeコマンドを、DISK_read_writeコマンドに変換する。そして、NAS装置103は、変換したDISK_read_writeコマンドをディスク装置105に送信することによって、データを読み書きする(907)。
具体的には、NAS装置103は、ステップ903で特定した読み書き対象ブロックのブロック番号の集合に含まれるブロック番号を、順番に選択する。次に、NAS装置103は、選択したブロック番号ごとにDISK_read_writeコマンドを作成し、作成したDISK_read_writeコマンドをディスク装置105に送信する。このとき、NAS装置103は、DISK_read_writeコマンドと共に、受信した読み書き種別、選択したブロック番号及び抽出したFID701を、ディスク装置105に送信する。
受信した読み書き種別が書き込みを示す場合には、NAS装置103は、更に、書き込みデータをディスク装置105に送信する。そして、NAS装置103は、NAS_read_writeルーチン201の処理を終了する。
一方、受信した読み書き種別が読み出しを示す場合には、NAS装置103は、読み出しデータをディスク装置105から受信する。すると、NAS装置103は、受信した読み出しデータをホスト計算機101に送信する。そして、NAS装置103は、NAS_read_writeルーチン201を終了する。
以上のように、NAS_read_writeルーチン201によると、NAS装置103は、書き込み処理の場合に、ファイルの一意な識別子であるFIDをディスク装置105に送信する。
図12は、本発明の第1の実施の形態のNAS装置103によって実行されるNAS_historyルーチン202のフローチャートである。
NAS_historyルーチン202において、NAS装置103は、ディスク装置105と連携して、ホスト計算機101から受信したNAS_historyコマンドを処理する。
まず、NAS装置103は、ファイル名(N)をホスト計算機101から受信する(1001)。次に、NAS装置103は、受信したファイル名とファイル管理テーブル503のファイル名702とが一致するレコードを、ファイル管理テーブル503から選択する。次に、NAS装置103は、選択したレコードから、FID701を抽出する(1002)。
次に、NAS装置103は、抽出したFID701と共に、DISK_historyコマンドをディスク装置105に送信する。すると、NAS装置103は、更新時点の一覧をディスク装置105から受信する(1003)。なお、当該更新時点の一覧は、ステップS1001で受信したファイル名によって識別されるファイルに関するものであり、JIDと時刻との組のリストである。
次に、NAS装置103は、受信した更新時点の一覧をホスト計算機101に送信する(1004)。そして、NAS装置103は、NAS_historyルーチン202を終了する。
これによって、ホスト計算機101は、指定したファイルに関する更新時点の一覧を取得できる。そして、ホスト計算機101は、受信した更新時点の一覧を表示する。その後、ホスト計算機101は、表示された更新時点の一覧のうちの一つの更新時点の指定を受け付ける。すると、ホスト計算機101は、指定された更新時点に対応するJID及びデータの取得が要求されるファイル名と共に、NAS_get_oldコマンドをNAS装置103に送信する。これによって、ホスト計算機101は、指定された更新時点における、指定されたファイルのデータを取得できる。
なお、ホスト計算機101でなく、NAS装置103又はディスク装置105のいずれかが、更新時点の一覧の中から、一つの更新時点を自動的に選択してもよい。例えば、NAS装置103又はディスク装置105は、更新時点の一覧の中から、最新の更新時点を選択する。すると、ディスク装置105は、DISK_warpルーチン206を実行することによって、NAS装置103又はディスク装置105によって選択された更新時点に、ファイルのデータをリストアする。そして、ディスク装置105は、NAS装置103を介して、NAS装置103又はディスク装置105によって選択された更新時点におけるファイルのデータを、ホスト計算機101に送信する。
図13は、本発明の第1の実施の形態のNAS装置103によって実行されるNAS_get_oldルーチン203のフローチャートである。
NAS_get_oldルーチン203において、NAS装置103は、ディスク装置105と連携して、ホスト計算機101から受信したNAS_get_oldコマンドを処理する。
まず、NAS装置103は、ファイル名(N)及びJID(J)をホスト計算機101から受信する(1101)。次に、NAS装置103は、受信したJIDと共に、DISK_warpコマンドをディスク装置105に送信する(1102)。すると、ディスク装置105は、DISK_warpルーチン206を実行する。これによって、ディスク装置105は、副ボリューム115に記憶されるデータを、受信したJIDに対応する時点における主ボリューム113の複製データに書き換える。
次に、NAS装置103は、副ボリューム115をマウントする。そして、NAS装置103は、受信したファイル名によって識別されるファイルのデータを、マウントされた副ボリュームから読み出す。次に、NAS装置103は、読み出したデータを、ホスト計算機101に送信する(1103)。そして、NAS装置103は、NAS_get_oldルーチン203を終了する。
以上のように、NAS_get_oldルーチン203によると、NAS装置103は、ホスト計算機101によって指定された時点におけるファイルをホスト計算機101に送信できる。
図14は、本発明の第1の実施のディスク装置105によって実行されるDISK_read_writeルーチン204のフローチャートである。
DISK_read_writeルーチン204において、ディスク装置105は、NAS装置103から受信したDISK_read_writeコマンドを処理する。
ディスク装置105は、読み書き種別(T)、FID(I)及びブロック番号(B)をNAS装置103から受信する(1201)。
次に、ディスク装置105は、受信した読み書き種別が書き込みを示すか否かを判定する(1202)。読み書き種別が読み出しを示す場合、ディスク装置105は、ジャーナルテーブル116を更新する必要がない。よって、ディスク装置105は、そのままステップ1207に進む。
一方、読み書き種別が書き込みを示す場合、ディスク装置105は、書き込みデータ(D)をNAS装置103から受信する(1203)。次に、ディスク装置105は、ジャーナルテーブル116を更新する。
具体的には、ジャーナルテーブル116に新たなレコード(R)を作成する。次に、ディスク装置105は、作成した新たなレコードのJID301に、他のすべてのレコードのJIDと重複しない値を格納する。次に、ディスク装置105は、DISK_read_writeコマンドを受信した時刻を、作成した新たなレコードの時刻302に格納する。次に、ディスク装置105は、受信したブロック番号を、作成した新たなレコードのブロック番号303に格納する。次に、ディスク装置105は、受信したFIDを、作成した新たなレコードのFID304に格納する(1204)。
次に、ディスク装置105は、受信したブロック番号によって識別されるブロックに記憶されているデータを、作成した新たなレコードの旧データ305に格納する(1205)。次に、ディスク装置105は、受信した書き込みデータを、作成した新たなレコードの新データ306に格納する(1206)。これによって、ディスク装置105は、ジャーナルテーブル116を更新する。
次に、ディスク装置105は、受信した受信したブロック番号によって識別されるブロックに対して、データを読み書きする(1207)。
具体的には、読み書き種別が読み出しを示す場合、ディスク装置105は、受信したブロック番号によって識別されるブロックからデータを読み出す。次に、ディスク装置105は、読み出したデータを、NAS装置103に送信する。そして、ディスク装置105は、DISK_read_writeルーチン204を終了する。
一方、読み書き種別が書き込みを示す場合、ディスク装置105は、受信したブロック番号によって識別されるブロックに、受信した書き込みデータを書き込む。そして、ディスク装置105は、DISK_read_writeルーチン204を終了する。
以上のように、DISK_read_writeルーチン204によると、ディスク装置105は、ブロック入出力を行うと共に、ファイルの識別子を含むジャーナルテーブル116を更新できる。
図15は、本発明の第1の実施のディスク装置105によって実行されるDISK_historyルーチン205のフローチャートである。
DISK_historyルーチン205において、ディスク装置105は、NAS装置103から受信したDISK_historyコマンドを処理する。
まず、ディスク装置105は、FID(I)をNAS装置103から受信する(1301)。
次に、ディスク装置105は、受信したFIDとジャーナルテーブル116のFID304とが一致するすべてのレコードを、ジャーナルテーブル116から選択する。次に、ディスク装置105は、選択したレコードから、JID(J)301及び時刻(T)302を抽出する。次に、ディスク装置105は、同一のレコードから抽出したJID301と時刻302とを一つの組として含む更新時点の一覧を作成する(1302)。
次に、ディスク装置105は、作成した更新時点の一覧を、NAS装置103に送信する。そして、ディスク装置105は、DISK_historyルーチン205を終了する。
以上のように、DISK_historyルーチン205によると、ディスク装置105は、ジャーナルテーブル116を一度走査するだけで、特定のファイルに関するすべての更新時点のみを、ジャーナルテーブル116から抽出できる。そのため、ディスク105は、DISK_historyコマンドを高速に処理できる。これは、ジャーナルテーブル116がFID304を含むからである。
図16は、本発明の第1の実施のディスク装置105によって実行されるDISK_warpルーチン206のフローチャートである。
DISK_warpルーチン206において、ディスク装置105は、NAS装置103から受信したDISK_warpコマンドを処理する。
まず、ディスク装置105は、JID(J1)をNAS装置103から受信する(1401)。次に、ディスク装置105は、副VOL管理テーブル118から、JID(J2)401を抽出する(1402)。
次に、ディスク装置105は、NAS装置103から受信したJIDが、副VOL管理テーブル118から抽出したJID401より大きいか否かを判定する(1403)。
NAS装置103から受信したJIDが、副VOL管理テーブル118から抽出したJID401より大きい場合、ディスク装置105は、副ボリューム115に記憶されるデータを、未来に進める。
具体的には、ディスク装置105は、副VOL管理テーブル118から抽出したJID401に「1」を加算する。次に、ディスク装置105は、加算した結果とジャーナルテーブル116のJID301とが一致するレコード(R)を、ジャーナルテーブル116から選択する(1404)。
次に、ディスク装置105は、選択したレコードから、時刻302、ブロック番号303及び新データ306を抽出する。次に、ディスク装置105は、抽出したブロック番号303によって識別されるブロックに、抽出した新データ306を格納する(1405)。これによって、ディスク装置105は、副ボリューム115に記憶されるデータを、一回の更新処理分だけ未来に進める。
次に、ディスク装置105は、副VOL管理テーブル118を更新する。具体的には、ディスク装置105は、副VOL管理テーブル118のJID401に、「1」を加算する。更に、ディスク装置105は、副VOL管理テーブル118の時刻402に、抽出した時刻302を格納する(1406)。
そして、ディスク装置105は、NAS装置103から受信したJIDと、副VOL管理テーブル118のJID401とが同一であるか否かを判定する(1410)。
NAS装置103から受信されたJIDと、副VOL管理テーブル118のJID401とが同一であると、副ボリューム115に記憶されるデータが、NAS装置103から受信されたJIDに対応する時点における主ボリューム113の複製データとなっている。そのため、ディスク装置105は、DISK_warpルーチン206を終了する。
一方、NAS装置103から受信されたJIDと、副VOL管理テーブル118のJID401とが異なると、副ボリューム115に記憶されるデータが、NAS装置103から受信されたJIDに対応する時点における主ボリューム113の複製データとなっていない。そこで、ディスク装置105は、ステップS1402に戻る。そして、ディスク装置105は、処理を繰り返す。
一方、NAS装置103から受信したJIDが、副VOL管理テーブル118から抽出したJID401以下の場合(ステップ1403において)、ディスク装置105は、副ボリューム115に記憶されるデータを、過去に戻す。
具体的には、ディスク装置105は、副VOL管理テーブル118から抽出したJID401から、「1」を減算する。次に、ディスク装置105は、減算した結果とジャーナルテーブル116のJID301とが一致するレコード(R)を、ジャーナルテーブル116から選択する(1407)。
次に、ディスク装置105は、選択したレコードから、時刻302、ブロック番号303及び旧データ305を抽出する。次に、ディスク装置105は、抽出したブロック番号303によって識別されるブロックに、抽出した旧データ305を格納する(1408)。これによって、ディスク装置105は、副ボリューム115に記憶されるデータを、一回の更新処理分だけ過去に戻す。
次に、ディスク装置105は、副VOL管理テーブル118を更新する。具体的には、ディスク装置105は、副VOL管理テーブル118のJID401から、「1」を減算する。更に、ディスク装置105は、副VOL管理テーブル118の時刻402に、抽出した時刻302を格納する(1406)。
そして、ディスク装置105は、NAS装置103から受信したJIDと、副VOL管理テーブル118のJID401とが同一であるか否かを判定する(1410)。
NAS装置103から受信されたJIDと、副VOL管理テーブル118のJID401とが同一であると、副ボリューム115に記憶されるデータが、NAS装置103から受信されたJIDに対応する時点における主ボリューム113の複製データとなっている。そのため、ディスク装置105は、DISK_warpルーチン206を終了する。
一方、NAS装置103から受信されたJIDと、副VOL管理テーブル118のJID401とが異なると、副ボリューム115に記憶されるデータが、NAS装置103から受信されたJIDに対応する時点における主ボリューム113の複製データとなっていない。そこで、ディスク装置105は、ステップS1402に戻る。そして、ディスク装置105は、処理を繰り返す。
以上のように、DISK_warpルーチン206では、ディスク装置105は、物理ディスクに対する入出力を多数伴うので、多くの実行時間を必要とする。
ある更新時点へリストアされたファイルが役に立たなかった場合、別の更新時点へのリストアが行われる。このような繰り返し作業が従来のようにブロックレベルで行われる場合、繰り返し作業がブロックレベルの更新時点の数だけ最大で行われる。ブロックレベルの更新時点は、目的のファイルに関する更新時点だけでなく、目的のファイルと関係ない別のファイルに関する更新時点も含む。
しかし、本実施の形態によると、ファイルレベルで繰り返し作業が行われる。そのため、繰り返し作業は、目的のファイルに関する更新時点の数だけ最大で行われればよいので、効率よくリストアできる。
(第2の実施の形態)
第2の実施の形態では、ジャーナルテーブル116の代わりに、ファイル更新ログテーブル502を用いる。
本発明の第2の実施の形態のストレージ装置100の構成は、NASメモリ107に記憶されるNAS制御プログラム108及びディスクメモリ111に記憶されるディスク制御プログラム112を除き、第1の実施の形態のストレージ装置(図1)と同一である。よって、ストレージ装置100の構成の詳細な説明は省略する。また、第2の実施の形態のストレージ装置100の処理は、後述する処理を除き、第1の実施の形態と同一である。よって、同一の処理の説明は省略する。
なお、本実施の形態では、ファイル更新ログテーブル502に含まれる一つのレコードのサイズは、ブロックサイズと同じ512バイトとする。
図17は、本発明の第2の実施の形態のNAS装置103に記憶されるNAS制御プログラム108のブロック図である。
NAS制御プログラム108は、NAS_read_writeルーチン201、NAS_history2ルーチン207及びNAS_get_oldルーチン203を含む。NAS_read_writeルーチン201及びNAS_get_oldルーチン203は、第1の実施の形態のNAS制御プログラム108に含まれるものと同一なので、説明を省略する。
NAS_history2ルーチン207は、ホスト計算機101からファイル更新時点一覧取得要求(NAS_historyコマンド)を受信し、受信したファイル更新時点一覧取得要求を処理する。なお、NAS_history2ルーチン207の処理については、図20で詳細を説明する。
図18は、本発明の第2の実施の形態のディスク装置105に記憶されるディスク制御プログラム112のブロック図である。
ディスク制御プログラム112は、DISK_read_writeルーチン204、DISK_warpルーチン206及びDISK_get_oldルーチン208を含む。DISK_read_writeルーチン204及びDISK_warpルーチン206は、第1の実施の形態のディスク制御プログラム112に含まれるものと同一なので、説明を省略する。
DISK_get_oldルーチン208は、NAS装置103から過去のブロック情報取得要求(DISK_get_oldコマンド)を受信し、受信した過去のブロック取得要求を処理する。なお、DISK_get_oldルーチン208の処理については、図21で詳細を説明する。
図19は、本発明の第2の実施の形態のNAS装置―ディスク装置間コマンド一覧表803である。
NAS装置―ディスク装置間コマンド一覧表803は、NAS装置103からディスク装置105に送信されるコマンドを示す。
NAS装置103からディスク装置105に送信されるコマンドは、DISK_read_writeコマンド(ブロック入出力要求)、DISK_warpコマンド(指定時点のスナップ作成要求)及びDISK_get_oldコマンド(過去のブロック情報取得要求)を含む。なお、DISK_read_writeコマンド及びDISK_warpコマンドは、第1の実施の形態で用いられるコマンドと同一なので、説明を省略する。
DISK_get_oldコマンドは、ブロックに格納されていた過去のデータの取得を要求する。NAS装置103は、DISK_get_oldコマンドと共に、先頭ブロック番号及び終了ブロック番号をディスク装置105に送信する。すると、ディスク装置105は、受信した先頭ブロック番号から終了ブロック番号までに対応する範囲のブロックに格納されていた過去のデータを、NAS装置103に送信する。
なお、DISK_get_oldコマンドは、DISK_get_oldルーチン208によって処理される。
図20は、本発明の第2の実施の形態のNAS装置103によって実行されるNAS_history2ルーチン207のフローチャートである。
NAS_history2ルーチン207において、NAS装置103は、ディスク装置105と連携して、ホスト計算機101から受信したNAS_historyコマンドを処理する。
まず、NAS装置103は、ファイル名(N)をホスト計算機101から受信する(1701)。次に、NAS装置103は、受信したファイル名とファイル管理テーブル503のファイル名702とが一致するレコードを、ファイル管理テーブル503から選択する。次に、NAS装置103は、選択したレコードから、FID701を抽出する(1702)。
次に、NAS装置103は、ファイル更新ログテーブル502の複製を、ログバッファ109に格納する(1703)。これによって、NAS装置103は、直近の更新時点に関する情報をログバッファ109に格納できる。
次に、NAS装置103は、NAS装置103は、ファイル更新ログテーブル502が格納されているブロックの範囲の先頭ブロック番号及び終了ブロック番号を特定する。ファイル更新ログテーブル502が0〜99番ブロックから構成される場合、NAS装置103は、「0」を先頭ブロック番号として特定し、「99」を終了ブロック番号として特定する。
次に、NAS装置103は、特定した先頭ブロック番号及び終了ブロック番号と共に、DISK_get_oldコマンドをディスク装置105に送信する。すると、NAS装置103は、送信した先頭ブロック番号から終了ブロック番号までに対応する範囲のブロックに格納されていた過去のデータを、ディスク装置105から受信する。そして、NAS装置103は、受信した過去のデータを、ログバッファ109に格納する(1704)。なお、当該過去のデータは、過去のファイル更新ログテーブル502である。そのため、ログバッファ109には、ジャーナル期間全体にわたるファイル更新ログテーブル502が記憶される。
次に、NAS装置103は、抽出したFID701とファイル更新ログテーブル502のFID603とが一致するすべてのレコードを、ログバッファ109に記憶されるファイル更新ログテーブル502から選択する。次に、NAS装置103は、選択したレコードから、LID601及び時刻602を抽出する。次に、NAS装置103は、同一のレコードから抽出したLID601と時刻602とを一つの組として含む更新時点の一覧を作成する(1705)。このとき、NAS装置103は、LID601又は時刻602の順番にソートした更新時点の一覧を作成する。
次に、NAS装置103は、作成した更新時点の一覧を、ホスト計算機101に送信する(1706)。そして、NAS装置103は、NAS_history2ルーチン207を終了する。
第1の実施の形態のNAS_historyルーチン202では、NAS装置103は、ジャーナルテーブル116から更新時点を取得した。一方、NAS_history2ルーチン207では、NAS装置103は、ファイル更新ログテーブル502から更新時点を取得する。
しかしこの場合、NAS装置103は、直近の更新時点しか取得できない。なぜなら、ファイル更新ログテーブル502は、システム障害時に処理中だった更新を回復するために使用されるテーブルであるので、領域が小さいからである。つまり、ファイル更新ログテーブル502のそれぞれのレコードには、更新時点に関する情報が循環して上書きされる。
一方、過去のファイル更新ログテーブル502は、ジャーナルテーブル116に保存されている。よって、NAS装置103は、ジャーナルテーブル116から、過去のファイル更新ログテーブル502を取得できる。そこで、NAS_history2ルーチン207では、NAS装置103は、現在及び過去のファイル更新ログテーブル502をログバッファ109に格納する。これによって、NAS装置103は、ジャーナル期間全体にわたるファイル更新ログテーブル502を作成できる。
図21は、本発明の第2の実施のディスク装置105によって実行されるDISK_get_oldルーチン208のフローチャートである。
DISK_get_oldルーチン208において、ディスク装置105は、NAS装置103から受信したDISK_get_oldコマンドを処理する。
まず、ディスク装置105は、開始ブロック番号(B1)及び終了ブロック番号(B2)をNAS装置103から受信する(1801)。
次に、ディスク装置105は、ジャーナルテーブル116のブロック番号303が、受信した開始ブロック番号以上であり、且つ受信した終了ブロック番号以下であるすべてのレコードを、ジャーナルテーブル116から選択する。次に、ディスク装置105は、選択したレコードから、旧データ305を抽出する。次に、ディスク装置105は、抽出した旧データ305を、NAS装置103に送信する。そして、ディスク装置105は、DISK_get_oldルーチン208を終了する。
以上のように、第2の実施の形態では、ストレージ装置100は、ジャーナルテーブル116でなく、ファイル更新ログテーブル502から、更新時点を取得する。ただし、ストレージ装置100は、主ボリューム113に記憶されるファイル更新ログテーブル502から、直近の更新時点しか取得できない。そこで、ストレージ装置100は、過去のファイル更新ログテーブル502を、ジャーナルテーブル116から取得する。
第2の実施の形態では、ジャーナルテーブル116は、ファイルレベルの情報であるFID304を含まなくてもよい。よって、第2の実施の形態によれば、ディスク装置105を改造せずに、ストレージ装置100に本発明を適用できる。
本発明の第1の実施の形態のストレージ装置の構成のブロック図である。 本発明の第1の実施の形態のNAS装置に記憶されるNAS制御プログラムのブロック図である。 本発明の第1の実施の形態のディスク装置に記憶されるディスク制御プログラムのブロック図である。 本発明の第1の実施の形態のジャーナルボリュームに記憶されるジャーナルテーブルの構成図である。 本発明の第1の実施の形態のジャーナルボリュームに記憶される副VOL管理テーブルの構成図である。 本発明の第1の実施の形態の主ボリュームの内部構成のブロック図である。 本発明の第1の実施の形態の主ボリュームに記憶されるファイル更新ログテーブルの構成図である。 本発明の第1の実施の形態の主ボリュームに記憶されるファイル管理テーブルの構成図である。 本発明の第1の実施の形態のホスト―NAS装置間コマンド一覧表である。 本発明の第1の実施の形態のNAS装置―ディスク装置間コマンド一覧表である。 本発明の第1の実施の形態のNAS装置によって実行されるNAS_read_writeルーチンのフローチャートである。 本発明の第1の実施の形態のNAS装置によって実行されるNAS_historyルーチンのフローチャートである。 本発明の第1の実施の形態のNAS装置によって実行されるNAS_get_oldルーチンのフローチャートである。 本発明の第1の実施のディスク装置によって実行されるDISK_read_writeルーチンのフローチャートである。 本発明の第1の実施のディスク装置によって実行されるDISK_historyルーチンのフローチャートである。 本発明の第1の実施のディスク装置によって実行されるDISK_warpルーチンのフローチャートである。 本発明の第2の実施の形態のNAS装置に記憶されるNAS制御プログラムのブロック図である。 本発明の第2の実施の形態のディスク装置に記憶されるディスク制御プログラムのブロック図である。 本発明の第2の実施の形態のNAS装置―ディスク装置間コマンド一覧表である。 本発明の第2の実施の形態のNAS装置によって実行されるNAS_history2ルーチンのフローチャートである。 本発明の第2の実施のディスク装置によって実行されるDISK_get_oldルーチンのフローチャートである。
符号の説明
100 ストレージ装置
101 ホスト計算機
102 ネットワーク
103 NAS装置
104 ファイバチャネル
105 ディスク装置
106 NASプロセッサ
107 NASメモリ
108 NAS制御プログラム
109 ログバッファ
110 ディスクプロセッサ
111 ディスクメモリ
112 ディスク制御プログラム
113 主ボリューム
114 ジャーナルボリューム
115 副ボリューム
116 ジャーナルテーブル
118 副VOL管理テーブル
119 ディスクコントローラ
201 NAS_read_writeルーチン
202 NAS_historyルーチン
203 NAS_get_oldルーチン
204 DISK_read_writeルーチン
205 DISK_historyルーチン
206 DISK_warpルーチン
207 NAS_history2ルーチン
208 DISK_get_oldルーチン
501 ブロック
502 ファイル更新ログテーブル
503 ファイル管理テーブル
504 データブロック領域

Claims (16)

  1. ホスト計算機に接続されるストレージ装置であって、
    前記ホスト計算機に接続される一つ以上のインタフェースと、前記インタフェースに接続される一つ以上のプロセッサと、前記プロセッサに接続される一つ以上のメモリと、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブと、を備え、
    前記プロセッサは、ファイルに対する読み出し要求及び書き込み要求を前記ホスト計算機から受信するファイルシステム入出力処理部と、前記ディスクドライブのブロックに対してデータを読み書きするブロック入出力処理部と、を前記メモリに記憶されるプログラムを実行することによって実現し、
    前記ブロック入出力処理部は、
    前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第1ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第2ボリュームと、特定の時点における前記第1ボリュームの複製データを記憶する第3ボリュームと、を含む複数のボリュームとして、前記ファイルシステム入出力処理部に提供し、
    前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第1ボリュームの複製データに書き換え、
    前記第2ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とするストレージ装置。
  2. 前記ブロック入出力処理部は、前記ファイルシステム入出力処理部から前記ファイルの指定を受けると、前記第2ボリュームに記憶されるブロック書き込み履歴から、当該指定されたファイルに対応するブロックに関するブロック書き込み履歴のみを抽出することを特徴とする請求項1に記載のストレージ装置。
  3. 前記ブロック書き込み履歴は、書き込み前に前記ブロックに記憶されていたデータ及び書き込み後に前記ブロックに記憶されるデータのうち少なくとも一方を含み、
    前記ブロック入出力処理部は、
    前記抽出されたブロック書き込み履歴を、前記ファイルシステム入出力処理部に送信し、
    前記送信したブロック書き込み履歴に含まれる書き込み時点のうちの一つの書き込み時点の指定を前記ファイルシステム入出力処理部から受けると、前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記指定された書き込み時点における前記第1ボリュームの複製データに書き換えることを特徴とする請求項2に記載のストレージ装置。
  4. 前記ブロック入出力処理部は、
    前記抽出されたブロック書き込み履歴に含まれる書き込み時点の中から、最新の書き込み時点を特定し、
    前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定された最新の書き込み時点における前記第1ボリュームの複製データに書き換えることを特徴とする請求項2に記載のストレージ装置。
  5. ファイルに対する読み出し要求及び書き込み要求をホスト計算機から受信するNAS装置に接続されるディスク装置であって、
    前記NAS装置に接続される一つ以上のインタフェースと、前記インタフェースに接続される一つ以上のプロセッサと、前記プロセッサに接続される一つ以上のメモリと、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブと、を備え、
    前記プロセッサは、
    前記ディスクドライブのブロックに対してデータを読み書きし、
    前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第1ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第2ボリュームと、特定の時点における前記第1ボリュームの複製データを記憶する第3ボリュームと、を含む複数のボリュームとして、前記NAS装置に提供し、
    前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第1ボリュームの複製データに書き換え、
    前記第2ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とするディスク装置。
  6. 前記プロセッサは、前記NAS装置から前記ファイルの指定を受けると、前記第2ボリュームに記憶されるブロック書き込み履歴から、当該指定されたファイルに対応するブロックに関するブロック書き込み履歴のみを抽出することを特徴とする請求項5に記載のディスク装置。
  7. 前記ブロック書き込み履歴は、書き込み前に前記ブロックに記憶されていたデータ及び書き込み後に前記ブロックに記憶されるデータのうち少なくとも一方を含み、
    前記プロセッサは、
    前記抽出されたブロック書き込み履歴を、前記NAS装置に送信し、
    前記送信したブロック書き込み履歴に含まれる書き込み時点のうちの一つの書き込み時点の指定を前記NAS装置から受けると、前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記指定された書き込み時点における前記第1ボリュームの複製データに書き換えることを特徴とする請求項6に記載のディスク装置。
  8. 前記プロセッサは、
    前記抽出されたブロック書き込み履歴に含まれる書き込み時点の中から、最新の書き込み時点を特定し、
    前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定された最新の書き込み時点における前記第1ボリュームの複製データに書き換えることを特徴とする請求項6に記載のディスク装置。
  9. ホスト計算機に接続されるストレージ装置におけるデータ復元方法であって、
    前記ストレージ装置は、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブを備え、
    前記データ復元方法は、
    ファイルに対する読み出し要求及び書き込み要求を前記ホスト計算機から受信するステップと、
    前記受信した読み出し要求及び書き込み要求に基づいて、前記ディスクドライブのブロックに対してデータを読み書きするステップと、
    前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第1ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第2ボリュームと、特定の時点における前記第1ボリュームの複製データを記憶する第3ボリュームと、を含む複数のボリュームとして提供するステップと、
    前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第1ボリュームの複製データに書き換えるステップと、を含み、
    前記第2ボリュームに記憶されるブロック書き込み履歴は、更に、前記ブロックと前記ファイルとの対応を含むことを特徴とするデータ復元方法。
  10. 更に、前記ファイルの指定を受けると、前記第2ボリュームに記憶されるブロック書き込み履歴から、当該指定されたファイルに対応するブロックに関するブロック書き込み履歴のみを抽出するステップを含むことを特徴とする請求項9に記載のデータ復元方法。
  11. 前記ブロック書き込み履歴は、書き込み前に前記ブロックに記憶されていたデータ及び書き込み後に前記ブロックに記憶されるデータのうち少なくとも一方を含み、
    前記データ復元方法は、更に、
    前記抽出されたブロック書き込み履歴を送信するステップと、
    前記送信したブロック書き込み履歴に含まれる書き込み時点のうちの一つの書き込み時点の指定を受けると、前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記指定された書き込み時点における前記第1ボリュームの複製データに書き換えるステップと、を含むことを特徴とする請求項10に記載のデータ復元方法。
  12. 更に、前記抽出されたブロック書き込み履歴に含まれる書き込み時点の中から、最新の書き込み時点を特定するステップと、
    前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定された最新の書き込み時点における前記第1ボリュームの複製データに書き換えるステップと、を含むことを特徴とする請求項10に記載のデータ復元方法。
  13. ホスト計算機に接続されるストレージ装置であって、
    前記ホスト計算機に接続される一つ以上のインタフェースと、前記インタフェースに接続される一つ以上のプロセッサと、前記プロセッサに接続される一つ以上のメモリと、前記ホスト計算機から書き込み要求されるデータが格納される一つ以上のディスクドライブと、を備え、
    前記プロセッサは、ファイルに対する読み出し要求及び書き込み要求を前記ホスト計算機から受信するファイルシステム入出力処理部と、前記ディスクドライブのブロックに対してデータを読み書きするブロック入出力処理部と、を前記メモリに記憶されるプログラムを実行することによって実現し、
    前記ブロック入出力処理部は、
    前記ディスクドライブの記憶領域を、前記ホスト計算機によってアクセスされるファイルを記憶する第1ボリュームと、前記ブロックと当該ブロックにデータが書き込まれた時点との対応を含むブロック書き込み履歴を記憶する第2ボリュームと、特定の時点における前記第1ボリュームの複製データを記憶する第3ボリュームと、を含む複数のボリュームとして、前記ファイルシステム入出力処理部に提供し、
    前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定の時点と異なる時点における前記第1ボリュームの複製データに書き換え、
    前記ファイルシステム入出力処理部から前記ブロックの指定を受けると、前記第2ボリュームに記憶されるブロック書き込み履歴から、当該指定されたブロックに関するブロック書き込み履歴のみを抽出し、
    前記抽出されたブロック書き込み履歴を、前記ファイルシステム入出力処理部に送信することを特徴とするストレージ装置。
  14. 前記第1ボリュームは、前記ファイルと当該ファイルにデータが書き込まれた時点との対応を示す書き込みログを記憶し、
    前記ファイルシステム入出力処理部は、
    前記送信されたブロック書き込み履歴に基づいて、前記第1ボリュームに記憶されていた過去の書き込みログを復元し、
    前記第1ボリュームに記憶されている書き込みログ及び復元された過去の書き込みログに基づいて、ファイルの書き込み時点の一覧を作成することを特徴とする請求項13に記載のストレージ装置。
  15. 前記ブロック書き込み履歴は、書き込み前に前記ブロックに記憶されていたデータ及び書き込み後に前記ブロックに記憶されるデータのうち少なくとも一方を含み、
    前記ファイルシステム入出力処理部は、前記作成されたファイルの書き込み時点の一覧を、前記ホスト計算機に送信し、
    前記ファイルシステム入出力処理部が、前記送信したファイルの書き込み時点の一覧に含まれる一つの書き込み時点の指定を前記ホスト計算機から受けると、前記ブロック入出力処理部は、前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記指定された書き込み時点における前記第1ボリュームの複製データに書き換えることを特徴とする請求項14に記載のストレージ装置。
  16. 前記ファイルシステム入出力処理部は、前記作成されたファイルの書き込み時点の一覧から、最新の書き込み時点を特定し、
    前記ブロック入出力処理部は、前記第2ボリュームに記憶されるブロック書き込み履歴を参照して、前記第3ボリュームに記憶される複製データを、前記特定された最新の書き込み時点における前記第1ボリュームの複製データに書き換えることを特徴とする請求項14に記載のストレージ装置。
JP2006204791A 2006-07-27 2006-07-27 ストレージ装置、ディスク装置及びデータ復元方法 Pending JP2008033527A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006204791A JP2008033527A (ja) 2006-07-27 2006-07-27 ストレージ装置、ディスク装置及びデータ復元方法
US11/526,167 US7680983B2 (en) 2006-07-27 2006-09-21 Method of restoring data by CDP utilizing file system information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006204791A JP2008033527A (ja) 2006-07-27 2006-07-27 ストレージ装置、ディスク装置及びデータ復元方法

Publications (1)

Publication Number Publication Date
JP2008033527A true JP2008033527A (ja) 2008-02-14

Family

ID=39012054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006204791A Pending JP2008033527A (ja) 2006-07-27 2006-07-27 ストレージ装置、ディスク装置及びデータ復元方法

Country Status (2)

Country Link
US (1) US7680983B2 (ja)
JP (1) JP2008033527A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010049488A (ja) * 2008-08-21 2010-03-04 Hitachi Ltd ストレージシステム及びデータ管理方法
WO2015093026A1 (ja) 2013-12-17 2015-06-25 日本電気株式会社 書き込み情報記憶装置、方法、及び、記録媒体

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7822827B2 (en) * 2008-06-30 2010-10-26 Symantec Corporation Continuous data protection and remote block-level storage for a data volume
US9569349B2 (en) * 2008-12-19 2017-02-14 Ati Technologies Ulc Method and apparatus for reallocating memory content
US8554741B1 (en) 2010-06-16 2013-10-08 Western Digital Technologies, Inc. Timeline application for log structured storage devices
US10108503B2 (en) 2015-08-24 2018-10-23 Western Digital Technologies, Inc. Methods and systems for updating a recovery sequence map
US10515671B2 (en) 2016-09-22 2019-12-24 Advanced Micro Devices, Inc. Method and apparatus for reducing memory access latency

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189016B1 (en) * 1998-06-12 2001-02-13 Microsoft Corporation Journaling ordered changes in a storage volume
JP3974538B2 (ja) 2003-02-20 2007-09-12 株式会社日立製作所 情報処理システム
JP4519563B2 (ja) * 2004-08-04 2010-08-04 株式会社日立製作所 記憶システム及びデータ処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010049488A (ja) * 2008-08-21 2010-03-04 Hitachi Ltd ストレージシステム及びデータ管理方法
WO2015093026A1 (ja) 2013-12-17 2015-06-25 日本電気株式会社 書き込み情報記憶装置、方法、及び、記録媒体

Also Published As

Publication number Publication date
US20080028144A1 (en) 2008-01-31
US7680983B2 (en) 2010-03-16

Similar Documents

Publication Publication Date Title
EP2163988B1 (en) Snapshot system and method
JP4839091B2 (ja) データベース回復方法及び計算機システム
US8090917B2 (en) Managing storage and migration of backup data
JP4859605B2 (ja) 情報処理システム
US9396198B2 (en) Computer system, file management method and metadata server
JP4741371B2 (ja) システム、サーバ装置及びスナップショットの形式変換方法
JP5466459B2 (ja) 階層ストレージ管理(hsm)制御ストレージ環境で双方向オーファン照合を行う方法、システムおよぶコンピュータ・プログラム
JP2007200182A (ja) ストレージ装置、及びストレージシステム
JP5984151B2 (ja) データの復旧方法、プログラムおよびデータ処理システム
JP2005301497A (ja) ストレージ管理装置、リストア方法及びそのプログラム
JP2008015768A (ja) 記憶システム並びにこれを用いたデータの管理方法
JP2007140746A (ja) 計算機システム及び管理計算機並びにリカバリ管理方法
JP2006277208A (ja) バックアップシステム、プログラム及びバックアップ方法
JP2007323507A (ja) 記憶システム並びにこれを用いたデータの処理方法
JP2008033527A (ja) ストレージ装置、ディスク装置及びデータ復元方法
JP4755244B2 (ja) 情報生成方法、情報生成プログラム及び情報生成装置
JP4394467B2 (ja) ストレージシステム、サーバ装置及び先行コピーデータ生成方法
JP5291166B2 (ja) 記憶装置システム及びデータ回復方法
US20040267827A1 (en) Method, apparatus, and program for maintaining quota information within a file system
JP2006040065A (ja) データ記憶装置およびデータ記憶方法
JP6467298B2 (ja) サーバ運用作業履歴管理装置、システム、方法、およびプログラム
JPWO2004109518A1 (ja) ファイル切替装置及び切替方法
JP2008123104A (ja) データアクセス装置
JP2006011505A (ja) データベースシステム及び更新前ジャーナル出力方法並びにプログラム
JP2008065589A (ja) 計算機システム