2010年2月25日木曜日

Bacula Director の設定ファイル

Bacula をはじめるにあたって。。。

確実にハマること、
それは、「Directorの設定」。
(他にもいっぱいハマリどころはありますが。)

何はさておき、「Directorの設定」じゃないですかね?
実はわたしも、はじめの1週間程度は「ピクりとも」動かせませんでした。

商用のバックアップソフトは、
仕様がわからなくとも
「とりあえず動かす」ことがなんとなくできてしまいます。
が、Baculaの設定は容赦なく厳しいのです。
「マニュアル読み癖」が無い方には特に。。。

しかし、設定を難しくしている要因は、それだけではないのです。
わたしが思うに、(あくまで個人的な意見ですが。)

 bacula-dir.conf にすべての要素を持たせ過ぎ。

これに尽きると思います。
バックアップ対象やジョブが増えたりすると設定ファイルが長すぎるものになってしまい、メンテが繁雑になる傾向があります。(画面のスクロールだけではとても。。。)

まあ、エディタの検索機能を生かし、目印になるコメントでやりくりする手もアリでしょう。

前置きが長くなりましたが、
おすすめは、「管理しやすい単位に設定ファイルを分けること」です。

わたしの場合は、

 ジョブ(クライアントごと)
 クライアント定義
 スケジュール
 ストレージ
 プール

をbacula-dir.confとは別ファイルにしています。
すると、X上でタブ機能のあるエディタを設定に利用すると非常に便利です。

他ファイルを読み込むためには「@」を使います
例えば、こんな感じ。

#クライアント設定
@/etc/bacula/sharedconf/clients.conf




いかかでしょう?

2010年2月23日火曜日

Bacula構成事例〜その1

今日はかなり短かめに。。。

事例紹介です。
実際はもう少し台数があったり、
セグメント数が違ったり、
若干コンディションは違いますが、

雰囲気はこんな感じです。

・バックアップサーバはCentOS5.3 + MySQL5.? + Bacula3.0系
・バックアップ対象はLinux とWindows Server 2003
・全てのサーバにはNIC2枚以上を搭載
 ※必要によってチーミング、バックアップサーバのNICはチーミングしておくと良いかも。
・セグメントごとに、バックアップ用セグメントを構築
・バックアップに必要なポート以外は閉じる
 ※ICMPぐらいは通しても良いかな?

目玉は、ファイルサーバかな?
ファイル数200万+、容量50GB+ 程度を2.5時間かかりません。

レストアもBAT上でファイルバージョンを簡単に比較できるので楽チン!


2010年2月22日月曜日

BaculaでDRその2

Server 2008 で実験してみました。
で結果は。。。

XPで成功したVSS(Volume Shadow Copy Service)を利用したフルバックアップ。
同じ要領でファイルセットを定義。

フルバックアップを取得後、VM上でPE3.0を起動しレストア

。。。起動しない

ガックリ。

何か上手い方法があるのかも知れませんが、
はやりのオンラインイメージ取得は無理のようです。
(VSSだけでは取れないように、某MS社が細工をしているのかも。。。)

で、やられっぱなしでは悔しいので別な方法にトライ!
オンラインイメージバックアップが無理ならオフライン。

CD起動のLinuxからブロックデバイス経由で起動ディスク(/dev/sda)
を取得してみました。

結果はOK!

ちゃんと起動します。
これなら使えそうですね。

2010年2月16日火曜日

BaculaでDRその1

ただいま検証中。

某プロジェクトでは、Baculaはファイルバックアップオンリーでした。
とはいえ、マニュアルにはDRについても記載があったので、気になっていました。

。。。で、検証してみました。

テスト環境は、

サーバはCentOS
バックアップ対象はWinXP

ファイルのバックアップは、VSS(ボリュームシャドウコピー)ですべてのファイルを取得。
VSSではオープンファイルも取れるので、何事もなく取得完了。

2.6GBを11分程度で完了。
とはいっても、仮想化環境なのであまり参考にはなりませんが。。。

レストアは新たに準備した仮想マシン上で

 PE3.0を起動
 disk part でパーティションを作成後、
 ntfsでフォーマット。
 アクティブパーティションを作り、
 bacula-fdを起動。

(この間10分程度)

でDirector上でレストアジョブを流す。
5分弱でレストア完了。

bootsectツールでMBRを更新

で、再起動。
何事もなく起動。

。。。ちょっと感動、あっさりすぎ。
baculaの古いマニュアルには、
「所有者やアクセス権がちゃんともどらないかも?」
的な記述もありましたが、

現行バージョンではざっくり見た感じ問題なさそうです。

今後は2008 Server + AD 等、もう少しリアリティのある環境で検証してみます。

2010年2月13日土曜日

BATの導入

1.依存パッケージの導入

 1).Xソフトウェア開発の導入
 アプリケーション→ソフトウェアの追加/削除
 開発→Xソフトウェア開発にチェック (35 of 43)
 (※ホントはもっと対象を絞れるかもしませんが。)

 2).QTの導入
 QTのパッケージの取得
  wget ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.0.tar.gz
 tar等で解凍
  tar -xvzf qt-everywhere-opensource-src-4.6.0.tar.gz
 解凍先のフォルダ内で
  ./configure

 しばらく待つと
 Which edition of Qt do you want to use ?

 Type 'c' if you want to use the Commercial Edition.
 Type 'o' if you want to use the Open Source Edition.

 o(oとタイプしEnter)

 This is the Qt for Linux/X11 Open Source Edition.
  (中略)
 Do you accept the terms of either license? yes(yesとタイプしEnter)

make (3〜4時間かかる場合もあります)
make install

 パスを通す
 PATH=$PATH:/usr/local/Trolltech/Qt-4.6.0/bin/
 export PATH

2.BATのビルド

 rpmbuild --rebuild bacula-bat-5.0.0-1.src.rpm

 30分程度でビルド完了です。

bacula 5のCentOSへの導入

今回はbaculaの導入例を紹介します。
導入例といっても、とっかかりのパッケージのビルドの部分です。

 なぜソースからのビルドをするのかというと、
 なんとなく安定している気がする。特にGUIのツールが。
 (感覚的な表現で申し訳ないが。。。)

手順は多少面倒かも知れませんが、実際やってることは単純です。

今回は、1月26日に公開されたバージョン5.0.0で、
カタログDBにPostgreSQLバージョン8.4を使います。
(MySQLの例が多いのであえてのPostgreSQLです)

1.PostgreSQLの導入

 1).初期レポジトリからPostgreSQLの除外

 /etc/yum.repos.d/CentOS-Base.repoを編集
 [base]と[updates]セクション内最後にそれぞれ

 exclude=postgresql*

 を追記する

 2).レポジトリの追加

 wget http://yum.pgsqlrpms.org/reporpms/8.4/pgdg-centos-8.4-1.noarch.rpm
 rpm -ivh pgdg-centos-8.4-1.noarch.rpm

 3).パッケージの導入
 
 yum install postgresql-server

 備考:導入されたパッケージの一覧
  compat-postgresql-libs-4-1PGDG.rhel5.i686.rpm
  apr-util-1.2.7-7.el5_3.2.i386.rpm
  postgresql-libs-8.4.2-1PGDG.rhel5.i386.rpm
  postgresql-8.4.2-1PGDG.rhel5.i386.rpm
  postgresql-server-8.4.2-1PGDG.rhel5.i386.rpm

 ソースからのビルドに必要なので次の開発パッケージも導入
 
 yum install postgresql-devel

 備考:導入されたパッケージの一覧
  postgresql-devel-8.4.2-1PGDG.rhel5.i386.rpm

2.パッケージのビルド

 rpmbuild --rebuild --define "build_centos5 1" --define "build_bat 1" --define "build_postgresql 1" bacula-5.0.0-1.src.rpm

