Bacula(バキュラ)とは?

投稿者: | 2014年6月11日

Baculaとは?

Bacula(バキュラ)はオープンソース・統合管理バックアップソフトであり、複数のコンピュータプログラムをセットにしたもので、システム管理者がバックアップや復元、データの検査などを、異なる種類の計算機を含むネットワーク越しに行 うことを可能にする。Baculaの全要素を単一のコンピュータで実行することもできるし、テープやディスクなどさまざまな媒体にバックアップを書き込むこともできる。

技術用語を使うなら、クライアント・サーバ方式のネットワーク・バックアップ・システムである。失ったり損傷したファイルを柔軟に検索して復元できるなど、多数の高度なストレージ管理機能がBaculaに備わっているが、その使用方法は比較的簡単である。モジュール化を取り入れた設計により、Baculaは単一のコンピュータから大規模ネットワー クの数百台のコンピュータまでサポートできるスケーラビリティを備えている。

Bacula…誰が為に?

もしあなたがtar、dump、bru などを現在使っていて、ネットワークバックアップや柔軟性、カタログサービスなどを強化したいなら、Bacula はそれらの機能を追加するための最 適な選択だと言える。しかし、Bacula はtar やdump よりもセットアップや使用が難しいため、UNIX システムの運用経験がないユーザや、洗練されたバックアップ製品を使っ たことがないユーザの場合、Bacula は適さないかもしれない。

前述したようなシンプルなプログラムでテープにデータをバックアップするのと同様の動作をBacula に期待しているなら、Baculaはとても難しく感じられるだろう。 Bacula はユーザが指定したルールにもとづいてデータを保護するように設計されている。このため、テープは極力再利用せず、再利用は最後の手段となる。もちろんBacula に同じテープへの上書きを強制することは可能だが、より単純なプログラムの方が簡単かつ効率的にこのように制御できる。 複数のボリュームにまたがって書き込める(すなわちテープ1 本あたりの容量に制限されない) バックアッププログラムを必要としているのなら、Baculaは最適である。

さらに、多数のBacula ユーザが、他の同じようなプログラムを使うよりも、Bacula の方がセットアップも使用も簡単であると報告している。 Legato Networker.、ARCserveIT、Arkeia、PerfectBackup+などの洗練された商用パッケージを使用しているのなら、Bacula に関心を持つかもしれない。Bacula は、こ れらと同等の多数の機能を提供するからである。

Bacula コンポーネントとサービス

 Bacula は、ディレクタ、コンソール、ファイル、ストレージ、モニタという5 つの 要素あるいは機能で構成されている。

リソース早見表

図1.1: Bacula アプリケーションの相互関連
(thanks to Aristedes Maniatis for this graphic and the one below)


Bacula ディレクタ(統合管理ノード)

Bacula ディレクタは、バックアップ、リストア、照合、アーカイブなどBaculaにお けるすべてのオペレーションを管理する。システム管理者は、Bacula ディレクタでバックアッ プとリストアのスケジューリングを管理できる。詳細については、Bacula Developer’s Guide のDirector Services Daemon Design Document を参照。ディレクタは、デーモン(またはサー ビス) としてバックグラウンドで動作する。 

Bacula コンソール

Bacula コンソールは、管理者またはユーザがBacula ディレクタと通信するためのサービスで ある。現在、テキストベース、QT ベースのGUI、wxWidgets ベースのGUI の3 種類のコンソー ルプログラムが用意されている。テキストベースのコンソールはもっともシンプルで、シェ ルウィンドウ(TTY インタフェース) で実行する。ほとんどのシステム管理者は、このインタ フェースで十分と感じるだろう。GNOME GUI はまだ不完全であるが、テキストコンソールの 機能の多くをカバーしているwxWigdet GUI は対話式リストア機能を提供する。また、コマン ドのタブ補完を含むシェルコンソールの機能の多くを提供している。さらに、タイプ中のコマ ンドに関するヘルプ機能も持っている。詳細についてはBacula Console Design Document (Chapter 1 on page 1) を参照。→(  Bacula Console Design Document Chapter. )


Bacula ファイルデーモン(Bacula クライアント)

