Ubuntu14.04にBaculaサーバーをインストールする方法
序章
Baculaは、コンピュータシステムのバックアップを作成してデータリカバリを実行できるオープンソースのネットワークバックアップソリューションです。 非常に柔軟で堅牢であるため、構成が少し面倒ですが、多くの状況でのバックアップに適しています。 データ損失からの復旧は多くの場合、ディザスタリカバリ計画の重要な部分であるため、バックアップシステムはほとんどのサーバーインフラストラクチャの重要なコンポーネントです。
このチュートリアルでは、Ubuntu14.04サーバーにBaculaのサーバーコンポーネントをインストールして構成する方法を示します。 ローカルバックアップを作成する毎週のジョブを実行するようにBaculaを構成します(つまり、 自身のホストのバックアップ)。 これ自体は、Baculaの特に魅力的な使用法ではありませんが、他のサーバーのバックアップを作成するための良い出発点を提供します。 バックアップクライアント。 このシリーズの次のチュートリアルでは、Baculaクライアントをインストールして構成し、Baculaサーバーを構成することにより、他のリモートサーバーのバックアップを作成する方法について説明します。
代わりにCentOS7を使用したい場合は、次のリンクをたどってください: CentOS7にBaculaサーバーをインストールする方法。
前提条件
Ubuntu 14.04サーバーでスーパーユーザー(sudo)にアクセスできる必要があります。 また、サーバーには、いつでも保持する予定のすべてのバックアップ用に十分なディスク容量が必要です。
DigitalOceanを使用している場合は、Baculaサーバーと同じデータセンターリージョンにあるすべてのクライアントサーバーでプライベートネットワークを有効にする必要があります。 これにより、サーバーがバックアップを実行するときにプライベートネットワークを使用できるようになり、ネットワークのオーバーヘッドが削減されます。
サーバーのプライベートFQDNを使用するようにBaculaを構成します。 bacula.private.example.com
。 DNSを設定していない場合は、代わりに適切なIPアドレスを使用してください。 プライベートネットワークを有効にしていない場合は、このチュートリアルのすべてのネットワーク接続情報を、問題のサーバーが到達可能なネットワークアドレスに置き換えてください(例: パブリックIPアドレスまたはVPNトンネル)。
Baculaのコンポーネントの概要を見てみましょう。
Baculaコンポーネントの概要
Baculaはいくつかのソフトウェアコンポーネントで構成されていますが、サーバークライアントバックアップモデルに従います。 説明を簡単にするために、個々のBaculaコンポーネントよりも、バックアップサーバーとバックアップクライアントに焦点を当てます。 それでも、さまざまなBaculaコンポーネントについて大まかな知識を持っていることが重要なので、ここでそれらについて説明します。
Bacula server (これを「バックアップサーバー」とも呼びます)には、次のコンポーネントがあります。
- Bacula Director(DIR):ファイルデーモンとストレージデーモンによって実行されるバックアップと復元の操作を制御するソフトウェア
- ストレージデーモン(SD):バックアップに使用されるストレージデバイスで読み取りと書き込みを実行するソフトウェア
- カタログ:バックアップされたファイルのデータベースを維持するサービス。 データベースは、MySQLやPostgreSQLなどのSQLデータベースに保存されます
- Bacula Console:バックアップ管理者がBacula Directorと対話し、制御できるようにするコマンドラインインターフェイス
Note: The Bacula server components don't need to run on the same server, but they all work together to provide the backup server functionality.
Bacula client 、すなわち バックアップされるサーバーは、ファイルデーモン(FD)コンポーネントを実行します。 ファイルデーモンは、バックアップされるデータへのアクセスをBaculaサーバー(具体的にはDirector)に提供するソフトウェアです。 これらのサーバーを「バックアップクライアント」または「クライアント」とも呼びます。
はじめに述べたように、独自のファイルシステムのバックアップを作成するようにバックアップサーバーを構成します。 これは、バックアップサーバーがバックアップクライアントでもあり、ファイルデーモンコンポーネントを実行することを意味します。
インストールを始めましょう。
MySQLをインストールする
Baculaは、MySQLやPostreSQLなどのSQLデータベースを使用して、バックアップカタログを管理します。 このチュートリアルではMySQLを使用します。
まず、apt-getを更新します。
- sudo apt-get update
次に、apt-getを使用してMySQLサーバーをインストールします。
- sudo apt-get install mysql-server
MySQLデータベース管理ユーザーrootのパスワードの入力を求められます。 パスワードを入力して確認します。
このパスワードはBaculaのインストールプロセスで使用されるため、覚えておいてください。
Baculaをインストールする
apt-getを使用して、Baculaサーバーとクライアントコンポーネントをインストールします。
- sudo apt-get install bacula-server bacula-client
Baculaが使用するPostfixの設定に使用されるいくつかの情報の入力を求められます。
- メール構成の一般的なタイプ:「インターネットサイト」を選択します
- システムメール名:サーバーのFQDNまたはホスト名を入力してください
次に、Baculaデータベースの設定に使用される情報の入力を求められます。
- dbconfig-commonを使用してbacula-director-mysqlのデータベースを構成しますか?:「はい」を選択します
- データベースの管理ユーザーのパスワード: MySQLルートパスワードを入力します(MySQLのインストール時に設定)
- bacula-director-mysqlのMySQLアプリケーションパスワード:新しいパスワードを入力して確認するか、プロンプトを空白のままにしてランダムパスワードを生成します
インストールの最後のステップは、Baculaがカタログバックアップジョブ中に使用するスクリプトの権限を更新することです。
- sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup
これで、Baculaサーバー(およびクライアント)コンポーネントがインストールされました。 バックアップと復元のディレクトリを作成しましょう。
バックアップと復元のディレクトリを作成する
Baculaには、バックアップアーカイブを保存するための backup ディレクトリと、復元されたファイルが配置されるrestoreディレクトリが必要です。 システムに複数のパーティションがある場合は、十分なスペースがあるパーティションにディレクトリを作成してください。
これらの両方の目的のために新しいディレクトリを作成しましょう。
- sudo mkdir -p /bacula/backup /bacula/restore
baculaプロセス(およびスーパーユーザー)のみがこれらの場所にアクセスできるように、ファイルのアクセス許可を変更する必要があります。
- sudo chown -R bacula:bacula /bacula
- sudo chmod -R 700 /bacula
これで、BaculaDirectorを構成する準備が整いました。
BaculaDirectorを設定する
Baculaには、正しく機能するために独立して構成する必要のあるいくつかのコンポーネントがあります。 構成ファイルはすべて/etc/bacula
ディレクトリにあります。
BaculaDirectorから始めましょう。
お気に入りのテキストエディタでBaculaDirector構成ファイルを開きます。 viを使用します:
- sudo vi /etc/bacula/bacula-dir.conf
ローカルジョブの構成
Baculaジョブは、バックアップと復元のアクションを実行するために使用されます。 ジョブリソースは、クライアントの名前、バックアップまたは復元するFileSetなど、特定のジョブが実行する内容の詳細を定義します。
ここでは、ローカルファイルシステムのバックアップを実行するために使用されるジョブを構成します。
Director構成で、「BackupClient1」という名前の Job リソースを見つけます(「BackupClient1」を検索します)。 Name
の値を「BackupLocalFiles」に変更すると、次のようになります。
Job {
Name = "BackupLocalFiles"
JobDefs = "DefaultJob"
}
次に、「RestoreFiles」という名前の Job リソースを見つけます(「RestoreFiles」を検索します)。 このジョブでは、Name
の値を「RestoreLocalFiles」に更新することと、Where
の値を「/bacula/restore」に更新することの2つを変更します。 次のようになります。
Job {
Name = "RestoreLocalFiles"
Type = Restore
Client=BackupServer-fd
FileSet="Full Set"
Storage = File
Pool = Default
Messages = Standard
Where = /bacula/restore
}
これにより、以前に作成したディレクトリである/bacula/restore
にファイルを復元するようにRestoreLocalFilesジョブが構成されます。
ファイルセットの構成
Bacula FileSetは、バックアップ選択からincludeまたはexcludeファイルにファイルまたはディレクトリのセットを定義し、ジョブによって使用されます。
「FullSet」という名前のFileSetリソースを見つけます(「#バックアップするファイルのリスト」というコメントの下にあります)。 ここでは、3つの変更を行います。(1)gzipを使用してバックアップを圧縮するオプションを追加し、(2)インクルードファイルを/usr/sbin
から/
に変更し、(3)2番目を変更します。 /bacula
へのファイルを除外します。 コメントを削除すると、次のようになります。
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /
}
Exclude {
File = /var/lib/bacula
File = /bacula
File = /proc
File = /tmp
File = /.journal
File = /.fsck
}
}
「フルセット」ファイルセットに加えた変更を見てみましょう。 まず、バックアップアーカイブを作成するときにgzip圧縮を有効にしました。 次に、/
、つまり バックアップするルートパーティション。 第三に、Baculaのバックアップと復元されたファイルを冗長にバックアップしたくないため、/bacula
を除外しています。
Note: If you have partitions that are mounted within /, and you want to include those in the FileSet, you will need to include additional File records for each of them.
バックアップジョブで「フルセット」などの幅広いファイルセットを常に使用する場合、バックアップの選択がより具体的である場合よりも、バックアップに必要なディスク容量が増えることに注意してください。 たとえば、カスタマイズされた構成ファイルとデータベースのみを含むFileSetは、必要なソフトウェアパッケージのインストールと復元されたファイルの適切な場所への配置を詳細に説明する明確なリカバリ計画があり、ほんの一部しか使用しない場合は、ニーズに十分対応できます。バックアップアーカイブ用のディスク容量。
ストレージデーモン接続を構成する
Bacula Director構成ファイルで、Storageリソースは、Directorが接続する必要のあるStorageDaemonを定義します。 実際のストレージデーモンをすぐに構成します。
ストレージリソースを見つけて、アドレスlocalhost
の値をバックアップサーバーのプライベートFQDN(またはプライベートIPアドレス)に置き換えます。 次のようになります(強調表示された単語に置き換えてください)。
Storage {
Name = File
# Do not use "localhost" here
Address = backup_server_private_FQDN # N.B. Use a fully qualified name here
SDPort = 9103
Password = "ITXAsuVLi1LZaSfihQ6Q6yUCYMUssdmu_"
Device = FileStorage
Media Type = File
}
これが必要なのは、プライベートネットワークインターフェイスでリッスンするようにストレージデーモンを構成し、リモートクライアントがそれに接続できるようにするためです。
プールを構成する
プールリソースは、バックアップを書き込むためにBaculaが使用するストレージのセットを定義します。 ストレージボリュームとしてファイルを使用し、ローカルバックアップに適切なラベルが付けられるようにラベルを更新するだけです。
「ファイル」という名前のプールリソース(「#ファイルプール定義」というコメントの下にあります)を見つけて、ラベル形式を指定する行を追加します。 完了すると、次のようになります。
# File Pool definition
Pool {
Name = File
Pool Type = Backup
Label Format = Local-
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
Maximum Volume Bytes = 50G # Limit Volume size to something reasonable
Maximum Volumes = 100 # Limit number of Volumes in Pool
}
保存して終了。 これで、BaculaDirectorの構成が完了しました。
ディレクター構成の確認:
Director構成ファイルに構文エラーがないことを確認しましょう。
- sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
エラーメッセージがない場合、bacula-dir.conf
ファイルには構文エラーはありません。
次に、ストレージデーモンを構成します。
ストレージデーモンを構成する
Baculaサーバーはほぼセットアップされていますが、ストレージデーモンを構成する必要があるため、Baculaはバックアップを保存する場所を認識しています。
お気に入りのテキストエディタでSD構成を開きます。 viを使用します:
- sudo vi /etc/bacula/bacula-sd.conf
ストレージリソースの構成
ストレージリソースを見つけます。 これは、SDプロセスが接続をリッスンする場所を定義します。 SDAddress
パラメーターを追加し、バックアップサーバーのプライベートFQDN(またはプライベートIPアドレス)に割り当てます。
Storage { # definition of myself
Name = BackupServer-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
SDAddress = backup_server_private_FQDN
}
ストレージデバイスの構成
次に、「FileStorage」という名前のデバイスリソースを見つけ(「FileStorage」を検索)、バックアップディレクトリと一致するようにArchive Device
の値を更新します。
Device {
Name = FileStorage
Media Type = File
Archive Device = /bacula/backup
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
保存して終了。
ストレージデーモンの構成を確認する
StorageDaemon構成ファイルに構文エラーがないことを確認しましょう。
- sudo bacula-sd -tc /etc/bacula/bacula-sd.conf
エラーメッセージがない場合、bacula-sd.conf
ファイルには構文エラーはありません。
Baculaの設定が完了しました。 Baculaサーバーコンポーネントを再起動する準備ができました。
BaculaDirectorとStorageDaemonを再起動します
行った構成変更を有効にするには、次のコマンドを使用してBaculaDirectorとStorageDaemonを再起動します。
- sudo service bacula-director restart
- sudo service bacula-sd restart
両方のサービスが再起動されたので、バックアップジョブを実行して機能することをテストしてみましょう。
バックアップジョブのテスト
Baculaコンソールを使用して最初のバックアップジョブを実行します。 問題なく動作する場合は、Baculaが正しく構成されていることがわかります。
次に、次のコマンドを使用してコンソールに入ります。
- sudo bconsole
これにより、*
プロンプトで示されるBaculaコンソールプロンプトが表示されます。
ラベルを作成する
label
コマンドを発行することから始めます。
- label
ボリューム名を入力するように求められます。 任意の名前を入力してください。
Enter new Volume name:MyVolume
次に、バックアップで使用するプールを選択します。 「2」と入力して、前に構成した「ファイル」プールを使用します。
Select the Pool (1-3):2
バックアップジョブを手動で実行する
Baculaは、バックアップ用のデータをどのように書き込みたいかを認識しました。 これで、バックアップを実行して、正しく機能することをテストできます。
- run
実行するジョブを選択するように求められます。 「BackupLocalFiles」ジョブを実行したいので、プロンプトで「1」を入力します。
Select Job resource (1-3):1
「バックアップジョブの実行」確認プロンプトで、詳細を確認し、「はい」と入力してジョブを実行します。
- yes
メッセージとステータスを確認する
ジョブを実行した後、Baculaはメッセージがあることを通知します。 メッセージは、実行中のジョブによって生成された出力です。
次のように入力してメッセージを確認します。
- messages
メッセージには、「以前の完全バックアップジョブレコードが見つかりません」と表示され、バックアップジョブが開始されたことが示されます。 エラーがある場合は、何かが間違っているので、ジョブが実行されなかった理由についてのヒントが得られるはずです。
ジョブのステータスを確認するもう1つの方法は、ディレクターのステータスを確認することです。 これを行うには、bconsoleプロンプトで次のコマンドを入力します。
- status director
すべてが正常に機能している場合は、ジョブが実行されていることを確認する必要があります。 このようなもの:
Output — status director (Running Jobs)Running Jobs:
Console connected at 09-Apr-15 12:16
JobId Level Name Status
======================================================================
3 Full BackupLocalFiles.2015-04-09_12.31.41_06 is running
====
ジョブが完了すると、次のようにステータスレポートの[終了したジョブ]セクションに移動します。
Output — status director (Terminated Jobs)Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================
3 Full 161,124 877.5 M OK 09-Apr-15 12:34 BackupLocalFiles
「OK」ステータスは、バックアップジョブが問題なく実行されたことを示します。 おめでとう! Baculaサーバーの「フルセット」のバックアップがあります。
次のステップは、復元ジョブをテストすることです。
復元ジョブのテスト
バックアップが作成されたので、正しく復元できることを確認することが重要です。 restore
コマンドを使用すると、バックアップされたファイルを復元できます。
すべてのジョブを復元を実行
実例を示すために、最後のバックアップですべてのファイルを復元します。
- restore all
選択メニューが表示され、復元元のバックアップセットを識別するために使用されるさまざまなオプションが表示されます。 バックアップは1つしかないため、「最新のバックアップを選択」してみましょう。オプション5を選択します。
Select item (1-13):5
クライアントはBaculaサーバーの1つしかないため、自動的に選択されます。
次のプロンプトでは、使用するFileSetを尋ねられます。 「フルセット」を選択します。これは2である必要があります。
Select FileSet resource (1-2):2
これにより、バックアップしたディレクトリ構造全体を含む仮想ファイルツリーに移動します。 このシェルのようなインターフェースにより、復元するファイルにマークを付けたり、マークを外したりする簡単なコマンドが可能になります。
「すべてを復元」するように指定したため、バックアップされたすべてのファイルはすでに復元のマークが付けられています。 マークされたファイルは、先頭の*
文字で示されます。
選択を微調整したい場合は、「ls」および「cd」コマンドでファイルをナビゲートして一覧表示し、復元するファイルに「mark」でマークを付け、「unmark」でファイルのマークを外すことができます。 コンソールに「help」と入力すると、コマンドの完全なリストを利用できます。
復元の選択が終了したら、次のように入力します。
- done
復元ジョブを実行することを確認します。
OK to run? (yes/mod/no):yes
メッセージとステータスを確認する
バックアップジョブと同様に、復元ジョブを実行した後、メッセージとDirectorのステータスを確認する必要があります。
次のように入力してメッセージを確認します。
- messages
復元ジョブが開始されたか、「復元OK」ステータスで終了したことを示すメッセージが表示されるはずです。 エラーがある場合は、何かが間違っているので、ジョブが実行されなかった理由についてのヒントが得られるはずです。
繰り返しになりますが、Directorのステータスを確認することは、復元ジョブの状態を確認するための優れた方法です。
- status director
復元が終了したら、exit
と入力して、Baculaコンソールを終了します。
- exit
復元の確認
復元ジョブが選択したファイルを実際に復元したことを確認するには、/bacula/restore
ディレクトリ(Director構成の「RestoreLocalFiles」ジョブで定義されています)を確認します。
- sudo ls -la /bacula/restore
「RestoreLocalFiles」ジョブの「Exclude」セクションにリストされたファイルとディレクトリを除いて、ルートファイルシステム内のファイルの復元されたコピーが表示されます。 データ損失から回復しようとしている場合は、復元されたファイルを適切な場所にコピーできます。
復元されたファイルを削除する
復元されたファイルを削除して、ディスク領域を解放することをお勧めします。 これを行うには、次のコマンドを使用します。
- sudo -u root bash -c "rm -rf /bacula/restore/*"
復元されたファイルの多くはrootが所有しているため、このrm
コマンドをrootとして実行する必要があることに注意してください。
結論
これで、ローカルファイルシステムをバックアップおよび復元できる基本的なBaculaセットアップができました。 次のステップは、他のサーバーをバックアップクライアントとして追加して、データが失われた場合にサーバーを回復できるようにすることです。
次のチュートリアルでは、他のリモートサーバーをBaculaクライアントとして追加する方法を示します。Baculaを使用してUbuntu14.04サーバーをバックアップする方法。