JP2008033912A - Nas向けのcdpの方法および装置 - Google Patents
Nas向けのcdpの方法および装置 Download PDFInfo
- Publication number
- JP2008033912A JP2008033912A JP2007167401A JP2007167401A JP2008033912A JP 2008033912 A JP2008033912 A JP 2008033912A JP 2007167401 A JP2007167401 A JP 2007167401A JP 2007167401 A JP2007167401 A JP 2007167401A JP 2008033912 A JP2008033912 A JP 2008033912A
- Authority
- JP
- Japan
- Prior art keywords
- journal
- volume
- file
- snapshot
- nas
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】NASシステムにおいて継続的にファイルシステムの保護を可能にする。
【解決手段】NASシステムは、ファイルシステムデータを格納するボリューム207、このファイルシステムデータのスナップショット(コピー)を格納するボリューム209、NASクライアントから送信された要求のジャーナル(ログ)を格納するボリューム211を管理する。ファイルシステムデータを格納するボリュームのスナップショットを定期的に作成し、スナップショットが作成された後でファイルシステムデータへの要求を記録する。システムが特定の時点におけるファイルシステムデータのイメージのリストアを必要とする場合は、このスナップショットをリストアし、記録された要求を順番に再実行する。
【選択図】図1
【解決手段】NASシステムは、ファイルシステムデータを格納するボリューム207、このファイルシステムデータのスナップショット(コピー)を格納するボリューム209、NASクライアントから送信された要求のジャーナル(ログ)を格納するボリューム211を管理する。ファイルシステムデータを格納するボリュームのスナップショットを定期的に作成し、スナップショットが作成された後でファイルシステムデータへの要求を記録する。システムが特定の時点におけるファイルシステムデータのイメージのリストアを必要とする場合は、このスナップショットをリストアし、記録された要求を順番に再実行する。
【選択図】図1
Description
本発明は、ファイルサーバーまたはNAS(Network Attached Storage)システムに関し、特にファイルシステムデータのバックアップとリカバリに関する。
歴史的に、ストレージボリューム内のデータの喪失を防止するために、さまざまな方法が使用されてきた。従来の一般的な方法は、定期的に(たとえば1日に1度)ボリューム内のデータのバックアップを作成し、バックアップメディア(たとえば磁気テープ)にバックアップを書き込むことである。ボリューム内のデータをリストアする必要がある場合は、バックアップメディアに保存されたデータが読み出され、新しいボリュームに書き込まれる。ただし、このバックアップ技術でリストアできるのは、バックアップが作成された時点のボリューム内のデータイメージに限定される。したがって、リストアされたデータも壊れている場合は、前の期間または次の期間に作成されたバックアップデータをリストアする必要がある。
最近になって、ジャーナル記録(journaling)機能を備えるストレージシステムが開発されている。ジャーナル記録は、データの喪失を防止するために使用できる方法の1つである。ジャーナル記録の方法において、ストレージボリューム内のデータのイメージは特定の時点で作成されたものである。こうしたイメージは、一般的にスナップショットと呼ばれている。スナップショットが作成された時点より後でボリュームに対して行われた後続の変更の履歴(すなわちジャーナル)も保持される。データのリストアは、スナップショットにジャーナルを適用することによって実現される。この方法では、ボリューム内のデータを任意の時点の状態にリストアできる。参照により本明細書に組み込まれている米国特許出願公開第2004/0268067号明細書、「Method and Apparatus for Backup and Recovery System Using Storage Based Journaling」には、ジャーナル記録機能を備える例示的なストレージシステムが開示されている。ジャーナルストレージシステム(journaling storage system)は、ストレージボリューム内のデータのスナップショットを定期的に作成でき、個々のスナップショットを作成した後にこのボリュームに対して行われた変更のジャーナルを保持できる。スナップショットとジャーナルエントリはデータボリュームとは別に格納される。ボリューム内のデータは、スナップショットとジャーナルエントリからブロックレベルでリストアできる。前述のようにスナップショットとジャーナルエントリを使用してボリューム内のデータを保護する機能を備える技術は、CDP(Continuous Data Protection)と呼ばれている。
しかし、NASシステムにこうしたCDPを採用するには難しい問題がある。具体的に言えば、NASシステムアーキテクチャにおいて、どの時点のデータをリストアするかは、ファイルシステム操作、たとえば不適切なファイルの削除、不適切なファイルへの書き込み、不適切なファイルの名前の変更などによって指定する必要がある。したがって、CDP技術を使用してNASファイルシステムを保護できるようにするには、NASシステムが各ストレージシステム操作の完了日時を追跡し、この完了日時の情報をCDPシステムに提供する必要がある。しかし、NASシステム内でこうした機能を実装するのは複雑な作業である。
このように、求められているのはファイルサーバーおよびNASシステム向けの継続的データ保護を可能にする技術である。
本発明の方法は、従来のデータ保護技術に関連する前述の問題およびその他の問題(1つまたは複数)を実質的に除去する方法およびシステムを目的とする。
本発明概念の1つの態様により、1つのNASシステムとこのNASシステムに接続された1つのNASクライアントを備えるコンピュータ制御によるデータストレージシステムが提供される。NASシステムには、ファイルシステムボリューム、スナップショットボリューム、およびジャーナルボリュームが含まれる。NASクライアントは、NASシステムに対して要求を発行するように構成されている。NASシステムでは、データがファイルシステムボリュームに格納され、ファイルシステムボリューム内のデータのスナップショットイメージがスナップショットボリュームに格納され、要求に関する情報がジャーナルボリュームに格納され、さらにNASクライアントから発行されるリストアコマンドに応答してスナップショットボリュームの内容にジャーナルボリューム内のレコードが適用される。
本発明概念の別の態様により、NASおよびジャーナルボリュームに関連付けられたファイルシステムを含むジャーナルグループを作成するステップと、ファイルシステムに送信されたNFS要求をジャーナルに記録するステップ(ジャーナルに記録された各々のNFS要求に第1のシーケンス番号を割り当てるステップを含む)と、ファイルシステム内のデータのスナップショットを作成するステップ(このスナップショットに第2のシーケンス番号を割り当てるステップを含む)とを含む方法が提供される。
本発明概念のさらに別の態様により、NASとジャーナルボリュームに関連付けられたファイルシステムを含むジャーナルグループを作成するコードを含むコンピュータ可読媒体として具体化されたコンピュータプログラミング製品の方法が提供される。本発明のプログラミング製品は、ファイルシステムに送信されたNFS要求をジャーナルに記録するコード(ジャーナルに記録された各々のNFS要求に第1のシーケンス番号を割り当てるコードを含む)と、ファイルシステム内のデータのスナップショットを作成するコード(このスナップショットに第2のシーケンス番号を割り当てるコードを含む)とをさらに備えている。
本発明に関連するその他の態様については、一部については以下で説明し、一部については以上の説明から明らかになるか、あるいは本発明の実施によって理解できる。本発明の態様は、以下の詳細な説明と添付の特許請求の範囲で詳細に説明する要素とさまざまな要素および態様の組合せによって実現され、達成される。
以上および以下の説明は、いずれも説明を目的とする例示的なものにすぎず、請求された発明またはその適用を限定する意図はいかなる形においても一切ないことを理解されたい。
本明細書に組み込まれ、本明細書の重要な要素である添付の図面は、以下の説明と連携して本発明の実施形態の例を示し、本発明の技術の原理を説明する役割を果たしている。
以下の詳細な説明では、添付の図面を参照しながら説明する。図面では、同等の機能要素は同様の番号で示されている。前述の添付図面は、本発明の原理に適合する特定の実施形態および実装を説明するために示すものであり、これを限定する意図はない。このような実装については、当業者が本発明を実施できるように以下で十分詳細に説明する。また、その他の実装を使用できること、および本発明の範囲と精神を逸脱することなくさまざまな要素の構造上の変更および/または代替が可能であることを理解されたい。したがって、以下の詳細な説明を限定の意味に解釈してはならない。さらに、本発明のさまざまな実施形態は、以下で説明するように、汎用コンピュータで実行するソフトウェアの形、専用のハードウェアの形、ソフトウェアとハードウェアの組合せのいずれで実装してもよい。
図1は、本発明技術の実施形態の概要を示している。図1に示す本発明のシステムには、NASシステム100と1つまたは複数のNASクライアント113が含まれる。個々のNASクライアント113には、NFS/CIFSクライアント213とリストアダイレクタ(Restore Director)224が含まれる。NASシステムには、1つまたは複数のファイルシステムボリューム207が組み込まれており、これらはジャーナルグループ214に統合されている。NASシステム100は、ジャーナルグループ214のボリューム207のスナップショットコピーを作成し、前述のスナップショットコピーをスナップショットボリューム209(集合的にスナップショット215を構成する)に書き込むように機能できる。さらに、NASシステム100にはジャーナルボリューム211が組み込まれている。図1に示すその他の要素については、他の図面を参照しながら以下でさらに詳しく説明する。
システム構成
図2は、本発明の原理に適合する技術を実装できるストレージシステムの例示的な構成を示している。図示されたシステムには、NASシステム100と1つまたは複数のNASクライアント113が含まれる。NASシステム100には、NASコントローラ101とストレージシステム102が含まれる。NASコントローラ101には、CPU 103、メモリ104、ネットワークアダプタ105、およびストレージアダプタ106が含まれる。こうしたコンポーネントは、バス107を経由して相互に接続されている。
図2は、本発明の原理に適合する技術を実装できるストレージシステムの例示的な構成を示している。図示されたシステムには、NASシステム100と1つまたは複数のNASクライアント113が含まれる。NASシステム100には、NASコントローラ101とストレージシステム102が含まれる。NASコントローラ101には、CPU 103、メモリ104、ネットワークアダプタ105、およびストレージアダプタ106が含まれる。こうしたコンポーネントは、バス107を経由して相互に接続されている。
ストレージシステム102には、ディスクコントローラ108、キャッシュメモリ109、ディスクドライブ110、およびストレージインターフェイス111が含まれる。こうしたコンポーネントは、バス112を経由して相互に接続されている。NASコントローラ101とストレージシステム102は、ストレージアダプタ106とストレージインターフェイス111を経由して相互に接続されている。ファイバチャネルやSCSIなどのさまざまなインターフェイスを使用してストレージインターフェイス111を実装できる。ファイバチャネルまたはSCSIインターフェイスを使用してストレージインターフェイス111を実装する場合は、ホストバスアダプタ(HBA:Host Bus Adapter)をストレージアダプタ106として使用してもよい。ストレージシステム102は、外付けされ、前述のインターフェイスを経由してNASコントローラ101に接続できる。
NASシステム100は、ネットワークアダプタ105を経由してNASクライアント113に接続される。本発明を具体化するソフトウェアアプリケーションは、NASシステム100上でNASコントローラ101内に配置されたCPU103を使用して実行できる。
個々のNASクライアント113は、CPU 114、メモリ115、ネットワークアダプタ116、ストレージアダプタ117、およびストレージシステム119を備えており、これらは内部バス118を経由して相互に接続される。個々のNASクライアント113は、ネットワークアダプタ116を経由してNASシステム100に接続される。ストレージシステム119は、NASシステム100内のストレージシステム102と実質的に同じコンポーネントを使用して実装し、外付けで接続してもよい。
機能図
図3は、本発明による例示的なシステムの機能図を示している。NASシステム100内に配置されたNASコントローラ101には、NFS/CIFSサーバー201、ジャーナルマネージャ202、ローカルファイルシステム203、およびボリュームマネージャ204が含まれる。
図3は、本発明による例示的なシステムの機能図を示している。NASシステム100内に配置されたNASコントローラ101には、NFS/CIFSサーバー201、ジャーナルマネージャ202、ローカルファイルシステム203、およびボリュームマネージャ204が含まれる。
NFS/CIFSサーバー201は、ローカルファイルシステム203で管理されるNFSプロトコルとCIFSプロトコルを使用してファイルをエクスポートする(ファイルをアクセス可能にする)。また、NFS/CIFSサーバー201はNASクライアント113からの要求を解釈し、ローカルファイルシステム203に対して適切なファイルI/O要求を発行し、応答をNASクライアント113に返す。さらに、NFS/CIFSサーバー201はジャーナルマネージャ202の指示に従って要求をジャーナルボリューム211に格納する。さらに、NFS/CIFSサーバー201はジャーナルマネージャ202の指示に従ってジャーナルボリューム211に格納された要求を再実行する。
ローカルファイルシステム202はNFS/CIFSサーバー202からファイルI/O要求を受信し、ボリュームマネージャ204に対して適切なブロックI/O要求を発行する。
ジャーナルマネージャ202は、ジャーナル管理テーブル206を使用してスナップショットとジャーナルエントリを管理する。また、ジャーナルマネージャ202は、ボリュームマネージャ204に対してボリュームのスナップショットを作成するように指示し、NFS/CIFSサーバー201に対してNASクライアント113から送信された要求をジャーナルに記録するように指示する。スナップショットとジャーナルからリストアする場合は、ジャーナルマネージャ202がボリュームマネージャ204に対してスナップショットを元のボリュームまたは別のボリュームにリストアするように指示し、NFS/CIFSサーバー201に対してジャーナルボリューム211に格納された要求を再実行するように指示する。
ボリュームマネージャ204は、ストレージシステム102内の1つまたは複数のディスクドライブ110を使用して、1つまたは複数のボリューム207を作成する。また、ジャーナルマネージャ202の指示に従ってボリュームのスナップショットも作成する。
個々のNASクライアント113には、NFS/CIFSクライアント213とリストアダイレクタ224が含まれる。
NFS/CIFSクライアント113は、NASクライアント113上のユーザーまたはアプリケーションの指示に従い、NFSプロトコルとCIFSプロトコルを使用して適切なファイルI/O要求をNASシステム100に送信する。
リストアダイレクタ224は、NASクライアント113上のユーザーまたはアプリケーションの指示に従い、NASシステム100上のジャーナルマネージャ202にリストア要求を送信する。
スナップショットメカニズム
スナップショットは、ストレージボリューム内のデータの特定時点におけるコピー(イメージ)を作成するメカニズムである。スナップショットは、たとえばブロックレベル、ファイルシステムレベルなど、さまざまなレベルで実施できる。本発明の1つの実施形態では、NASシステム100はブロックレベルのスナップショットを使用する。前述のブロックレベルのスナップショットを実施する場合は、ボリューム内に格納されたデータのイメージは別のボリュームにコピーされる。このように、元のボリュームにファイルシステムを格納する場合は、ファイルシステム全体のデータイメージは別のボリュームにコピーされる。
スナップショットは、ストレージボリューム内のデータの特定時点におけるコピー(イメージ)を作成するメカニズムである。スナップショットは、たとえばブロックレベル、ファイルシステムレベルなど、さまざまなレベルで実施できる。本発明の1つの実施形態では、NASシステム100はブロックレベルのスナップショットを使用する。前述のブロックレベルのスナップショットを実施する場合は、ボリューム内に格納されたデータのイメージは別のボリュームにコピーされる。このように、元のボリュームにファイルシステムを格納する場合は、ファイルシステム全体のデータイメージは別のボリュームにコピーされる。
また、前述のスナップショットメカニズムを実装するにはさまざまな方法がある。ミラーリングはその最も一般的な実装の1つである。ミラーリングの方法では、元のボリュームと同じサイズのスナップショットボリュームが作成され、スナップショットボリュームは元のボリュームに関連付けられる。スナップショットボリュームが元のボリュームに関連付けられると、元のボリュームに格納されたすべてのデータはスナップショットボリュームにコピーされる。最初のコピーが完了すると、元のボリュームに対して実行されるすべての書き込み入出力(I/O)操作はスナップショットボリュームに対しても実行される。特定時点におけるデータイメージを保存する必要がある場合は、前述のスナップショットボリュームへの書き込みI/Oの実行は打ち切られ、これによってスナップショットボリュームを元のボリュームから「切り離す(splitting)」。
ローカルファイルシステムのデータ構造
ローカルファイルシステムは、個々のファイルサーバーまたはNASシステムでローカルファイルおよびディレクトリの管理に使用するファイルシステムである。ファイルサーバーまたはNASシステムは、それぞれ異なるローカルファイルシステムを使用できる。
ローカルファイルシステムは、個々のファイルサーバーまたはNASシステムでローカルファイルおよびディレクトリの管理に使用するファイルシステムである。ファイルサーバーまたはNASシステムは、それぞれ異なるローカルファイルシステムを使用できる。
図4は、ローカルファイルシステム203に関連付けられたデータをファイルシステムボリューム207に格納する方法を示している。ファイルシステムボリュームのブートセクタ301は、必要な場合はシステムを起動するように動作できる起動プログラムを格納するために提供される。ローカルファイルシステム203は、ブートセクタ301の内容を変更しない。ボリュームのその他の部分はローカルファイルシステム203で使用される。
ローカルファイルシステム203はボリュームのその他の部分をブロックグループ302に分割する。個々のブロックグループ302には、スーパーブロック303、ブロックグループ記述子304、データブロックビットマップ305、Inodeビットマップ306、Inodeテーブル307、およびデータブロック308が含まれる。
スーパーブロック303には、ブロックグループ302に関連付けられた場所情報を格納するために使用する。個々のブロックグループ302には、同じスーパーブロック303のコピーが格納される。ブロックグループ記述子304には、ブロックグループ302に関連付けられた管理情報を格納する。データブロックビットマップ305は、使用中のデータブロック308を識別する。同様に、Inodeビットマップ306はInodeテーブル307内の使用中のInode309を識別する。
Inodeテーブル307内のInodeレコード309には、個々のファイルまたはディレクトリに関連付けられた以下の属性が格納される。
□ Inode Number(Inode番号):Inodeを表す一意の番号
□ File Type(ファイルタイプ):Inodeに関連付けられたデータストレージユニットの種類(ファイル、ディレクトリなど)
□ File Size(ファイルサイズ):ファイルのサイズ
□ Access permission(アクセス許可):ユーザー(所有者)、グループなどのアクセス許可を表すビット列
□ User ID(ユーザーID):ファイルを所有するユーザーのID番号
□ Group ID(グループID):ユーザー(所有者)が所属するグループのID番号
□ Create Time(作成日時):ファイルが作成された日時
□ Last Modify Time(最終更新日時):ファイルが更新された日時
□ Last Access Time(最終アクセス日時):ファイルが最後にアクセスされた日時
□ Block Pointer(ブロックポインタ):実際のデータが格納されているデータブロックへのポインタ
□ Inode Number(Inode番号):Inodeを表す一意の番号
□ File Type(ファイルタイプ):Inodeに関連付けられたデータストレージユニットの種類(ファイル、ディレクトリなど)
□ File Size(ファイルサイズ):ファイルのサイズ
□ Access permission(アクセス許可):ユーザー(所有者)、グループなどのアクセス許可を表すビット列
□ User ID(ユーザーID):ファイルを所有するユーザーのID番号
□ Group ID(グループID):ユーザー(所有者)が所属するグループのID番号
□ Create Time(作成日時):ファイルが作成された日時
□ Last Modify Time(最終更新日時):ファイルが更新された日時
□ Last Access Time(最終アクセス日時):ファイルが最後にアクセスされた日時
□ Block Pointer(ブロックポインタ):実際のデータが格納されているデータブロックへのポインタ
図5は、Inode 401、403、404、および407と、それぞれのデータブロック402、405、406、408、および409との論理的な関係を示している。個々のInode 401、403、404、および407を使用して、ファイルまたはディレクトリを表すことができる。Inodeがファイルを表す場合(404および407のようにFile Typeフィールドの値が「file」の場合)は、Inodeからポイントされるデータブロックにはこのファイルの実際のデータが格納されている。ファイルが複数のデータブロック406および409に格納される場合は、2つのデータブロック406と409のアドレスがBlock Pointerフィールドに記録される。個々のブロックポインタは、ファイルシステムボリューム207内の論理ブロックアドレス(LBA:logical block address)として表される。Inodeがディレクトリを表す場合は(401および403のようにFile Typeフィールドの値が「directory」の場合)、Block PointerフィールドからポイントされるデータブロックにはInodeに対応するディレクトリ内のすべてのファイルおよびディレクトリのInodeの番号と名前のリストが格納される。
ファイルアクセスプロトコル
クライアントコンピュータ(図示された実施形態ではNASクライアント113)がLAN(Local Area Network:ローカルエリアネットワーク、実施形態ではLAN 120)を経由してファイルサーバーまたはNASシステム(実施形態ではNASシステム100)によって管理されるファイルシステムにアクセスできるようにするための複数のプロトコルが存在する。NFSv3(Network File System version 3、IETF RFC1813で定義)、NFSv4(Network File System version 4、IETF RFC3530で定義)、CIFS(Common Internet File System、Microsoft Corporationで開発)は、広く使用されているファイルアクセスプロトコルの例である。本発明の実施形態について、本明細書の以下の部分では例としてNFS version 3を使用して説明する。
クライアントコンピュータ(図示された実施形態ではNASクライアント113)がLAN(Local Area Network:ローカルエリアネットワーク、実施形態ではLAN 120)を経由してファイルサーバーまたはNASシステム(実施形態ではNASシステム100)によって管理されるファイルシステムにアクセスできるようにするための複数のプロトコルが存在する。NFSv3(Network File System version 3、IETF RFC1813で定義)、NFSv4(Network File System version 4、IETF RFC3530で定義)、CIFS(Common Internet File System、Microsoft Corporationで開発)は、広く使用されているファイルアクセスプロトコルの例である。本発明の実施形態について、本明細書の以下の部分では例としてNFS version 3を使用して説明する。
NFS操作
当業者には周知のNFS version 3プロトコルを使用すると、NASクライアント113はNASシステム100によってエクスポートされたファイルまたはディレクトリに関して次の操作を要求できる。NASクライアント113から受信した要求に応答して、NASシステム100は以下に示す手順を実行する。
当業者には周知のNFS version 3プロトコルを使用すると、NASクライアント113はNASシステム100によってエクスポートされたファイルまたはディレクトリに関して次の操作を要求できる。NASクライアント113から受信した要求に応答して、NASシステム100は以下に示す手順を実行する。
NULL要求を受信した場合、NASシステム100は操作を実行しない。
GETATTR要求を受信した場合、NASシステム100は要求内で指定されたファイルの属性を読み出して返す。
SETATTR要求を受信した場合、NASシステム100は対象となるファイルの属性を要求内で指定されたように変更する。
LOOKUP要求を受信した場合、NASシステム100は要求内で指定されたファイル名またはディレクトリ名を検索する。検出された場合は、対応するファイルハンドル(後述)をNASクライアント113に返す。
ACCESS要求を受信した場合、NASシステム100は要求内で指定されたファイルまたはディレクトリのアクセス許可を確認する。
READLINK要求を受信した場合、NASシステム100はシンボリックリンク(他のファイルへのポインタをデータとして格納するファイル)のデータを読み出して返す。
READ要求を受信した場合、NASシステム100は要求内で指定されたファイルのデータを読み出して返す。
WRITE要求を受信した場合、NASシステム100は要求内で指定されたようにデータをファイルに書き込む。
CREATE要求を受信した場合、NASシステム100は要求内で指定されたように新しいファイルを作成する。
MKDIR要求を受信した場合、NASシステム100は要求内で指定されたように新しいディレクトリを作成する。
SYMLINK要求を受信した場合、NASシステム100は要求内で指定されたように新しいシンボリックリンクを作成する。
MKNOD要求を受信した場合、NASシステム100は要求内で指定されたように特殊なファイルを作成する。特殊なファイルは、名前付きパイプまたはデバイスファイルでよい。
REMOVE要求を受信した場合、NASシステム100は要求内で指定されたファイルを削除する。
RMDIR要求を受信した場合、NASシステム100は要求内で指定されたディレクトリを削除する。
RENAME要求を受信した場合、NASシステム100はファイルまたはディレクトリの名前を要求内で指定されたように変更する。
LINK要求を受信した場合、NASシステム100は要求内で指定されたようにハードリンク(既存のファイルまたはディレクトリと同じデータをポイントするファイルまたはディレクトリ)を作成する。
READDIR要求を受信した場合、NASシステム100は要求内で指定されたディレクトリのデータを読み出して返す。ディレクトリのデータには、指定されたディレクトリ内のファイルとディレクトリの名前(通常はディレクトリエントリと呼ばれる)が含まれる。
READDIRPLUS要求を受信した場合、NASシステム100は要求内で指定されたディレクトリのデータを読み出して返す。各ディレクトリエントリのファイルハンドルも返す。
FSSTAT要求を受信した場合、NASシステム100はファイルシステムに関する動的な情報(全体のサイズ、空き容量など)を取得して返す。
FSINFO要求を受信した場合、NASシステム100はファイルシステムの静的な情報(NASシステム100上で許可されるREAD要求、WRITE要求、1つのファイルのサイズの上限など)を取得して返す。
PATHCONF要求を受信した場合、NASシステム100は要求内で指定されたファイルまたはディレクトリの「pathconf」情報を取得して返す。「Pathconf」情報は、POSIX(Portable Operating System Interface for UNIX(登録商標))で定義されている。
COMMIT要求を受信した場合、NASシステム100はキャッシュ(この実施形態ではメモリ104上にある)上のダーティー(dirty)データ(まだ安定なストレージに書き込まれていないデータ)を安定なストレージ(この実施形態ではストレージシステム102)にフラッシュし、NASシステム100がキャッシングした後も書き込まれたデータが失われないようにする。
ファイルハンドル
NASクライアント113がNASシステム100に要求を発行する場合は、対象となるファイルまたはディレクトリをそのファイルハンドルで指定する。ファイルハンドルは、NASシステム100が個々のファイルおよびディレクトリに割り当てる64バイトの文字列である。NASシステム100がNASクライアント113からLOOKUP要求を受信した場合に、NASシステム100は個々のファイルまたはディレクトリのファイルハンドルを指定し、NASシステム100がファイルまたはディレクトリをそのファイルハンドルで識別できるようにする。当業者には周知であり、参照により本明細書に組み込まれているインターネット標準RFC1813(Internet Engineering Task Force(IETF)によって採用された)は、NASシステム100が再起動してもファイルハンドルは変更すべきでないことが明記されている。ただし、ファイルハンドルを指定する方法はRFC1813では定義されておらず、本発明概念に必須ではない。ファイルハンドルを生成する厳密な方法は、個々のオペレーティングシステムまたはプラットフォームによって異なる。
NASクライアント113がNASシステム100に要求を発行する場合は、対象となるファイルまたはディレクトリをそのファイルハンドルで指定する。ファイルハンドルは、NASシステム100が個々のファイルおよびディレクトリに割り当てる64バイトの文字列である。NASシステム100がNASクライアント113からLOOKUP要求を受信した場合に、NASシステム100は個々のファイルまたはディレクトリのファイルハンドルを指定し、NASシステム100がファイルまたはディレクトリをそのファイルハンドルで識別できるようにする。当業者には周知であり、参照により本明細書に組み込まれているインターネット標準RFC1813(Internet Engineering Task Force(IETF)によって採用された)は、NASシステム100が再起動してもファイルハンドルは変更すべきでないことが明記されている。ただし、ファイルハンドルを指定する方法はRFC1813では定義されておらず、本発明概念に必須ではない。ファイルハンドルを生成する厳密な方法は、個々のオペレーティングシステムまたはプラットフォームによって異なる。
1つの広く使用されている実施態様では、ファイルハンドルは以下の情報を使用して生成される。
● Device Number(デバイス番号):ネットワークアダプタ、ストレージボリュームなど、システムで管理される個々のデバイスに割り当てられた一意の番号
● Inode Number(Inode番号):個々のInodeを表す一意の番号(前述のように)
● Device Number(デバイス番号):ネットワークアダプタ、ストレージボリュームなど、システムで管理される個々のデバイスに割り当てられた一意の番号
● Inode Number(Inode番号):個々のInodeを表す一意の番号(前述のように)
ファイルハンドル生成ソフトウェアモジュールは、デバイス番号とInode番号を使用するので、ファイルまたはディレクトリが別のボリュームに移動またはコピーされる場合に、移動またはコピーされたファイルまたはディレクトリは元のファイルまたはディレクトリに関連付けられたファイルハンドルと同じファイルハンドルで表すことはできない。
NFS要求
図6に示すように、個々のNFS要求には、RPCヘッダ500、NFSヘッダ501、およびNFSデータ502の3つのデータ要素が含まれており、これらについて以下に詳しく説明する。
図6に示すように、個々のNFS要求には、RPCヘッダ500、NFSヘッダ501、およびNFSデータ502の3つのデータ要素が含まれており、これらについて以下に詳しく説明する。
RPCヘッダ500
本発明の1つの実施形態では、RPCヘッダ500には以下の情報が含まれる。
□ XID:要求を表す一意の番号。この番号はNASクライアント113上で指定される。
□ Reply Flag(応答フラグ):このフィールドが0の場合は、RPCヘッダがNASシステム100上のプロシージャ呼び出し用であることを意味する。1の場合は応答用である。
□ RPC Version(RPCバージョン):RPCプロトコルのバージョンを表す定数。通常、このフィールドには「2」がセットされる。
□ RPC Program Number(RPCプログラム番号):このフィールドには定数「100003」がセットされ、要求はNFSプロトコルに基づくことを示す。
□ RPC Program Version Number(RPCプログラムバージョン番号):このフィールドには定数「3」がセットされ、要求はNFSプロトコルのバージョン3に基づくことを示す。
□ RPC Procedure Number(RPCプロシージャ番号):このフィールドは要求が指定するプロシージャを表すために使用される。たとえば、このフィールドに7がセットされると、要求がWRITEプロシージャを呼び出すことを表す。
□ Authentication Information(認証情報):このフィールドは使用する認証方法の種類を指定するために使用される。UID(ユーザーID)とGID(グループID)もこのフィールドを含む。UIDとGIDは、NASシステム100で使用され、要求元のユーザーが対象となるファイルまたはディレクトリ上でプロシージャを実行する権限があることを示す。
本発明の1つの実施形態では、RPCヘッダ500には以下の情報が含まれる。
□ XID:要求を表す一意の番号。この番号はNASクライアント113上で指定される。
□ Reply Flag(応答フラグ):このフィールドが0の場合は、RPCヘッダがNASシステム100上のプロシージャ呼び出し用であることを意味する。1の場合は応答用である。
□ RPC Version(RPCバージョン):RPCプロトコルのバージョンを表す定数。通常、このフィールドには「2」がセットされる。
□ RPC Program Number(RPCプログラム番号):このフィールドには定数「100003」がセットされ、要求はNFSプロトコルに基づくことを示す。
□ RPC Program Version Number(RPCプログラムバージョン番号):このフィールドには定数「3」がセットされ、要求はNFSプロトコルのバージョン3に基づくことを示す。
□ RPC Procedure Number(RPCプロシージャ番号):このフィールドは要求が指定するプロシージャを表すために使用される。たとえば、このフィールドに7がセットされると、要求がWRITEプロシージャを呼び出すことを表す。
□ Authentication Information(認証情報):このフィールドは使用する認証方法の種類を指定するために使用される。UID(ユーザーID)とGID(グループID)もこのフィールドを含む。UIDとGIDは、NASシステム100で使用され、要求元のユーザーが対象となるファイルまたはディレクトリ上でプロシージャを実行する権限があることを示す。
NFSヘッダ501
NFSヘッダ501の内容は、NFS要求の種類によって異なる。たとえば、要求がWRITE操作の場合は、この部分に以下の情報が含まれる。
□ File Handle(ファイルハンドル):NFSデータ部のデータが書き込まれるファイルを表すファイルハンドル。ファイルハンドルは、通常はファイルおよびディレクトリの操作に関連する要求のNFSヘッダ内に含まれる。ファイルハンドルを使用すると、NASシステム100は対象となるファイルおよびディレクトリを識別できる。
□ Offset(オフセット):ファイル内で書き込みを開始する位置。
□ Count(カウント):書き込まれるデータのバイト数。
□ Stable Flag(安定フラグ):このフィールドには、NASシステム100が書き込まれたデータを処理する方法を指定する。たとえば、このフィールドに数値2が含まれると、NASクライアント113へのWRITE操作の結果を返す前に、NASシステム100はそのキャッシュ内のダーティーデータをストレージシステム102にフラッシュする必要がある。
NFSヘッダ501の内容は、NFS要求の種類によって異なる。たとえば、要求がWRITE操作の場合は、この部分に以下の情報が含まれる。
□ File Handle(ファイルハンドル):NFSデータ部のデータが書き込まれるファイルを表すファイルハンドル。ファイルハンドルは、通常はファイルおよびディレクトリの操作に関連する要求のNFSヘッダ内に含まれる。ファイルハンドルを使用すると、NASシステム100は対象となるファイルおよびディレクトリを識別できる。
□ Offset(オフセット):ファイル内で書き込みを開始する位置。
□ Count(カウント):書き込まれるデータのバイト数。
□ Stable Flag(安定フラグ):このフィールドには、NASシステム100が書き込まれたデータを処理する方法を指定する。たとえば、このフィールドに数値2が含まれると、NASクライアント113へのWRITE操作の結果を返す前に、NASシステム100はそのキャッシュ内のダーティーデータをストレージシステム102にフラッシュする必要がある。
NFSデータ502
NFSヘッダ501の内容と同様に、NFSデータ502の内容もNFS要求の種類によって異なる。たとえば、NFS要求がWRITE操作を含む場合は、NFSデータ部502にはストレージに書き込まれるデータが含まれる。LOOKUP、GETATTRなど、一部のNFS要求にはNFSデータ部502が存在しない。
NFSヘッダ501の内容と同様に、NFSデータ502の内容もNFS要求の種類によって異なる。たとえば、NFS要求がWRITE操作を含む場合は、NFSデータ部502にはストレージに書き込まれるデータが含まれる。LOOKUP、GETATTRなど、一部のNFS要求にはNFSデータ部502が存在しない。
ジャーナルグループ
本発明概念の1つの実施形態により、ジャーナルグループ214が定義される(図1を参照)。具体的に言えば、ファイルシステムボリューム207はジャーナルグループ214として体系化される。ジャーナルグループ214はファイルシステムボリューム207の最小の単位であり、ここにはNASクライアント113からのNFS要求のジャーナルがローカルファイルシステム208に確実に記録される。関連のジャーナルには、NASクライアント113からローカルファイルシステム208に送信された要求の順序が適切な順序で記録される。ジャーナル記録の操作によって生成されたジャーナルデータは、1つまたは複数のジャーナルボリューム211に格納できる。
本発明概念の1つの実施形態により、ジャーナルグループ214が定義される(図1を参照)。具体的に言えば、ファイルシステムボリューム207はジャーナルグループ214として体系化される。ジャーナルグループ214はファイルシステムボリューム207の最小の単位であり、ここにはNASクライアント113からのNFS要求のジャーナルがローカルファイルシステム208に確実に記録される。関連のジャーナルには、NASクライアント113からローカルファイルシステム208に送信された要求の順序が適切な順序で記録される。ジャーナル記録の操作によって生成されたジャーナルデータは、1つまたは複数のジャーナルボリューム211に格納できる。
ジャーナルの管理データ
図7は、NFS要求のジャーナル記録を実行するときに使用するデータを示している。NASシステム100がNASクライアント113からの要求を受信すると、これに応答してジャーナルレコードが生成される。ジャーナルレコードには、ジャーナルヘッダ602とジャーナルデータ603が含まれる。ジャーナルヘッダ602には、対応するジャーナルデータ603に関する情報が含まれる。ジャーナルデータ部603には、本明細書で前述のように、RPCヘッダ500、NFSヘッダ501、およびNFSデータ502で構成されるNFS要求全体が組み込まれている。
図7は、NFS要求のジャーナル記録を実行するときに使用するデータを示している。NASシステム100がNASクライアント113からの要求を受信すると、これに応答してジャーナルレコードが生成される。ジャーナルレコードには、ジャーナルヘッダ602とジャーナルデータ603が含まれる。ジャーナルヘッダ602には、対応するジャーナルデータ603に関する情報が含まれる。ジャーナルデータ部603には、本明細書で前述のように、RPCヘッダ500、NFSヘッダ501、およびNFSデータ502で構成されるNFS要求全体が組み込まれている。
図7に示すように、各ジャーナルヘッダ604には以下のフィールドが組み込まれている。
● JH_OFS 604:このフィールドは、ジャーナルグループ214内の特定のファイルシステムボリューム207を表す。ファイルシステムボリュームは第0のファイルシステムボリュームから始まり、第1のファイルシステムボリューム、第2のファイルシステムボリューム、以下同様に続く。ボリュームオフセットの値は、0、1、2、などである。JH_OFS 604は、要求の対象となるジャーナルグループ214内の特定のファイルシステムボリューム207を表す。前述のオフセット値は、図8に示すFVOL_OFFSレコード720に対応し、NASクライアント113からの要求に応答してジャーナルエントリが作成されるときに指定される。
● JH_FH 605:このフィールドは、要求の対象となる特定のファイルまたはディレクトリを表す。前述の対象となるファイルまたはディレクトリは、適切なファイルハンドルを使用して指定される。ファイルハンドルは、要求のNFSヘッダ部501から取得できる。
● JH_LEN 606:このフィールドには、要求全体の長さの情報が指定される。
● JH_TIME 607:このフィールドは、NASシステム100で要求を受信した日時を表す。JH_TIME 607フィールドには、要求の暦日、時間、分、秒、さらにミリ秒を指定できる。この日時は、NASシステム100とNASクライアント113のいずれかによって提供できる。
● JH_SEQ 608:このフィールドは、個々の要求に割り当てられたシーケンス番号を表す。すべてのシーケンス番号は、指定されたジャーナルグループ214内で一意である。シーケンス番号は、ジャーナルエントリが作成されるときにそれに割り当てられる。
● JH_VOL 609:このフィールドは、ジャーナルデータ603に関連付けられたジャーナルボリューム211を表す。この識別子は、ジャーナルデータ603を格納するジャーナルボリューム211を表す。ジャーナルデータ603は、ジャーナルヘッダ602を格納するジャーナルボリューム211とは異なるジャーナルボリューム211に格納できる。
● JH_ADR 610:このフィールドには、ジャーナルデータ603を格納するように関連付けられたジャーナルボリューム211内でジャーナルデータ603の開始アドレスが指定される。
● JH_OP 611:このフィールドには、要求のRPCヘッダで指定されるRPCプロシージャ番号が指定される。
● JH_UID 612:このフィールドは、要求のRPCヘッダで指定されるユーザー識別子(UID:user identifier)を含む。
● JH_GID 613:このフィールドは、要求のRPCヘッダで指定されるグループ識別子(GID:group identifier)を含む。
● JH_OFS 604:このフィールドは、ジャーナルグループ214内の特定のファイルシステムボリューム207を表す。ファイルシステムボリュームは第0のファイルシステムボリュームから始まり、第1のファイルシステムボリューム、第2のファイルシステムボリューム、以下同様に続く。ボリュームオフセットの値は、0、1、2、などである。JH_OFS 604は、要求の対象となるジャーナルグループ214内の特定のファイルシステムボリューム207を表す。前述のオフセット値は、図8に示すFVOL_OFFSレコード720に対応し、NASクライアント113からの要求に応答してジャーナルエントリが作成されるときに指定される。
● JH_FH 605:このフィールドは、要求の対象となる特定のファイルまたはディレクトリを表す。前述の対象となるファイルまたはディレクトリは、適切なファイルハンドルを使用して指定される。ファイルハンドルは、要求のNFSヘッダ部501から取得できる。
● JH_LEN 606:このフィールドには、要求全体の長さの情報が指定される。
● JH_TIME 607:このフィールドは、NASシステム100で要求を受信した日時を表す。JH_TIME 607フィールドには、要求の暦日、時間、分、秒、さらにミリ秒を指定できる。この日時は、NASシステム100とNASクライアント113のいずれかによって提供できる。
● JH_SEQ 608:このフィールドは、個々の要求に割り当てられたシーケンス番号を表す。すべてのシーケンス番号は、指定されたジャーナルグループ214内で一意である。シーケンス番号は、ジャーナルエントリが作成されるときにそれに割り当てられる。
● JH_VOL 609:このフィールドは、ジャーナルデータ603に関連付けられたジャーナルボリューム211を表す。この識別子は、ジャーナルデータ603を格納するジャーナルボリューム211を表す。ジャーナルデータ603は、ジャーナルヘッダ602を格納するジャーナルボリューム211とは異なるジャーナルボリューム211に格納できる。
● JH_ADR 610:このフィールドには、ジャーナルデータ603を格納するように関連付けられたジャーナルボリューム211内でジャーナルデータ603の開始アドレスが指定される。
● JH_OP 611:このフィールドには、要求のRPCヘッダで指定されるRPCプロシージャ番号が指定される。
● JH_UID 612:このフィールドは、要求のRPCヘッダで指定されるユーザー識別子(UID:user identifier)を含む。
● JH_GID 613:このフィールドは、要求のRPCヘッダで指定されるグループ識別子(GID:group identifier)を含む。
JH_OP 611、JH_UID 612、JH_GID 613などのフィールドは、必ずしもジャーナルヘッダ602に含まれてはいない。ただし、ユーザーが操作、ユーザー、グループに基づいてリカバリを要求した場合に、このようなフィールドはNASシステム100が適切なリカバリポイントを迅速に検索するために有効である。
ジャーナルに記録する要求
ローカルファイルシステム208の任意の希望する時点におけるイメージをリカバリできるように、本発明概念の実施形態により、すべてのNFS要求がジャーナルに記録される。ただし、必要なジャーナルボリューム211容量を縮小するために、ジャーナルに記録されるNFS要求の数を減らすことができる。
ローカルファイルシステム208の任意の希望する時点におけるイメージをリカバリできるように、本発明概念の実施形態により、すべてのNFS要求がジャーナルに記録される。ただし、必要なジャーナルボリューム211容量を縮小するために、ジャーナルに記録されるNFS要求の数を減らすことができる。
1つの特定の実装では、NULL、ACCESS、FSINFO、FSSTAT、PATHCONF、および同様の操作にはファイルシステムボリューム207内のいかなるデータの変更も含まれないため、このような操作を含む要求はジャーナルには格納されない。
1つの特定の実装では、SETATTR、WRITE、CREATE、MKDIR、SYMLINK、MKNOD、REMOVE、RMDIR、RENAME、LINK、COMMITなど、ファイルおよびディレクトリに関連付けられたデータに変更を加える要求のみがジャーナルに記録される。ただし、この場合は、READ操作によってもファイルのアクセス日時が変更され、READDIR操作によってもディレクトリのアクセス日時が変更されるため、ユーザーがファイルアクセス日時を使用してローカルファイルシステム208のリカバリイメージを指定することはできない。
ジャーナル管理テーブル
図8は、ジャーナル管理テーブル206の詳細を示している。ジャーナルヘッダ領域600とジャーナルデータ領域601を管理するために、前述の各領域へのポインタが必要である。本明細書の以上の部分で説明するように、ジャーナル管理テーブル206にはジャーナルグループ214に関連付けられた設定情報、およびジャーナルグループ214、関連のジャーナルボリューム211、およびスナップショットイメージ209間の関係に関する情報が保持される。
図8は、ジャーナル管理テーブル206の詳細を示している。ジャーナルヘッダ領域600とジャーナルデータ領域601を管理するために、前述の各領域へのポインタが必要である。本明細書の以上の部分で説明するように、ジャーナル管理テーブル206にはジャーナルグループ214に関連付けられた設定情報、およびジャーナルグループ214、関連のジャーナルボリューム211、およびスナップショットイメージ209間の関係に関する情報が保持される。
図8に示すジャーナル管理テーブル206は、例示的な管理テーブルとその内容を示している。図示されたジャーナル管理テーブル206には、以下の情報が格納される。
□ GRID 700:このレコードは、特定のジャーナルグループ214を表す。グループIDは、NASシステム100の管理者がジャーナルグループ214を定義するときに、NASシステム100内のジャーナルマネージャ202によって割り当てられる。
□ GRNAME 701:このフィールドには、人間にわかりやすい識別子を使用するジャーナルグループ214を指定する。このグループ名は、NASシステム100の管理者が特定のジャーナルグループ214を定義するときに入力し、ジャーナルマネージャ202によって前述のフィールドに格納される。
□ GRATTR 702:このフィールドには、2つの属性、MASTERとリストアが格納される。MASTER属性は、ジャーナルグループ214がジャーナル記録の対象となることを表す。リストア属性は、ジャーナルグループがジャーナルからリストアされることを表す。
□ GRSTS 703:このレコードを使用して、2つの相反する状態、すなわちACTIVEとINACTIVEを表すことができる。
□ SEQ 704:このレコードには、ジャーナルヘッダ602で使用するシーケンス番号のソースの役割を果たすカウンタが格納される。新しいジャーナルレコードを作成するときにSEQレコード704の値が読み出され、新しいジャーナルレコードに割り当てられる。続いて、SEQレコード704の値が増分され、このフィールドにライトバックされる(written back)。
□ NUM_FVOL 705:このレコードは、ジャーナルグループ214に含まれるファイルシステムボリューム207の数を表す。
□ FVOL_LIST 706:このフィールドは、ジャーナルグループ214内のファイルシステムボリューム207のリストを表す。本発明概念の実施形態では、図8に示すように、FVOL_LIST 706はファイルシステムボリューム情報を格納するデータ構造の第1のエントリへのポインタである。個々のファイルシステムボリューム情報レコードは、FVOL_OFFS 720、FVOL_ID 721、FVOL_NEXT 722で構成される。
□ FVOL_OFFS 720:このフィールドは、ジャーナルグループ214内の特定のファイルシステムボリューム207のオフセット値を表す。たとえば、ジャーナルグループ214が3つのファイルシステムボリューム207で構成される場合は、オフセット値として0、1、2を指定できる。オフセット値は、NASシステム100の管理者がジャーナルグループ214にファイルシステムボリューム207を追加するときに、ジャーナルマネージャ202によって個々のファイルシステムボリューム207に割り当てられる。
□ FVOL_ID 721:このフィールドは、NASシステム100全域にあるファイルシステムボリューム207を一意に識別する。また、NASシステム100のユーザーまたは管理者が新しいファイルシステムボリューム207を追加するときにも、ファイルシステムボリューム207として追加するボリュームを、このボリューム識別子を使用して指定する。識別子JVOL_IDとSVOL_IDが同じ原理に基づいていることにも留意されたい。
□ FVOL_NEXT 722:このフィールドには、ジャーナルグループ214内の次のファイルシステムボリューム207の情報を格納するデータ構造へのポインタが入る。次のボリュームがない場合は、このフィールドの値はNULLである。
□ NUM_JVOL 707:このレコードは、ジャーナルヘッダ602とジャーナルデータ603を格納するための、ジャーナルグループ214に関連付けられたジャーナルボリューム211の数を表す。
□ JI_HEAD_VOL 708:このレコードは、次の新しいジャーナルヘッダ602を格納するジャーナルヘッダ領域600を含むジャーナルボリューム211を表す。
□ JI_HEAD_ADR 709:このレコードは、ジャーナルボリューム211内で次のジャーナルヘッダ602が格納される場所のアドレスを表す。
□ JO_HEAD_VOL 710:このフィールドは、最も古いジャーナルヘッダ602を格納するジャーナルヘッダ領域600を含むジャーナルボリューム211を表す。
□ JO_HEAD_ADR 711:このフィールドは、最も古いジャーナルヘッダ602を格納するジャーナルヘッダ領域600内のジャーナルヘッダ602の場所のアドレスを表す。
□ JI_DATA_VOL 712:このフィールドは、次のジャーナルデータ603が書き込まれるジャーナルデータ領域601を表す。
□ JI_DATA_ADR 713:このフィールドは、次のジャーナルデータ603が格納されるジャーナルデータ領域601内の特定のアドレスを表す。
□ JO_DATA_VOL 714:このフィールドは、最も古いジャーナルデータ603のデータを含むジャーナルデータ領域601を格納するジャーナルボリューム211を表す。
□ JO_DATA ADR 715:このフィールドは、ジャーナルデータ領域601内で最も古いジャーナルデータ603を格納する場所のアドレスを表す。
□ JVOL_LIST 716:このフィールドは、特定のジャーナルグループ214に関連付けられたジャーナルボリューム211のリストが格納される。本発明の実施形態では、JVOL_LIST 716はジャーナルボリューム211に関する情報を格納するデータ構造へのポインタである。図8に示すように、個々のデータ構造は、JVOL_OFFS 723、JVOL_ID 724、JVOL_NEXT 725で構成される。
□ JVOL_OFS:このレコードは、指定されたジャーナルグループ214内の特定のジャーナルボリューム211に関連付けられたオフセット値を表す。たとえば、ジャーナルグループ214が2つのジャーナルボリューム211に関連付けられている場合は、オフセット値として0と1を使用してジャーナルボリュームを指定できる。
□ JVOL_ID:このフィールドは、NASシステム100内のジャーナルボリューム211を一意に識別する。識別子FVOL_IDとSVOL_IDは同じ原理に基づいていることにも留意されたい。
□ JVOL_NEXT:このフィールドは、ジャーナルグループ214に関連付けられた次のジャーナルボリューム211に属する次のデータ構造エントリへのポインタを表す。次のエントリがない場合は、このフィールドの値がNULLになる。
□ SS_LIST 717:このフィールドは、指定されたジャーナルグループ214に関連付けられたスナップショットイメージ210のリストを表す。この特定の実装では、図8に示すように、SS_LIST 717はスナップショット情報データ構造へのポインタである。個々のスナップショット情報データ構造には、以下の情報が含まれる。
□ SS_SEQ 726:このフィールドは、スナップショットが作成されたときにスナップショットに割り当てられたシーケンス番号を表す。
□ SS_TIME 727:このフィールドには、スナップショットが作成された日時の情報が格納される。
□ SS_STS 728:このフィールドには、各スナップショットに関連付けられたステータス情報が格納される。有効な値にはVALIDとINVALIDがある。
□ SS_NEXT 729:このフィールドには、次のスナップショット情報データ構造へのポインタが格納される。次のスナップショットがない場合は、このフィールドの値はNULLである。個々のスナップショット情報データ構造には、スナップショットイメージ210を格納するスナップショットボリュームのリスト(SVOL_LIST)730も含まれる。図8に示すように、スナップショットボリューム情報データ構造へのポインタ(SVOL_LIST)730は、個々のスナップショット情報データ構造に格納される。個々のスナップショットボリューム情報データ構造には、以下のレコードが含まれる。
□ SVOL_OFFS 731:このレコードは、スナップショットイメージ210の少なくとも一部を含むスナップショットボリューム209を識別するオフセット値を表す。スナップショットイメージ210は、セグメントまたはパーティションに分割され、複数のスナップショットボリューム209に格納される。本明細書で説明する本発明の1つの実施形態では、前述のオフセット値はスナップショットイメージ210の一部(セグメント、パーティションなど)を格納するi番目のスナップショットボリューム209を識別する。
□ SVOL_ID 732:このフィールドは、NASシステム100内のスナップショットボリューム209を一意に識別する。識別子FVOL_IDとJVOL_IDも同じ原理に基づいていることに留意されたい。
□ SVOL_NEXT 733:このレコードは、特定のスナップショットイメージを格納する次のスナップショットボリューム情報データ構造へのポインタを表す。次のスナップショットボリューム情報データ構造がない場合は、このフィールドにはNULL値が入る。
□ GRID 700:このレコードは、特定のジャーナルグループ214を表す。グループIDは、NASシステム100の管理者がジャーナルグループ214を定義するときに、NASシステム100内のジャーナルマネージャ202によって割り当てられる。
□ GRNAME 701:このフィールドには、人間にわかりやすい識別子を使用するジャーナルグループ214を指定する。このグループ名は、NASシステム100の管理者が特定のジャーナルグループ214を定義するときに入力し、ジャーナルマネージャ202によって前述のフィールドに格納される。
□ GRATTR 702:このフィールドには、2つの属性、MASTERとリストアが格納される。MASTER属性は、ジャーナルグループ214がジャーナル記録の対象となることを表す。リストア属性は、ジャーナルグループがジャーナルからリストアされることを表す。
□ GRSTS 703:このレコードを使用して、2つの相反する状態、すなわちACTIVEとINACTIVEを表すことができる。
□ SEQ 704:このレコードには、ジャーナルヘッダ602で使用するシーケンス番号のソースの役割を果たすカウンタが格納される。新しいジャーナルレコードを作成するときにSEQレコード704の値が読み出され、新しいジャーナルレコードに割り当てられる。続いて、SEQレコード704の値が増分され、このフィールドにライトバックされる(written back)。
□ NUM_FVOL 705:このレコードは、ジャーナルグループ214に含まれるファイルシステムボリューム207の数を表す。
□ FVOL_LIST 706:このフィールドは、ジャーナルグループ214内のファイルシステムボリューム207のリストを表す。本発明概念の実施形態では、図8に示すように、FVOL_LIST 706はファイルシステムボリューム情報を格納するデータ構造の第1のエントリへのポインタである。個々のファイルシステムボリューム情報レコードは、FVOL_OFFS 720、FVOL_ID 721、FVOL_NEXT 722で構成される。
□ FVOL_OFFS 720:このフィールドは、ジャーナルグループ214内の特定のファイルシステムボリューム207のオフセット値を表す。たとえば、ジャーナルグループ214が3つのファイルシステムボリューム207で構成される場合は、オフセット値として0、1、2を指定できる。オフセット値は、NASシステム100の管理者がジャーナルグループ214にファイルシステムボリューム207を追加するときに、ジャーナルマネージャ202によって個々のファイルシステムボリューム207に割り当てられる。
□ FVOL_ID 721:このフィールドは、NASシステム100全域にあるファイルシステムボリューム207を一意に識別する。また、NASシステム100のユーザーまたは管理者が新しいファイルシステムボリューム207を追加するときにも、ファイルシステムボリューム207として追加するボリュームを、このボリューム識別子を使用して指定する。識別子JVOL_IDとSVOL_IDが同じ原理に基づいていることにも留意されたい。
□ FVOL_NEXT 722:このフィールドには、ジャーナルグループ214内の次のファイルシステムボリューム207の情報を格納するデータ構造へのポインタが入る。次のボリュームがない場合は、このフィールドの値はNULLである。
□ NUM_JVOL 707:このレコードは、ジャーナルヘッダ602とジャーナルデータ603を格納するための、ジャーナルグループ214に関連付けられたジャーナルボリューム211の数を表す。
□ JI_HEAD_VOL 708:このレコードは、次の新しいジャーナルヘッダ602を格納するジャーナルヘッダ領域600を含むジャーナルボリューム211を表す。
□ JI_HEAD_ADR 709:このレコードは、ジャーナルボリューム211内で次のジャーナルヘッダ602が格納される場所のアドレスを表す。
□ JO_HEAD_VOL 710:このフィールドは、最も古いジャーナルヘッダ602を格納するジャーナルヘッダ領域600を含むジャーナルボリューム211を表す。
□ JO_HEAD_ADR 711:このフィールドは、最も古いジャーナルヘッダ602を格納するジャーナルヘッダ領域600内のジャーナルヘッダ602の場所のアドレスを表す。
□ JI_DATA_VOL 712:このフィールドは、次のジャーナルデータ603が書き込まれるジャーナルデータ領域601を表す。
□ JI_DATA_ADR 713:このフィールドは、次のジャーナルデータ603が格納されるジャーナルデータ領域601内の特定のアドレスを表す。
□ JO_DATA_VOL 714:このフィールドは、最も古いジャーナルデータ603のデータを含むジャーナルデータ領域601を格納するジャーナルボリューム211を表す。
□ JO_DATA ADR 715:このフィールドは、ジャーナルデータ領域601内で最も古いジャーナルデータ603を格納する場所のアドレスを表す。
□ JVOL_LIST 716:このフィールドは、特定のジャーナルグループ214に関連付けられたジャーナルボリューム211のリストが格納される。本発明の実施形態では、JVOL_LIST 716はジャーナルボリューム211に関する情報を格納するデータ構造へのポインタである。図8に示すように、個々のデータ構造は、JVOL_OFFS 723、JVOL_ID 724、JVOL_NEXT 725で構成される。
□ JVOL_OFS:このレコードは、指定されたジャーナルグループ214内の特定のジャーナルボリューム211に関連付けられたオフセット値を表す。たとえば、ジャーナルグループ214が2つのジャーナルボリューム211に関連付けられている場合は、オフセット値として0と1を使用してジャーナルボリュームを指定できる。
□ JVOL_ID:このフィールドは、NASシステム100内のジャーナルボリューム211を一意に識別する。識別子FVOL_IDとSVOL_IDは同じ原理に基づいていることにも留意されたい。
□ JVOL_NEXT:このフィールドは、ジャーナルグループ214に関連付けられた次のジャーナルボリューム211に属する次のデータ構造エントリへのポインタを表す。次のエントリがない場合は、このフィールドの値がNULLになる。
□ SS_LIST 717:このフィールドは、指定されたジャーナルグループ214に関連付けられたスナップショットイメージ210のリストを表す。この特定の実装では、図8に示すように、SS_LIST 717はスナップショット情報データ構造へのポインタである。個々のスナップショット情報データ構造には、以下の情報が含まれる。
□ SS_SEQ 726:このフィールドは、スナップショットが作成されたときにスナップショットに割り当てられたシーケンス番号を表す。
□ SS_TIME 727:このフィールドには、スナップショットが作成された日時の情報が格納される。
□ SS_STS 728:このフィールドには、各スナップショットに関連付けられたステータス情報が格納される。有効な値にはVALIDとINVALIDがある。
□ SS_NEXT 729:このフィールドには、次のスナップショット情報データ構造へのポインタが格納される。次のスナップショットがない場合は、このフィールドの値はNULLである。個々のスナップショット情報データ構造には、スナップショットイメージ210を格納するスナップショットボリュームのリスト(SVOL_LIST)730も含まれる。図8に示すように、スナップショットボリューム情報データ構造へのポインタ(SVOL_LIST)730は、個々のスナップショット情報データ構造に格納される。個々のスナップショットボリューム情報データ構造には、以下のレコードが含まれる。
□ SVOL_OFFS 731:このレコードは、スナップショットイメージ210の少なくとも一部を含むスナップショットボリューム209を識別するオフセット値を表す。スナップショットイメージ210は、セグメントまたはパーティションに分割され、複数のスナップショットボリューム209に格納される。本明細書で説明する本発明の1つの実施形態では、前述のオフセット値はスナップショットイメージ210の一部(セグメント、パーティションなど)を格納するi番目のスナップショットボリューム209を識別する。
□ SVOL_ID 732:このフィールドは、NASシステム100内のスナップショットボリューム209を一意に識別する。識別子FVOL_IDとJVOL_IDも同じ原理に基づいていることに留意されたい。
□ SVOL_NEXT 733:このレコードは、特定のスナップショットイメージを格納する次のスナップショットボリューム情報データ構造へのポインタを表す。次のスナップショットボリューム情報データ構造がない場合は、このフィールドにはNULL値が入る。
ジャーナルエントリとスナップショットとの関係
図9は、ジャーナルエントリとスナップショットとの関係を示している。スナップショット801は、ジャーナルグループ214に属するファイルシステムボリューム207の第1のスナップショットイメージを表す。シーケンス番号がSEQ0とSEQ1のジャーナルエントリ800が作成されていることに留意されたい。この2つのエントリは、2つの要求に対応するジャーナルエントリを表す。2つのエントリの内容は、スナップショット作成より前の特定の時点でジャーナル記録が開始されたことを示している。このように、シーケンス番号SEQ2に対応する時点で、ジャーナルマネージャ202はスナップショットの作成を開始し、ジャーナル記録はその前に開始されているので、スナップショットの作成中に要求が発生すればジャーナルに記録される。したがって、シーケンス番号SEQ3以上に関連付けられた要求802は、こうした要求がジャーナルに記録されていることを示す。本明細書では、シーケンス番号SEQ0とSEQ1で識別されるジャーナルエントリは廃棄または無視できることに留意されたい。
図9は、ジャーナルエントリとスナップショットとの関係を示している。スナップショット801は、ジャーナルグループ214に属するファイルシステムボリューム207の第1のスナップショットイメージを表す。シーケンス番号がSEQ0とSEQ1のジャーナルエントリ800が作成されていることに留意されたい。この2つのエントリは、2つの要求に対応するジャーナルエントリを表す。2つのエントリの内容は、スナップショット作成より前の特定の時点でジャーナル記録が開始されたことを示している。このように、シーケンス番号SEQ2に対応する時点で、ジャーナルマネージャ202はスナップショットの作成を開始し、ジャーナル記録はその前に開始されているので、スナップショットの作成中に要求が発生すればジャーナルに記録される。したがって、シーケンス番号SEQ3以上に関連付けられた要求802は、こうした要求がジャーナルに記録されていることを示す。本明細書では、シーケンス番号SEQ0とSEQ1で識別されるジャーナルエントリは廃棄または無視できることに留意されたい。
NASシステムへのデータリストア命令
NASクライアント113上のユーザーまたは実行中のアプリケーションがリストアダイレクタ224に対して特定のジャーナルグループ214のリストアを指示する場合に、ユーザーまたはアプリケーションは最後に実行された操作を指定することによって希望する状態のデータが存在する日時を指定し、これによってリストアポイントを指定できる。リストアダイレクタ224がNASシステム113にリストア要求を送信するときに、リストアポイントを指定する基準に加えて、対象となるジャーナルグループのIDまたは名前の少なくともいずれかをNASシステム113に提供する。
NASクライアント113上のユーザーまたは実行中のアプリケーションがリストアダイレクタ224に対して特定のジャーナルグループ214のリストアを指示する場合に、ユーザーまたはアプリケーションは最後に実行された操作を指定することによって希望する状態のデータが存在する日時を指定し、これによってリストアポイントを指定できる。リストアダイレクタ224がNASシステム113にリストア要求を送信するときに、リストアポイントを指定する基準に加えて、対象となるジャーナルグループのIDまたは名前の少なくともいずれかをNASシステム113に提供する。
NASシステム113がリストア要求を受信すると、リストア要求内で指定された基準を使用してスナップショットとジャーナルエントリを検索し、該当するレコードが検出された場合は、それを使用してデータのイメージをリストアする。
たとえば、NASクライアント113上のユーザーまたは実行中のアプリケーションが図10に示すリストア時点803を指定した場合は、NASシステム113は時点803より前の最新のスナップショットをリストアし、スナップショットから時点803までの間に実行された要求を再実行する。
NASクライアント113上のユーザーまたは実行中のアプリケーションが要求804を指定した場合は、NASシステム113は要求804より前の最新のスナップショットをリストアし、スナップショットから指定された要求804までの間に実行された要求を再実行する。
スナップショットとジャーナルからのリストア
データをリストアするには、通常、特定時点におけるローカルファイルシステム202のデータイメージを元のファイルシステムボリューム207または他の異なるボリュームにリカバリする必要がある。一般に、これは1つまたは複数のジャーナルエントリをそのジャーナルエントリより前に作成されたスナップショットに適用することによって実現される。ジャーナルレコードを適用するステップには、1つまたは複数のジャーナルエントリに従ってスナップショットの一部を更新または上書きするステップが含まれる。
データをリストアするには、通常、特定時点におけるローカルファイルシステム202のデータイメージを元のファイルシステムボリューム207または他の異なるボリュームにリカバリする必要がある。一般に、これは1つまたは複数のジャーナルエントリをそのジャーナルエントリより前に作成されたスナップショットに適用することによって実現される。ジャーナルレコードを適用するステップには、1つまたは複数のジャーナルエントリに従ってスナップショットの一部を更新または上書きするステップが含まれる。
本発明の1つの特定の実施形態では、SEQレコード704の値は要求が実行されるたびに増分され、ジャーナルエントリまたはスナップショットに割り当てられる。したがって、選択されたスナップショットに適用できるジャーナルエントリは、前述のSEQの値を使用して容易に識別できる。具体的には、該当するジャーナルエントリには、選択されたスナップショットに関連付けられたシーケンス番号(SS_SEQ)726より大きなシーケンス番号(JH_SEQ)608が関連付けられている。
たとえば、ユーザーまたはアプリケーションはリストアダイレクタ224を使用してNASシステム100に特定の時点を指定してもよい。推測されるように、この指定された時点はファイルシステムボリューム207内のデータが失われたときまたは壊れたときより前である。このように、目的の時点よりも前の時点が見つかるまで個々のスナップショットに対応する時間のフィールドSS_TIME 727が検索される。次に、ジャーナルヘッダ領域600内のジャーナルヘッダ602の検索が「最も古い」ジャーナルヘッダ602から開始される。最も古いジャーナルヘッダは、ジャーナル管理テーブル206内の前述の「JO_」で始まるレコード710、711、714、715によって識別できる。ジャーナルヘッダ602は領域600内で順番に検索され、選択されたスナップショットに関連付けられたシーケンス番号SS_SEQ726より大きいシーケンス番号JH_SEQ 608を有する最初のヘッダが検出される。選択されたスナップショットは、各ジャーナルエントリを1度に1つずつ順番にスナップショットに適用すること、したがって一連の要求を再実行することによって更新される。前述のジャーナルエントリを適用することは、スナップショットがスナップショットボリューム209に格納されているローカルファイルシステム208を対象とするジャーナルエントリで表される要求を再実行することと同等である。
このステップは、時間フィールドJH_TIME 607の値が目的の時点より前のジャーナルエントリがある限り続く。更新プロセスは、時間フィールドの値607が目的の時点より後の最初のジャーナルエントリで終了する。イメージを元のファイルシステムボリューム207にリストアする場合は、まず、スナップショットボリューム209内のデータのイメージをファイルシステムボリューム207にコピーする。次に、ジャーナルに記録された要求(元のローカルファイルシステム208に送信された要求)は、元のファイルシステムボリューム207に対して再実行される。
本発明概念の実施形態の1つの態様により、1つのスナップショットが作成される。次に、そのスナップショットより後のすべてのジャーナルエントリを、前述のスナップショットに適用することで、指定された任意の時点でのデータの状態を再現できる。本発明概念の実施形態の別の態様により、複数のスナップショット801'が作成される。作成された個々のスナップショットとジャーナルレエントリには、オブジェクト(スナップショットまたはジャーナルエントリ)が記録された順序でシーケンス番号が割り当てられる。通常は、個々のスナップショット801'同士の間には多くのジャーナルエントリ800が存在しており、複数のスナップショットを作成することでより短いリカバリ時間でデータをリストアできる。まず、リカバリの対象となる時点に最も近い時点のスナップショットが選択される。次に、そのスナップショットより後に作成されたジャーナルエントリを適用することにより、希望する時点のデータの状態をリストアできる。
元のボリュームにリストアする場合
ファイルシステムイメージを元のファイルシステムボリューム207にリストアする場合は、Inode番号とデバイス番号は変わらないので、リストアされたファイルシステムイメージに対してジャーナルで指定された元のファイルハンドルが有効である。したがって、元のファイルシステムボリューム207へのリストアは、単にスナップショットボリューム209内のスナップショットイメージを元のファイルシステムボリューム207にコピーし、次にジャーナルに記録された要求を再実行することによって実行される。
ファイルシステムイメージを元のファイルシステムボリューム207にリストアする場合は、Inode番号とデバイス番号は変わらないので、リストアされたファイルシステムイメージに対してジャーナルで指定された元のファイルハンドルが有効である。したがって、元のファイルシステムボリューム207へのリストアは、単にスナップショットボリューム209内のスナップショットイメージを元のファイルシステムボリューム207にコピーし、次にジャーナルに記録された要求を再実行することによって実行される。
ジャーナルの作成
図11は、ジャーナル記録操作を開始する例示的なプロセスの流れ図を示している。前述の例示的なプロセスの個々のステップについては、本明細書の以下の部分で詳細に説明する。
● ステップ900:管理者は、ジャーナルグループ214の名前、対象となるファイルシステムボリューム207、およびジャーナルグループ214に関連して使用するジャーナルボリューム211を指定する。
● ステップ901:NASシステム100はジャーナル管理テーブル206を作成する。
● ステップ902:NASシステム100はジャーナルグループ214に関するジャーナルの作成を開始する。
● ステップ903:NASシステム100はジャーナルエントリを作成し、こうしたジャーナルエントリのそれぞれに対してシーケンス番号を割り当てる。
● ステップ904:NASシステム100がジャーナルグループ214のスナップショットを作成するときに、このスナップショットにシーケンス番号も割り当てる。
図11は、ジャーナル記録操作を開始する例示的なプロセスの流れ図を示している。前述の例示的なプロセスの個々のステップについては、本明細書の以下の部分で詳細に説明する。
● ステップ900:管理者は、ジャーナルグループ214の名前、対象となるファイルシステムボリューム207、およびジャーナルグループ214に関連して使用するジャーナルボリューム211を指定する。
● ステップ901:NASシステム100はジャーナル管理テーブル206を作成する。
● ステップ902:NASシステム100はジャーナルグループ214に関するジャーナルの作成を開始する。
● ステップ903:NASシステム100はジャーナルエントリを作成し、こうしたジャーナルエントリのそれぞれに対してシーケンス番号を割り当てる。
● ステップ904:NASシステム100がジャーナルグループ214のスナップショットを作成するときに、このスナップショットにシーケンス番号も割り当てる。
ジャーナルの確認
図16は、ジャーナルの容量を確認するプロセスの例示的な実施形態を示す流れ図である。このプロセスを使用して、ジャーナルマネージャ202は定期的にジャーナルエントリの数を減らし、ジャーナルボリューム内の記憶領域を解放する。
● ステップ1000:NASシステム100は、ジャーナルボリュームの空き領域が事前に指定した容量より小さいかどうかを確認する。小さい場合、プロセスはステップ1001に進む。それ以外の場合は、プロセスが終了する。
● ステップ1001:NASシステム100は、最も古いジャーナルレコードのシーケンス番号よりシーケンス番号が大きいスナップショットがあるかどうかを確認する。ある場合、プロセスはステップ1002に進む。それ以外の場合、プロセスはステップ1003に進む。
● ステップ1002:NASシステム100は、ステップ1001で検出されたスナップショットのシーケンス番号よりシーケンス番号が早いジャーナルエントリを削除する。削除されたエントリは、データイメージのリストアには使用しないので不要である。
● ステップ1003:NASシステム100は、ローカルファイルシステム210のスナップショットに最も古いジャーナルエントリを適用する。
● ステップ1004:NASシステム100は、ジャーナルボリュームの空き領域が事前に指定した容量を超えているかどうかを確認する。超えている場合は、プロセスが終了する。それ以外の場合、プロセスはステップ1001に戻る。
図16は、ジャーナルの容量を確認するプロセスの例示的な実施形態を示す流れ図である。このプロセスを使用して、ジャーナルマネージャ202は定期的にジャーナルエントリの数を減らし、ジャーナルボリューム内の記憶領域を解放する。
● ステップ1000:NASシステム100は、ジャーナルボリュームの空き領域が事前に指定した容量より小さいかどうかを確認する。小さい場合、プロセスはステップ1001に進む。それ以外の場合は、プロセスが終了する。
● ステップ1001:NASシステム100は、最も古いジャーナルレコードのシーケンス番号よりシーケンス番号が大きいスナップショットがあるかどうかを確認する。ある場合、プロセスはステップ1002に進む。それ以外の場合、プロセスはステップ1003に進む。
● ステップ1002:NASシステム100は、ステップ1001で検出されたスナップショットのシーケンス番号よりシーケンス番号が早いジャーナルエントリを削除する。削除されたエントリは、データイメージのリストアには使用しないので不要である。
● ステップ1003:NASシステム100は、ローカルファイルシステム210のスナップショットに最も古いジャーナルエントリを適用する。
● ステップ1004:NASシステム100は、ジャーナルボリュームの空き領域が事前に指定した容量を超えているかどうかを確認する。超えている場合は、プロセスが終了する。それ以外の場合、プロセスはステップ1001に戻る。
この例では、ジャーナルボリュームの残りの容量が事前に指定した容量を下回る場合に、ジャーナルマネージャ202がジャーナルエントリを適用して削除する。別の実施形態では、システムが事前に指定した日時より前に作成されたジャーナルエントリを適用して削除し、ジャーナルのサイズを縮小する。
リストアの手順
図12は、NASクライアント113上のユーザーまたは実行中のアプリケーションがNASシステム100に接続されたリストアダイレクタ224を使用してリカバリ時点を指定した場合に、スナップショットとジャーナルを使用してデータをリストアするプロセスを示す流れ図である。
● ステップ1100:NASシステム100は指定された時点より前の最新のスナップショットをリストアする。
● ステップ1101:NASシステム100はステップ1100でリストアされたスナップショットの日時から指定された時点までのジャーナル要求を古いものから順に再実行する。
図12は、NASクライアント113上のユーザーまたは実行中のアプリケーションがNASシステム100に接続されたリストアダイレクタ224を使用してリカバリ時点を指定した場合に、スナップショットとジャーナルを使用してデータをリストアするプロセスを示す流れ図である。
● ステップ1100:NASシステム100は指定された時点より前の最新のスナップショットをリストアする。
● ステップ1101:NASシステム100はステップ1100でリストアされたスナップショットの日時から指定された時点までのジャーナル要求を古いものから順に再実行する。
イメージの別のボリュームへのリストア
ファイルシステムイメージを元のファイルシステムボリューム207とは異なるボリュームにリストアする場合は、対象となるリストアボリュームのデバイス番号は元のボリュームのデバイス番号と同じではないので、ジャーナル内で指定されたファイルハンドルはリストアされたファイルシステムイメージに対して有効ではない。したがって、別のボリュームへのリストアは、ファイルハンドルとパスとのマッピング情報を保持することによって実現される。一般的なNFSサーバーは、このようなマッピング情報をデータベース内に保持している。しかし、いったんファイルハンドルが無効になると、ファイルハンドルのマッピング情報はデータベースから削除される。したがって、NASシステム100はマッピング情報を独自に記録する必要がある。
ファイルシステムイメージを元のファイルシステムボリューム207とは異なるボリュームにリストアする場合は、対象となるリストアボリュームのデバイス番号は元のボリュームのデバイス番号と同じではないので、ジャーナル内で指定されたファイルハンドルはリストアされたファイルシステムイメージに対して有効ではない。したがって、別のボリュームへのリストアは、ファイルハンドルとパスとのマッピング情報を保持することによって実現される。一般的なNFSサーバーは、このようなマッピング情報をデータベース内に保持している。しかし、いったんファイルハンドルが無効になると、ファイルハンドルのマッピング情報はデータベースから削除される。したがって、NASシステム100はマッピング情報を独自に記録する必要がある。
ファイルハンドルとパスとのマッピング
図13は、ファイルハンドル1201とパス1202とのマッピング情報1200の例を示している。
図13は、ファイルハンドル1201とパス1202とのマッピング情報1200の例を示している。
ファイルハンドルとパスとのマッピング情報の作成
図14は、ファイルハンドルとパスとのマッピング情報を作成するプロセスの例示的な実施形態を示す流れ図である。このプロセスは、図11に示すプロセスのステップ903で実行される。
● ステップ1300:NASシステム100は、新しい要求に対応する新しいジャーナルエントリを作成するときに、要求からファイルハンドルを取得する。
● ステップ1301:NASシステム100は、マッピングテーブル1200内にすでにこのファイルハンドルのエントリがあるかどうかを確認する。エントリがある場合は、プロセスがステップ1303に進む。それ以外の場合はステップ1302に進む。
● ステップ1302:NASシステム100は、NASシステム100が管理するデータベースからファイルハンドルに対応するパスを取得する。
● ステップ1303:NASシステム100はジャーナルエントリにシーケンス番号を割り当てる。
● ステップ1304:NASシステム100は、要求に対応する新しいジャーナルエントリを格納する。
図14は、ファイルハンドルとパスとのマッピング情報を作成するプロセスの例示的な実施形態を示す流れ図である。このプロセスは、図11に示すプロセスのステップ903で実行される。
● ステップ1300:NASシステム100は、新しい要求に対応する新しいジャーナルエントリを作成するときに、要求からファイルハンドルを取得する。
● ステップ1301:NASシステム100は、マッピングテーブル1200内にすでにこのファイルハンドルのエントリがあるかどうかを確認する。エントリがある場合は、プロセスがステップ1303に進む。それ以外の場合はステップ1302に進む。
● ステップ1302:NASシステム100は、NASシステム100が管理するデータベースからファイルハンドルに対応するパスを取得する。
● ステップ1303:NASシステム100はジャーナルエントリにシーケンス番号を割り当てる。
● ステップ1304:NASシステム100は、要求に対応する新しいジャーナルエントリを格納する。
リストア
図15は、データイメージを別のボリュームにリストアする場合にジャーナルエントリを再実行するための例示的な手順を示す流れ図である。このプロセスは、図12に示すプロセスのステップ1101で実行される。
● ステップ1400:NASシステム100は、再実行するジャーナルからファイルハンドルを取得する。
● ステップ1401:NASシステム100は、ファイルハンドルに対応するパスをマッピングテーブル1200から取得する。
● ステップ1402:NASシステム100は、リストアされたファイルシステムイメージ内のパスを検索し、パスに対応するファイルハンドルを取得する。
● ステップ1403:NASシステム100は、取得したファイルハンドルを使用して要求を再実行する。
図15は、データイメージを別のボリュームにリストアする場合にジャーナルエントリを再実行するための例示的な手順を示す流れ図である。このプロセスは、図12に示すプロセスのステップ1101で実行される。
● ステップ1400:NASシステム100は、再実行するジャーナルからファイルハンドルを取得する。
● ステップ1401:NASシステム100は、ファイルハンドルに対応するパスをマッピングテーブル1200から取得する。
● ステップ1402:NASシステム100は、リストアされたファイルシステムイメージ内のパスを検索し、パスに対応するファイルハンドルを取得する。
● ステップ1403:NASシステム100は、取得したファイルハンドルを使用して要求を再実行する。
図17は、本発明の方法の実施形態を実装できるコンピュータ/サーバーシステム1700の実施形態を示すブロック図である。システム1700には、コンピュータ/サーバープラットフォーム1701、周辺機器1702、ネットワークリソース1703が含まれる。
コンピュータプラットフォーム1701には、コンピュータプラットフォーム1701のさまざまな要素間で情報を伝達するためのデータバス1704またはその他の通信メカニズム、情報を処理し、その他の計算タスクや管理タスクを実行するための、バス1701に接続されたプロセッサ1705が含まれていてもよい。コンピュータプラットフォーム1701には、さまざまな情報とプロセッサ1705が実行する命令を格納するための、バス1704に接続されたランダムアクセスメモリ(RAM:random access memory)またはその他の動的記憶装置などの揮発性ストレージ1706も含まれる。揮発性ストレージ1706は、プロセッサ1705が命令を実行する間に使用する一時変数またはその他の中間的な情報を格納するために利用できる。コンピュータプラットフォーム1701には、さらに基本入出力システム(BIOS:basic input−output system)やさまざまなシステム設定パラメータなど、静的な情報とプロセッサ1705が実行する命令を格納するための、バス1704に接続された読み取り専用のメモリ(ROMまたはEPROM)1707またはその他の静的記憶装置が含まれていてもよい。情報や命令を格納するためのバス1701に接続された磁気ディスク、光ディスク、ソリッドステートフラッシュメモリ素子などの固定記憶装置1708も提供されている。
コンピュータプラットフォーム1701は、コンピュータプラットフォーム1701のシステム管理者またはユーザーに対して情報を表示するための陰極線管(CRT:cathode ray tube)、プラズマディスプレイ、または液晶ディスプレイ(LCD:liquid crystal display)などのディスプレイ1709にバス1704を経由して接続されてもよい。情報およびコマンドの選択をプロセッサ1705に伝えるための英数字またはその他のキーを含む入力装置1710がバス1701に接続されている。別のタイプのユーザー入力装置として、方向情報やコマンド選択をプロセッサ1704に伝えるため、およびディスプレイ1709上のカーソルの動きを制御するためのマウス、トラックボール、カーソル方向キー(cursor direction keys)などのカーソル制御装置1711がある。この入力装置は、一般的に2本の軸、すなわち第1の軸(たとえばx)と第2の軸(たとえばy)上の2つの自由度を備えており、入力装置はこれを使用して平面内の位置を指定できる。
外付けのストレージデバイス1712は、バス1704を経由してコンピュータプラットフォーム1701に接続され、コンピュータプラットフォーム1701に追加の、または取り外し可能なストレージ容量を提供してもよい。コンピュータシステム1700の実施形態では、外付けの取り外し可能な記憶装置1712を使用して、他のコンピュータシステムとの間でデータを容易に交換してもよい。
本発明は、本明細書で説明する技術を実装するためのコンピュータシステム1700の使い方に関連する。1つの実施形態では、本発明のシステムはコンピュータプラットフォーム1701などのマシン上に常駐してもよい。本発明の1つの実施形態により、本明細書で説明する技術は、揮発性メモリ1706に格納された1つまたは複数の命令シーケンスをプロセッサ1705が実行するのを受けて、コンピュータシステム1700によって実行される。こうした命令は、固定記憶装置1708などの別のコンピュータ可読媒体から揮発性メモリ1706に読み込まれてもよい。揮発性メモリ1706に格納された命令シーケンスを実行する結果として、プロセッサ1705は本明細書で説明するプロセスのステップを実行する。代わりの実施形態では、ソフトウェア命令の代わりに配線回路を使用して、あるいはソフトウェア命令と配線回路を組み合わせて本発明を実装してもよい。このように、本発明の実施形態は特定のハードウェア回路およびソフトウェアの組合せに限定はされない。
「コンピュータ可読媒体」という用語は、本明細書で使用する限り、実行する命令をプロセッサ1705に提供するステップに関与する任意の媒体を表す。コンピュータ可読媒体は、本明細書で説明する方法および/または技術のいずれかを実装するための命令を搬送できるマシン可読媒体の1つの例にすぎない。こうした媒体は、不揮発性媒体、揮発性媒体、および送信媒体を含むがこれに限定はされない多くの形をとることができる。不揮発性媒体には、たとえば、記憶装置1708などの光ディスクまたは磁気ディスクが含まれる。揮発性媒体には、揮発性ストレージ1706などの動的メモリが含まれる。送信媒体には、データバス1704を備える配線を含む同軸ケーブル、銅線、および光ファイバが含まれる。送信媒体は、無線や赤外線のデータ通信で生成されるような音波または光波の形をとることもできる。
一般的な形のコンピュータ可読媒体には、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他の任意の磁気媒体、CD−ROM、または他の任意の光媒体、パンチカード、紙テープ、他の任意のせん孔パターンを使用した物理媒体、RAM、PROM、EPROM、FLASH−EPROM、フラッシュドライブ、メモリカード、他の任意のメモリチップまたはカートリッジ、本明細書の以下の部分で説明する搬送波、またはコンピュータ可読の他の任意の媒体が含まれる。
さまざまな形のコンピュータ可読媒体は、1つまたは複数の命令シーケンスを実行するプロセッサに搬送するステップに関与してもよい。たとえば、まず磁気ディスクからリモートコンピュータに命令を搬送してもよい。代替的に、リモートコンピュータはその動的メモリにモデムを使用して電話回線経由で命令をロードし、送信してもよい。コンピュータシステム1700のローカルモデムは、電話回線上のデータを受信し、赤外線送信機を使用してデータを赤外線信号に変換することができる。赤外線探知器は、赤外線信号として搬送されたデータを受信でき、適切な回路によってデータをデータバス1704上に配置できる。バス1704は、データを揮発性ストレージ1706に搬送し、ここからプロセッサ1705が命令を取得して実行する。揮発性メモリ1706で受信した命令は、プロセッサ1705で実行される前または後に、任意選択で固定記憶装置1708に格納してもよい。命令は、当業者に周知のさまざまなネットワークデータ通信プロトコルを使用してインターネット経由でコンピュータプラットフォーム1701にダウンロードしてもよい。
コンピュータプラットフォーム1701には、データバス1704に接続されたネットワークインターフェイスカード1713などの通信インターフェイスも含まれる。通信インターフェイス1713は、ローカルネットワーク1715に接続されたネットワークリンク1714に接続する双方向のデータ通信を提供する。たとえば、通信インターフェイス1713は、対応するタイプの電話回線へのデータ通信接続を提供するISDN(integrated services digital network)カードまたはモデムでもよい。別の例として、通信インターフェイス1713は、互換性のあるLANへのデータ通信接続を提供するLAN NIC(local area network interface card:ローカルエリアネットワークインターフェイスカード)でもよい。よく知られている802.11a、802.11b、802.11g、およびBluetoothなどの無線リンクを使用してネットワークを実装してもよい。こうした任意の実装において、通信インターフェイス1713はさまざまな情報を表すデジタルデータストリームを搬送する電気信号、電磁気信号、または光信号を送信および受信する。
ネットワークリンク1713は、通常は1つまたは複数のネットワークを経由した他のネットワークリソースへのデータ通信を提供する。たとえば、ネットワークリンク1714は、ローカルネットワーク1715を経由してホストコンピュータ1716またはネットワークストレージ/サーバー1722への接続を提供できる。付加的または代替的に、ネットワークリンク1713は、ゲートウェイ/ファイアウォール1717を経由してワイドエリアネットワーク(WAN:wide−area network)またはグローバルネットワーク1718(インターネットなど)に接続してもよい。このように、コンピュータプラットフォーム1701は、インターネット1718上の任意の場所にあるネットワークリソース(リモートネットワークストレージ/サーバー1719など)にアクセスできる。一方で、コンピュータプラットフォーム1701はローカルエリアネットワーク1715(LAN)および/またはインターネット1718上の任意の場所にあるクライアントからもアクセスできる。ネットワーククライアント1720および1721は、それ自体プラットフォーム1701と同様のコンピュータプラットフォームに基づいて実装してもよい。
ローカルネットワーク1715とインターネット1718は、いずれもデジタルデータストリームを搬送する電気信号、電磁気信号、または光信号を使用する。コンピュータプラットフォーム1701との間のデジタルデータを搬送するさまざまなネットワークを経由する信号およびネットワークリンク1714上の通信インターフェイス1713を経由する信号は、情報を送信する搬送波の例示的な形である。
コンピュータプラットフォーム1701は、インターネット1718やLAN 1715を含むさまざまなネットワーク(1つまたは複数)、ネットワークリンク1714、および通信インターフェイス1713を経由してプログラムコードを含むメッセージやデータを送信および受信できる。インターネットの例では、システム1701がネットワークサーバーとして機能する場合に、クライアント1720および/または1721上で動作するアプリケーションプログラムに必要なコードまたはデータをインターネット1718、ゲートウェイ/ファイアウォール1717、ローカルエリアネットワーク(LAN)1715、および通信インターフェイス1713を経由して送信してもよい。同様にして、他のネットワークリソースからコードを受信してもよい。
受信したコードはプロセッサ1705で受信したときに実行されてもよい。かつ/または固定記憶装置1708または揮発性記憶装置1706、あるいは、その他の不揮発性記憶装置に格納して後で実行してもよい。このように、コンピュータシステム1701はアプリケーションコードを搬送波の形で取得することもできる。最後に、本明細書で説明するプロセスおよび技術は、本質的にいかなる特定のデバイスにも関連しておらず、任意の適切なコンポーネントの組合せによって実装できることを理解されたい。さらに、本明細書で説明する内容により、さまざまな汎用デバイスを使用してもよい。また、専用の装置を構成して本明細書で説明する方法の手順を実行するのが有利であることは言うまでもない。本発明について特定の例に関連して説明してきたが、こうした説明はあらゆる点で例示的なものであり、限定的なものではないとものとする。当業者には言うまでもないが、ハードウェア、ソフトウェア、およびファームウェアのさまざまな組合せが本発明の実施に適している。たとえば、前述のソフトウェアは、アセンブラ、C/C++、perl、シェル、PHP、Java(登録商標)など、さまざまなプログラミング言語またはスクリプト言語の形で実装できる。さらに、本発明のその他の実装は、本明細書に開示する本発明の詳細と実施に関する考察から当業者には明らかになるであろう。前述の実施形態のさまざまな態様および/またはコンポーネントは、CDP機能を備えるコンピュータ制御のストレージシステムにおいて、単独でも任意に組み合わせても使用できる。詳細および実施例は例示的なものにすぎないと見なされ、本発明の真の範囲と精神は添付の請求項に示されるものとする。
Claims (34)
- a.ファイルシステムボリューム、スナップショットボリューム、およびジャーナルボリュームを備えるNASシステムと、
b.前記NASシステムに接続され、前記NASシステムに要求を送信するように動作できるNASクライアントとを備えており、前記NASシステムは、
i.データを前記ファイルシステムボリュームに格納し、
ii.前記ファイルシステムボリューム内の前記データのスナップショットイメージを前記スナップショットボリュームに格納し、
iii.前記要求に関する情報を前記ジャーナルボリュームに格納し、
iv.前記NASクライアントから発行されたリストアコマンドに応答して、前記ジャーナルボリュームのレコードを前記スナップショットボリュームの内容に適用するように動作できること
を特徴とするコンピュータ制御によるデータストレージシステム。 - 前記要求はNFS要求であることを特徴とする請求項1に記載のコンピュータ制御によるデータストレージシステム。
- 前記NASシステムは、前記データの変更を含む要求のみに関する情報を前記ジャーナルボリュームに格納するように動作できることを特徴とする請求項1に記載のコンピュータ制御によるデータストレージシステム。
- 前記ジャーナルボリュームはジャーナルヘッダとジャーナルデータを備えるジャーナルレコードを備えることを特徴とする請求項1に記載のコンピュータ制御によるデータストレージシステム。
- 前記ファイルシステムボリュームによって格納されたデータのファイルハンドルとパスとのマッピングを格納するように動作できるファイルハンドルストアをさらに備えることを特徴とする請求項1に記載のコンピュータ制御によるデータストレージシステム。
- 前記NASシステムは、さらに前記要求から前記ファイルハンドルを取得し、前記取得されたファイルハンドルが前記ファイルハンドルストアに格納されているかどうかを確認し、格納されていない場合は前記パスを取得して前記ファイルハンドルと前記パスを前記ファイルハンドルストアに格納するように動作できることを特徴とする請求項5に記載のコンピュータ制御によるデータストレージシステム。
- 前記ファイルシステムボリューム内の前記データを新しいボリュームにリストアするときに、前記NASシステムは、さらに前記ファイルハンドルストアの前記内容を使用して前記新しいボリュームのファイルハンドル情報を生成するように動作できることを特徴とする請求項5に記載のコンピュータ制御によるデータストレージシステム。
- 前記ファイルシステムボリューム内の前記データを新しいボリュームにリストアするときに、前記NASシステムは、さらに、
a.前記ジャーナルボリュームに格納された前記要求の情報からファイルハンドルを取得し、
b.前記ファイルハンドルストアから前記ファイルハンドルに対応するパスを取得し、
c.リストアされたファイルシステム内で前記パスのルックアップを実行し、
d.前記ファイルハンドルに関する要求を再実行するように動作できることを特徴とする請求項7に記載のコンピュータ制御によるデータストレージシステム。 - 前記NASシステムは、さらに前記ジャーナルボリュームに格納された個々の要求情報にシーケンス番号を割り当てるように動作できることを特徴とする請求項1に記載のコンピュータ制御によるデータストレージシステム。
- 前記NASシステムは、さらに前記ジャーナルボリュームの空き容量を確認し、前記確認されたジャーナルボリュームの空き容量が事前に指定されたしきい値を下回る場合に、少なくともいくつかのジャーナルレコードを削除するように動作できることを特徴とする請求項1に記載のコンピュータ制御によるデータストレージシステム。
- 前記NASシステムは、さらに前記スナップショットボリュームの空き容量を確認し、前記確認されたスナップショットボリュームの空き容量が事前に指定されたしきい値を下回る場合に、少なくともいくつかのスナップショットを削除するように動作できることを特徴とする請求項1に記載のコンピュータ制御によるデータストレージシステム。
- a.ジャーナルグループを作成するステップを備えており、前記ジャーナルグループはNASに関連付けられたファイルシステムとジャーナルボリュームとを備えることと、
b.前記ファイルシステムに送信されたNFS要求をジャーナルに記録するステップを備えており、ジャーナルに記録するステップはジャーナルに記録された個々のNFS要求に第1のシーケンス番号を割り当てるステップを備えることと、
c.前記ファイルシステム内のデータのスナップショットを作成するステップを備えており、スナップショットを作成するステップは前記スナップショットに第2のシーケンス番号を割り当てるステップを備えることと
を特徴とする方法。 - a.リストアコマンドを受信するステップと、
b.前記受信したリストアコマンドに応答して、前記ジャーナルに記録されたNFS要求の少なくとも一部を前記スナップショットに適用してデータイメージをリストアするステップと
をさらに備えることを特徴とする請求項12に記載の方法。 - 前記リストアコマンドは前記リストアデータの日時を指定することを特徴とする請求項12に記載の方法。
- 前記ジャーナルに記録されたNFS要求には前記データの変更が含まれることを特徴とする請求項12に記載の方法。
- 前記NFS要求はジャーナルヘッダとジャーナルデータを備えるジャーナルレコードを格納するジャーナルボリュームに記録されることを特徴とする請求項12に記載の方法。
- ジャーナルボリュームの空き容量を確認し、前記確認されたジャーナルボリュームの空き容量が事前に指定されたしきい値を下回る場合に、少なくともいくつかのジャーナルレコードを削除するステップをさらに備えることを特徴とする請求項16に記載の方法。
- 前記ファイルシステムによって格納されたデータのファイルハンドルとパスとのマッピングを作成するステップをさらに備えることを特徴とする請求項13に記載の方法。
- i.前記NFS要求から前記ファイルハンドルを取得するステップと、
ii.前記取得されたファイルハンドルが前記ファイルハンドルストアに格納されているかどうかを確認し、格納されていない場合は前記パスを取得して前記ファイルハンドルと前記パスとを格納するステップと
をさらに備えることを特徴とする請求項18に記載の方法。 - 適用するステップは、前記ファイルハンドルとパスとのマッピングを使用して前記ファイルシステムのリストア先となる新しいボリュームのファイルハンドル情報を生成するステップを備えることを特徴とする請求項18に記載の方法。
- a.前記ジャーナルに記録されたNFS要求からファイルハンドルを取得するステップと、
b.前記マッピングから前記ファイルハンドルに対応するパスを取得するステップと、
c.リストアされたファイルシステム内で前記パスのルックアップを実行するステップと、
d.前記ファイルハンドルに関する要求を再実行するステップと
をさらに備えることを特徴とする請求項18に記載の方法。 - 前記NASシステムは、さらに前記ジャーナル空き容量を確認し、前記確認されたジャーナル空き容量が事前に指定されたしきい値を下回る場合に、少なくともいくつかのジャーナルレコードを削除するように動作できることを特徴とする請求項18に記載の方法。
- a.前記スナップショットをスナップショットボリュームに格納するステップと、
b.前記スナップショットボリュームの空き容量を確認するステップと、
c.前記確認されたスナップショットボリュームの空き容量が事前に指定されたしきい値を下回る場合に、少なくともいくつかの格納されたスナップショットを削除するステップと
をさらに備えることを特徴とする請求項18に記載の方法。 - a.ジャーナルグループを作成するコードを備えており、前記ジャーナルグループはNASおよびジャーナルボリュームに関連付けられたファイルシステムを備えることと、
b.前記ファイルシステムに送信されたNFS要求をジャーナルに記録するコードを備えており、ジャーナルに記録することはジャーナルに記録された個々のNFS要求に第1のシーケンス番号を割り当てるコードを備えることと、
c.前記ファイルシステム内のデータのスナップショットを作成するコードを備えており、スナップショットを作成することは前記スナップショットに第2のシーケンス番号を割り当てるコードを備えることと
を特徴とするコンピュータ可読媒体に組み込まれたコンピュータプログラミング製品。 - a.リストアコマンドを受信するコードと、
b.前記受信したリストアコマンドに応答して、前記ジャーナルに記録されたNFS要求の少なくとも一部を前記スナップショットに適用してデータイメージをリストアするコードと
をさらに備えることを特徴とする請求項24に記載のコンピュータプログラミング製品。 - 前記リストアコマンドは前記リストアデータの日時を指定することを特徴とする請求項24に記載のコンピュータプログラミング製品。
- 前記ジャーナルに記録されたNFS要求には前記データの変更が含まれることを特徴とする請求項24に記載のコンピュータプログラミング製品。
- 前記NFS要求はジャーナルヘッダとジャーナルデータを備えるジャーナルレコードを格納するジャーナルボリュームに記録されることを特徴とする請求項24に記載のコンピュータプログラミング製品。
- ジャーナルボリュームの空き容量を確認し、前記確認されたジャーナルボリュームの空き容量が事前に指定されたしきい値を下回る場合に、少なくともいくつかのジャーナルレコードを削除するコードをさらに備えることを特徴とする請求項24に記載のコンピュータプログラミング製品。
- 前記ファイルシステムによって格納されたデータのファイルハンドルとパスとのマッピングを作成するコードをさらに備えることを特徴とする請求項24に記載のコンピュータプログラミング製品。
- i.前記NFS要求から前記ファイルハンドルを取得するコードと、
ii.前記取得されたファイルハンドルが前記ファイルハンドルストアに格納されているかどうかを確認し、格納されていない場合は前記パスを取得して前記ファイルハンドルと前記パスを格納するコードと
をさらに備えることを特徴とする請求項24に記載のコンピュータプログラミング製品。 - 適用することは、ファイルハンドルとパスとのマッピングを使用して前記ファイルシステムのリストア先となる新しいボリュームのファイルハンドル情報を生成することを備えることを特徴とする請求項24に記載のコンピュータプログラミング製品。
- a.前記ジャーナルに記録されたNFS要求からファイルハンドルを取得するコードと、
b.前記マッピングから前記ファイルハンドルに対応するパスを取得するコードと、
c.リストアされたファイルシステム内で前記パスのルックアップを実行するコードと、
d.前記ファイルハンドルに関する要求を再実行するコードと
をさらに備えることを特徴とする請求項24に記載のコンピュータプログラミング製品。 - a.前記スナップショットをスナップショットボリュームに格納するコードと、
b.前記スナップショットボリュームの空き容量を確認し、前記確認されたスナップショットボリュームの空き容量が事前に指定されたしきい値を下回る場合に、少なくともいくつかの格納されたスナップショットを削除するコードと
をさらに備えることを特徴とする請求項24に記載のコンピュータプログラミング製品。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/495,276 US20080027998A1 (en) | 2006-07-27 | 2006-07-27 | Method and apparatus of continuous data protection for NAS |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008033912A true JP2008033912A (ja) | 2008-02-14 |
Family
ID=38987649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007167401A Pending JP2008033912A (ja) | 2006-07-27 | 2007-06-26 | Nas向けのcdpの方法および装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080027998A1 (ja) |
JP (1) | JP2008033912A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009276965A (ja) * | 2008-05-14 | 2009-11-26 | Buffalo Inc | 外部記憶装置へのアクセスを制御する制御装置、制御装置の外部に接続される外部記憶装置、並びに、これらの制御方法、コンピュータプログラム、および、記録媒体 |
JP2011054153A (ja) * | 2009-09-01 | 2011-03-17 | Lsi Corp | アロケートオンライトのスナップショットを用いて連続データ保護を実現するための方法 |
JP2015219708A (ja) * | 2014-05-16 | 2015-12-07 | 日本電気株式会社 | ストレージシステム、ストレージ方法、及び、プログラム |
JP2017068729A (ja) * | 2015-10-01 | 2017-04-06 | 日本電気株式会社 | ファイル記憶装置、情報処理方法、プログラム、ファイル記憶システム |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7536529B1 (en) | 2005-06-10 | 2009-05-19 | American Megatrends, Inc. | Method, system, apparatus, and computer-readable medium for provisioning space in a data storage system |
US8959125B2 (en) * | 2005-07-01 | 2015-02-17 | 226008 Ontario Inc. | File system having inverted hierarchical structure |
US7873683B2 (en) * | 2005-07-01 | 2011-01-18 | Qnx Software Systems Gmbh & Co. Kg | File system having transaction record coalescing |
US7970803B2 (en) | 2005-07-01 | 2011-06-28 | Qnx Software Systems Gmbh & Co. Kg | Optimized startup verification of file system integrity |
US8566503B2 (en) * | 2006-08-25 | 2013-10-22 | Qnx Software Systems Limited | Multimedia filesystem having unified representation of content on diverse multimedia devices |
US20080059510A1 (en) * | 2006-08-31 | 2008-03-06 | Daniel Cardamore | Multimedia system framework having layer consolidating access to multiple media devices |
US20080147747A1 (en) * | 2006-12-14 | 2008-06-19 | Dan Cardamore | Media system having synchronization with preemptive prioritization of synchronization order |
US8006061B1 (en) | 2007-04-13 | 2011-08-23 | American Megatrends, Inc. | Data migration between multiple tiers in a storage system using pivot tables |
US8370597B1 (en) | 2007-04-13 | 2013-02-05 | American Megatrends, Inc. | Data migration between multiple tiers in a storage system using age and frequency statistics |
US9495370B1 (en) * | 2007-07-19 | 2016-11-15 | American Megatrends, Inc. | Data recovery point review in a continuous data protection system |
US7836107B2 (en) * | 2007-12-20 | 2010-11-16 | Microsoft Corporation | Disk seek optimized file system |
US8706694B2 (en) * | 2008-07-15 | 2014-04-22 | American Megatrends, Inc. | Continuous data protection of files stored on a remote storage device |
US8712968B1 (en) * | 2009-07-15 | 2014-04-29 | Symantec Corporation | Systems and methods for restoring images |
US9705730B1 (en) | 2013-05-07 | 2017-07-11 | Axcient, Inc. | Cloud storage using Merkle trees |
US8954544B2 (en) | 2010-09-30 | 2015-02-10 | Axcient, Inc. | Cloud-based virtual machines and offices |
US8589350B1 (en) | 2012-04-02 | 2013-11-19 | Axcient, Inc. | Systems, methods, and media for synthesizing views of file system backups |
US8924360B1 (en) * | 2010-09-30 | 2014-12-30 | Axcient, Inc. | Systems and methods for restoring a file |
US9235474B1 (en) | 2011-02-17 | 2016-01-12 | Axcient, Inc. | Systems and methods for maintaining a virtual failover volume of a target computing system |
US10284437B2 (en) | 2010-09-30 | 2019-05-07 | Efolder, Inc. | Cloud-based virtual machines and offices |
US8458134B2 (en) | 2011-03-30 | 2013-06-04 | International Business Machines Corporation | Near continuous space-efficient data protection |
US20130304775A1 (en) * | 2012-05-11 | 2013-11-14 | Xyratex Technology Limited | Storage unit for high performance computing system, storage network and methods |
US10085140B2 (en) * | 2012-07-13 | 2018-09-25 | International Business Machines Corporation | Preventing mobile communication device data loss |
US9785647B1 (en) | 2012-10-02 | 2017-10-10 | Axcient, Inc. | File system virtualization |
US9852140B1 (en) | 2012-11-07 | 2017-12-26 | Axcient, Inc. | Efficient file replication |
US9411866B2 (en) * | 2012-12-19 | 2016-08-09 | Sap Global Ip Group, Sap Ag | Replication mechanisms for database environments |
US9397907B1 (en) | 2013-03-07 | 2016-07-19 | Axcient, Inc. | Protection status determinations for computing devices |
US9292153B1 (en) | 2013-03-07 | 2016-03-22 | Axcient, Inc. | Systems and methods for providing efficient and focused visualization of data |
US9665307B1 (en) * | 2013-12-19 | 2017-05-30 | EMC IP Holding Company LLC | Incremental continuous data protection |
US10452486B2 (en) | 2014-01-30 | 2019-10-22 | Hewlett Packard Enterprise Development Lp | Selecting a backup process for a file system |
TWI626547B (zh) * | 2014-03-03 | 2018-06-11 | 國立清華大學 | 於分散式資料庫中將系統狀態一致地還原至欲還原時間點之方法及系統 |
JP6378847B2 (ja) * | 2015-02-03 | 2018-08-22 | 華為技術有限公司Huawei Technologies Co.,Ltd. | ネットワーク・ファイル・システムにおいてi/o要求を処理するための方法及び装置 |
CN113254394B (zh) * | 2021-05-14 | 2023-10-31 | 平安科技(深圳)有限公司 | 一种快照处理方法、系统、设备及存储介质 |
WO2022248050A1 (en) * | 2021-05-27 | 2022-12-01 | Huawei Technologies Co., Ltd. | Memory controller for shared memory access and method for use in memory controller |
WO2022258135A1 (en) * | 2021-06-07 | 2022-12-15 | Huawei Technologies Co., Ltd. | Memory controller for shared memory access and method for use in memory controller |
US12061522B2 (en) * | 2022-07-25 | 2024-08-13 | Dell Product L.P. | Method and system for grouping data slices based on data change rate for data slice backup generation |
US12007845B2 (en) | 2022-07-25 | 2024-06-11 | Dell Products L.P. | Method and system for managing data slice backups based on grouping prioritization |
US12093135B2 (en) * | 2022-07-25 | 2024-09-17 | Dell Products L.P. | Method and system for grouping data slices based on data file types for data slice backup generation |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7406473B1 (en) * | 2002-01-30 | 2008-07-29 | Red Hat, Inc. | Distributed file system using disk servers, lock servers and file servers |
US6981114B1 (en) * | 2002-10-16 | 2005-12-27 | Veritas Operating Corporation | Snapshot reconstruction from an existing snapshot and one or more modification logs |
US20050015416A1 (en) * | 2003-07-16 | 2005-01-20 | Hitachi, Ltd. | Method and apparatus for data recovery using storage based journaling |
US20050022213A1 (en) * | 2003-07-25 | 2005-01-27 | Hitachi, Ltd. | Method and apparatus for synchronizing applications for data recovery using storage based journaling |
US7111136B2 (en) * | 2003-06-26 | 2006-09-19 | Hitachi, Ltd. | Method and apparatus for backup and recovery system using storage based journaling |
US7383463B2 (en) * | 2004-02-04 | 2008-06-03 | Emc Corporation | Internet protocol based disaster recovery of a server |
US8260753B2 (en) * | 2004-12-31 | 2012-09-04 | Emc Corporation | Backup information management |
-
2006
- 2006-07-27 US US11/495,276 patent/US20080027998A1/en not_active Abandoned
-
2007
- 2007-06-26 JP JP2007167401A patent/JP2008033912A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009276965A (ja) * | 2008-05-14 | 2009-11-26 | Buffalo Inc | 外部記憶装置へのアクセスを制御する制御装置、制御装置の外部に接続される外部記憶装置、並びに、これらの制御方法、コンピュータプログラム、および、記録媒体 |
JP2011054153A (ja) * | 2009-09-01 | 2011-03-17 | Lsi Corp | アロケートオンライトのスナップショットを用いて連続データ保護を実現するための方法 |
JP2015219708A (ja) * | 2014-05-16 | 2015-12-07 | 日本電気株式会社 | ストレージシステム、ストレージ方法、及び、プログラム |
JP2017068729A (ja) * | 2015-10-01 | 2017-04-06 | 日本電気株式会社 | ファイル記憶装置、情報処理方法、プログラム、ファイル記憶システム |
Also Published As
Publication number | Publication date |
---|---|
US20080027998A1 (en) | 2008-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008033912A (ja) | Nas向けのcdpの方法および装置 | |
US7974950B2 (en) | Applying a policy criteria to files in a backup image | |
JP4456909B2 (ja) | バックアップ方法、ストレージシステム及びそのプログラム | |
US6714952B2 (en) | Method for backup and restore of a multi-lingual network file server | |
US8499191B2 (en) | Failure recovery method for information processing service and virtual machine image generation apparatus | |
US7596713B2 (en) | Fast backup storage and fast recovery of data (FBSRD) | |
US7647360B2 (en) | System and method for managing a consistency among volumes in a continuous data protection environment | |
TWI258663B (en) | Writable file system snapshot with ditto address feature | |
US10146631B1 (en) | Incremental forever backups for exchange | |
US8135677B2 (en) | File management system and method | |
US7870353B2 (en) | Copying storage units and related metadata to storage | |
US6857053B2 (en) | Method, system, and program for backing up objects by creating groups of objects | |
US6826666B2 (en) | Method and system for transporting data content on a storage area network | |
US6820180B2 (en) | Apparatus and method of cascading backup logical volume mirrors | |
US8538924B2 (en) | Computer system and data access control method for recalling the stubbed file on snapshot | |
US20040078641A1 (en) | Operating system-independent file restore from disk image | |
US7707165B1 (en) | System and method for managing data versions in a file system | |
US20070294310A1 (en) | Method and apparatus for storing and recovering fixed content | |
JP2007226347A (ja) | 計算機システム、計算機システムの管理装置、及びデータのリカバリー管理方法 | |
JP2007272874A (ja) | クラスタ化ファイルシステムにおいてデータのバックアップを取る方法 | |
JP2006146904A (ja) | ストレージシステムでオブジェクトレベルのスナップショットを生成するシステムと方法 | |
JP2009519522A (ja) | データ処理システム内でバックアップ・セットを生成するためのコンピュータ・プログラム、システム、および方法(特定の時点へのバックアップ・セットの生成) | |
JP2007018399A (ja) | 条件別スナップショット取得方法及びシステム | |
JP2007183913A (ja) | ファイルシステムのデータを複製する装置と方法 | |
US7290100B2 (en) | Computer system for managing data transfer between storage sub-systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090219 |