あっさりビルド完了。

 備考:ビルドされたパッケージの一覧
  /usr/src/redhat/RPMS/i386/bacula-postgresql-5.0.0-1.i386.rpm
  /usr/src/redhat/RPMS/i386/bacula-client-5.0.0-1.i386.rpm
  /usr/src/redhat/RPMS/i386/bacula-updatedb-5.0.0-1.i386.rpm
  /usr/src/redhat/RPMS/i386/bacula-debuginfo-5.0.0-1.i386.rpm

CUI(bconsole)だけで利用する場合はこれだけで準備OKなのですが、正直運用するにはちょっと大変です。
baculaにはBAT(Bacula Administration Tool)というGUIのツールがあるのでこれを導入しときましょう。

次回は、BATのビルドについて書きます。

※BATのビルドが面倒な場合はwin版のパッケージもあるのでそちらを利用するのも良いかも知れません。

2010年2月11日木曜日

日本語ファイル名は?

大丈夫です

ただし、DBのエンコーディング設定を間違わなければの話。

おそらく導入を検討されていらっしゃる方気になると思いましたので、
取り上げさせていただきました。


baculaのインストール後、真っ先にすること。。。
それはカタログの準備。
カタログの保存先として、データベースを作るのですが、
ちょっとした落とし穴があります。

マニュアル読み癖の無い方は要注意です。

 テーブル作成スクリプト 
 /usr/lib/bacula/create_postgresql_database

をのぞいてみると

 # use SQL_ASCII to be able to put any filename into
 # the database even those created with unusual character sets
 SQL_ASCIIでテーブルを作るとどんなファイル名でも大丈夫
 あまり使われないキャラクタセット(文字コード)でもオッケー

ほほう。
ファイル名の取扱いはSQL_ASCIIだったら大丈夫ってことね

 # Please note: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 # We do not recommend that you use ENCODING 'SQL_UTF8'
 # It can result in creating filenames in the database that
 # cannot be seen or restored.
 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 SQL_UTF8はおすすめできません
 ファイル名はDBに書き込みできるけど、
 見つけられなかったり戻らなかったりするよ

おおう。
とれても戻らんとは。。。

キャラクタセットは、SQL_ASCIIで!

ご参考までということで。

下図はbat上の日本語表示の例

2010年2月8日月曜日

はじめに

baculaとは

「bacula」でググってきた方々には、ほぼ説明は不要ですよね。
baculaは本気で使えるネットワークバックアップソリューションです。
(商用だとARCserve、NetVaultに近いかな?)

昨年、とあるプロジェクトでbaculaを導入しました。
率直な感想は導入して正解!
技術者として、多くの収穫ありました。
(添付のマニュアルは宝の山)

例えば、カタログ。
3年前、テープにとったバックアップ。
戻したいファイルを本当にレストアできますか?
(カタログが保存されていないと無理です)

最近のバックアップソフトは簡単に導入でき、バックアップもお手軽にできてしまいます。
本来、良いことなんでしょうけど。。。
いざという時レストアできないなんてことも、あるのではないでしょうか?


このブログを書きはじめたきっかけについて

箇条書きで申し訳ありませんが。

・自分自身の備忘録として
・まだまだ日本語の情報が少ない
 (誤解を招くような記事も。やっつけ導入では本来の力を発揮できません)
・使わないのがもったいないくらいの高機能
・開発コミュニティへの「ゆる〜い恩返し」
・1月25日のメジャーバージョンアップ
 (管理ツールが使い易くなったことと、いくつかの機能強化)

といった感じです。
私もまだまだbaculaビギナーですが、このブログを通してレベルアップしていけたらと思います。

最後に、構築した環境について
小規模ですが、一応ネットワークバックアップ環境

バックアップサーバ: CentOS
バックアップ対象:
Windows 2003 Server 1台
 Windows Server 2003 R2 3台(ファイルサーバを含む)
 CentOS 3台

設計や導入の詳細については、ぼちぼち更新していきます。