Baculaで構築する ネットワークバックアップ


Baculaで構築する

ネットワークバックアップ

 

Baculaで構築するネットワークバックアップ』の世界へようこそ!本書籍はWindows及びLinuxワークステーションを苦労なくバックアップシステムに統合するために役立つ情報だけでなく、様々なBaculaコンポーネントに関するセットアップ・コンフィギュレーションに関するインストラクションに関して記述しています。Bacula Director及びStorageのセットアップ方法、Linux及びWindowsクライアントのバックアップ方法、ファイアーウォールに含まれる制約への対応方法、MySQLOpenLDAPPostfixそして多くの他のソフトのためのバックアップアップの具体手事例及び様々なスケジューリング戦略、その他多くのTIPSを習得いただけます。

                                        Baculaを使い始める(必須知識)nbsp;                                          

 

本レシピはBacula Director及びBacula Storageを最も簡単にインストールする方法及びbconsoleユーティリティーを利用してモニター及びデーモンとの通信を行う方法を説明しています。

 

準備 

Bacula serverをインストールするBSDもしくはLinuxマシンに対するルート権限が必要です。本レシピではDebian Linux 6.0をサンプルとして利用しています。本マシンIPアドレスは”10.10.1.100”としていますので、実環境に合わせて設定下さい。



 

              手順         

Bacula Director及びBacula Storageをインストールします。以下のステップを実行下さい

<![if !supportLists]>1.
<![endif]>SSH
クライアントもしくは物理コンソールを利用してインストール対象のマシンにログイン

<![if !supportLists]>2.   <![endif]>Bacula Director及びStorageデーモン、bconsole ユーティリティーを、お好きなパッケージマネージャーを利用してインストールします。(サンプルとしてAPTを利用しています。)

$ apt-get install
bacula-director-sqlite bacula-sd-sqlite baculaconsole

<![if !supportLists]>3.
<![endif]>次に『
/etc/bacula/bacula-dir.conffile
』を以下のコードに変更します

Director {

Name = debian-dir

DIRport = 9101

QueryFile =
“/etc/bacula/scripts/query.sql”

WorkingDirectory = “/var/lib/bacula”

PidDirectory = “/var/run/bacula”

Maximum Concurrent Jobs = 1

Password = “password-dir”

DirAddress = 10.10.1.100

}

Storage {

Name = LocalStorage

Address = 10.10.1.100

SDPort = 9103

Password = “password-sd”

Device = FileStorage

Media Type = File

}

Job {

Name = DefaultJob

Type = Backup

Messages = Standard

Pool = Default

Client = DefaultClient

Fileset = DefaultFileset

Storage = LocalStorage

}

Client {

Name = DefaultClient



 

Address = 10.10.1.100

Password = “”

Catalog = DefaultCatalog

}

Fileset {

Name = DefaultFileset

}

Catalog {

Name = DefaultCatalog

dbname = “bacula”; dbuser =
“”; dbpassword = “”

}

<![if !supportLists]>4.
<![endif]>太文字にした行はパスワードやネットワークアドレス等皆様にて個別に設定する内容を含みます。

Storage {

Name = LocalStorage

SDPort = 9103

WorkingDirectory = “/var/lib/bacula”

Pid Directory = “/var/run/bacula”

Maximum Concurrent Jobs = 20

SDAddress = 10.10.1.100

}

Director {

Name = debian-dir

Password = “password-sd”

}

Device {

Name = FileStorage

Media Type = File

Archive Device = /tmp/test-backups

LabelMedia = yes;

Random Access = Yes;

AutomaticMount = yes;

RemovableMedia = no;

AlwaysOpen = no;

}

Messages {

Name = Standard

director = debian-dir = all

}



<![if !supportLists]>5.     <![endif]>最後にbconsole.conf ファイルは以下のように設定します。

Director {

Name = localhost-dir

DIRport = 9101

address = 10.10.1.100

Password = “password-dir”

}

ファイルのパスワードは双方同じ物である事に注意して下さい。

<![if !supportLists]>6.
<![endif]>新しい設定が反映するように以下の手順で各デーモンを再起動します。

$ /etc/init.d/bacula-director restart

$ /etc/init.d/bacula-sd restart

<![if !supportLists]>7.
<![endif]>bacula-sd.conf
ファイルで設定したバックアップストレージ領域となるディレクトリーを作成します。

 

$ mkdir /tmp/test-backups

ここまで設定が完了すれば、bconsoleユーティリティーを利用可能であり、以下のようなステータスディレクター及びストレージコマンドを使ってディレクター及びストレージの状態を点検する事が可能です。

$ bconsole

Connecting to Director 10.10.1.100:9101

1000 OK: debian-dir Version: 5.0.2 (28 April
2010)

Enter a period to cancel a command.

*status director

debian-dir Version: 5.0.2 (28 April 2010)
i486-pc-linux-gnu debian

squeeze/sid

Daemon started 07-Jun-12 13:54, 0 Jobs run
since started.

