baculaでバックアップ

Contents

baculaとは

GPLで提供されているバックアップツールで大規模なバックアップシステムを構築できる。
似たようなソリューションとして、広く知られているAmandaが、またイメージとしてバックアップするMondo Rescueがある。
baculaの特徴としてはネットワーク越しに統括的な管理ができ、テープ装置やファイルサーバ等の違いを専用のデーモン(Storage Daemon)が吸収してくれ幅広い装置に対応する。その反面、DAT等の使用経験がないと「なぜラベルを付けるの?」とか理解しにくい箇所があるかも知れない。

はじめに

  • director/storage/Fileデーモンそれぞれにパスワードを設定するので予めパスワードを決定しておく。運用体制によっては3つとも同じパスワードでも構わない。
  • データベース名、データベース接続ユーザを指定する場合はそれらを決めておく。デフォルトでは共に「bacula」が使われる。
  • データベースの接続パスワードを決めておく。
  • ここではWindows版クライアントについては触れない。(プログラムは提供されている。)
  • コマンドラインに拒否反応が出る人向けに、また、運用のハードルが低くなるように、今回はWebminを使った方法で説明している。
インストールしたバージョン:5.2.13

構成と役割

bacula

一般的には、バックアップを取りたいマシンでFile Daemonを動かし、その他をバックアップ管理サーバとして動かす。
なお、すべてを一台のマシンで動かしても構わない。

同じ構成のサーバが何台もあり、それらをバックアップする場合に特にbaculaが有用となる。

DBMの選定

baculaはバックアップ情報の保存にデータベースを使用する。
現在はMySQL/PostgreSQL/SQLiteが使える。Beagle/mSQL/GNU SQL/Oracleはライセンスなどの関係で見送っているようだ。
普段PostgreSQLで構築する事が多いので、ここでもPostgreSQLを利用する。

※ソースコードを公開するのであれば、MySQLを使っても良いだろう。
商用開発などソースを公開しない場合は、ライブラリ利用時のライセンスがグレーだとかGPLv2/v3の組み合わせが厄介なMySQLを避けPostgreSQLで構築する事が多い。
当然の事ながら商用ライセンス版のMySQLであれば、開発したソースを公開しなくて良く、他ソフトとのライセンスの組み合わせを調査するコストは不要となる。※MySQLでもbaculaシステムを構築したが、DBのインストールが違うだけでbaculaシステムを使用する上での差は感じなかった。

リポジトリの設定

標準リポジトリで提供されているbaculaはバージョンが古いのでepelから取得するようリポジトリを登録する。

 サーバ側のインストール

先にPostgreSQLをインストール&構築しておく。

Directorの設定

以下のハイライト部分を書き換える。

/etc/bacula/bacula-dir.conf

・「@@DIR_PASSWORD@@」をdirectorのパスワードに変更する。

・「localhost」をバックアップクライアント(保存したいマシン)のホスト名/IPアドレスに変更する。
・「@@FD_PASSWORD@@」をFile Daemonのパスワードに変更する。

・「localhost」をStorage Daemonのホスト名/IPアドレスに変更する。DirectorとStorage Daemonが同一サーバであっても、File Daemonから見たStorage Daemonを指定するので、localhostと書くとFile Daemon自身になってしまう。

・dbdriverの行のコメント「#」を外し、「dbaddress」はデータベースサーバのIPアドレスに、「dbport」はPostgreSQLのポート(デフォルトは5432)、「dbpassword」はデータベースの接続パスワードに変更する。
※データベース名や接続ユーザを「bacula」から変更する場合はそれぞれ書き換える。

・「@@MON_DIR_PASSWORD@@」をdirectorのパスワードに変更する。

File Daemonの設定

/etc/bacula/bacula-fd.conf

・「@@FD_PASSWORD@@」をFile Daemonのパスワードに変更する。

・「@@MON_FD_PASSWORD@@」をFile Daemonのパスワードに変更する。

Storage Daemonの設定

/etc/bacula/bacula-sd.conf

・「@@SD_PASSWORD@@」をStorage Daemonのパスワードに変更する。

・「@@MON_SD_PASSWORD@@」をStorage Daemonのパスワードに変更する。

・アーカイブ保存場所の初期値が/tmpになっているが、tmpwatch等の絡みで思わぬトラブルを起こさないように/var/bacula等にディレクトリを作成し、そこに保存するよう変更する。

consoleの設定

・「@@DIR_PASSWORD@@」をDirectorのパスワードに変更する。

トレイモニタの設定

・「@@MON_DIR_PASSWORD@@」をディレクターのパスワードに変更する。
・「@@MON_FD_PASSWORD@@」をFile Daemonのパスワードに変更する。
・「@@MON_SD_PASSWORD@@」をStorage Daemonのパスワードに変更する。

データベースの構築

データベース作成

PostgreSQLのスーパーユーザになってからSQLスクリプトを動かす。
環境によってはスーパーユーザのパスワードを3回入力する。
なお、./create_postgresql_database -U postgres では、3回目の認証に-Uが効かないのでスーパーユーザになってから実行したが、ログインユーザのアカウントがスーバーユーザ権限で作ってあれば-Uの指定でも実行できると思われる。
CREATE DATABASEのデフォルトがUTF-8になるよう設定してあってもエンコーディングがSQL_ASCIIで作成されるが、これで良い。UTF-8だと管理上のファイル名が化けてしまう。

テーブル作成

権限設定

権限設定と同時にbaculaユーザが作られるので、パスワードを設定する。あるいは、grant_postgresql_privilegesの8行目付近でパスワードを空で設定しているので、そのスクリプト自体を書き換えてから実行する。

・「[パスワード]」はbacula-dir.confの「dbpassword = 」に設定した値。

ラベル設定

バックアップメディアの作成

一旦DirectorとStorage Daemonを起動する。

bconsoleコマンドでbacula consoleを起動する。

・ラベルを付けるのでlabelと入力する。
・ラベル名を入力する。
・プール定義で1: Defaultを選択する。(場合によっては2: Fileも)
・quitでbconsoleを終了する。

サーバ起動時の設定

サービスを止める。

自動起動になっているか確認する。

該当runlevelがoffになっていたらonに変更する。

通常、3(GUIなし)か5(GUIあり)で起動している。

bconsoleやその他フロントエンドツールで日付の部分が文字化けして気持ち悪いのであれば、/etc/init.d/bacula*の2行目(#!/bin/shの下の行)にLANG=Cを追記すると文字化けしない。

確認事項

・ポートは開放されているか。
上記設定でポート番号を変えていなければ9101~9103。

クライアント側のインストール

File Daemonの設定

意味は同じなので、サーバ側のインストールを参照。

確認事項

・ポートは開放されているか。
上記設定でポート番号を変えていなければ9102。

webminをインストール

インストールされていなければwebminのインストールを参考にインストールする。

javaのセキュリティの関係によりchromeからはリストア出来ないので、ブラウザはWindowsのFirefox等を使う。
また、コントロールパネル→java→セキュリティタブ→サイト・リストの編集でwebminサーバのアドレスおよびポートを追加しておく。

baculaのページにアクセスするには左カラムのメニューの「システム」→「Bacula Backup System」をクリックするが、この時
Failed to connect to the Bacula database : Failed to load the database DBI driver Pg at ./bacula-backup-lib.pl line 45. Maybe it is not set up, or the module configuration is incorrect.
などと表示された場合は、perlからデータベースにアクセスできるようにするためDBIモジュールとPostgreSLQのDBDモジュールをインストールする。

また「Bacula Backup System」自体が無い場合は、左カラムメニューの下にあるserach:の検索窓に「bacula」と入力してリターンキーを入力すると、「Bacula Backup System」と表示されるのでそれをクリックする。

Failed to connect to the Bacula database : Failed to login to the database bacula : fe_sendauth: no password supplied. Maybe it is not set up, or the module configuration is incorrect.
などと表示された場合は、リンクのmodule configurationをクリックし、先ほどbaculaユーザに設定したパスワードをPassword to login withに設定する。

 

baculaのトップ画面に戻ると「Process statuses: Bacula Director daemon – Down | Storage daemon – Down」と表示されており、まだ起動していない事がわかる。

「start bacula」をクリックしてデーモンを起動する。

bacula02

「Volume Pools」をクリックする。

bacula03

該当Poolをクリックして「Edit Volume Pool」画面を表示する。

bacula04

「Maximum jobs per volume」を「1」にして1volumeに1jobとし、複数jobの追記はさせない。
「Automatically label volumes prefix」には新しくボリュームを作る時のラベルに付ける接頭辞を指定しておく。

コメントをどうぞ

入力されたメールアドレスは公開されません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください