Baculaで楽々バックアップ
Kern Sibbald氏をヘッド開発者とするBaculaチームが開発したオープンソース・バックアップ・ソリューションは、実行速度と信頼性にすぐれ、際立って設定の自由度が高い。Baculaは単体のアプリケーションではなく、複数のプログラムの集まりであり、それらが連携することで5~500台のシステムに適した堅牢なバックアップ、復元、検証のツールセットを提供する。
最初に
このレビューを書くために、BaculaのテストマシンとしてシングルCentOS 4サーバを用意し、ファイルシステムをバックアップ媒体として使用した。私の運用環境では、複数のクライアントからの500GBを超えるバックアップをテープローダを利用してBaculaで管理している。ただし、テープローダと多数のクライアントを設定するには時間がかかるため、初めてのBaculaユーザにとってこのような作業は荷が重い。Baculaの経験がない場合は、シングルホストでテスト・ドライブを管理することをお勧めする。
Baculaは、yumやapt-getなどの標準パッケージ管理ツールで扱えるパッケージ形式でも入手できるが、今回はソースからアプリケーションをインストールすることにした。Baculaを初めて使う場合は、ソースからビルドすることでアプリケーションの操作方法をより実感できる。
プロジェクトのソースコードをダウンロードし、展開した後で、.configureスクリプトを実行する。Baculaの.configureスクリプトは完成度が高く、わかりやすいデバッグ出力が生成されるが、コマンドラインを使って大量の設定を行う必要がある。開発チームは、この設定作業を簡略化するため、ほとんどの環境に対応できる一連の推奨オプションを提供している。この設定をベースとして、必要な部分だけを変更すればよい。たとえば、データベースの選択がそうだ。Baculaはデータベース駆動型アプリケーションであり、実行にはMySQL、SQLite、またはPostgreSQLが欠かせない。Baculaを設定する前に、これらのデータベースのどれかがインストールされていることを確認する必要がある。.configureスクリプトの実行が完了すると、通常の「make; make install
」プロセスでBaculaをビルドできる。
次に、Baculaのデータベースとテーブルを作成し、適切なアクセス権を設定する。Baculaのbinディレクトリにあるcreate_bacula_databaseスクリプトを実行すると、使用するデータベースの種類が確認され、Baculaのデータベースが作成される。このスクリプトの実行が正常に終わった後でmake_bacula_tablesスクリプトを実行すると、データベース・テーブルが作成され、情報が設定される。最後にgrant_bacula_privilegesスクリプトを実行すると、必要なアクセス制御が確立される。ここで注意する必要があるのは、grant_bacula_privilegesによってユーザbaculaに無制限のアクセス・ポリシーが与えられることだ。このポリシーは必要に応じて変更したほうがよいだろう。少なくとも、MySQLユーザのrootとbaculaにはパスワードを設定することをお勧めする。
Baculaのビルドとインストールが正常に行われたら、次のステップは設定ファイルの設定である。時間はかかるが、適切な設定を終えてしまえば、後はクライアントやファイルセットを追加する場合を除いて、触る必要はない。
設定ファイルについて理解するには、Baculaが動作する仕組みを理解する必要がある。Baculaを構成する主なモジュールは、ディレクタ、ストレージ・デーモン、ファイル・デーモン、コンソールである。ディレクタはBaculaの”ボス”であり、ジョブのスケジューリング、バックアップ媒体の詳細な指定、アクセス制御を担当する。一般的なBacula配備で使用するディレクタは1つである。
ストレージ・デーモンは、定義されたバックアップ・アーキテクチャ、つまりディスク、シングルテープドライブ、テープローダ、光学ドライブ間の通信を制御する。ディレクタと同様、通常はBacula環境ごとにストレージ・デーモンは1つだけである。ただし、1つのストレージ・デーモンに多数のバックアップ・デバイスを定義できる。
ファイル・デーモンは、各クライアント・マシンにインストールされ、ストレージ・デーモンとクライアントとの通信リンクを提供する。ファイル・デーモンは、クライアント上のすべてのバックアップ対象ファイルにアクセスする必要がある。
コンソールは、管理者がBaculaにアクセスする際に使用する。ジョブの開始や停止、バックアップ・サイズの見積もり、Baculaからのメッセージの閲覧を行える。コンソールは、wxWidgets、GNOME、 Webブラウザに対応しているが、今回はTTYバージョンのbconsoleを使用した。
ディレクタの設定ファイルbacula-dir.confには、バックアップ対象クライアント、ジョブ定義、ファイルセット、ジョブ・スケジュールの詳細な情報が格納される。Baculaの非凡な機能の1つは、初期設定の実用性が非常に高いことだ。多数のクライアントがある大規模な環境のインストール時であれば設定ファイルを大幅に編集する必要があるが、今回のようなテスト環境の場合、バックアップ対象ファイルのリストを追加するだけで設定は完了だった。
Baculaをインストールすると、ソフトウェアを配備したユーザのホーム・ディレクトリにbaculaという名前のサブディレクトリが作成され、設定ファイルが/home/user/bacula下のbinサブディレクトリに保存される。このディレクトリに移動して、bacula-dir.confファイルを編集しよう。”# By default this is defined to point to the Bacula build directory to give a reasonable FileSet to backup to disk storage during initial testing.”(デフォルトでこの場所には、初期テスト中にディスクにバックアップする適切なファイルセットを指定するためのBaculaビルド・ディレクトリを定義する)というテキストで始まるセクションを検索し、そこに移動する。この行の直後には、「File = /home/username/bacula/bacula-2.2.8
」という設定行がある。これはFileSet定義であり、バックアップするファイルとディレクトリを制御するものだ。任意の他のディレクトリに変更することも、テスト中はこのまま使うこともできる。
最初のバックアップ
デフォルトでは、ファイルシステムがバックアップ媒体として使用される。説明を省くため、今回はテープドライブを使うようには設定せず、事前に設定された定義をそのまま使用した。
Baculaのbinディレクトリに移動し、start
を引数として「./bacula start
」と入力して、baculaスクリプトを実行する。次の3行のメッセージが表示される。
Starting the Bacula Storage daemon. Starting the Bacula File daemon. Starting the Bacula Director daemon.
Baculaが正常に起動すれば(上出来!)、最初のバックアップを実行できる状態になる。正常に起動しない場合は、エラーメッセージをよく読んで、bacula-dir.confファイルをもう一度チェックする。バックアップ対象のディレクトリが正しく指定されているか、そのディレクトリが存在し、読み取りアクセスが許可されているかを確認する。
Baculaをテスト・ドライブに対して実行する最後のステップは、コンソールを使ってジョブを開始することだ。Bacula binディレクトリで、bconsoleスクリプトを実行する。bconsoleはアスタリスク(*)のプロンプトを表示する。プロンプトで「run
」と入力すると、定義済みのジョブのリストが表示され、実行するジョブを選択できる。今回は1台のマシン(テスト用コンピュータ)だけをバックアップするので、リストに表示されるジョブは1つだけだ。ジョブを選択し、Enterキーを押すと、クライアント名、バックアップの種類(完全バックアップ、差分バックアップ、または増分バックアップ)、記憶デバイスなどが設定リストに表示される。設定が正しければ、「yes
」と入力してバックアップを実行する。
まもなく、”backup completed successfully”のメッセージが、バックアップされたファイル、バックアップで消費された記憶域のサイズ、圧縮比率などの詳細情報と共に表示される。おめでとう。最初のBaculaバックアップは成功である。
これは序の口
当然だが、この段階ではまだBaculaの多くの機能の表面を引っかいた程度でしかない。ユーザ・マニュアルは665ページもある。新規のユーザは、複数クライアント構成のインストールに取りかかる前に、すぐれたチュートリアル(英語)を通読することをお勧めする。
Baculaは、明らかに複雑なアプリケーションであるにもかかわらず、インストールと設定の手順は平易であり、ドキュメントは完成度が高く、入手してすぐに稼働できる。tarやrdumpを使う基本的なバックアップ・プロセスをもっと堅実なパッケージに移行することを検討しているなら、Baculaを選んで間違いはない。絶対に損はない。