Bacula ファイルデーモン(別名クライアントプログラム/エージェント) は、バックアップ対象のマシンにインストールするプログラムである。クライアントのオペレーティングシステム別に用意されていて、ディレクタからの要求に応じてファイルの属性やデータを提供する。また、リストア作業のときも、ファイル属性やデータのリストアに関わる。詳細については、”Bacula Developer’s Guide”の”File Services Daemon Design Document”を参照。このプログラムは、バックアップ対象マシンでデーモンとして動作する。Unix/Linux 用のファイルデーモンに加えて、Windowsファイルデーモンも利用できる(通常バイナリ形式で配布)。Windows ファイルデーモンは現行のWindows の各バージョンで動作する(XP、7、8、2003、2008、2012)。


Bacula ストレージデーモン

Bacula ストレージデーモン(サービス)は、物理的なメディアまたはボリュームにファイル属性およびデータを保存したりリストアするプログラムである。すなわち、ストレージデーモンはテープ(または他のストレージ媒体) への読み書きを担当する。詳細については、”Bacula Developer’s Guide”の”Storage Services Daemon Design Document”を参照。ストレージデーモンはデーモンとしてバックアップ先デバイス(通常はテープドライブ) を持つマシンで動作する。


カタログ

カタログサービスは、バックアップされたすべてのファイルのインデックスとボリュームのデータベースを保持する役割を担っている。カタログサービスによって、リストアしたいファ
イルを迅速に見つけられるようになる。カタログは、すべてのボリュームのレコード、すべてのバックアップジョブ、保存しているすべてのファイル情報を管理し、これによってボリューム管理やリストアの効率が高められている。この特徴によって、Bacula はtar やbru などのシンプルなプログラムと一線を画している。現在Bacula はMySQL、PostgreSQL、SQLite をサポートしており、Bacula 環境構築時にこれらからどれか1 つを選択できる1。

これら3 つのデータベースは、高速なインデックス、任意の問い合わせ、セキュリテイに関する十分な機能を備えている。Bacula プロジェクトは、これら以外のメジャーなデータベースをサポートする計画も持っているが、現在のところMyQL、PostgreSQL、SQLite のみをサポートする。カタログに関する技術的な詳細と移植に関しては、開発者用ドキュメントの”CatalogServices Design Document”を参照。

MySQL とPostgreSQL は、さまざまなOS で利用できる。ソースからのインストールについては、本書のInstalling and Configuring MySQLの章を参照。MySQL自体の詳細はwww.mysql.comを参照。またはPostgreSQL については、本書のInstalling and Configuring PostgreSQL の章を参照。PostgreSQL 自体の詳細はwww.postgresql.org を参照。

SQLite のビルドも同様に簡単である。SQLite の構成に関する詳細はInstalling and Configuring SQLite の章を参照。


Bacula モニタ

Bacula モニタサービスは、管理者またはユーザが、Bacula ディレクタ、Bacula ファイルデーモン、Bacula ストレージデーモンの現在の状態をチェックするために用いる。今のところGTK+版のみが利用でき、GNOME、KDE、あるいはFreeDesktop.org のシステムトレイ標準に準拠した任意のウィンドウマネージャ上で動作する。

Bacula Enterprise の正常な動作には、ディレクタデーモン、ファイルデーモン、ストレージデーモン、およびカタログサービスを適切に設定して実行する必要がある。正常にバックアップまたはリストアするには、次の4 つのデーモンを正しく設定して動作させる必要がある: ディレクタデーモン、ファイルデーモン、ストレージデーモン、およびカタログサービス(MySQL、PostgreSQL、またはSQLite)。

Bacula の設定について

バックアップシステム全体の構成、クライアントとそれらで何をどのようにバックアップするかといった情報をBacula に知らせるには、いくつかの設定ファイルを編集してリソース(あるいはオブジェクト) を登録する必要がある。その全体像を下図に示す。

リソース早見表

本マニュアルの記述に関する留意点

Bacula は進化中であり、本書の内容が実際のプログラムに完璧に対応していない可能性がある。アスタリスク(*) で始まる記述箇所は、その機能は実装されていないことを示す。プラス記号(+) で始まる記述箇所は、その機能が部分的に実装されていることを示す。

