JP2018025839A - バックアップ/リストアプログラム、版数管理装置およびバックアップ/リストア方法 - Google Patents
バックアップ/リストアプログラム、版数管理装置およびバックアップ/リストア方法 Download PDFInfo
- Publication number
- JP2018025839A JP2018025839A JP2016155181A JP2016155181A JP2018025839A JP 2018025839 A JP2018025839 A JP 2018025839A JP 2016155181 A JP2016155181 A JP 2016155181A JP 2016155181 A JP2016155181 A JP 2016155181A JP 2018025839 A JP2018025839 A JP 2018025839A
- Authority
- JP
- Japan
- Prior art keywords
- backup
- data
- sector
- partition
- file
- 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
Landscapes
- Retry When Errors Occur (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】リストア時の負荷を低減すること。【解決手段】記憶部1aは、データブロックを記憶する区画を複数含む記憶装置2に対して、バックアップされた区画ごとに最新のデータブロックを示す情報を含むイメージ情報M1を記憶する。演算部1bは、記憶装置2の複数の区画に記憶されている複数のデータブロックを含むバックアップデータG3を取得し、複数のデータブロックに応じてイメージ情報M1を更新する。演算部1bは、バックアップデータG3とは異なるタイミングで取得されたバックアップデータG1に含まれるデータブロックと更新後のイメージ情報M1により示されるデータブロックとを区画ごとに比較する。演算部1bは、比較に応じて区画ごとの差分の有無を示す差分位置情報P1をバックアップデータG1に対して生成する。【選択図】図1
Description
本発明はバックアップ/リストアプログラム、版数管理装置およびバックアップ/リストア方法に関する。
情報処理システムでは、データのバックアップ処理が行われることがある。バックアップ処理を実行する情報処理装置は、当該情報処理装置またはネットワークを介して接続された他の情報処理装置が用いる記憶装置に格納されたデータの複製を取得し、バックアップデータとして別の記憶装置に格納する。バックアップデータは、例えば、バックアップの取得元の記憶装置に対し、バックアップ取得時点のデータを復元(リストア)するために利用される。バックアップデータは、複数のタイミング(周期的なタイミングなど)で取得されることもある。
例えば、クライアントのファイルを所望のバージョンに復元する際に、バックアップされている所望のバージョンのファイルとクライアント側の現在のバージョンのファイルとの差分の部分のみを復元するサーバの提案がある。
なお、ファイル変更時に対象ファイルのバックアップファイルを作成し、対象ファイルのハッシュ値を算出して記録し、ハッシュ値により対象ファイルの改変を検出するとバックアップファイルを書き戻すことで、対象ファイルを保護する電子装置の提案もある。
また、ライトデータのハッシュ値と格納済データのハッシュ値とを比較し、重複するデータを格納しないようにするフラッシュメモリの提案もある。更に、毎回のバックアップの際に、前世代からの更新部分のみを差分データとして記憶するストレージ装置の提案もある。
上記のように、情報処理装置がバックアップデータをリストアする際、現在のデータと異なる部分を復元対象とし、同じ部分を復元対象外として復元部分を減らすことがある。そのために、情報処理装置は、バックアップデータを区画(例えば、セクタ)単位に区切って管理し、リストア時に、バックアップデータと現在のデータとを区画ごとに読み取って比較することが考えられる。そして、情報処理装置は、データ内容の異なる区画、および、同じ区画を順次判定しながら、データ内容の異なる区画に対してリストアを行う。
しかし、この方法では、リストア先の記憶装置に現在格納されているデータを全ての区画について読み出し、バックアップデータと比較する。このため、リストア処理による負荷が増大し、リストアの所要時間が長引くおそれがある。
1つの側面では、本発明は、リストア時の負荷を低減することを目的とする。
1つの態様では、バックアップ/リストアプログラムが提供される。このバックアップ/リストアプログラムは、コンピュータに、データブロックを記憶する区画を複数含む記憶装置に対して、バックアップされた区画ごとに最新のデータブロックを示す情報を含むイメージ情報を記憶し、記憶装置の複数の区画に記憶されている複数のデータブロックを含む第1のバックアップデータを取得し、複数のデータブロックに応じてイメージ情報を更新し、第1のバックアップデータとは異なるタイミングで取得された第2のバックアップデータに含まれる第1のデータブロックと更新後のイメージ情報により示される第2のデータブロックとを区画ごとに比較し、比較に応じて区画ごとの差分の有無を示す差分位置情報を第2のバックアップデータに対して生成する、処理を実行させる。
1つの側面では、リストア時の負荷を低減できる。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の版数管理装置を示す図である。版数管理装置1は、記憶装置2に接続されている。版数管理装置1は、記憶装置2に記憶されたデータのバックアップを取得する。記憶装置2は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置を内蔵する。記憶装置2は、版数管理装置1とネットワークを介して接続された情報処理装置(図示を省略)に内蔵されていてもよい。
[第1の実施の形態]
図1は、第1の実施の形態の版数管理装置を示す図である。版数管理装置1は、記憶装置2に接続されている。版数管理装置1は、記憶装置2に記憶されたデータのバックアップを取得する。記憶装置2は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置を内蔵する。記憶装置2は、版数管理装置1とネットワークを介して接続された情報処理装置(図示を省略)に内蔵されていてもよい。
記憶装置2の記憶領域は、複数の区画に分割されている。区画は、所定サイズの単位領域である。区画は、例えばセクタでもよい。セクタは、所定サイズ(例えば、512バイトや4キロバイトなど)の単位領域である。区画は、区画の識別情報により区別される。区画の識別情報は、例えば区画番号である。図1の例では、記憶装置2は、区画番号“1”、“2”、“3”に対応する3つの区画を含む。1つの区画に記憶される情報を、データブロックと称する。図1および以下の説明では、「データブロック」を「ブロック」と略記する。
版数管理装置1は、記憶装置2に記憶されたデータに対して、異なるタイミングで複数のバックアップを取得する。版数管理装置1により取得されるバックアップのデータをバックアップデータと称する。バックアップデータは、バックアップ取得時点において、記憶装置2に記憶されていたデータの複製である。版数管理装置1は、ファイルシステムにより使用されている区画に限定してバックアップを取得する。すなわち、あるタイミングで取得されたバックアップデータは、記憶装置2の複数の区画のうち、ファイルシステムにより使用されている区画のブロックを含み、ファイルシステムにより使用されていない区画のブロックを含まない。版数管理装置1は、複数のバックアップデータを、バックアップ取得時の早い順に、版数“1”、版数“2”、・・・のように版数管理する。版数管理装置1は、記憶部1aおよび演算部1bを有する。
記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDDやSSDなどの不揮発性記憶装置でもよい。演算部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bはプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)も含み得る。
演算部1bは、記憶装置2に対するバックアップデータを取得し、記憶部1aに保存する。演算部1bは、取得したバックアップデータを、版数管理装置1に接続された記憶装置2以外の記憶装置(図示を省略)に格納して保存してもよい。演算部1bは、所定の周期で、または、バックアップ開始指示のユーザによる入力を受け付けたタイミングで、バックアップデータの取得を開始する。
例えば、演算部1bは、記憶装置2に対して2つの異なるタイミングで取得されたバックアップデータG1,G2を取得済である。バックアップデータG1は、バックアップデータG2よりも前に取得されたバックアップデータである。バックアップデータG1は、各区画に対して次に示すブロックのバックアップを含む。区画番号“1”の区画に対するバックアップは、ブロックX1である。区画番号“2”の区画に対するバックアップは、ブロックX2である。区画番号“3”の区画に対するバックアップは、ブロックX3である。
バックアップデータG2は、バックアップデータG1よりも後に取得されたバックアップデータである。バックアップデータG2は、各区画に対して次に示すブロックのバックアップを含む。区画番号“1”の区画に対するバックアップは、ブロックX1である。区画番号“2”の区画に対するバックアップは、ブロックY2である。区画番号“3”の区画に対するバックアップは、ブロックY3である。
バックアップデータG1,G2の比較によれば、バックアップデータG2の取得時では、バックアップデータG1の取得時に対し、区画番号“1”の区画のブロックは変更されておらず、区画番号“2”、“3”の各区画のブロックは変更されている。
演算部1bは、記憶装置2のイメージ情報M1を生成し、記憶部1aに格納する。イメージ情報M1は、記憶装置2について、バックアップされた区画ごとの最新のブロックを示す情報を含む。イメージ情報M1は、区画ごとに、最新のブロックを保持するバックアップデータの識別情報を含む。図1では、最新のブロックを保持するバックアップデータの識別情報を、ブロック名の末尾に“@”(アットマーク)を付して表している(“ブロックY2@”など)。
例えば、バックアップデータG2の取得直後では、イメージ情報M1は、次のような情報を含む。第1には、区画番号“1”とバックアップデータG2の識別情報との対応関係の情報である。第2には、区画番号“2”とバックアップデータG2の識別情報との対応関係の情報である。第3には、区画番号“3”とバックアップデータG2の識別情報との対応関係の情報である。以下、演算部1bがバックアップデータG3を新たに取得する際の処理を説明する。
演算部1bが今回バックアップ処理を開始する直前において、記憶装置2は、次の情報を記憶する。区画番号“1”の区画は、ブロックZ1を記憶する。区画番号“2”の区画は、ブロックY2を記憶する。区画番号“3”の区画は、未使用である。未使用は、何れのブロックも格納されていないことを示す。本例では、バックアップデータG2の取得時点では、区画番号“3”の区画はブロックY3を記憶していた。バックアップデータG2の取得後、区画番号“3”の区画に記憶されたブロックY3は削除されたことになる(図1では、「削除済」と表記)。
演算部1bは、記憶装置2に対してバックアップデータG3を取得する(ステップS1)。バックアップデータG3は、各区画に対して次のブロックのバックアップを含む。区画番号“1”の区画に対するバックアップは、ブロックZ1である。区画番号“2”の区画に対するバックアップは、ブロックY2である。区画番号“3”の区画は、未使用である。このため、演算部1bは、区画番号“3”の区画については、バックアップを取得しない。
演算部1bは、バックアップデータG3に含まれる複数のブロックに応じて、イメージ情報M1を更新する(ステップS2)。上記の例では、区画番号“1”の区画の最新のブロックは、バックアップデータG3に含まれる。このため、演算部1bは、イメージ情報M1における区画番号“1”にバックアップデータG3の識別情報を対応付ける(例えば、“ブロックZ1@”のポイント先をバックアップデータG3とする)。同様に、区画番号“2”の区画の最新のブロックは、バックアップデータG3に含まれる。このため、演算部1bは、イメージ情報M1における区画番号“2”にバックアップデータG3の識別情報を対応付ける(例えば、“ブロックY2@”のポイント先をバックアップデータG3とする)。一方、区画番号“3”の区画の最新のブロックは、バックアップデータG2に含まれる。このため、演算部1bは、イメージ情報M1における区画番号“3”に対するバックアップデータの識別情報の変更を行わない(例えば、“ブロックY3@”のポイント先をバックアップデータG2のままとする)。図1で例示したイメージ情報M1は、当該更新後の状態を図示している。
演算部1bは、今回取得した第1のバックアップデータとは異なるタイミングで取得された第2のバックアップデータに含まれる第1のブロックと、更新後のイメージ情報M1により示される第2のブロックとを区画ごとに比較する。演算部1bは、比較に応じて区画ごとの差分の有無を示す差分位置情報を第2のバックアップデータに対して生成する(ステップS3)。上記の例では、第1のバックアップデータは、バックアップデータG3である。また、第2のバックアップデータは、バックアップデータG1,G2である。
より具体的には、演算部1bは、バックアップデータG1に含まれるブロックと、更新後のイメージ情報M1により示されるブロックとを区画ごとに比較する。すなわち、演算部1bは、区画番号“1”の区画について、バックアップデータG1に含まれるブロックX1と、イメージ情報M1により示されるブロックZ1とを比較する。ブロックX1,Z1は互いに異なる。このため、演算部1bは、バックアップデータG1とイメージ情報M1とでは、区画番号“1”の区画に差分があると判断する。
また、演算部1bは、区画番号“2”の区画について、バックアップデータG1に含まれるブロックX2と、イメージ情報M1により示されるブロックY2とを比較する。ブロックX2,Y2は互いに異なる。このため、演算部1bは、バックアップデータG1とイメージ情報M1とでは、区画番号“2”の区画に差分があると判断する。
また、演算部1bは、区画番号“3”の区画について、バックアップデータG1に含まれるブロックX3と、イメージ情報M1により示されるブロックY3とを比較する。ブロックX3,Y3は互いに異なる。このため、演算部1bは、バックアップデータG1とイメージ情報M1とでは、区画番号“3”の区画に差分があると判断する。
そして、演算部1bは、バックアップデータG1とイメージ情報M1とでは、区画番号“1”、“2”、“3”の区分に差分があることを示す差分位置情報P1を、バックアップデータG1に対して生成する。ここで、図1では、差分位置情報において、差分があることを「差分」と表記し、差分がないことを「非差分」と表記する。
更に、演算部1bは、バックアップデータG2に含まれるブロックと、更新後のイメージ情報M1により示されるブロックとを区画ごとに比較する。そして、演算部1bは、バックアップデータG2とイメージ情報M1とでは、区画番号“1”の区分に差分があり、区画番号“2”、“3”の区画に差分がないと判断する。
そして、演算部1bは、バックアップデータG2とイメージ情報M1とでは、区画番号“1”の区画に差分があり、区画番号“2”、“3”の区画に差分がないことを示す差分位置情報P2を、バックアップデータG2に対して生成する。
なお、演算部1bは、今回取得したバックアップデータG3に対しても差分位置情報P3を生成する。バックアップデータG3の各区画は、イメージ情報M1の各区画に対して差分がない。このため、差分位置情報P3は、区画番号“1”、“2”の各区画について、イメージ情報M1の同区画と差分がないことを示す。
演算部1bは、生成した差分位置情報を記憶部1aに格納し、リストア時に利用する。例えば、図1で示した記憶装置2の状態に対して、バックアップデータG1を用いてリストアを行う場合を考える。演算部1bは、バックアップデータG1に対応する差分位置情報P1を参照して、イメージ情報M1に対し、区画番号“1”、“2”、“3”の各区画において差分があることを検出する。このため、演算部1bは、バックアップデータG1に含まれる区画番号“1”、“2”、“3”に対応するブロックX1,X2,X3を記憶装置2の該当の区画に書き込む。その結果、バックアップデータG1の内容が、記憶装置2に復元される。演算部1bは、ブロックを書き戻すべき区画の確認に差分位置情報P1を用いることで、記憶装置2から全ての区画のブロックを順次読み出して、バックアップデータG1に含まれる各ブロックと比較しなくてよい。バックアップデータG1を用いてリストアを行う例では、区画番号“1”、“2”、“3”の全てについて、記憶装置2からのブロックの読み出し、および、読み出したブロックの比較を省略できる。
次に、図1で示した記憶装置2の状態に対して、バックアップデータG2を用いてリストアを行う場合を考える。演算部1bは、バックアップデータG2に対応する差分位置情報P2を参照して、イメージ情報M1に対し、区画番号“1”の区画において差分があることを検出する。このため、演算部1bは、バックアップデータG2に含まれる区画番号“1”のブロックX1を記憶装置2の区画番号“1”の区画に書き込む。
また、演算部1bは、区画番号“2”、“3”の区画において差分がないことを検出する。このため、演算部1bは、記憶装置2から区画番号“2”のブロックを読み出して、バックアップデータG2に含まれる区画番号“2”のブロックY2と比較する。該当区画が差分なしの場合に比較を行う理由は、イメージ情報M1を取得した時点に対し、記憶装置2の各ブロックの内容が更新されている可能性があるからである。この例では、区画番号“2”のブロックは、記憶装置2もバックアップデータG2もブロックY2で同じなので、演算部1bは、区画番号“2”の区画については何も行わない。
更に、演算部1bは、記憶装置2から区画番号“3”のブロックを読み出して、バックアップデータG2に含まれる区画番号“3”のブロックY3と比較する。記憶装置2における区画番号“3”の区画は、前述のように未使用状態なので、演算部1bは、バックアップデータG2に含まれる区画番号“3”のブロックY3を記憶装置2の区画番号“3”の区画に書き込む。こうして、バックアップデータG2の内容が、記憶装置2に復元される。この場合も、演算部1bは、ブロックを書き戻すべき区画の確認に差分位置情報P2を用いることで、記憶装置2から全ての区画のブロックを順次読み出して、バックアップデータG2に含まれる各ブロックと比較しなくてよい。バックアップデータG2を用いてリストアを行う例では、区画番号“1”について、記憶装置2からのブロックの読み出し、および、読み出したブロックの比較を省略できる。
このように、版数管理装置1は、差分位置情報を生成することで、リストア時に、差分位置情報により変更がない(非差分)と設定されている区画に限定して、バックアップデータと記憶装置2との比較を行う。版数管理装置1は、それ以外の区画については比較なしに(比較を省略して)バックアップデータのブロックを記憶装置2に書き込む。これにより、全ての区画について記憶装置2からの読み出し、および、バックアップデータとの比較を行うよりも、リストア時のステップ数を低減できる。その結果、リストア時の版数管理装置1および記憶装置2の負荷を低減できる。また、リストア処理を高速化でき、リストアの所要時間を短縮できる。
なお、上記で示した版数管理装置1による差分位置情報の生成は、リストア完了時にも実行される。すなわち、演算部1bは、リストアに用いたバックアップデータ(第1のバックアップデータに相当)を取得し、当該バックアップデータによりイメージ情報M1を更新する。これにより、当該バックアップデータによるリストア直後の記憶装置2の各区画の内容がイメージ情報M1に反映される。そして、演算部1bは、該当のバックアップデータとは異なるタイミングで取得されたバックアップデータ(第2のバックアップデータに相当)と、更新後のイメージ情報M1とを区画ごとに比較し、差分位置情報を生成する。こうして、演算部1bは、次回のリストアに備えることができる。
次に、版数管理装置1の機能を有するサーバコンピュータを例示して、当該機能をより詳細に説明する。
[第2の実施の形態]
図2は、第2の実施の形態のバックアップシステムを示す図である。第2の実施の形態のバックアップシステムは、バックアップサーバ100および業務サーバ200を含む。バックアップサーバ100および業務サーバ200は、ネットワーク10に接続されている。ネットワーク10は、例えば、LAN(Local Area Network)である。ネットワーク10は、インターネットやWAN(Wide Area Network)などの広域ネットワークでもよい。
[第2の実施の形態]
図2は、第2の実施の形態のバックアップシステムを示す図である。第2の実施の形態のバックアップシステムは、バックアップサーバ100および業務サーバ200を含む。バックアップサーバ100および業務サーバ200は、ネットワーク10に接続されている。ネットワーク10は、例えば、LAN(Local Area Network)である。ネットワーク10は、インターネットやWAN(Wide Area Network)などの広域ネットワークでもよい。
バックアップサーバ100は、業務サーバ200で用いられるデータのバックアップを取得し、保持するサーバコンピュータである。バックアップサーバ100は、第1の実施の形態の版数管理装置1の一例である。バックアップサーバ100は、業務サーバ200が備えるディスク装置(単にディスクと称することがある)のイメージバックアップを取得する。イメージバックアップでは、ディスクのセクタ単位にバックアップを取得する。バックアップサーバ100は、イメージバックアップを1つのバックアップファイルとして生成する。
ここで、バックアップサーバ100は、ファイルシステムにより使用中のセクタに限定して、イメージバックアップを取得する。使用中のセクタとは、ファイルシステムで使用中のデータを記憶するセクタである。使用中でないセクタとは、ファイルシステムで使用中のデータを記憶していないセクタである。バックアップサーバ100が生成するバックアップファイルは、使用中のセクタのデータを含み、使用中でないセクタのデータを含まない。バックアップファイルでは、使用中でないセクタについてはデータなしと管理される。なお、以下の説明では、1つのセクタに記憶されたデータ(セクタ単位のデータ)を、セクタデータと称することがある。
バックアップサーバ100は、取得したバックアップファイルを用いたリストアを行うこともある。例えば、バックアップサーバ100は、ある時点に取得したバックアップファイルを用いて、業務サーバ200のディスクに記憶されたデータを、バックアップ取得時のデータに復元する。
業務サーバ200は、ユーザの業務を支援するサーバコンピュータである。業務サーバ200は、業務用のデータを記憶するディスクを備える。ディスクに格納されたデータのバックアップおよびリストアは、バックアップサーバ100により制御される。
ここで、バックアップサーバ100は、リストア時に、バックアップファイルに含まれる全てのセクタデータを業務サーバ200のディスクに書き込むわけではない。バックアップサーバ100は、バックアップファイルに含まれる各セクタのセクタデータのうち、リストア先のディスクの同じセクタのセクタデータと異なるもの(差分)だけを、リストア先のディスクの該当のセクタに書き込む。このように、イメージバックアップのバックアップファイルと、リストア先のディスクに格納されたデータとの差分のみを、ディスクに書き出すリストア方法を、「差分リストア」と称することがある。バックアップサーバ100は、差分リストアにおけるバックアップサーバ100および業務サーバ200の負荷を低減し、当該差分リストアの効率を改善するための機能を提供する。
図3は、バックアップサーバのハードウェア例を示す図である。バックアップサーバ100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。各ユニットはバックアップサーバ100のバスに接続されている。業務サーバ200もバックアップサーバ100と同様のユニットを用いて実現できる。
プロセッサ101は、バックアップサーバ100の情報処理を制御する。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、バックアップサーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、バックアップサーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。バックアップサーバ100は、フラッシュメモリやSSDなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、バックアップサーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部105は、バックアップサーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
媒体リーダ106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13としては、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13としては、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク10を介して業務サーバ200を含む他の情報処理装置と通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
図4は、バックアップシステムの機能例を示す図である。バックアップサーバ100は、バックアップ記憶部110、仮想ディスクイメージ記憶部120、差分位置記憶部130、バックアップ制御部140、リストア制御部150、仮想ディスクイメージ生成部160および差分位置取得部170を有する。
バックアップ記憶部110、仮想ディスクイメージ記憶部120および差分位置記憶部130は、RAM102やHDD103に確保された記憶領域を用いて実現される。バックアップ制御部140、リストア制御部150、仮想ディスクイメージ生成部160および差分位置取得部170は、RAM102に格納されたプログラム(バックアップ/リストア用のサーバプログラム)を、プロセッサ101が実行することで実現される。
バックアップ記憶部110は、バックアップサーバ100により取得されたバックアップファイルを記憶する。例えば、バックアップファイルは、取得された順に、版数“1”、“2”、“3”、・・・のように版数管理される。バックアップファイルは、セクタの識別情報(セクタ番号と称する)と、セクタデータとの対応関係を含む。
ここで、バックアップファイルは、第1の実施の形態で例示したバックアップデータの一例である。また、セクタデータは、第1の実施の形態で例示したデータブロック(ブロック)の一例である。
仮想ディスクイメージ記憶部120は、仮想ディスクイメージを記憶する。仮想ディスクイメージは、業務サーバ200のディスクの最新の状態を表す情報である。具体的には、仮想ディスクイメージは、セクタ番号と、当該セクタ番号に対応するセクタデータを含むバックアップファイルのうち、最新のバックアップファイルの識別情報とを対応付けた情報である。仮想ディスクイメージは、第1の実施の形態で例示したイメージ情報の一例である。
差分位置記憶部130は、差分位置情報を記憶する。差分位置情報は、バックアップデータごとに存在する。差分位置情報は、バックアップデータに含まれるセクタデータのうち、仮想ディスクイメージで示されるセクタデータと異なる(差分がある)セクタを管理するための情報である。一例として、差分位置情報では、差分の有無を差分フラグにより管理する。差分フラグ“1”(あるいは、“true”)は、差分ありを示す。差分フラグ“0”(あるいは、“false”)は、差分なし(非差分)を示す。
バックアップ制御部140は、業務サーバ200により保持されるデータのバックアップを取得する。例えば、バックアップ制御部140は、ユーザにより設定されたスケジュールに従って、あるいは、ユーザによるバックアップ開始指示の入力を受け付けたタイミングで、バックアップを開始する。バックアップ制御部140は、バックアップ開始通知を業務サーバ200に送信する。バックアップ制御部140は、業務サーバ200からバックアップ対象のセクタデータを順次受信し、受信した複数のセクタデータを含むバックアップファイルを生成し、バックアップ記憶部110に格納する。
リストア制御部150は、バックアップ記憶部110に記憶されたバックアップファイルを用いたリストア処理を制御する。例えば、リストア制御部150は、ユーザによるリストア開始指示の入力を受け付けたタイミングで、リストアを開始する。リストア開始指示は、リストアするバックアップファイルの版数の指定を含む。リストア制御部150は、リストア開始通知を業務サーバ200に送信する。リストア制御部150は、該当のバックアップファイルに含まれるセクタデータと、該当のバックアップファイルに対応する差分位置情報の差分フラグの値とを、セクタ番号の昇順に、業務サーバ200に送信する。
仮想ディスクイメージ生成部160は、バックアップ記憶部110に記憶された最新のバックアップファイルに基づいて、仮想ディスクイメージ記憶部120に記憶された仮想ディスクイメージを更新する。仮想ディスクイメージは、仮想ディスクイメージ記憶部120に1つ格納される。このため、仮想ディスクイメージ生成部160は、初回のバックアップ時に仮想ディスクイメージを生成して仮想ディスクイメージ記憶部120に格納した後は、当該仮想ディスクイメージを更新していくことになる。具体的には、仮想ディスクイメージ生成部160は、仮想ディスクイメージにおいて、最新のバックアップファイルでバックアップ対象となったセクタのセクタ番号に、当該最新のバックアップファイルの識別情報を対応付ける。
差分位置取得部170は、バックアップ記憶部110に記憶されたバックアップファイルと、仮想ディスクイメージ記憶部120に記憶された仮想ディスクイメージとをセクタごとに比較する。差分位置取得部170は、セクタごとの差分の有無を示す差分位置情報を該当のバックアップファイルに対して生成する。差分位置取得部170は、生成した差分位置情報を差分位置記憶部130に格納する。
業務サーバ200は、ディスク210、バックアップ処理部220およびリストア処理部230を有する。ディスク210は、業務サーバ200が備えるHDDである。ただし、ディスク210は、SSDなどの他の種類の記憶装置でもよい。バックアップ処理部220およびリストア処理部230は、業務サーバ200が備えるRAMに記憶されたプログラム(バックアップ/リストア用のエージェントプログラム)を、業務サーバ200が備えるプロセッサが実行することで実現される。
ディスク210は、業務サーバ200における業務処理に用いられる各種のファイルを記憶する。ディスク210に記憶されるファイルは、業務サーバ200のファイルシステムによって管理される。ファイルのサイズが1つのセクタの記憶容量(例えば、512バイトや4キロバイトなど)を超える場合、ファイルは複数のセクタに跨って格納される。
バックアップ処理部220は、バックアップサーバ100からバックアップ開始通知を受け付ける。バックアップ処理部220は、バックアップ開始通知に応じて、ディスク210の各セクタのセクタデータを読み出し、バックアップサーバ100に送信する。
リストア処理部230は、バックアップサーバ100からリストア開始通知を受け付ける。リストア処理部230は、バックアップサーバ100から復元対象のセクタのセクタデータと当該セクタの差分フラグの値とを受信する。リストア処理部230は、差分フラグの値に応じて、受信したセクタデータのディスク210への書き込み方法を2つの方法の中から選択する。
具体的には、あるセクタについて差分フラグの値が“0”であれば、リストア処理部230は、第1の方法を選択する。第1の方法では、リストア処理部230は、該当のセクタのセクタデータを、ディスク210から読み出し、バックアップサーバ100から受信したセクタデータと比較する。比較の結果、両セクタデータに差異があれば、リストア処理部230は、バックアップサーバ100から受信したセクタデータを、ディスク210の該当のセクタに書き込む(上書きする)。比較の結果、両セクタデータに差異がなければ(両セクタデータが同じであれば)、リストア処理部230は、バックアップサーバ100から受信したセクタデータを破棄し、ディスク210の該当のセクタのセクタデータをそのまま残す。
一方、あるセクタについて差分フラグの値が“1”であれば、リストア処理部230は、第2の方法を選択する。第2の方法では、リストア処理部230は、バックアップサーバ100から受信したセクタデータを、第1の方法で示した比較を省略して(当該比較を行わずに)、ディスク210の該当のセクタに書き込む(上書きする)。
なお、リストア処理部230は、セクタデータおよび差分フラグが送られてこないセクタについて、該当のバックアップタイミングにおいてセクタデータが削除されていたセクタであると判断する。そして、リストア処理部230は、ファイルシステム上でディスク210における該当のセクタのセクタデータを削除する。
図5は、バックアップファイルの例を示す図である。バックアップファイルg1は、バックアップ記憶部110に格納される。バックアップファイルg1は、バックアップ制御部140によりファイル名が付与される。例えば、バックアップファイルg1のファイル名は、“backup01.bak”である。バックアップ制御部140は、“backupXX.bak”の形式でバックファイルにファイル名を付与し、“XX”の部分には版数に相当する数字列を挿入する。バックアップ制御部140は、版数を2桁の数字列で“01”、“02”、・・・というように、バックアップタイミングが早いものから昇順に管理する。
バックアップファイルg1は、セクタ番号およびセクタデータを対応付けた複数のレコードを含む。セクタ番号は、ディスク210上のセクタのセクタ番号である。セクタデータは、該当のセクタに対してバックアップされたデータである。なお、以下の説明では、各セクタデータを識別するために、セクタデータを、“データA”、“データB”のように“データ”の文言の後に、大文字のアルファベット記号を付して表すことがある。
例えば、バックアップファイルg1は、セクタ番号“0”に対するデータAというレコードを含む。バックアップファイルg1は、セクタ番号“2”に対するデータBというレコードを含む。バックアップファイルg1は、セクタ番号“3”に対するデータCというレコードを含む。
バックアップファイルg1では、セクタ番号“1”のレコードが含まれていない。これは、セクタ番号“1”のセクタに、ファイルシステムにとって有効なデータが存在していない(未使用である)ことを意味する。
図6は、バックアップ一覧テーブルの例を示す図である。バックアップ一覧テーブルt1は、バックアップ記憶部110に格納される。バックアップ一覧テーブルt1は、バックアップファイルの識別情報を管理するテーブルである。一例として、バックアップファイルの識別情報は、ファイルID(IDentifier)と称する番号で表されるものとする。バックアップ一覧テーブルt1は、ファイルIDおよびファイル名の項目を含む。
ファイルIDの項目には、ファイルIDが登録される。ファイル名の項目には、ファイル名が登録される。例えば、バックアップ一覧テーブルt1には、ファイルIDが“1”、ファイル名が“backup01.bak”という情報が登録される。これは、ファイルID“1”で示されるバックアップファイル(バックアップファイルg1)のファイル名が“backup01.bak”であることを示す。
また、バックアップ一覧テーブルt1には、ファイルIDが“2”、ファイル名が“backup02.bak”という情報が登録される。これは、ファイルID“2”で示されるバックアップファイル(バックアップファイルg2)のファイル名が“backup02.bak”であることを示す。
ここで、バックアップファイルg2についても説明を加える。バックアップファイルg2は、バックアップファイルg1よりも後に取得されたバックアップファイルである。バックアップファイルg2は、セクタ番号“0”に対するデータAというレコードを含む。バックアップファイルg2は、セクタ番号“2”に対するデータDというレコードを含む。
図7は、仮想ディスクイメージの例を示す図である。仮想ディスクイメージm1は、仮想ディスクイメージ記憶部120に格納される。仮想ディスクイメージm1は、セクタ番号およびファイルIDの項目を含む。
セクタ番号の項目には、セクタ番号が登録される。ファイルIDの項目には、ファイルIDが登録される。図7で例示される仮想ディスクイメージm1の内容は、バックアップ処理により、バックアップファイルg2が取得された直後の状態を示している。
例えば、仮想ディスクイメージm1には、セクタ番号が“0”、ファイルIDが“2”という情報が登録される。これは、セクタ番号“0”の最新のセクタデータを含むバックアップファイルが、ファイルID“2”に対応するバックアップファイルg2であることを示す。バックアップファイルg2のセクタ番号“0”のセクタデータは、データAである。
また、仮想ディスクイメージm1には、セクタ番号が“2”、ファイルIDが“2”という情報が登録される。これは、セクタ番号“2”の最新のセクタデータを含むバックアップファイルが、ファイルID“2”に対応するバックアップファイルg2であることを示す。バックアップファイルg2のセクタ番号“2”のセクタデータは、データDである。
また、仮想ディスクイメージm1には、セクタ番号が“3”、ファイルIDが“1”という情報が登録される。これは、セクタ番号“3”の最新のセクタデータを含むバックアップファイルが、ファイルID“1”に対応するバックアップファイルg1であることを示す。バックアップファイルg1のセクタ番号“3”のセクタデータは、データCである。
図8は、差分位置情報の例を示す図である。差分位置情報p1は、図7で例示した仮想ディスクイメージm1に対するバックアップファイルg1の差分位置情報である。差分位置情報p1は、“010”というビット列で表される。差分位置情報p1のビット列の先頭ビットは、バックアップファイルg1の先頭のレコード(セクタ番号“0”のレコード)に対応する。また、同ビット列の2番目のビットは、バックアップファイルg1の2番目のレコード(セクタ番号“2”のレコード)に対応する。このように、差分位置情報p1のビット列の各ビットは、バックアップファイルg1の各レコードに、先頭から順に、それぞれ対応する。
図7の仮想ディスクイメージm1によれば、セクタ番号“0”に対する最新のセクタデータは、バックアップファイルg2に含まれるデータAである。バックアップファイルg1のセクタ番号“0”のセクタデータもデータAである。よって、差分位置情報p1の先頭ビットは“0”(差分なし)となる。
また、仮想ディスクイメージm1によれば、セクタ番号“2”に対する最新のセクタデータは、バックアップファイルg2に含まれるデータDである。バックアップファイルg1のセクタ番号“2”のセクタデータはデータBである。両セクタデータは異なる。よって、差分位置情報p2の2番目のビットは“1”(差分あり)となる。
更に、仮想ディスクイメージm1によれば、セクタ番号“3”に対する最新のセクタデータは、バックアップファイルg1に含まれるデータCである。よって、差分位置情報p1の先頭ビットは“0”(差分なし)となる。
図8では、差分位置情報p2も例示している。差分位置情報p2は、図7で例示した仮想ディスクイメージm1に対するバックアップファイルg2の差分位置情報である。差分位置情報p2は、“00”というビット列で表される(ここで示す例では、何れのセクタも差分なし)。差分位置情報p2のビット列の各ビットは、バックアップファイルg2の各レコードに、先頭から順に、それぞれ対応する。
なお、差分位置取得部170は、例えば、差分位置情報の識別名に、バックアップファイルの版数に相当する数値列を付与することで、差分位置情報とバックアップファイルとの対応関係を管理する。あるいは、差分位置取得部170は、バックアップファイルのファイルIDを差分位置情報に含めて、差分位置情報とバックアップファイルとの対応関係を管理してもよい。
次に、第2の実施の形態のバックアップシステムによるバックアップ手順を説明する。
図9は、バックアップ時のサーバ処理例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
図9は、バックアップ時のサーバ処理例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
(S11)バックアップ制御部140は、スケジュールされたタイミング、または、ユーザによるバックアップ開始指示の入力を受け付けたタイミングなどで、バックアップを開始する。バックアップ制御部140は、バックアップ開始通知を業務サーバ200に送信する。バックアップ制御部140は、セクタデータを格納するためのバックアップファイルを新たに生成し、ファイル名を付与して、バックアップ記憶部110に格納する。
(S12)バックアップ制御部140は、業務サーバ200からデータを受信する。バックアップ制御部140が業務サーバ200から受信するデータには2種類ある。第1には、業務サーバ200により順次送信されるセクタデータおよびセクタ番号である。第2には、業務サーバ200によるディスク210の全てのセクタデータの送信完了を示す終了通知である。
(S13)バックアップ制御部140は、今回、終了通知を受信したか否かを判定する。終了通知を受信していない場合、バックアップ制御部140は、処理をステップS14に進める。終了通知を受信していない場合は、セクタデータおよびセクタ番号を受信した場合に相当する。終了通知を受信した場合、バックアップ制御部140は、処理をステップS15に進める。
(S14)バックアップ制御部140は、今回のバックアップに対応するバックアップファイルに、受信したセクタ番号およびセクタデータを追加する。そして、バックアップ制御部140は、処理をステップS12に進める。
(S15)バックアップ制御部140は、今回のバックアップファイルにファイルIDを付与し、ファイルIDとファイル名との対応関係を、バックアップ一覧テーブルt1に登録する。
(S16)仮想ディスクイメージ生成部160は、仮想ディスクイメージの生成を行う。処理の詳細は後述される。
図10は、バックアップ時のエージェント処理例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
図10は、バックアップ時のエージェント処理例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(S21)バックアップ処理部220は、バックアップサーバ100からバックアップ開始通知を受信する。
(S22)バックアップ処理部220は、次に送信すべきセクタデータを、ディスク210から検索する。バックアップ処理部220は、セクタ番号の昇順に送信するセクタデータを検索する。バックアップ処理部220は、業務サーバ200のファイルシステムで使用されていないセクタを、セクタデータの検索の対象外とする。
(S22)バックアップ処理部220は、次に送信すべきセクタデータを、ディスク210から検索する。バックアップ処理部220は、セクタ番号の昇順に送信するセクタデータを検索する。バックアップ処理部220は、業務サーバ200のファイルシステムで使用されていないセクタを、セクタデータの検索の対象外とする。
(S23)バックアップ処理部220は、ステップS22で検索したセクタデータをディスク210から読み出す。
(S24)バックアップ処理部220は、読み出したセクタデータを、該当のセクタのセクタ番号とともにバックアップサーバ100に送信する。
(S24)バックアップ処理部220は、読み出したセクタデータを、該当のセクタのセクタ番号とともにバックアップサーバ100に送信する。
(S25)バックアップ処理部220は、ディスク210内の使用中のセクタについて、全てのセクタデータを送信したか否かを判定する。使用中のセクタについて全てのセクタデータを送信していない場合、バックアップ処理部220は、処理をステップS22に進める。使用中のセクタについて全てのセクタデータを送信した場合、バックアップ処理部220は、処理をステップS26に進める。
(S26)バックアップ処理部220は、バックアップサーバ100に終了通知を送信する。
続いて、第2の実施の形態のバックアップシステムによるリストア手順を説明する。
続いて、第2の実施の形態のバックアップシステムによるリストア手順を説明する。
図11は、リストア時のサーバ処理例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
(S31)リストア制御部150は、ユーザによるリストア開始指示の入力を受け付ける。リストア開始指示は、リストアに用いるバックアップファイルの版数を含む。リストア制御部150は、リストア開始通知を業務サーバ200に送信する。
(S31)リストア制御部150は、ユーザによるリストア開始指示の入力を受け付ける。リストア開始指示は、リストアに用いるバックアップファイルの版数を含む。リストア制御部150は、リストア開始通知を業務サーバ200に送信する。
(S32)リストア制御部150は、指定された版数のバックアップファイルから、セクタデータを1つ読み出す。例えば、リストア制御部150は、該当のバックアップファイルに含まれるセクタ番号の小さい方から順に、セクタデータを1つ読み出す。
(S33)リストア制御部150は、指定された版数のバックアップファイルに対応する差分位置情報から、ステップS32で読み出したセクタデータに対応する差分フラグを読み出す。
(S34)リストア制御部150は、読み出したセクタデータと差分フラグとを業務サーバ200に送信する。リストア制御部150は、セクタデータに対応するセクタ番号も業務サーバ200に送信する。
(S35)リストア制御部150は、指定された版数のバックアップファイルに含まれる全てのセクタデータを業務サーバ200に送信したか否かを判定する。全てのセクタデータを送信した場合、リストア制御部150は、処理をステップS36に進める。全てのセクタデータを送信していない場合、リストア制御部150は、処理をステップS32に進める。
(S36)リストア制御部150は、バックアップサーバ100に終了通知を送信する。
(S37)仮想ディスクイメージ生成部160は、仮想ディスクイメージの生成を行う。処理の詳細は後述される。
(S37)仮想ディスクイメージ生成部160は、仮想ディスクイメージの生成を行う。処理の詳細は後述される。
図12は、リストア時のエージェント処理例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
(S41)リストア処理部230は、バックアップサーバ100からリストア開始通知を受信する。リストア処理部230は、リストア開始通知により、リストアの開始を検知し、バックアップサーバ100からのデータ受信を待機する。
(S41)リストア処理部230は、バックアップサーバ100からリストア開始通知を受信する。リストア処理部230は、リストア開始通知により、リストアの開始を検知し、バックアップサーバ100からのデータ受信を待機する。
(S42)リストア処理部230は、バックアップサーバ100からデータを受信する。リストア処理部230がバックアップサーバ100から受信するデータには2種類ある。第1には、バックアップサーバ100により順次送信されるセクタデータとセクタ番号と差分フラグとのセットである。第2には、バックアップサーバ100によるバックアップファイルに含まれる全てのセクタデータの送信完了を示す終了通知である。
(S43)リストア処理部230は、今回、終了通知を受信したか否かを判定する。終了通知を受信していない場合、リストア処理部230は、処理をステップS44に進める。終了通知を受信していない場合は、セクタデータとセクタ番号と差分フラグのセットを受信した場合に相当する。終了通知を受信した場合、リストア処理部230は、処理を終了する。
(S44)リストア処理部230は、今回受信した差分フラグの値が“1”(差分フラグ=1)であるか否かを判定する。差分フラグの値が“1”である場合、リストア処理部230は、処理をステップS47に進める。差分フラグの値が“1”でない(すなわち、差分フラグの値が“0”である)場合、リストア処理部230は、処理をステップS45に進める。
(S45)リストア処理部230は、ディスク210のリストア先のセクタに格納されたセクタデータを読み出す。ここで、ステップS45のリストア先のセクタとは、リストア処理部230がバックアップサーバ100から今回受信したセクタデータのセクタ番号に対応するセクタである。
(S46)リストア処理部230は、バックアップサーバ100から今回受信したセクタデータと、ステップS45でディスク210から読み出したセクタデータとが一致するか否かを判定する。一致する場合、リストア処理部230は、処理をステップS42に進める。一致しない場合、リストア処理部230は、処理をステップS47に進める。
(S47)リストア処理部230は、ディスク210のリストア先のセクタに受信したセクタデータを書き込む。ステップS47のリストア先のセクタとは、ステップS45と同様に、リストア処理部230がバックアップサーバ100から今回受信したセクタデータのセクタ番号に対応するセクタである。そして、リストア処理部230は、処理をステップS42に進める。
このように、リストア処理部230は、差分フラグが“1”のセクタについては、ステップS45,S46を省略し(ステップS45,S46をスキップし)、ステップS47を実行する。すなわち、リストア制御部150は、差分フラグが“1”のセクタについては、ディスク210からのセクタデータの読み出しや比較を省略して、バックアップファイルのセクタデータをディスク210に書き込むように、業務サーバ200を制御しているといえる。
次に、仮想ディスクイメージ生成部160による仮想ディスクイメージ生成の手順を説明する。
図13は、仮想ディスクイメージ生成例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。下記の手順は、図9のステップS16(バックアップ後の処理)および図11のステップS37(リストア後の処理)に相当する。
図13は、仮想ディスクイメージ生成例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。下記の手順は、図9のステップS16(バックアップ後の処理)および図11のステップS37(リストア後の処理)に相当する。
(S51)仮想ディスクイメージ生成部160は、仮想ディスクイメージ記憶部120に記憶された仮想ディスクイメージm1に適用するバックアップファイルのファイル名(バックアップファイル名)を取得する。ここで、仮想ディスクイメージm1に適用するバックアップファイルは、バックアップ後の場合、今回取得したバックアップファイルである。仮想ディスクイメージm1に適用するバックアップファイルは、リストア後の場合、今回リストアに用いたバックアップファイルである。ステップS51の実行時に、仮想ディスクイメージm1が存在しない場合、仮想ディスクイメージ生成部160は、仮想ディスクイメージm1を生成し、仮想ディスクイメージ記憶部120に格納する。なお、仮想ディスクイメージm1の生成直後では、仮想ディスクイメージm1は、何れのセクタ番号のレコードも含んでいない。
(S52)仮想ディスクイメージ生成部160は、ステップS51で取得したファイル名に対応するバックアップファイルからセクタ番号を取得する。例えば、仮想ディスクイメージ生成部160は、該当のバックアップファイルから、セクタ番号の小さい順に1つセクタ番号を取得する。
(S53)仮想ディスクイメージ生成部160は、仮想ディスクイメージm1を参照して、ステップS52で取得したセクタ番号に対応するレコードが、仮想ディスクイメージm1にあるか否かを判定する。該当のセクタ番号に対応するレコードが仮想ディスクイメージm1にない場合、仮想ディスクイメージ生成部160は、処理をステップS54に進める。該当のセクタ番号に対応するレコードが仮想ディスクイメージm1にある場合、仮想ディスクイメージ生成部160は、処理をステップS55に進める。
(S54)仮想ディスクイメージ生成部160は、ステップS52で取得したセクタ番号と該当のバックアップファイルのファイルIDとを仮想ディスクイメージm1に追加する。ここで、仮想ディスクイメージ生成部160は、該当のバックアップファイルのファイルIDを、バックアップ記憶部110に記憶されたバックアップ一覧テーブルt1から取得する。そして、仮想ディスクイメージ生成部160は、処理をステップS56に進める。
(S55)仮想ディスクイメージ生成部160は、仮想ディスクイメージm1に含まれる該当のセクタ番号に対応する既存レコードのファイルIDを、ステップS51で取得したバックアップファイル名に対応するファイルIDに変更する。そして、仮想ディスクイメージ生成部160は、処理をステップS56に進める。
(S56)仮想ディスクイメージ生成部160は、バックアップファイルに含まれる全セクタについて仮想ディスクイメージm1の更新を完了したか否かを判定する。全セクタについて完了していない場合、仮想ディスクイメージ生成部160は、処理をステップS52に進める。全セクタについて完了した場合、仮想ディスクイメージ生成部160は、処理をステップS57に進める。
(S57)差分位置取得部170は、差分位置情報の生成を行う。処理の詳細は後述される。
図14は、差分位置情報の生成例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。以下に示す手順は、図13のステップS57に相当する。
図14は、差分位置情報の生成例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。以下に示す手順は、図13のステップS57に相当する。
(S61)差分位置取得部170は、バックアップ一覧テーブルt1からバックアップファイルのリストを抽出する。
(S62)差分位置取得部170は、リストの全バックアップファイルを処理済であるか否かを判定する。全バックアップファイルを処理済でない場合、差分位置取得部170は、処理をステップS63に進める。全バックアップファイルを処理済である場合、差分位置取得部170は、処理を終了する。
(S62)差分位置取得部170は、リストの全バックアップファイルを処理済であるか否かを判定する。全バックアップファイルを処理済でない場合、差分位置取得部170は、処理をステップS63に進める。全バックアップファイルを処理済である場合、差分位置取得部170は、処理を終了する。
(S63)差分位置取得部170は、未処理のバックアップファイルをリストから1つ選択する。ここで選択されたバックアップファイルを、以下のステップの説明において、着目するバックアップファイルと称する。
(S64)差分位置取得部170は、着目するバックアップファイルに対応する差分位置情報を空にする。ここで、空とは、差分位置情報に含まれる差分フラグが全て“0”であることを意味する。すなわち、差分位置取得部170は、着目するバックアップファイルに対応する差分位置情報の差分フラグを全て“0”に設定する。
(S65)差分位置取得部170は、着目するバックアップファイルが今回バックアップまたはリストアしたバックアップファイルであるか否かを判定する。ここで、今回バックアップしたバックアップファイルとは、差分位置情報の生成処理がバックアップ後に行われる場合に、今回のバックアップで取得されたバックアップファイルである。また、今回リストアしたバックアップファイルとは、差分位置情報の生成処理がリストア後に行われる場合に、今回のリストアに用いられたバックアップファイルである。着目するバックアップファイルが、今回バックアップまたはリストアしたバックアップファイルである場合、差分位置取得部170は、処理をステップS62に進める。着目するバックアップファイルが、今回バックアップまたはリストアしたバックアップファイルでない場合、差分位置取得部170は、処理をステップS66に進める。
(S66)差分位置取得部170は、着目するバックアップファイルから、1つのセクタ番号を選択し、選択したセクタ番号に対応するセクタデータを読み出す。
(S67)差分位置取得部170は、ステップS66で選択したセクタ番号について、仮想ディスクイメージm1から、当該セクタ番号に対応するセクタデータを読み出す。
(S67)差分位置取得部170は、ステップS66で選択したセクタ番号について、仮想ディスクイメージm1から、当該セクタ番号に対応するセクタデータを読み出す。
(S68)差分位置取得部170は、ステップS66で読み出したセクタデータとステップS67で読み出したセクタデータとが一致するか否かを判定する。両セクタデータが一致しない場合、差分位置取得部170は、処理をステップS69に進める。一致する場合、差分位置取得部170は、処理をステップS70に進める。
(S69)差分位置取得部170は、着目するバックアップファイルに対応する差分位置情報のビット列のうち、ステップS66で選択したセクタ番号に対応するビット(差分フラグ)の値を“1”(差分フラグ=“1”)に設定する。そして、差分位置取得部170は、処理をステップS71に進める。
(S70)差分位置取得部170は、着目するバックアップファイルに対応する差分位置情報のビット列のうち、ステップS66で選択したセクタ番号に対応するビット(差分フラグ)の値を“0”(差分フラグ=“0”)に設定する。ただし、差分位置取得部170は、ステップS64で、該当の差分位置情報を空に設定しているので該当のビット(差分フラグ)を“0”のままとすればよい。そして、差分位置取得部170は、処理をステップS71に進める。
(S71)差分位置取得部170は、着目するバックアップファイルに含まれる全セクタ番号で示される全セクタを処理済であるか(差分有無の判定を行ったか)否かを判定する。全セクタを処理済である場合、差分位置取得部170は、処理をステップS62に進める。全セクタを処理済でない場合、差分位置取得部170は、処理をステップS66に進める。
次に、バックアップサーバ100によるバックアップの具体例を説明する。
図15は、バックアップの具体例(その1)を示す図である。図15(A)は、初回のバックアップを例示している(以降の図では、セクタ番号の図示を省略する)。ディスク210の各セクタは次のように利用されている。セクタ番号“1”のセクタは、データAを記憶する。セクタ番号“2”のセクタは、未使用である。セクタ番号“3”のセクタは、データBを記憶する。セクタ番号“4”のセクタは、データCを記憶する。セクタ番号“5”のセクタは、未使用である。
図15は、バックアップの具体例(その1)を示す図である。図15(A)は、初回のバックアップを例示している(以降の図では、セクタ番号の図示を省略する)。ディスク210の各セクタは次のように利用されている。セクタ番号“1”のセクタは、データAを記憶する。セクタ番号“2”のセクタは、未使用である。セクタ番号“3”のセクタは、データBを記憶する。セクタ番号“4”のセクタは、データCを記憶する。セクタ番号“5”のセクタは、未使用である。
バックアップ制御部140は、ディスク210に記憶されたデータのバックアップを取得し、バックアップファイルg1を生成する(ステップST11)。バックアップファイルg1は、セクタ番号“1”のデータA、セクタ番号“3”のデータB、および、セクタ番号“4”のデータCを含む。
仮想ディスクイメージ生成部160は、バックアップファイルg1に基づいて、仮想ディスクイメージm1を生成する(ステップST12)。この段階では、仮想ディスクイメージm1は、ディスク210の現状態を表すイメージ情報となる。図15中では、仮想ディスクイメージm1内に、データA、データBおよびデータCのように便宜的に記載しているが、実データが含まれているわけではなく、前述のように、セクタ番号に対して、バックアップファイルg1のファイルIDが記録される。
差分位置取得部170は、バックアップファイルg1に対応する差分位置情報p1を生成する(ステップST13)。バックアップファイルg1は、今回のバックアップによって取得されたバックアップファイルなので、差分位置取得部170は、差分位置情報p1を空(全ての差分フラグを“0”)に設定する。
図15(B)は、2回目のバックアップを例示している。ディスク210の各セクタは次のように利用されている。セクタ番号“1”のセクタは、データAを記憶する(前回バックアップ時と変化なし)。セクタ番号“2”のセクタは、未使用である(前回バックアップ時と変化なし)。セクタ番号“3”のセクタは、データDを記憶する。すなわち、セクタ番号“3”のセクタでは、記憶するセクタデータが、データBからデータDへ更新されている。セクタ番号“4”のセクタは、未使用である。すなわち、セクタ番号“4”のセクタでは、データCが削除されている。セクタ番号“5”のセクタは、未使用である(前回バックアップ時と変化なし)。
バックアップ制御部140は、ディスク210に記憶されたデータのバックアップを取得し、バックアップファイルg2を生成する(ステップST21)。バックアップファイルg2は、セクタ番号“1”のデータA、および、セクタ番号“3”のデータDを含む。
仮想ディスクイメージ生成部160は、バックアップファイルg2と仮想ディスクイメージm1とをマージする(ステップST22)。すなわち、仮想ディスクイメージ生成部160は、バックアップファイルg2に基づいて仮想ディスクイメージm1を更新する。具体的には、セクタ番号“1”、“3”に対応するファイルIDを、バックアップファイルg2のファイルIDに変更する。仮想ディスクイメージ生成部160は、セクタ番号“4”に対応するファイルIDを、バックアップファイルg1のファイルIDのままとする(変更しない)。
差分位置取得部170は、バックアップファイルg2に対応する差分位置情報p2を生成する(ステップST23)。バックアップファイルg2は、今回のバックアップによって取得されたバックアップファイルなので、差分位置取得部170は、差分位置情報p2を空に設定する。
差分位置取得部170は、バックアップファイルg1に含まれるセクタデータと、仮想ディスクイメージm1により示されるセクタデータとをセクタごとに比較する(ステップST24)。差分位置取得部170は、比較に応じて、差分位置情報p1を更新する。
この場合、バックアップファイルg1のセクタ番号“1”のデータAと、仮想ディスクイメージm1により示されるセクタ番号“1”のデータAとは同じである。したがって、差分位置取得部170は、差分位置情報p1のセクタ番号“1”に対応する差分フラグを“0”とする。
また、バックアップファイルg1のセクタ番号“3”のデータBと、仮想ディスクイメージm1により示されるセクタ番号“3”のデータDとは異なる。したがって、差分位置取得部170は、差分位置情報p1のセクタ番号“3”に対応する差分フラグを“1”とする。
更に、バックアップファイルg1のセクタ番号“4”のデータCと、仮想ディスクイメージm1により示されるセクタ番号“4”のデータCとは同じである。したがって、差分位置取得部170は、差分位置情報p1のセクタ番号“4”に対応する差分フラグを“0”とする。
図16は、バックアップの具体例(その2)を示す図である。図16では、図15(B)に続く3回目のバックアップを例示している。ディスク210の各セクタは次のように利用されている。セクタ番号“1”のセクタは、データEを記憶する。すなわち、セクタ番号“1”のセクタでは、記憶するセクタデータが、データAからデータEへ更新されている。セクタ番号“2”のセクタは、データFを記憶する。セクタ番号“2”のセクタでは、データFが追加されている。セクタ番号“3”のセクタは、データDを記憶する(前回バックアップ時と変化なし)。セクタ番号“4”のセクタは、未使用である(前回バックアップ時と変化なし)。セクタ番号“5”のセクタは、未使用である(前回バックアップ時と変化なし)。
バックアップ制御部140は、ディスク210に記憶されたデータのバックアップを取得し、バックアップファイルg3を生成する(ステップST31)。バックアップファイルg3は、セクタ番号“1”のデータE、セクタ番号“2”のデータF、および、セクタ番号“3”のデータDを含む。
仮想ディスクイメージ生成部160は、バックアップファイルg3と仮想ディスクイメージm1とをマージする(ステップST32)。すなわち、仮想ディスクイメージ生成部160は、バックアップファイルg3に基づいて仮想ディスクイメージm1を更新する。具体的には、セクタ番号“1”、“2”、“3”に対応するファイルIDを、バックアップファイルg3のファイルIDに変更する。仮想ディスクイメージ生成部160は、セクタ番号“4”に対応するファイルIDを、バックアップファイルg1のファイルIDのままとする(変更しない)。
差分位置取得部170は、バックアップファイルg3に対応する差分位置情報p3を生成する(ステップST33)。バックアップファイルg3は、今回のバックアップによって取得されたバックアップファイルなので、差分位置取得部170は、差分位置情報p3を空に設定する。
差分位置取得部170は、バックアップファイルg2に含まれるセクタデータと、仮想ディスクイメージm1により示されるセクタデータとをセクタごとに比較する(ステップST34)。差分位置取得部170は、比較に応じて、差分位置情報p2を更新する。
この場合、バックアップファイルg2のセクタ番号“1”のデータAと、仮想ディスクイメージm1により示されるセクタ番号“1”のデータEとは異なる。したがって、差分位置取得部170は、差分位置情報p2のセクタ番号“1”に対応する差分フラグを“1”とする。
また、バックアップファイルg2のセクタ番号“3”のデータDと、仮想ディスクイメージm1により示されるセクタ番号“3”のデータDとは同じである。したがって、差分位置取得部170は、差分位置情報p2のセクタ番号“3”に対応する差分フラグを“0”とする。
差分位置取得部170は、バックアップファイルg1に含まれるセクタデータと、仮想ディスクイメージm1により示されるセクタデータとをセクタごとに比較する(ステップST35)。差分位置取得部170は、比較に応じて、差分位置情報p1を更新する。
この場合、バックアップファイルg1のセクタ番号“1”のデータAと、仮想ディスクイメージm1により示されるセクタ番号“1”のデータEとは異なる。したがって、差分位置取得部170は、差分位置情報p1のセクタ番号“1”に対応する差分フラグを“1”とする。
また、バックアップファイルg1のセクタ番号“3”のデータBと、仮想ディスクイメージm1により示されるセクタ番号“3”のデータDとは異なる。したがって、差分位置取得部170は、差分位置情報p1のセクタ番号“3”に対応する差分フラグを“1”とする。
更に、バックアップファイルg1のセクタ番号“4”のデータCと、仮想ディスクイメージm1により示されるセクタ番号“4”のデータCとは同じである。したがって、差分位置取得部170は、差分位置情報p1のセクタ番号“4”に対応する差分フラグを“0”とする。
このように、バックアップサーバ100は、ディスク210のバックアップを取得するたびに、過去に取得したバックアップファイルの差分位置情報を更新し、リストアに備える。次に、バックアップサーバ100によるリストアの具体例を説明する。
図17は、リストアの具体例を示す図である。図17では、リストアに用いるバックアップファイルとして、バックアップファイルg1がユーザにより選択された場合を例示している。
リストア制御部150は、バックアップファイルg1を、ディスク210にリストアする(ステップST41)。前述のように、リストア制御部150は、バックアップファイルg1からセクタ番号、セクタデータおよび差分フラグの組を、業務サーバ200に順番に送信する。業務サーバ200は、セクタ番号、セクタデータおよび差分フラグの組を受信すると、差分フラグに応じて、受信したセクタデータを、該当のセクタ番号に対応するディスク210上のセクタに書き込む。業務サーバ200は、差分フラグが“1”であれば、ディスク210上のセクタデータとの比較なしで、当該書き込みを行える。業務サーバ200は、差分フラグが“0”であれば、ディスク210上のセクタデータとの比較を行った上で、書き込みを行うか否かを決定する。業務サーバ200は、バックアップサーバ100から受信しないセクタ番号のセクタについては、ファイルシステム上で未使用として管理する。こうして、バックアップファイルg1によるリストアは完了する。
仮想ディスクイメージ生成部160は、バックアップファイルg1と仮想ディスクイメージm1とをマージする(ステップST42)。すなわち、仮想ディスクイメージ生成部160は、バックアップファイルg1に基づいて仮想ディスクイメージm1を更新する。具体的には、セクタ番号“1”、“3”、“4”に対応するファイルIDを、バックアップファイルg1のファイルIDに変更する。仮想ディスクイメージ生成部160は、セクタ番号“2”に対応するファイルIDを、バックアップファイルg3のファイルIDのままとする(変更しない)。
差分位置取得部170は、バックアップファイルg3に含まれるセクタデータと、仮想ディスクイメージm1により示されるセクタデータとをセクタごとに比較する(ステップST43)。差分位置取得部170は、比較に応じて、差分位置情報p3を更新する。
この場合、バックアップファイルg3のセクタ番号“1”のデータEと、仮想ディスクイメージm1により示されるセクタ番号“1”のデータAとは異なる。したがって、差分位置取得部170は、差分位置情報p3のセクタ番号“1”に対応する差分フラグを“1”とする。
また、バックアップファイルg3のセクタ番号“2”のデータFと、仮想ディスクイメージm1により示されるセクタ番号“2”のデータFとは同じである。したがって、差分位置取得部170は、差分位置情報p3のセクタ番号“2”に対応する差分フラグを“0”とする。
更に、バックアップファイルg3のセクタ番号“3”のデータDと、仮想ディスクイメージm1により示されるセクタ番号“3”のデータBとは異なる。したがって、差分位置取得部170は、差分位置情報p3のセクタ番号“3”に対応する差分フラグを“1”とする。
差分位置取得部170は、バックアップファイルg2に含まれるセクタデータと、仮想ディスクイメージm1により示されるセクタデータとをセクタごとに比較する(ステップST44)。差分位置取得部170は、比較に応じて、差分位置情報p2を更新する。
この場合、バックアップファイルg2のセクタ番号“1”のデータAと、仮想ディスクイメージm1により示されるセクタ番号“1”のデータAとは同じである。したがって、差分位置取得部170は、差分位置情報p2のセクタ番号“1”に対応する差分フラグを“0”とする。
また、バックアップファイルg2のセクタ番号“3”のデータDと、仮想ディスクイメージm1により示されるセクタ番号“3”のデータBとは異なる。したがって、差分位置取得部170は、差分位置情報p2のセクタ番号“3”に対応する差分フラグを“1”とする。
差分位置取得部170は、今回のリストアに用いたバックアップファイルg1に対応する差分位置情報p1を空に設定する(ステップST45)。
図18は、バックアップおよびリストアの時系列の例を示す図である。図18では、図15〜図17で例示したバックアップ/リストアの具体例の時系列を示している。図18に向かって左側から右側に向かう方向が時間軸の正方向である。
図18は、バックアップおよびリストアの時系列の例を示す図である。図18では、図15〜図17で例示したバックアップ/リストアの具体例の時系列を示している。図18に向かって左側から右側に向かう方向が時間軸の正方向である。
ここで、時間軸上のU1,U2,U3の各タイミングは、業務サーバ200におけるディスク210(図18では単にディスクと表記)の更新タイミングである。また、時間軸上のB1,B2,B3の各タイミングは、バックアップが行われたタイミングである。タイミングB1では、バックアップファイルg1が取得される。タイミングB2では、バックアップファイルg2が取得される。タイミングB3では、バックアップファイルg3が取得される。更に、時間軸上のR1(B1)のタイミングは、バックアップファイルg1を用いたリストアが行われたタイミングである。
図18に示すように、バックアップサーバ100は、バックアップを行うと、新たに取得したバックアップファイルに対して差分位置情報を生成する。また、バックアップサーバ100は、仮想ディスクイメージの更新も行い、今回とは別のタイミングで取得された他のバックアップファイルと仮想ディスクイメージとをセクタごとに比較し、当該他のバックアップファイルに対応する差分位置情報の更新も行う。
更に、バックアップサーバ100は、リストアを行うと、リストアに用いたバックアップファイルを取得して仮想ディスクイメージを更新する。また、バックアップサーバ100は、リストアに用いたバックアップファイルに対応する差分位置情報の更新を行う(空に設定する)。そして、バックアップサーバ100は、リストアに用いたバックアップファイルとは別のタイミングで取得された他のバックアップファイルと仮想ディスクイメージとをセクタごとに比較し、当該他のバックアップファイルに対応する差分位置情報の更新も行う。
次に、リストアに伴うディスク210におけるI/O(Input / Output)を例示する。
図19は、リストア時のI/Oの例を示す図である。図19の例では、仮想ディスクイメージm1内に4つのセクタを例示している。当該4つのセクタに対応するセクタデータは次の通りである。第1のセクタはデータAである。第2のセクタはデータEである。第3のセクタはデータCである。第4のセクタはデータFである。
図19は、リストア時のI/Oの例を示す図である。図19の例では、仮想ディスクイメージm1内に4つのセクタを例示している。当該4つのセクタに対応するセクタデータは次の通りである。第1のセクタはデータAである。第2のセクタはデータEである。第3のセクタはデータCである。第4のセクタはデータFである。
また、バックアップファイルg4は、次のセクタデータを含む。第1のセクタはデータAである。第2のセクタはデータBである。第3のセクタはデータCである。第4のセクタはデータDである。
バックアップファイルg4に対応する差分位置情報p4は、次の差分フラグを含む。第1のセクタの差分フラグは“0”である。第2のセクタの差分フラグは“1”である。第3のセクタの差分フラグは“0”である。第4のセクタの差分フラグは“1”である。
そして、ディスク210の各セクタに記憶されているセクタデータは、次の通りである。第1のセクタはデータAである。第2のセクタはデータBである。第3のセクタはデータCである。第4のセクタはデータFである。
この場合に、バックアップサーバ100の機能により、バックアップファイルg4を用いてリストアを行うことを考える。業務サーバ200は、バックアップサーバ100から、バックアップファイルg4に含まれる各セクタデータを、差分フラグとともに順次受信する。リストア処理部230は、差分フラグの値に応じて、ディスク210の該当のセクタへのセクタデータの書き込みを行う。
具体的には、(1)第1のセクタについては、差分フラグ“0”のため、リストア処理部230は、ディスク210から第1のセクタのデータAを読み出して、バックアップサーバ100から受信したデータAと比較する。この場合、両セクタデータはデータAで同じなので、リストア処理部230は、ディスク210の第1のセクタへの書き込みを行わない。
(2)第2のセクタについては、差分フラグ“1”のため、リストア処理部230は、セクタデータの比較を省略し、バックアップサーバ100から受信したデータBを、ディスク210の第2のセクタへ書き込む。
(3)第3のセクタについては、差分フラグ“0”のため、リストア処理部230は、ディスク210から第3のセクタのデータCを読み出して、バックアップサーバ100から受信したデータCと比較する。この場合、両セクタデータはデータCで同じなので、リストア処理部230は、ディスク210の第3のセクタへの書き込みを行わない。
(4)第4のセクタについては、差分フラグ“1”のため、リストア処理部230は、セクタデータの比較を省略し、バックアップサーバ100から受信したデータDを、ディスク210の第4のセクタへ書き込む。
このように、第2の実施の形態のバックアップシステムでは、上記(2)(4)において、ディスク210の第2,第4のセクタからのセクタデータの読み出し、および、セクタデータの比較を省略することができる。
図20は、リストア時のI/Oの比較例を示す図である。図20(A)は、リストア時に、バックアップファイルg4の内容を全てディスク210に書き込む例を示している。図20(A)の例では、リストア時にディスク210の全てのセクタに書き込みが行われる。このため、リストアの所要時間が比較的長くなる。特に、ディスク210がRAID(Redundant Arrays of Inexpensive Disks)構成をとっている場合は、読み込み性能に比べて書き込み性能が悪い傾向にあるため、リストアの所要時間が過大になるおそれもある。また、ディスク210として記憶素子に書き込み回数制限があるSSDを使用する場合、リストアにより全てのセクタに書き込みを行うことは、SSDの寿命を短くする要因になる。
図20(B)は、リストア時に、バックアップファイルg4とディスク210との差分のセクタのみを、ディスク210に書き込む例を示している。ただし、図20(B)の例では、セクタごとの差分有無を確認するために、ディスク210の各セクタの内容を全て読み出す点が、図19の例と異なる。図20(B)の例では、図20(A)の例に比べて、I/O回数は増えるが、リストアの所要時間やSSDの長寿命化の点で有利である。しかし、図20(B)の方法では、差分有無の確認のために、リストア時にディスク210の各セクタの内容を全て読み出しており、読み出しに伴う負荷が高まり、リストアの所要時間が長引くおそれがある。このため、リストアの効率化において改善の余地がある。
図20で例示した以外の方法として、例えば、ディスク210へのアクセスを常に監視してセクタごとの更新を検出し、既存のバックアップファイルに含まれるセクタ番号ごとに更新有無を管理することも考えられる。しかし、この方法では、監視自体の負荷が過大になる可能性が高い。
そこで、バックアップサーバ100は、バックアップ処理を行った際に、バックアップファイルごとに差分位置情報を作成する。これにより、図19で例示したように、リストア時において、バックアップファイルのセクタデータと差分のある可能性のあるセクタに対し、ディスク210からのセクタデータの読み出し、および、比較なしに、バックアップファイルのセクタデータを書き込める。言い換えれば、リストア時に差分位置情報により変更していないと思われるセクタのみを比較すればよい。これにより、図20(B)の方法に比べて、ディスク210に対するリストア時のI/O回数を低減でき、リストアに伴うステップ数を減らせる。その結果、バックアップサーバ100および業務サーバ200のリストア時の負荷を低減できる。また、リストアの所要時間を短縮することができる。
なお、第2の実施の形態の例では、バックアップサーバ100は、バックアップファイルにおいて、セクタ単位にバックアップしたデータを管理するものとしたが、複数のセクタの集合(例えば、ファイル単位)にバックアップしたデータを管理してもよい。例えば、ファイル単位にバックアップしたデータを管理する場合、バックアップサーバ100は、バックアップしたデータの識別情報(セクタ番号に代わる情報)として、ファイル名やセクタ番号範囲などを用いることができる。
また、第2の実施の形態の例では、業務サーバ200のバックアップをリモートのバックアップサーバ100により取得するものとしたが、バックアップサーバ100の機能を業務サーバ200が有してもよい。
また、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体13に記録できる。
例えば、プログラムを記録した記録媒体13を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体13に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
1 版数管理装置
1a 記憶部
1b 演算部
2 記憶装置
G1,G2,G3 バックアップデータ
M1 イメージ情報
P1,P2,P3 差分位置情報
1a 記憶部
1b 演算部
2 記憶装置
G1,G2,G3 バックアップデータ
M1 イメージ情報
P1,P2,P3 差分位置情報
Claims (7)
- コンピュータに、
データブロックを記憶する区画を複数含む記憶装置に対して、バックアップされた区画ごとに最新のデータブロックを示す情報を含むイメージ情報を記憶し、
前記記憶装置の複数の区画に記憶されている複数のデータブロックを含む第1のバックアップデータを取得し、前記複数のデータブロックに応じて前記イメージ情報を更新し、
前記第1のバックアップデータとは異なるタイミングで取得された第2のバックアップデータに含まれる第1のデータブロックと更新後の前記イメージ情報により示される第2のデータブロックとを区画ごとに比較し、比較に応じて区画ごとの差分の有無を示す差分位置情報を前記第2のバックアップデータに対して生成する、
処理を実行させるバックアップ/リストアプログラム。 - 前記第2のバックアップデータを前記記憶装置にリストアする際に、前記第2のバックアップデータに対応する前記差分位置情報に基づいて、差分なしの区画の場合、前記第1のデータブロックと前記記憶装置に記憶された第3のデータブロックとの比較に応じて前記第1のデータブロックを前記記憶装置に書き込むか否かを決定し、また、差分ありの区画の場合、前記比較を省略して、前記第1のデータブロックを前記記憶装置に書き込むように制御する、請求項1記載のバックアップ/リストアプログラム。
- リストアに用いた前記第2のバックアップデータを取得し、前記第2のバックアップデータに含まれる前記複数のデータブロックに応じて前記イメージ情報を更新し、前記第1のバックアップデータおよび前記第2のバックアップデータの区画ごとの前記比較に応じて、前記第1のバックアップデータに対する前記差分位置情報を生成する、請求項2記載のバックアップ/リストアプログラム。
- 前記記憶装置から前記第1のバックアップデータを取得する際に、ファイルシステムにより使用されている区画に限定して、前記第1のバックアップデータを取得する、請求項1乃至3の何れか1項に記載のバックアップ/リストアプログラム。
- 前記イメージ情報の更新では、前記第1のバックアップデータが前記イメージ情報に含まれる第1の区画に対応するデータブロックを含む場合、前記第1の区画に対して前記第1のバックアップデータの識別情報を前記イメージ情報に記録する、請求項4記載のバックアップ/リストアプログラム。
- データブロックを記憶する区画を複数含む記憶装置に対して、バックアップされた区画ごとに最新のデータブロックを示す情報を含むイメージ情報を記憶する記憶部と、
前記記憶装置の複数の区画に記憶されている複数のデータブロックを含む第1のバックアップデータを取得し、前記複数のデータブロックに応じて前記イメージ情報を更新し、前記第1のバックアップデータとは異なるタイミングで取得された第2のバックアップデータに含まれる第1のデータブロックと更新後の前記イメージ情報により示される第2のデータブロックとを区画ごとに比較し、比較に応じて区画ごとの差分の有無を示す差分位置情報を前記第2のバックアップデータに対して生成する演算部と、
を有する版数管理装置。 - コンピュータが、
データブロックを記憶する区画を複数含む記憶装置に対して、バックアップされた区画ごとに最新のデータブロックを示す情報を含むイメージ情報を記憶し、
前記記憶装置の複数の区画に記憶されている複数のデータブロックを含む第1のバックアップデータを取得し、前記複数のデータブロックに応じて前記イメージ情報を更新し、
前記第1のバックアップデータとは異なるタイミングで取得された第2のバックアップデータに含まれる第1のデータブロックと更新後の前記イメージ情報により示される第2のデータブロックとを区画ごとに比較し、比較に応じて区画ごとの差分の有無を示す差分位置情報を前記第2のバックアップデータに対して生成する、
バックアップ/リストア方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016155181A JP2018025839A (ja) | 2016-08-08 | 2016-08-08 | バックアップ/リストアプログラム、版数管理装置およびバックアップ/リストア方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016155181A JP2018025839A (ja) | 2016-08-08 | 2016-08-08 | バックアップ/リストアプログラム、版数管理装置およびバックアップ/リストア方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018025839A true JP2018025839A (ja) | 2018-02-15 |
Family
ID=61194145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016155181A Pending JP2018025839A (ja) | 2016-08-08 | 2016-08-08 | バックアップ/リストアプログラム、版数管理装置およびバックアップ/リストア方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018025839A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377309A (zh) * | 2019-07-18 | 2019-10-25 | 上海擎感智能科技有限公司 | 数据恢复方法、系统及设备 |
-
2016
- 2016-08-08 JP JP2016155181A patent/JP2018025839A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377309A (zh) * | 2019-07-18 | 2019-10-25 | 上海擎感智能科技有限公司 | 数据恢复方法、系统及设备 |
CN110377309B (zh) * | 2019-07-18 | 2023-12-15 | 上海擎感智能科技有限公司 | 数据恢复方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8090917B2 (en) | Managing storage and migration of backup data | |
CN109766341B (zh) | 一种建立哈希映射的方法、装置、存储介质 | |
US11281546B2 (en) | System and method for performing an incremental backup for a persistent storage system that stores data for a node cluster | |
JP2019204278A (ja) | 情報処理システム、情報処理装置およびプログラム | |
JP2005301497A (ja) | ストレージ管理装置、リストア方法及びそのプログラム | |
JP2013045379A (ja) | ストレージ制御方法、情報処理装置およびプログラム | |
US20070061540A1 (en) | Data storage system using segmentable virtual volumes | |
KR101693683B1 (ko) | 가상 데이터베이스 되감기 | |
US9395936B2 (en) | Method and apparatus for remote storage performance data copy | |
JP2012022490A (ja) | データ処理装置、データ処理方法、データ処理プログラムおよびストレージ装置 | |
JP5581776B2 (ja) | バックアップ装置,バックアップ方法およびバックアッププログラム | |
US11429498B2 (en) | System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout | |
US20230281167A1 (en) | Hybrid synchronization using a shadow component | |
JP5721056B2 (ja) | トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム | |
US8914325B2 (en) | Change tracking for multiphase deduplication | |
CN109189326B (zh) | 分布式集群的管理方法和装置 | |
JPWO2007099636A1 (ja) | ファイルシステム移行方法、ファイルシステム移行プログラム及びファイルシステム移行装置 | |
JP5781716B2 (ja) | 計算機システム及び非同期レプリケーション管理方法 | |
JP5585116B2 (ja) | ストレージシステム | |
JPWO2014136172A1 (ja) | データベース装置、プログラムおよびデータ処理方法 | |
US7549029B2 (en) | Methods for creating hierarchical copies | |
JP2018025839A (ja) | バックアップ/リストアプログラム、版数管理装置およびバックアップ/リストア方法 | |
JP4390618B2 (ja) | データベース再編成プログラム、データベース再編成方法、及びデータベース再編成装置 | |
CN113886352B (zh) | 分布式文件系统的元数据恢复方法、装置、设备及介质 | |
JP2021114164A (ja) | ストレージ装置及びストレージ制御方法 |