Heap: heap=245,760 smbytes=48,038
max_bytes=48,940 bufs=109 max_

bufs=119

No Scheduled Jobs.

====

Running Jobs:

No Jobs running.

====

*status storage

Automatically selected Storage: LocalStorage

Connecting to Storage daemon LocalStorage at
10.10.1.100:9103

LocalStorage Version: 5.0.2



 

Running Jobs:

No Jobs running.

Device status:

Device “FileStorage” (/tmp/test-backups)
is not open.

*

動作原理

通常のBaculaのシステムでは、それぞれ独立した3つのデーモンが動いています。

Storage daemon (SD):このデーモンはディレクターからバックアップを受け取りストレージ(ファイルもしくはテープ)に保存を実行します。

File daemon (FD):このデーモンはクライアントマシン(サーバーを含むバックアップ対象)からファイルを集め、ディレクターに送ります。

Director daemon:このデーモンはジョブスケジューリングの実施、ストレージ及びファイルデーモン間のデータ転送制御をおこないます。

今回のセットアップではディレクターとストレージデーモンを同一機器にインストールし、ファイルベースストレージをファイルシステム内の/tmp/test-backupsに設定しました。

 

bconsoleユーティリティーはディレクターデーモンに接続する目的で用いられ、命令をディレクターに渡し、メッセージをディレクターより受け取ります。 status storage command”でストレージステータスをリクエストするとディレクターはリクエストをストレージに渡します。よって、コンソールからディレクターが直結されている事が重要なだけです。

 

ディレクター、ストレージ、bconsoleのサンプルパスワードを置き換えて下さい。それぞれのコンポーネントは双方に通信が確保された状態であれば、異なる機械(サーバー)にインストール、実行可能です。別々のサーバーへのインストール時は、適したドメイン名、もしくはローカルでないIPアドレスを指定する事をお忘れなく!

Simple directory backup (Must know)

                                        単純なディレクトリーバックアップ(必須知識)                                           

This recipe explains how to set up a simple backup of a
single directory from a UNIX machine

to the previously configured Bacula Director.

本レシピではLinuxマシン(Unix系のマシン)から前章で設定したバキュラディレクターに単一ディレクトリーをシンプルにバックアップする設定方法を説明します。

 

準備

 

Baculaを使い始める(必須知識)  の手順通りに設定されたBaculaディレクターがインストールされたサーバー及びバックアップ対象のサーバー(クライアント)が必要になります。本章では、クライアント(バックアップ対象サーバー)が10.10.1.101.と言うIPアドレスであると想定しております。



 

              手順         

ディレクトリーのバックアップを取得するには、以下のステップを実行します。

<![if !supportLists]>1.<![endif]>クライアント(バックアップ対象サーバー)にログインし、Bacula ファイルデーモンを以下のようにインストール

$
apt-get install bacula-fd

<![if !supportLists]>2.
<![endif]>/etc/bacula/bacula-fd.conf
ファイルを以下のように設定

Director
{

Name
= debian-dir

Password = “password-fd”

}

FileDaemon
{

Name
= debian-fd

FDport
= 9102

WorkingDirectory
= /var/lib/bacula

Pid
Directory = /var/run/bacula

Maximum
Concurrent Jobs = 20

FDAddress = 10.10.1.101

}

Messages
{

Name
= Standard

director
= debian-dir = all, !skipped, !restored

}

<![if !supportLists]>3.
<![endif]>ファイルデーモンを再起動して設定を反映

$
/etc/init.d/bacula-fd restart

bacula-dir.conf:ディレクターのインストールされたサーバーにログインし/etc/bacula/bacula-dir.conf に以下のような変更を加える

<![if !supportLists]>1.
<![endif]>フェイクのクライアント(サーバー)を実際に存在する定義で置き換える

Client
{

Name
= DefaultClient

Address = 10.10.1.101

Password = “password-fd”

Catalog
= DefaultCatalog

}

ディレクターとクライアントで設定されるパスワードは双方同じ物である必要があります。



 

<![if !supportLists]>2.
<![endif]>空のファイルセットを
/home/user directory 設定を以下のように置き換える

Fileset
{

Name
= DefaultFileset

Include
{

Options
{

signature
= MD5

  }

File
= /home/user

}

}

<![if !supportLists]>3.
<![endif]>デフォルトジョブを印栗メンタルバックアップジョブに設定する

Job
{

Name
= DefaultJob

Type
= Backup

Level
= Incremental

Messages
= Standard

Pool
= Default

Client
= DefaultClient

Fileset
= DefaultFileset

Storage
= LocalStorage

}

4. デーモンを再起動して設定を反映

$ /etc/init.d/bacula-director restart

5. bconsoleを実行し、以下のようなラベルコマンドを利用し、バックアップストレージ用のボリュームラベルを作成するためのコマンドを発行する。

$ bconsole

Connecting to Director 10.10.1.100:9101

1000 OK: debian-dir Version: 5.0.2 (28 April
2010)

Enter a period to cancel a command.

*label

Automatically selected Catalog: DefaultCatalog

Enter new Volume name: Test

Select the Pool (1-3): 1

Sending label command for Volume
“Test” Slot 0 …

3000 OK label.VolBytes=191 DVD=0
Volume=”Test”

Device=”FileStorage”
(/tmp/test-backups)

Catalog
record for Volume “Test”, Slot 0 successfully created.

 

6.  全てのコンポーネントに対する設定hが完了し、ボリュームが作成されました。以下の実行コマンドでバックアップジョブを開始する事が出来ます。

$ bconsole

Connecting to Director 10.10.1.100:9101

1000 OK: debian-dir Version: 5.0.2 (28 April
2010)

Enter a period to cancel a command.

*run DefaultJob

Automatically selected Catalog: DefaultCatalog

Using Catalog “DefaultCatalog”

Run Backup job

JobName: DefaultJob

Level: Incremental

Client: DefaultClient

FileSet: DefaultFileset

Pool: Default (From Job resource)

Storage: LocalStorage (From Job resource)

When: 2012-06-08 08:05:50

Priority: 10

OK to run? (yes/mod/no): yes

Job queued. JobId=4

You have messages.

*messages

08-Jun 08:05 debian-dirJobId 4: Start Backup
JobId 4, Job=DefaultJ

ob.2012-06-08 _08.05.52_10

08-Jun 08:05 debian-dirJobId 4: Using Device
“FileStorage”

Last Volume Bytes: 5,112 (5.112 KB)

Non-fatal FD errors: 0

SD Errors: 0

FD termination status: OK

SD termination status: OK

Termination: Backup OK

この終了ステータス情報はジョブ実行が無事完了した事を示しています。



 

              手順          

The backup process is regulated by the Director daemon.
First, the File (client) daemon on the

client machine is notified of the job’s start.

 

 

バックアッププロセスはディレクターデーモンで制御されます。まず、クライアント、もしくはバックアップ対象のサーバー内のファイルデーモンにジョブの開始命令が行きます。その後ファイルデーモンはストレージに接続し、圧縮されたバックアップデータを送ります。データの移動はディレクターによってモニタリングされます。ストレージ側からバックアップが保存された事を確認すると、ジョブが完了したと認識されます。バックアップはボリューム内(ストレージタイプに依存しますが、ファイルであったり、テープだったりします)に配置されます。本書の設定では、バックアップは/tmp/test-backups/Testファイル内のテストボリュームに保存されています。ディレクターからバックアップを受け取る側であるストレージデーモンはストレージ(ファイルもしくはテープ)に保存実行します。

              さらに          

他にもbconsoleには数多くの便利なコマンドがあります。

messages: This command lists pending messages sent to you by
Director.

cancel: このコマンドは実行中のジョブを即座にキャンセルします。

list and show: これらコマンドは様々なBacula オブジェクトを監査する時に利用出来ます。

例えば、Listジョブコマンドは直近でサブミットされたジョブ一覧を表示します。そしてshow
job 1
コマンドはJob 1のステータスを表示します。

 

 

                                                      定期バックアップ                                                                 

本レシピではバックアップにおける様々なスケジューリング戦略を習得いただきます。

準備

バックアップジョブ設定が完了したBacula Directorマシンを準備下さい。

How to do it

バックアップスケジュール設定方法

<![if !supportLists]>1.
<![endif]>ディレクターマシンにログイン

<![if !supportLists]>2.
<![endif]>/etc/bacula/bacula-dir.conf
 ファイルにスケジュールオブジェクトを作成します

 

Schedule {

Name = “Weekly”

Run = sun at 3:00

}



 

<![if !supportLists]>3.
<![endif]>ジョブ定義情報に、新しく追加されたスケジュールを関連付けます。

Job {

Schedule = “Weekly”

}

<![if !supportLists]>4.
<![endif]>デーモンを再起動し、設定を反映する

$ /etc/init.d/bacula-director
restart

これで毎週日曜日に自動的にジョブが実行されるようになりました。

              さらに          

上記以外にも数多くのスケジュールオプションが用意されています。

on 1 at 2:00: 毎月月初の所定の時間にバックアップのジョブが実行されます

hourly at 0:15:毎時15分にバックアップのジョブが実行されます

mon-sat at 14:00 月曜日~土曜日の1400にバックアップを実行します。

 

w00, w01 (1年内の第何週)

➤ 1st sun, 4th mon(第一日曜日、第4月曜日等、各月の指定された曜日を指定)

➤ daily, weekly, monthly 毎日、週次、月次

➤ 実行命令内のいくつかのパラメーターは上書きされます

Run = Level=Incremental
Pool=Default mon-fri at 1:00

スケジュール命令は2つ以上設定する事も可能です。実行命令はそれぞれの時間に実行されます。

Schedule {

Name = “WeeklyCycle”

Run = Level=Full sun at 5:00

Run = Level=Incremental mon-sat at
5:00

}