JP2009098808A - データ更新履歴格納装置及びデータ更新履歴格納方法 - Google Patents

データ更新履歴格納装置及びデータ更新履歴格納方法 Download PDF

Info

Publication number
JP2009098808A
JP2009098808A JP2007268284A JP2007268284A JP2009098808A JP 2009098808 A JP2009098808 A JP 2009098808A JP 2007268284 A JP2007268284 A JP 2007268284A JP 2007268284 A JP2007268284 A JP 2007268284A JP 2009098808 A JP2009098808 A JP 2009098808A
Authority
JP
Japan
Prior art keywords
data
update
address
stored
area
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.)
Granted
Application number
JP2007268284A
Other languages
English (en)
Other versions
JP5046845B2 (ja
Inventor
Osamu Takeuchi
理 竹内
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 JP2007268284A priority Critical patent/JP5046845B2/ja
Priority to US11/972,647 priority patent/US7934067B2/en
Publication of JP2009098808A publication Critical patent/JP2009098808A/ja
Application granted granted Critical
Publication of JP5046845B2 publication Critical patent/JP5046845B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Abstract

【課題】既存ファイルシステムのソースコードの改変をせずに、既存のファイルシステムを用いてデータ更新履歴を格納するストレージ装置を提供する。
【解決手段】メモリに格納されるプログラムからI/O命令を発行し、任意の更新データを格納するバッファアドレスと対応するデータ領域の任意のアドレスに格納しようとすると、ページ管理部内の任意の更新データに設定された任意のアクセス権限をリード可能に変更するI/O命令捕捉手段と、任意のアクセス権限をリード可能に変更すると、ページ例外通知を発行し、アドレス管理部内で任意の更新データを格納するバッファアドレスからデータ領域のアドレスを取得して、更新データと更新データの更新履歴と、を更新キューに格納するページ例外捕捉手段と、を有することとした。
【選択図】図4

Description

本発明はデータ更新履歴を格納する装置、特に、ファイルシステムの指示により行うデータ更新の履歴を格納する仮想計算機モニタを備えたストレージ装置に関する。
従来、既存のファイルシステムの指示に基づいてデータ更新の履歴を格納するデータ更新履歴格納装置の方法としては、非特許文献1に記載されている方法が知られている。
図13は、非特許文献1に記載されたデータ更新履歴格納装置1300の方法の概要である。従来の方法では、ファイルシステム102´´に含まれるファイル手段(ファイル生成手段、ファイル削除手段、ファイル追記手段などを含む)111´´が、主メモリ上のページ領域内に格納されるバッファデータを更新することでデータ更新処理が開始する。なお、ページ領域とはバッファプール121´´の格納領域を分割した領域をいう。また、バッファデータとは最終的にはデータ領域内に保存されるデータであって、バッファプール121´´に一時的に格納されるデータをいう。
そして、ファイルシステム102´´に含まれるファイル手段111´´が、ページの更新の宣言やトランザクションのコミットを宣言することで、ジャーナリングライブラリ201に含まれるページ登録手段211やトランザクション制御手段212に対して関数呼び出しを発行し、ストレージ部105´´内のデータ更新を開始する。
ジャーナリングライブラリ201はページ更新登録手段211、トランザクション制御手段212、ログ領域書き込み手段115´´を備える。
ページ更新登録手段211は、バッファプール121´´内のバッファデータの更新宣言をファイル手段111´´から受け付けると、更新すべきデータ領域126´´内のブロック番号(図中、blknoと表記)と、バッファプール121´´内のバッファデータを更新した更新データ(図中、dataと表記)と、を更新キュー125´´に登録する。
また、トランザクション制御手段212は、ファイルシステム102´´が行ったバッファプール121´´のバッファデータの更新トランザクションのコミット宣言を受け付けると、トランザクションの終了時を確定するコミットエントリ(図中、commitと表記)を更新キュー125´´に登録する。
ログ領域書き込み手段115´´は、更新キュー125´´に登録した一連の更新履歴125´´A…125´´Nをストレージ部105´´内のログ領域127´´に格納する。ストレージ部105´´はログ領域127´´に格納された更新履歴125´´Aのうち更新データを、データ領域126´´内の該当するブロック番号にコピーして、データ領域126´´内のデータを更新する。
このようなデータ更新処理を行うことで、ストレージ部105´´のデータ領域126´´には、常にファイルシステム102´´が行ったデータ更新が順番に反映される。また、上記のように、ログ領域127´´内に保存される更新データをデータ領域126´´にコピー中に、万一ファイルシステム102´´やジャーナリングライブラリ201がクラッシュしても、更新履歴125´´Aがログ領域127´´に残っているため、データ領域126´´内のデータを容易に修復できる。
Andy Hisgen, et. al., "New-Value Logging in the Echo Replicated File System", Research Report 104, Systems Research Center, Digital Equipment Corporation.
しかしながら、更新履歴をストレージのログ領域に格納するためには、既存のファイルシステムのファイル手段が、ページ更新宣言やトランザクションのコミット宣言を行うための関数を呼び出す必要があった。その結果、既存のファイルシステムのソースコードを改変しなければならず、開発コストが大きくなるという課題があった。
本発明では、既存のファイルシステムのソースコードを改変することなく、既存のファイルシステムの指示により更新履歴を格納し、かつ、データの更新を行えるデータ更新履歴格納装置及びデータ更新履歴格納方法を提案する。
上記課題の解決を行うために、本発明では、更新データを格納するデータ更新履歴格納装置において、更新データを一時的に格納するバッファプールと、バッファプールに格納される更新データのバッファアドレスにアクセスする権限をバッファアドレスごとに設定するページ管理部と、更新データを格納するバッファプールのバッファアドレスと、更新データを格納するデータ領域のアドレスとの対応を管理するアドレス管理部と、メモリに格納されるプログラムからI/O命令を発行し、任意の更新データを格納するバッファアドレスと対応するデータ領域の任意のアドレスに格納しようとすると、ページ管理部内の任意の更新データに設定された任意のアクセス権限をリード可能に変更するI/O命令捕捉手段と、任意のアクセス権限をリード可能に変更すると、ページ例外通知を発行し、アドレス管理部内で任意の更新データを格納するバッファアドレスからデータ領域のアドレスを取得して、更新データと更新データの更新履歴と、を更新キューに格納するページ例外捕捉手段と、を有することを特徴とする。
この結果、バッファプールに更新データが格納すると、データ更新履歴格納装置内のプログラムに基づいて、既存のファイルシステムのソースコードを改変することなく、データ領域に更新データが格納される。
また、更新データを格納するデータ更新履歴格納装置のデータ更新履歴格納方法において、更新データをバッファプールに一時的に格納するステップと、バッファプールに格納される更新データのバッファアドレスにアクセスする権限をバッファアドレスごとに設定するページ管理ステップと、更新データを格納するバッファプールのバッファアドレスと、更新データを格納するデータ領域のアドレスとの対応を管理するアドレス管理ステップと、メモリに格納されるプログラムからI/O命令を発行し、任意の更新データを格納するバッファアドレスと対応するデータ領域の任意のアドレスに格納しようとすると、ページ管理部内の任意の更新データに設定された任意のアクセス権限をリード可能に変更するI/O命令捕捉ステップと、任意のアクセス権限をリード可能に変更すると、ページ例外通知を発行し、アドレス管理部内で任意の更新データを格納するバッファアドレスからデータ領域のアドレスを取得して、更新データと更新データの更新履歴と、を更新キューに格納するページ例外捕捉ステップと、を有することを特徴とする。
この結果、バッファプールに更新データが格納すると、データ更新履歴格納装置内のプログラムに基づいて、既存のファイルシステムのソースコードを改変することなく、データ領域に更新データが格納される。
データ更新履歴格納装置の概要は、次に説明する。
データ更新履歴格納装置は、NASヘッド部とストレージ部とから構成される。NASヘッド部には、メモリとCPUとHBAが搭載されている。
CPUは、メモリ上に配置されたプログラム(ファイルシステムなど)に基づいて発行されるI/O命令及びシステムコールリターン命令を、メモリ上に配置された他プログラム(VMモニタなど)に通知する機能を有する。
さらに、CPUは、メモリ上に存在するページテーブルを検査し、メモリ上に配置されたプログラム(ファイルシステムなど)からメモリ上のバッファへのアクセスが行われた際に、アクセスされたバッファアドレスとページ例外発生をメモリ上に配置された他プログラム(VMモニタなど)に通知する機能を有する。
HBAは、メモリ上に存在するディスクリプタを参照して、ディスクリプタでアドレスが指定されたバッファのデータをストレージに転送する機能を有する。
また、メモリ上に存在するプログラム(ファイルシステムなど)は、メモリ上に存在するバッファアドレスと当該バッファのデータが格納されるべきストレージのブロック番号の対応を管理する管理テーブル(アドレス管理部)を保持している。
他プログラム(VMモニタなど)は、メモリ上に配置されたプログラム(ファイルシステムなど)から、I/O命令を発行するとNASヘッド部のCPUから当該命令発行の通知を受けて起動し、メモリ上に存在するディスクリプタを参照することで当該I/O命令のデータ転送元となるバッファアドレスを取得する。さらに、他プログラム(VMモニタなど)は、以降のメモリ上に配置されたプログラム(ファイルシステムなど)によるバッファ更新時にページ例外を発生させるようにメモリ上に存在するページテーブル(ページ管理部)を更新する手段を有する。
上記ページテーブル更新の後に、CPUがメモリ上に配置されたバッファプールのデータを更新した際に、他プログラム(VMモニタなど)はCPUからページ例外発生の通知を受け起動し、メモリ上に存在するプログラム(ファイルシステムなど)が管理する管理テーブルを参照して、当該バッファデータを格納するバッファアドレスに対応するストレージのブロック番号を取得する。さらに、他プログラム(VMモニタなど)は、当該バッファアドレスに格納されている更新データとブロック番号の組をキューに登録する手段を有する。
メモリ上に配置されたプログラム(ファイルシステムなど)に基づいてシステムコールリターン命令が発行されると、他プログラム(VMモニタなど)はCPUから当該命令発行の通知を受けて起動し、コミットエントリをキューに登録する手段を有する。
他プログラム(VMモニタなど)は、登録されたキューエントリをストレージに転送する手段を有する。
本発明は、既存のファイルシステムのソースコードを改変することなく、既存のファイルシステムの指示により更新履歴を格納し、かつ、データの更新を行うことができる。
(1)第1の実施の形態
(1−1)データ更新履歴格納装置の構成
本発明の第1の実施の形態を図1から図9を用いて示す。
まず、第1の実施の形態で前提とするハードウェア構成を図1に示す。
100は、本実施の形態のデータ更新履歴格納装置を示す。データ更新履歴格納装置100は、NAS(Network Attached Storage)ヘッド部301とストレージ部105からなる。NASヘッド部301はCPU(Central Processing Unit)311及びメモリ312を含む。
CPU311は、プログラム実行手段323、ページアクセス検査手段324、及び、実行検査手段325を備える。また、メモリ312には、プログラム格納領域321とデータ格納領域322とが存在する。
プログラム格納領域321には、基本ソフトウェア上で動作し特定の目的を果たすための機能を提供するアプリケーション101、ストレージ部105に記録されるデータを管理するファイルシステム102、データ更新履歴格納装置100内でデータを更新するためのVMモニタ103、及び後述するキャッシュ構造体122を制御するためのキャッシュ構造体スヌープドライバ106が格納されている。
そして、データ格納領域322には、ファイルシステム102の指示により更新データを格納するバッファプール121、キャッシュ構造体122、ディスクリプタ123、ページテーブル124、更新キュー125、ハンドラテーブル128、及び、ページ例外アドレス129が格納されている。
キャッシュ構造体122は、更新データを格納するデータ領域のブロック番号と、更新データが格納されたバッファアドレスと、の情報を格納する。
ディスクリプタ123は、キャッシュ構造体122と同様、更新データを格納するデータ領域のブロック番号と、更新データが格納されたバッファアドレスと、の情報を格納する。
ページテーブル124は、図2に示すように、バッファプール121の領域を分割したページ領域の番号欄124Aと、当該ページ領域に格納される更新データに対するアクセス権限欄124Bから構成される。ページ領域の番号124Aは、バッファアドレスである。例えば、ページ領域「0」番は、リードアクセスのときのみ「0」番に格納される更新データを読み出すことができるが、ライトアクセスのときには「0」番には更新データを書き込むことはできない。この場合には、後述するページ例外通知がページアクセス検査手段324から発行され、このとき「0」番のアドレスがページ例外アドレス129として登録されることになる。
更新キュー125には、バッファプールに格納された更新データ、当該更新データを格納するデータ領域のブロック番号、及び、更新データ群の終了を確定するためのコミットエントリ、の更新履歴が格納される。
ハンドラテーブル128は、図3に示すように、CPU311のページアクセス検査手段324及び実行検査手段325から発行されるイベント名欄128Aと、当該イベント名に基づいて、VMモニタ103内に作成した各種プログラム手段を実行するジャンプ先アドレス欄128Bと、から構成される。
例えば、「syscallリターン」というイベント名が実行検査手段325から発行された場合には、VMモニタ103内のシステムコール捕捉手段114にジャンプして、CPU311がシステムコール捕捉手段114に基づくプログラムを実行する。また、「I/O命令」というイベント名が実行検査手段325から発行された場合には、VMモニタ103内のI/O要求捕捉手段112にジャンプして、CPU311がI/O要求捕捉手段112に基づくプログラムを実行する。さらに、「ページ例外通知」というイベント名がページアクセス手段324から発行された場合には、VMモニタ103内のページ例外捉手段113にジャンプして、CPU311がページ例外捕捉手段113に基づくプログラムを実行する。
ページ例外アドレス129とは、ページアクセス検査手段324が、任意のページ領域に予め設定されたアクセス権限以外のアクセスをした場合の任意のページアドレスをいう。このとき、後述するページ例外通知がページアクセス検査手段324から発行され、このアクセス拒否されたページ領域内のアドレスがページ例外アドレスとして登録される。
CPU311が、プログラム格納領域321に存在するプログラム(ファイルシステム等)を読み込むと、プログラム実行手段323が読み込んだプログラムを実行する。プログラム実行手段323は、プログラムの実行過程にて、メモリ311内のデータ領域格納領域322に対してデータアクセス要求を行う。そうすると、ページアクセス検査手段324が、メモリ311のデータ領域格納領域322内のページ領域にアクセスする。この際、ページアクセス検査手段324は、後述するページテーブル124を参照して、アクセスしたページ領域のアクセス権限を確認することで、プログラム格納領域321に格納されているプログラムにページ例外を通知する。また、この例外通知と同時に、ページ例外発生アドレス(プログラム実行手段323がアクセスしようとしたアドレス)をプログラムに通知することもできる。また、CPU311の実行検査手段325は、プログラム実行手段323が実行するI/O命令やシステムコールリターン命令を捕捉し、これら命令はプログラム実行手段323が発行したことを、プログラム格納領域321に格納されているプログラムに通知することもできる。
NASヘッド部301にはHBA(Host Bus Adapter)104が接続している。プログラム実行手段323は、データ格納領域322に存在するディスクリプタ123に、データ転送元となるデータ領域のアドレスと、当該データの格納先となるストレージ部105のブロック番号を設定すると、その後、HBA104に対して、プログラムから指示されたI/O命令を発行する。HBA104は、データ格納領域322に存在するディスクリプタ123を参照し、指定されたデータ格納領域322のアドレスに格納されたデータを指定されたストレージ部105のブロックに転送する。
それでは次に、本実施の形態によるデータ更新履歴格納方法の概要を説明する。データ更新履歴格納方法は、プログラム格納領域321に格納される各種プログラム101〜103、106に基づいてCPU311が実行するものである。
(1−2)データ更新履歴格納方法
図4は、データ更新履歴格納装置のソフトウェア構成を階層的に示した図である。CPU311はアプリケーション101を介してシステムコールを発行することによって、CPU311がファイル手段111に対してファイル操作を要求する。ファイル操作が完了してファイル内のデータが更新すると、CPU311はファイルシステム102を介してアプリケーション101にシステムコールリターンを発行する。
次にCPU311は、アプリケーション101からの要求に応じて、バッファプール121に格納されているバッファデータを更新すると、CPU311の各手段323〜325がストレージ部105のデータ領域126に更新データを格納するために、後述する更新処理を行う。まず、プログラム実行手段323がキャッシュ構造体122に登録されているバッファアドレス情報に基づいて、HBA104にI/O命令を発行する。この際、CPU311は、ディスクリプタ123内に、バッファアドレスと、当該バッファアドレスに格納されている更新データを転送すべきブロック番号の組を登録する。
CPU311がファイルシステム102を介してHBA104にI/O命令を発行すると、実行検査手段325は、VMモニタ103に対してI/O命令実行を通知する。このI/O命令実行通知は、VMモニタ103のI/O要求捕捉手段112で受け取る。そしてCPU311がI/O要求捕捉手段112を用いて、ディスクリプタ123の設定内容を参照し、転送元となるバッファアドレスを取得する。さらに、CPU311がファイルシステム102を介してバッファアドレスにアクセスした際に、ページアクセス検査手段324がページ例外をVMモニタ103に通知できるように、CPU311がI/O要求捕捉手段112を用いてページテーブル124の設定を変更する。具体的には、CPU311が、バッファアドレスのアクセス権限をリード/ライト可能又はライト可能からリードのみ可能(リードオンリー)に変更する。
CPU311がファイル手段111を用いてバッファプール121のバッファデータを更新するたびに、ページ例外がVMモニタ103に通知されるようになる。ページ例外通知は、VMモニタ103のページ例外捕捉手段113で受け取る。
CPU311がページ例外捕捉手段113でページ例外通知を受け取ると、ページ例外通知と同時にページ例外発生アドレス(バッファアドレスに相当)を受け取る。CPU311は、このページ例外発生アドレスをキャッシュ構造体スヌープドライバ106に通知し、当該ドライバ106を呼び出す。
CPU311はファイルシステム102で管理するキャッシュ構造体122を参照し、CPU311がブロック番号取得手段116によって、当該バッファアドレスに対応するブロック番号を取得する。そして、CPU311がブロック番号取得手段116を用いて、取得したブロック番号をページ例外捕捉手段113に通知する。CPU311がページ例外捕捉手段113を用いて、キャッシュ構造体スヌープドライバ106から受け取ったブロック番号と、ページ例外発生アドレス(バッファアドレス)に格納される更新データを更新キュー125に登録する。
さらに、CPU311がファイルシステム102を介してアプリケーション101にシステムコールリターンを発行する時に、実行検査手段325はシステムコールリターン命令実行通知をVMモニタ103に送る。VMモニタ103のシステムコール捕捉手段114がシステムコールリターン命令実行通知を受け取ると、システムコール捕捉手段114はコミットエントリを更新キュー125に登録する。
CPU311はログ領域書き込み手段115を用いて、更新キュー125の内容をストレージ部105内のログ領域127に書き出す。CPU311は一連の更新履歴をコミットエントリまでログ領域127に書き出したら、ログ領域内に書き出した一連の更新データを、対応するデータ領域126にコピーして、更新データを格納する。
なお万一、データ更新履歴格納装置が故障した場合には、CPU311がシステムリブート後にデータ復旧手段117を立ち上げる。データ復旧手段117では、ログ領域127に格納されている更新履歴に基づきデータ領域126のデータを修復する。
(1−3)各動作のフローチャート
それでは次に、上述で説明をしたVMモニタ103内の各種手段112〜117を用いてCPU311が更新データをデータ領域に格納する動作について詳細に説明をする。
(1−3−1)I/O要求捕捉手段112の動作
図5は、CPU311がファイルシステム102からI/O命令を発行した際のI/O要求捕捉手段112の動作を実行するフローチャートである。
まず、CPU311がファイルシステム102を用いてI/O命令をHBA104に発行し、バッファプール121に格納されているバッファデータ(更新データ)をストレージ部105に格納しようと試みる(S501)。また、この際に、CPU311は、メモリ312のデータ格納領域322内に存在するディスクリプタ123に、バッファアドレスと、当該バッファの内容を格納すべきデータ領域126のブロック番号の組を格納する(S501)。
実行検査手段325が、ステップS501で発行されたI/O命令発行を捕捉し、VMモニタ103のI/O要求捕捉手段112に通知を行う(S502)。
CPU311がディスクリプタ123を検査し、ディスククリプタ123に登録されたバッファアドレスを取得する(S503)。そして、CPU311は、メモリ312上に存在するページテーブル124を操作して、バッファアドレスのアクセス権限をリードアクセスのみ可能(リードオンリー)に変更すると(S503)、I/O要求捕捉手段112の動作を終了する。
(1−3−2)ページ例外捕捉手段の動作
図6は、図5のステップS503において、CPU311がページテーブル124を操作した以降に開始されるページ例外捕捉手段の動作を実行するフローチャートである。
具体的には、まずCPU311がファイル手段111を用いてバッファプール121内のバッファデータを更新する(S601)。
その結果、CPU311がバッファアドレスのアクセス権限をリードアクセスのみ可能(リードオンリー)に変更しているので、ページアクセス検査手段324がページ例外をページ例外捕捉手段113に通知する。この際、ページアクセス検査手段324が、アクセス拒否されたページアドレスをページ例外アドレス129(ステップS601にてファイル手段によって更新したバッファアドレス)として併せてページ例外捕捉手段113に通知する(S602)。
その後、CPU311は通知されたページ例外アドレス129として登録したバッファアドレスに基づいてキャッシュ構造体スヌープドライバ106を呼び出す(S603)。
そして、キャッシュ構造体スヌープドライバ106が、ファイルシステム102が管理するキャッシュ構造体122を参照して、バッファアドレスに対応するデータ領域126内のブロック番号を取得し、ページ例外捕捉手段113に通知する(S604)。
CPU311は、ステップS604で取得したブロック番号、及びバッファアドレスに格納されている更新後のバッファデータを更新データとして更新キュー125に登録して(S605)、ページ例外捕捉手段の動作を終了する。
(1−3−3)システムコール捕捉手段の動作
図7は、CPU311がシステムコール捕捉手段の動作を実行するフローチャートである。
CPU311は、ファイル手段111を用いてシステムコールリターン命令をアプリケーション101に発行した際のシステムコール捕捉手段の動作を示すフローチャートである。
まずCPU311がファイル手段111を用いて、バッファプール121内のバッファデータの更新が終了すると、システムコールリターン命令をアプリケーション101に発行する(S701)。
その結果、実行検査手段325がシステムコールリターン命令実行通知を、システムコール捕捉手段114に送信する(S702)。
CPU311は、一連の更新データの終了を示すコミットエントリを更新キュー125に格納すると(S703)、システムコール捕捉手段114の動作を終了する。
(1−3−4)ログ領域に書き込み手段の動作
図8は、CPU311がログ書き込み手段115の動作を実行するフローチャートである。
CPU311は、更新キュー125に更新履歴が格納されているかどうかを検査する(S801)。更新履歴が格納されていなければ(S801:NO)、CPU311は、ステップS801の処理を繰り返す。
もし更新履歴が格納されていれば(S801:YES)、CPU311はHBA104に対してI/O命令を発行し、更新キュー125内の更新履歴をログ領域127に転送する(S802)。CPU311は、更新キュー125内から転送した更新履歴を削除する。
次に、CPU311は、転送した更新履歴がコミットエントリの転送であるかどうか検査する(S803)。CPU311はコミットエントリではない更新履歴を転送する場合には(S803:NO)、ステップS801に再び戻る。
CPU311は、コミットエントリの転送であれば(S803:YES)、HBA104に対してI/O命令を発行し、ログ領域127に格納された更新履歴を一旦メモリ311のデータ格納領域322の空き領域に転送する(S804)。
CPU311は、HBA104に対してI/O命令を発行し、ログ領域127に格納された更新履歴の中から更新データを、対応するデータ領域126のブロック番号に転送し(S805)、処理が完了すると再びステップS801に戻る。
(1−3−5)ログ復旧手段の動作
図9は、CPU311が更新データをデータ領域126に格納中に、データ更新履歴格納装置100内で故障が発生した場合の、ログ復旧手段を実行するフローチャートである。
CPU311は、HBA104にI/O命令(Read命令)を発行し、ログ領域127に格納されている全更新履歴(更新キュー内から転送されたデータ領域のブロック番号、及び、更新データ)を読み出す(S901)。
CPU311は、読み出した更新履歴のうち、最後のコミットエントリを検出する(S902)。CPU311は、検出したコミットエントリまでの更新履歴から、更新データの履歴を示すエントリを検出して、データ領域126のブロック番号と更新データとを検出する(S903)。
CPU311は、検出したデータ領域126のブロック番号と更新データとに基づいて、データ領域126に更新データを格納する(S904)。
全てのデータの復旧を完了すると、CPU311はログ領域127に格納されている更新履歴を消去して(S905)、データ復旧手段の動作を終了する。
以上より、VMモニタ103とキャッシュ構造体スヌープドライバ106をNASヘッド部301のプログラム格納領域321に搭載するだけで、既存ファイルシステムの改変を行うことなく、更新データをストレージ部105に格納できる。すなわち、このNASヘッド部301とストレージ部105を組み合わせたデータ更新履歴格納装置100上で、既存のアプリケーション101やファイルシステム102を動作させれば、既存のアプリケーション101やファイルシステム102から関数呼び出しを発行することなく、自動的に更新履歴がログ領域127に格納でき、更新データをデータ領域126に格納することができる。加えて、ログ領域127内の更新履歴に基づいてデータの復旧を行うこともできる。
なお、本方式によるデータ更新履歴の格納は、タイムスタンプ等を追加することにより性能解析の用途に使用することができる。また、更新履歴をデータのバックアップやデータプロテクションに利用することもできる。さらに、更新履歴を障害解析に活用することもできる。このように既存のファイルシステムの改変なく機能拡張が実現できるので、開発コストを大幅に削減することができる。
(1−4)第1の実施の形態の効果
本方式に従うと、既存のファイルシステムのソースコードを改変することなく、既存のファイルシステムの指示により更新履歴を格納し、かつ、データの更新を行うことができる。
(2)第2の実施の形態
それでは次に、第2の実施の形態について説明する。第2の実施の形態では、第1の実施の形態で説明をしたシステムコール捕捉手段の動作フローチャートを除いて、第1の実施の形態と同様の構成及び同様の動作であるため、説明を省略する。なお、第1の実施の形態で説明した構成と同一の構成には、同一の図番を付している。
(2−1)システムコール捕捉手段の動作
図10は、CPU311がシステムコール捕捉手段114A(図4に記載)の動作を実行するフローチャートである。
CPU311は、ファイルシステム102からトランザクションのコミット宣言発行を契機にシステムコール捕捉手段114Aを起動する(S1001)。そして、CPU311は、コミットエントリを更新キュー125に追加して(S1002)、システムコール捕捉手段114Aの動作を終了する。
第1の実施の形態では、CPU311がファイル手段111からシステムコールリターン命令の発行を契機にシステムコール捕捉手段114を起動させたが、本実施の形態のようにトランザクションのコミット宣言発行を契機にシステムコール捕捉手段114Aを起動することもできる。
(2−2)第2の実施の形態の効果
本方式によっても、既存のファイルシステムのソースコードを改変することなく、既存のファイルシステムの指示により更新履歴を格納し、かつ、データの更新を行うことができる。
(3)第3の実施の形態
それでは次に、第3の実施の形態について、図11を用いて説明する。1100は、第3の実施の形態のデータ更新履歴格納装置である。なお、第1の実施の形態で説明した構成と同一の構成には、同一の図番を付している。
(3−1)データ更新履歴格納装置の構成
第3の実施の形態では、データ更新履歴格納装置1100は、複数のファイルシステム102−0〜102−Nのデータ更新履歴の格納を行う。このために、データ更新履歴格納装置1100は、ファイルシステム102−0〜102−Nごとに対応するHBA104−0〜104−N、ログ領域127−0〜127−N、データ領域126−0〜126−N、更新キュー125−0〜125−N、ディスクリプタ123−0〜123−N、キャッシュ構造体スヌープドライバ106−0〜106−Nを備える。
なお、各構成は、第1の実施の形態で説明をした構成と同様の構成のため、説明を省略する。
また、第3の実施の形態のVMモニタ103´は、VM管理テーブル1001を備えている。
VM管理テーブル1001は、図12に示すように、複数あるファイルシステムの実行処理の順番を管理するテーブルである。VM管理テーブル1001は、複数ある構成要素のうち1つを実行させるための番号を示すVM番号欄1001A、実行番号に対応するキャッシュ構造体スヌープドライバ番号欄1001B、更新キュー番号欄1001C、ディスクリプタ番号欄1001D、HBA番号欄1001E、ログ領域番号欄1001F、及びデータ領域番号欄1001Gから構成されている。そして、CPU311が実行しているVM番号を「実行中VM番号」1002に表示する。
(3−2)I/O要求捕捉手段の動作
I/O要求捕捉手段112´の起動契機は第1の実施の形態のステップS501と同様である。CPU311は、図5のステップS503において次のように変更する。
すなわち、CPU311は、実行中VM番号1002を確認後、VM管理テーブル1001から実行中VM番号に対応するキャッシュ構造体スヌープドライバ番号、更新キュー番号、ディスクリプタ番号、HBA番号、ログ領域番号、及びデータ領域番号を取得する。なお、便宜上実行中VM番号を1とし、対応する各種番号をXXX−1(Xは任意)とする。
その後、CPU311は、HBA番号104−1に対応するディスクリプタ123−1を参照し、転送元のバッファアドレスを取得し、ページテーブル124の該当アドレスのアクセス権限をリードオンリーに変更する。
そして、CPU311は、次に実行するVM番号をランダムに決定し、当該VM番号に対応するファイルシステムが決定すると、再びステップS501の処理を実行する。
(3−3)ページ例外捕捉手段の動作
ページ例外捕捉手段113´の起動契機は第1の実施の形態のステップS601と同様である。CPU311は、図6のステップS603、ステップS605を次のように変更する。
すなわちステップS603において、CPU311は、実行中VM番号1002を確認後、VM管理テーブル1001から実行中VM番号1に対応するHBA番号104−1を取得する。そして、CPU311は、実行中VM番号に対応するキャッシュ構造体スヌープドライバ106−1を起動する。この際に、CPU311は、ページ例外発生例外通知時に受け取ったバッファアドレスを指定する。
またステップS605において、CPU311は、取得したバッファアドレス、ブロック番号を、ステップS603で取得したVM番号に対応する更新キュー125−1に追加する。
そして、CPU311は、次に実行するVM番号をランダムに決定し、当該VM番号に対応するファイルシステムが決定すると、再びステップS601の処理を実行する。
(3−4)システムコール捕捉手段の動作
システムコール捕捉手段114´の起動契機は第1の実施の形態のステップS701と同様である。CPU311は、図7のステップS703を、次のように変更する。
すなわち、ステップS703において、CPU311は、実行中VM番号1002を確認後、VM管理テーブル1001から実行中VM番号1に対応するHBA番号104−1を取得する。そして、CPU311は、実行中VM番号に対応するキャッシュ構造体スヌープドライバ106−1を起動する。
そして、COU311は、実行中VM番号に対応する更新キュー125−1にコミットエントリを追加する。
そして、CPU311は、次に実行するVM番号をランダムに決定し、当該VM番号に対応するファイルシステムが決定すると、再びステップS701の処理を実行する。
(3−5)ログ領域書き込み手段の動作
ログ領域書き込み手段115´の起動契機は、CPU311が実行中VM番号1002を確認後、VM管理テーブル1001から実行中VM番号1に対応する更新キュー125−1に更新履歴が入ることで始まる。
その後、CPU311は実行中VM番号1に対応するHBA104−1、ログ領域127−1、データ領域126−1に対して、ステップS802〜S805までの処理を実行する。
そして、CPU311は、次に実行するVM番号をランダムに決定し、当該VM番号に対応するファイルシステムが決定すると、再びステップS801の処理を実行する。
CPU311は、すべての更新キュー125−0〜125−Nに格納された更新履歴をログ領域127−0〜127−N、データ領域126−0〜126−Nに転送するまで、ログ領域書き込み手段(ステップS801〜S805)を繰り返し実行する。
このように、複数のファイルシステムに対応して、複数のキャッシュ構造体スヌープドライバ、複数の更新キュー、複数のディスクリプタ、複数のHBA、複数のログ領域、及び複数のデータ領域を有するデータ更新履歴格納装置であっても、既存のファイルシステムの指示により更新履歴を格納し、かつ、データの更新を行うことができる。
(3−6)第3の実施の形態の効果
本方式によっても、既存のファイルシステムのソースコードを改変することなく、既存のファイルシステムの指示により更新履歴を格納し、かつ、データの更新を行うことができる。
第1の実施の形態におけるデータ更新履歴格納装置のハードウェア構成を示すブロック図である。 第1の実施の形態におけるページテーブルを示す図表である。 第1の実施の形態におけるハンドラテーブルを示す図表である。 第1の実施の形態におけるデータ更新履歴格納装置のソフトウェア構成を示すブロック図である。 第1の実施の形態におけるI/O要求捕捉手段を示すフローチャートである。 第1の実施の形態におけるページ例外捕捉手段を示すフローチャートである。 第1の実施の形態におけるシステムコール捕捉手段を示すフローチャートである。 第1の実施の形態におけるログ領域書き込み捕捉手段を示すフローチャートである。 第1の実施の形態におけるデータ復旧手段を示すフローチャートである。 第1の実施の形態におけるシステムコール捕捉手段を示すフローチャートである。 第3の実施の形態におけるデータ更新履歴格納装置のソフトウェア構成を示すブロック図である。 第3の実施の形態におけるVM管理テーブルを示す図表である。 従来のデータ更新履歴格納装置のソフトウェア構成を示すブロック図である。
符号の説明
102……ファイルシステム、103、103´……VMモニタ、104……HBA、105、105´……ストレージ部、106……キャッシュ構造体スヌープドライバ、111……ファイル手段、112、112´……I/O要求捕捉手段、113、113´……ページ例外捕捉手段、114、114A、114´……システムコール捕捉手段、115、115´……ログ領域書き込み手段、116……ブロック番号取得手段、117……データ復旧手段、121……バッファプール、122……キャッシュ構造体、123……ディスクリプタ、124……ページテーブル、125……更新キュー、126……データ領域、127……ログ領域、128……ハンドラテーブル、129……ページ例外アドレス、321……プログラム格納領域、322……データ格納領域、301……NASヘッド部、311……CPU、312……メモリ、323……プログラム実行手段、324……ページアクセス検査手段、325……実行検査手段、1001……VM管理テーブル、1002……実行中VM番号

Claims (10)

  1. 更新データを格納するデータ更新履歴格納装置において、
    前記更新データを一時的に格納するバッファプールと、
    前記バッファプールに格納される更新データの前記バッファアドレスにアクセスする権限を前記バッファアドレスごとに設定するページ管理部と、
    前記更新データを格納するバッファプールのバッファアドレスと、前記更新データを格納するデータ領域のアドレスとの対応を管理するアドレス管理部と、
    メモリに格納されるプログラムからI/O命令を発行し、任意の更新データを格納するバッファアドレスと対応するデータ領域の任意のアドレスに格納しようとすると、前記ページ管理部内の任意の更新データに設定された任意のアクセス権限をリード可能に変更するI/O命令捕捉手段と、
    前記任意のアクセス権限をリード可能に変更すると、ページ例外通知を発行し、前記アドレス管理部内で前記任意の更新データを格納する前記バッファアドレスから前記データ領域のアドレスを取得して、前記更新データと前記更新データの更新履歴と、を更新キューに格納するページ例外捕捉手段と、を有する
    ことを特徴とするデータ更新履歴格納装置。
  2. 前記更新キューに格納される前記更新データの更新履歴をログ領域に格納し、前記ログ領域に格納した前記更新データの更新履歴に基づいて前記更新データを前記データ領域に格納するログ書き込み手段をさらに有する
    ことを特徴とする請求項1に記載のデータ更新履歴格納装置。
  3. メモリに格納されるプログラムからシステムコールリターン命令を発行し、前記バッファプールに格納される更新データの終了を示すコミットエントリを前記更新キューに格納するシステムコールリターン捕捉手段をさらに有する
    ことを特徴とする請求項2に記載のデータ更新履歴格納装置。
  4. 前記更新キューに前記コミットエントリが格納され、当該コミットエントリが前記ログ領域に格納されると、前記更新データを前記データ領域に格納する
    ことを特徴とする請求項3に記載のデータ更新履歴格納装置。
  5. 前記ログ領域に格納される全ての更新履歴からコミットエントリを検出し、先頭エントリからコミットエントリまでの更新履歴に基づいて、更新データと当該更新データを格納するデータ領域のアドレスを検出し、前記ログ領域にある更新データを前記データ領域のアドレスに格納するデータ復旧手段をさらに有する
    ことを特徴とする請求項4に記載のデータ更新履歴格納装置。
  6. 更新データを格納するデータ更新履歴格納装置のデータ更新履歴格納方法において、
    前記更新データをバッファプールに一時的に格納するステップと、
    前記バッファプールに格納される更新データの前記バッファアドレスにアクセスする権限を前記バッファアドレスごとに設定するページ管理ステップと、
    前記更新データを格納するバッファプールのバッファアドレスと、前記更新データを格納するデータ領域のアドレスとの対応を管理するアドレス管理ステップと、
    メモリに格納されるプログラムからI/O命令を発行し、任意の更新データを格納するバッファアドレスと対応するデータ領域の任意のアドレスに格納しようとすると、前記ページ管理部内の任意の更新データに設定された任意のアクセス権限をリード可能に変更するI/O命令捕捉ステップと、
    前記任意のアクセス権限をリード可能に変更すると、ページ例外通知を発行し、前記アドレス管理部内で前記任意の更新データを格納する前記バッファアドレスから前記データ領域のアドレスを取得して、前記更新データと前記更新データの更新履歴と、を更新キューに格納するページ例外捕捉ステップと、を有する
    ことを特徴とするデータ更新履歴格納方法。
  7. 前記更新キューに格納される前記更新データの更新履歴をログ領域に格納し、前記ログ領域に格納した前記更新データの更新履歴に基づいて前記更新データを前記データ領域に格納するログ書き込みステップをさらに有する
    ことを特徴とする請求項6に記載のデータ更新履歴格納方法。
  8. メモリに格納されるプログラムからシステムコールリターン命令を発行し、前記バッファプールに格納される更新データの終了を示すコミットエントリを前記更新キューに格納するシステムコールリターン捕捉ステップをさらに有する
    ことを特徴とする請求項7に記載のデータ更新履歴格納方法。
  9. 前記更新キューに前記コミットエントリが格納され、当該コミットエントリが前記ログ領域に格納されると、前記更新データを前記データ領域に格納する
    ことを特徴とする請求項8に記載のデータ更新履歴格納方法。
  10. 前記ログ領域に格納される全ての更新履歴からコミットエントリを検出し、先頭エントリからコミットエントリまでの更新履歴に基づいて、更新データと当該更新データを格納するデータ領域のアドレスを検出し、前記ログ領域にある更新データを前記データ領域のアドレスに格納するデータ復旧ステップをさらに有する
    ことを特徴とする請求項9に記載のデータ更新履歴格納方法。
JP2007268284A 2007-10-15 2007-10-15 データ更新履歴格納装置及びデータ更新履歴格納方法 Expired - Fee Related JP5046845B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007268284A JP5046845B2 (ja) 2007-10-15 2007-10-15 データ更新履歴格納装置及びデータ更新履歴格納方法
US11/972,647 US7934067B2 (en) 2007-10-15 2008-01-11 Data update history storage apparatus and data update history storage method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007268284A JP5046845B2 (ja) 2007-10-15 2007-10-15 データ更新履歴格納装置及びデータ更新履歴格納方法

Publications (2)

Publication Number Publication Date
JP2009098808A true JP2009098808A (ja) 2009-05-07
JP5046845B2 JP5046845B2 (ja) 2012-10-10

Family

ID=40535335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007268284A Expired - Fee Related JP5046845B2 (ja) 2007-10-15 2007-10-15 データ更新履歴格納装置及びデータ更新履歴格納方法

Country Status (2)

Country Link
US (1) US7934067B2 (ja)
JP (1) JP5046845B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5257016B2 (ja) * 2008-11-21 2013-08-07 富士通株式会社 更新関数検証プログラム,更新関数検証方法及び情報処理装置
US9400819B2 (en) * 2013-06-07 2016-07-26 Dell Products, Lp Updating object attributes in a lock-coupled namespace traversal

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004192648A (ja) * 2002-12-09 2004-07-08 Microsoft Corp 管理されるファイルシステムフィルタのモデルとアーキテクチャのための方法、システムおよびコンピュータ可読媒体

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268084A1 (en) * 2003-06-30 2004-12-30 Steve Longerbeam Protected RAM filesystem

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004192648A (ja) * 2002-12-09 2004-07-08 Microsoft Corp 管理されるファイルシステムフィルタのモデルとアーキテクチャのための方法、システムおよびコンピュータ可読媒体

Also Published As

Publication number Publication date
US7934067B2 (en) 2011-04-26
US20090100239A1 (en) 2009-04-16
JP5046845B2 (ja) 2012-10-10

Similar Documents

Publication Publication Date Title
CN114341792B (zh) 存储集群之间的数据分区切换
US10649853B2 (en) Tracking modifications to a virtual machine image that occur during backup of the virtual machine
JP5227887B2 (ja) バックアップ管理方法
US10838733B2 (en) Register context restoration based on rename register recovery
US10545766B2 (en) Register restoration using transactional memory register snapshots
US9058195B2 (en) Virtual machines failover
US7774636B2 (en) Method and system for kernel panic recovery
US10740108B2 (en) Management of store queue based on restoration operation
US9003149B2 (en) Transparent file system migration to a new physical location
US20200125367A1 (en) Sharing snapshots between restoration and recovery
US11010192B2 (en) Register restoration using recovery buffers
US10572265B2 (en) Selecting register restoration or register reloading
US9069701B2 (en) Virtual machine failover
US20180300152A1 (en) Tracking changes to memory via check and recovery
US10339009B2 (en) System for flagging data modification during a virtual machine backup
CN108604201B (zh) 一种快照回滚方法、装置、存储控制器和系统
JP5046845B2 (ja) データ更新履歴格納装置及びデータ更新履歴格納方法
US8301609B1 (en) Collision detection and data corruption protection during an on-line database reorganization
JP2004062473A (ja) データベース管理方法およびシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120619

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120717

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5046845

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees