バックアップ
- データを保護しコピーを別の場所に確保しておく行為。
- アプリケーションから利用されるデータの場合にはその整合性、一貫性が問題となる。
- データが大きい場合一度に全てをバックアップすることが困難。
- バックアップ時にはバックアップアプリケーションとアプリケーションやハードウェアで適切に連携する必要がある。
整合性
バックアップの整合性には複数の種類がある。
アプリケーション整合性
OS内にエージェントが必要。アプリケーションレベルでの整合性があり、完全な復旧が保証される。アプリケーション整合性でバックアップを取得するためにはアプリケーションをきちんと認識し、整合性のある状態のスナップショットを作成したうえでそれを取得することが必須となる。
簡単にアプリケーションの整合性を保つためにはアプリケーション自体を停止してしまうという手法もある。ただしこれは通常アプリケーション整合性とは呼ばれない。
ファイルシステム整合性
OS内にエージェントが必要。VSSやスクリプト等の整合性を保つための仕組みが失敗した場合にはこのファイルシステム整合性となる。
クラッシュ整合性
OSにエージェントは必要ない。サーバーの電源が急に切れたレベルの整合性。OSを意識せずにディスクレベルでのスナップショットを作成したような場合にこの整合性となる。実際にOSがクラッシュすることはあり、その場合に再起動したのと同じレベルとなる。
この整合性はダメということではなく、このような状況でもきちんとデータの整合性を保つ仕組みを持っているアプリケーションも存在するし、通常は問題無いことも多い。
VSS
- Windowsにおいては一貫性を持ったバックアップ(アプリケーション整合性バックアップ)のための連携はVSS(Volume Shadow copy Service)を用いて行われる
- 一貫性のあるデータの状態を「スナップショット」あるいは「シャドウコピー」と呼び、バックアップアプリケーションはこれを作成し取得する。
- この処理は下記の登場人物で行われる
- VSSサービス
- Windowsのサービス。全体のハブとなる。
- VSSリクエスター
- 典型的にはバックアップソフトウェア。シャドウコピーの作成を依頼する。
- VSSライター
- バックアップするための一貫性のあるデータが存在する状況を作り出す役割。VSS対応の製品やOS自体にVSSライターが含まれている。VSSライターが登録されることでVSSに対応したコンポーネントが存在していることがわかるし、実際にVSSを作成することができることになる。
- VSSプロバイダー
- 実際にシャドウコピーを作成、維持する役割のコンポーネント。
- VSSサービス
シャドウコピーを作成する方法
大きく下記の3つの方法がある
- 完全なコピー
- 特定の時点の完全なコピーを読み取り専用で作成し、それをバックアップする。
- コピーオンライト
- 特定の時点以降の書き込みがあった場合に、元のデータを別領域にコピーする方式 。
- リダイレクトオンライト
- 特定の時点以降は元のボリュームには手を加えずに、全ての変更を別の領域に書き込む方式。
VSS関連コマンド
vssadmin list writers
登録されているVSSライターの一覧を表示する
vssadmin list providers
登録されているVSSプロバイダー一覧を表示する
vssadmin list volumes
シャドウコピーで利用できるボリュームの一覧を表示する
Linuxのアプリケーション整合性バックアップ
- バックアップ前のプリスクリプト、バックアップ後のポストスクリプトを実行しその中でアプリケーションに対するIOの停止、再開操作を行うことで実現する。もちろんアプリケーションが対応している必要がある。