正式リリースされたバージョンに対応したマニュアルの場合、上記の規約が当てはまる。オンラインマニュアル(www.bacula.org ) として本書を読んでいる場合には、CVS にある開発中のバージョンには正式リリースしたバージョンにはない機能が含まれている可能性があることに留意していただきたい。同様に、全般的に実際のプログラムよりも本書の内容が多少遅れていることにも留意していただきたい。

クイックスタート

Bacula を入手してすぐに使い始める場合、後述の「用語集」と第6 章「現在のBacula の状態」を読み、そして第10 章「Bacula 事始め」に進んでBacula を使い始めるための全体像を把握するとよいだろう。その後、第12 章「チュートリアル」、第13 章「How to Configure Bacula」を読み進めて使い始めてほしい。

用語集

管理者
Bacula システムの管理に携わる人またはグループ。

バックアップ
ファイルを保存するBacula ジョブ。

ブートストラップファイル
ブートストラップファイルは、Bacula またはスタンドアロン抽出ユーティリティ(bextract) が単一または複数ボリュームからデータをリストアできるよう、必要なコマンドをコンパクトな形式で記述したASCII ファイルである。たとえば、バックアップ直後のシステムの状態などが記録されている。ブートストラップファイルが残っていれば、Bacula はカタログなしでもリストアできる。必要なファイルをリストアできるよう、カタログ情報にもとづいてブートストラップファイルを作成することもできる。

カタログ
ジョブ、クライアント、バックアップしたファイル、バックアップが保存されているボリュームの情報を格納したもの。カタログに保存されている情報によって、管理者またはユーザは、実行されたジョブとそのステータス、バックアップしたファイルの重要な情報を把握できるだけでなく、もっとも重要な情報として、リストアしたいファイルを選択できるようになる。カタログはオンラインのリソースであるが、バックアップされたファイルのデータそのものは格納していない。カタログに保存されている情報のほとんどは、バックアップ・ボリューム(すなわち、テープ) にも記録される。言うまでもなく、テープにはファイル属性(下記参照) だけでなく、バックアップしたファイルのデータそのものも書き込まれる。カタログ機能は、他のシンプルなバックアッププログラム(dump やtar など) とBaculaの違いを際立たせる特徴のひとつである。

クライアント
Bacula 用語では、クライアントはファイルサービス、ファイルデーモン、(略称として) FD と呼ぶこともあり、バックアップ対象のマシンを指す。クライアントは、設定ファイルのリソースの中で定義される。

コンソール
ディレクタに対するインタフェースで、管理者またはユーザがBacula を制御するために使われるプログラム群。

デーモン
バックグラウンドジョブとして常駐して、なんらかのタスクを実行するプログラムに対するUnix における呼称。Windows およびいくつかのUNIX システムでは、デーモンの代わりにサービスと呼ぶ。

ディレクティブ
設定ファイルのリソース定義の中で、リソースの特性や設定値を定義するために使う宣言。たとえば、Name は、リソース名を定義するためのディレクティブで
ある。

ディレクタ
Bacula システムの中核となるデーモンで、Bacula におけるすべてのオペレーションのスケジュールを管理して実行を指示する。ディレクタはDIR と呼ぶことがある。

差分
最後に実行したフルバックアップ以後に変更されたファイルだけを集めたバックアップ。バックアッププログラムによっては、別の意味で使っていることもある。

ファイル属性
個々のファイルを識別するのに必要な情報、およびサイズ、作成日時、変更日時、アクセス権限などのプロパティ情報。通常、Bacula はすべての必要なファイル属性を完全に管理するため、ユーザは詳細に把握する必要はない。なお、ファイル内容であるデータ自体は属性には含まれない。

ファイルデーモン
バックアップ対象のクライアントマシンで稼働するデーモン。ファイルデーモン、クライアントサービスと呼ぶこともあり、FD という略称で表記することもある。

ファイルセット
バックアップ対象ファイルを決定するためのリソースで、設定ファイルの中で定義する。バックアップ対象とするファイルまたはディレクトリのリスト、対象から除外するファイルやディレクトリのリスト、および保存方法(圧縮、暗号化、署名) で構成される。詳細は、本書の「ディレクタの設定」の章の「ファイルセットリソース」を参照。

増分(インクリメンタル)
最新のバックアップ以後に更新されたファイルを対象とするバックアップで、最新のバックアップはフルバックアップ、差分バックアップ、または増分バックアップのどれであってもかまわない。Job リソースのLevel ディレクティブ、またはSchedule リソースで定義する。

ジョブ
特定のクライアントに対してBacula が実行するバックアップまたはリストアを定義したリソース。ジョブはタイプ(バックアップ、リストア、照合など)、レベル(フル、増分、または差分. . . )、ファイルセット、およびバックアップファイルの保存先であるストレージ(ストレージデバイスとプール) で構成される。詳細は本書「ディレクタの設定」の章のJobリソースを参照。

モニタ
ユーザやシステム管理者がBacula の状態を監視するときにすべてのデーモンとのインタフェースとなるプログラム。

リソース
Baculaに定義する情報の単位を定義するための、設定ファイルの構成要素。リソースは複数のディレクティブ(個々の設定項目を記述したステートメント) で構成される。たとえば、ジョブリソースは、特定ジョブに関するすべてのプロパティを定義してある。すなわち、名前、スケジュール、ボリュームプール、バップアップの種類、バックアップのレベル. . . 。

リストア
バックアップメディアからファイルを復元するオペレーションを定義したリソース。これはバックアップと逆のオペレーションである。しかし、バックアップは対象ファイルすべてを保存するが、ほとんどのケースでリストアはそのうちの一部のファイルだけをリストアする。当然、ディスククラッシュの場合、Bacula を使ってシステムの全部のファイルをリストアすることも可能である。

スケジュール
Baculaジョブを実行する時期を定義するリソース。スケジュールリソースは、ジョブリソースの中からスケジュール名で参照される。[詳細は本書「ディレクタ設定」の章のSchedule リソースを参照。

サービス
メモリに常駐して実行指示を待っているプログラム。Unix では、サービスはデーモンとも呼ばれる。

ストレージ座標
ストレージサービスから返される情報で、バックアップメディア上のファイルの位置を一意に特定している。ストレージ座標は、保存された個々のファイルに関連する情報とバックアップジョブ全体に関する情報の、2 種類の情報で構成される。通常、この情報はカタログに保存されるため、ユーザはストレージ座標の詳細を知る必要はない。ストレージ座標は、ファイル属性(前述) およびバックアップボリューム上の位置情報を含んでいる。

ストレージデーモン
ファイル属性とデータをストレージボリューム(通常はテープまたはディスク) に書き込むプログラムで、SD と略記されることがある。

セッション
通常ファイルデーモンとストレージデーモンとの間の内部的な通信を指す。ファイルセットをストレージデーモンに保存する場合、またはストレージデーモンからリストアするときに、ファイルデーモンがセッションを開始する。セッションは、Bacula ジョブ(前述) と1 対1 で対応している。

改竄防止用照合
Baculaカタログに保存されている過去のファイル属性と現在のファイル属性を比較するジョブ。この機能は、、Tripwire が提供する整合性チェック機能と同様に、重要なシステムファイルの書き換えを検出する目的で利用できる。サーバなどの保護したいマシンのファイル改さんチェックに対するBacula 照合機能の優位性は、ファイルデーモンだけをそのマシンで実行すればよく、他のディレクタ、ストレージデーモン、カタログは別のマシンに存在するということである。もしサーバマシンが改ざんされたとしても、照合用データベースは改ざんされていない可能性が高い。

照合は、ボリュームに保存された最新データとカタログに保存された情報が一致することを、ファイル属性の比較によって確認するためにも利用できる。なお、ボリュームの
内容と元のファイルの照合はまだ実装していない。

*アーカイブ(未実装)
保存の後に実行されるオペレーションで、データが保存されたボリュームをバックアップ目的で利用しなくすること。このようなボリュームはアーカイブされたとマークされ、ファイルを保存する目的では使われなくなる。アーカイブ済みボリュームに保存されたファイル情報は、カタログから削除される。この機能はまだ実装されていない。

ファイル保存期間
Baculaが認識する保存期間は複数存在する。最も重要な物はファイル保存期間ジョブ保存期間ヴォリューム保存期間である。それぞれの保存期間は特定のレコードがカタログデータベースに保存される期間を定義している。 これはボリュームに保存されたデータが有効である時間と混同してはならない。

– ファイル保存期間
  ファイルに関するレコードがカタログに保存される期間である。この期間は、2 つの理由から重要である。まず、ファイルレコードがカタログに残っていれば、コンソールからデータベースを参照して、個々のファイルをリストアできる。ファイルレコードがカタログから削除(remove) または整理(prune) されると、バックアップジョブの結果のファイルは閲覧できなくなる。ファイル保存期間を注意深く設定すべき2 つめの理由は、ファイルレコードがデータベースの中でもっともディスク容量を消費するということである。つまり、データベースのファイルレコードを定期的に整理(prune) して、データベースが大きくなりすぎないようにしなければならない(コンソールのprune コマンドを参照)。

  - ジョブ保存期間
  ジョブレコードをデータベースに保持しておく期間である。ファイルレコードはそのファイルを保存したジョブに結びついていることに注意する必要がある。ジョブレコードを残したままファイルレコードを削除できる。この場合、実行したジョブの情報を後で調査できるが、実際にバックアップしたファイルの詳細は把握できなくなる。通常、ジョブレコードを削除すると、対応するファイルレコードも削除される。

– ボリューム保存期間
ボリュームが再利用できるようになるまでの期間である。通常、Bacula はバックアップしたファイルのコピーのみを含むボリュームを絶対に上書きしない。理想的な状態では、カタログは、現在使用中のすべてのボリュームにバックアップされたすべてのファイルに対する記録を保持している。ボリュームを上書きすると、そのボリュームに保存されていたファイルに関する情報はカタログから削除される。しかし、非常に大きいボリュームプールを使っていたり、ボリュームへの上書きを行わないなら、カタログデータベースサイズが膨大になる可能性がある。カタログサイズを管理可能なサイズに維持するために、ボリューム保存期間が過ぎたボリューム情報をカタログから削除すべきである。Bacula は、あらかじめ定めた保存期間に応じてカタログを自動的に縮小する仕組みを用意している。

Scan
単一ボリュームまたは複数のボリュームセットの内容を走査すること。スキャンしたボリューム(群) に含まれているファイルの情報は、カタログに記録される。いったんカタログに情報を記録すると、当該ボリュームに含まれるファイルを容易にリストアできるようになる。保存期間を越えたためにカタログから情報が消去されてしまったボリュームやジョブを再活用するときに、スキャン機能はきわめて有用である。ボリュームをスキャンしてカタログに登録するには、専用のbscan というプログラムを使う。詳細は、Bacula Enterprise Utility programs のbscan section (section 1.7 on the next page)の項を参照。

ボリューム
Bacula が実行したバックアップジョブのデータを書き込むのためのユニットで、通常は単一のテープメディアまたはディスク上のファイルである。すべてのBacula ボリュームは、Bacula 自身が与えたソフトウェア的なラベルを持っており、実際に読み込んでいるボリュームが何であるかを確実に把握できる。ディスクの場合に取り違えることはほとんどないが、テープの場合、間違ったメディアをマウントしてしまうというミスは十分に考えられる。

ディザスタリカバリについて

Bacula はバックアップ、リストア、そして照合のためのプログラムであり、完全なディザスタリカバリ・システムではない。しかし、本書の「ディザスタリカバリ」の章に注意深く従って計画を立てれば、その中心的な要素になる。

適切に計画すれば、「ディザスタリカバリ」の章で述べられているように、Bacula をディザスタリカバリ・システムの中心的な要素にできる。たとえば、緊急用の起動ディスク、現在のハードディスクのパーティション情報を保存したBacula レスキューディスクのどちらかまたは両方を作成し、さらにBacula バックアップを完璧に維持してあれば、空っぽのディスクを使ってシステムを完全に回復できる(ベアメタル・リカバリ)。

ジョブ定義の中にWriteBootstrap レコードを指定してあるか、他の適切な方法でブートストラップファイルを作成してあれば、カタログや手作業による検索を使わなくても、必要なファイルを抜き出せる。

Bacula サービス間の相互作用

次のブロックダイアグラム(図1.3) は、バックアップにおけるBacula サービス間の典型的な相互作用を示したものである。各ブロックは、異なるプロセス(通常デーモン) を表している。一般的に、ディレクタは情報の流れを監視する。またカタログを維持している。

サービス間相互作用
カテゴリー: