Backupオープンソースソフトウェア Bacula インストール編

オープンソースソフトウェアのBaculaをを使用してバックアップ環境を構築

バックアップというのは、データが無くなったなどの困った時以外は意識しないものです。そしてバックアップソフトウェアは沢山ありますが、コストが高いことが多いです。フリーソフトやオープンソースソフトウェアでもけっこう探すことができますが、今回は、オープンソースソフトウェアでも機能で引けを取らないと言われているBaculaを試してみます。

オープンソースソフトウェア Baculaとは

(バキュラと読むそうで、名称のバキュラはバックアップとドラキュラを合わせた造語だとか)は、・統合管理バックアップソフトで、複数のコンピュータのバックアップやリストア(復元)、データの検査などを実行できます。ネットワーク越しにリモートサーバのバックアップを行うこもを可能です。バックアップ先として、磁気テープやディスクなどさまざまな媒体にバックアップを書き込むことができます

この辺りを見ると有償ソフトウェアと同じことができそうです。

Baculaには日本ユーザ会があります。
https://www.bacula.jp/

Bacula…誰が為に?
もしあなたがtar、dump、bru などを現在使っていて、ネットワークバックアップや柔軟性、カタログサービスなどを強化したいなら、Bacula はそれらの機能を追加するための最 適な選択だと言える。しかし、Bacula はtar やdump よりもセットアップや使用が難しいため、UNIX システムの運用経験がないユーザや、洗練されたバックアップ製品を使っ たことがないユーザの場合、Bacula は適さないかもしれない。

前述したようなシンプルなプログラムでテープにデータをバックアップするのと同様の動作をBacula に期待しているなら、Baculaはとても難しく感じられるだろう。 Bacula はユーザが指定したルールにもとづいてデータを保護するように設計されている。このため、テープは極力再利用せず、再利用は最後の手段となる。もちろんBacula に同じテープへの上書きを強制することは可能だが、より単純なプログラムの方が簡単かつ効率的にこのように制御できる。 複数のボリュームにまたがって書き込める(すなわちテープ1 本あたりの容量に制限されない) バックアッププログラムを必要としているのなら、Baculaは最適である。

さらに、多数のBacula ユーザが、他の同じようなプログラムを使うよりも、Bacula の方がセットアップも使用も簡単であると報告している。 Legato Networker.、ARCserveIT、Arkeia、PerfectBackup+などの洗練された商用パッケージを使用しているのなら、Bacula に関心を持つかもしれない。Bacula は、こ れらと同等の多数の機能を提供するからである。

出典:Backula日本ユーザ会 Baculaについて
https://www.bacula.jp/

日本ユーザ会のサイトでは、上記のように書かれているので、パッと見では難しいように感じてしまいます。
Bacula は、ディレクタ、コンソール、ファイル、ストレージ、カタログ、モニタという機能で構成されていて、他のバックアップソフトウェアと同様の機能を持っているようです。

バックアップとは

前述しているように、バックアップというのはデータを失う状況になって初めて効力を発揮するため、それ以外の時は意識していないと思います。また、ハードウェアの性能向上や価格の低下などもあり、必要性も感じない方が多いのではないでしょうか。
バックアップからデータを復旧する必要がある場合というのは、ハードウェアが完全に死んでしまった場合や、オペミスによってデータを消してしまった場合が考えられます。
前者のハードウェアが完全に死んでしまうというのは、RAIDを組んで冗長化してということで限りなく発生の可能性は低いかもしれません。ただ、死んでしまった後の復旧というのは時間が掛かるものですし、復旧できるかというのは復元するデータがあればこそです。復元するデータがなければ新規に構築するだけで元の状態には戻りません。
次に後者のオペミスの場合です。多くの場合、オペミスで消してしまったデータはRAIDでは防げませんし、冗長化していていも同時か近いタイミングで削除されています。従って、復元できない。ということになります。
先日、世の中を賑わせたランサムウェアなども、初期はバックアップからデータをリストアすることが対処法だったりしましたね。

このような時のバックアップですが、バックアップを実施したタイミングのデータまで復元することができるものです。バックアップとバックアップの間に作成、更新されたものは最新の状態には復元できない。ということも覚えておく必要があります。

データを守るという観点では、オープンソースソフトウェアで大丈夫?という懸念もあると思います。 確かに有償ソフトウェアであればベンダーの責任という部分があるので、運用側としては安心できるかもしれません。予算的に許すのであれば、有償パッケージを検討してみるというのは必要です。使用している環境に応じたDriverがあるなどはありますが、バックアップソフトウェアを初めて使う場合など、いきなり高価なソフトウェアは購入できないかと思います。また多くのバックアップソフトウェアの考え方は同じようなものです。バックアップの考え方を知るという意味ではオープンソフトウェアを使ってみて、使用目的や社内規定に合わせて有償ソフトウェアへ変更するというのもいいのではないでしょうか。

Baculaは、Liunxの他,Solaris,FreeBSD,NetBSD,Windows,MacOS,HP-UXなど複数のOSに対応していて、同時に複数のサーバおよびPCの管理をすることができる、エンタープライズレベルでの使用が可能なソフトウェアです。
また、240万件以上ダウンロードされていて、EU圏のほか,ロシアやブラジルでも非常に人気があると言われています。それだけ使用実績もあると言えるオープンソースソフトウェアです。

Baculaのインストール

Baculaをインストールするには、先にリポジトリをダウンロードします。

  1. Baculaリポジトリをダウンロードします
  2. # cd /etc/yum.repos.d/
    # wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo
    
  3. Baculaをインストールします
  4. # yum -y install bacula-director bacula-client bacula-storage bacula-console
    
  5. インストールを確認します
  6. # rpm -qa | grep bacula
    bacula-libs-9.0.6-5.el7..x86_64
    bacula-client-9.0.6-5.el7..x86_64
    bacula-common-9.0.6-5.el7..x86_64
    bacula-libs-sql-9.0.6-5.el7..x86_64
    bacula-director-9.0.6-5.el7..x86_64
    bacula-console-9.0.6-5.el7..x86_64
    bacula-storage-9.0.6-5.el7..x86_64
    

MariaDBをインストール

Bacula.jpのサイトではMariaDBを使用しています。MariaDBをインストールする場合は次のコマンドでインストールできます。

# yum -y install mariadb-server

インストールが完了したらMariaDBを初期化します。

# mysql_secure_installation

MySQLを使用する

実はこのサーバにはMySQLがインストールされています。MySQLとMariaDBはほぼ同じなので、今回は、そのまま使用してみたいと思います。

# mysql --version
mysql  Ver 14.14 Distrib 5.6.39, for  (x86_64) using  EditLine wrapper
# rpm -qa |grep mysql
php-mysqlnd-5.6.33-1.el7.remi.x86_64
mysql-community-libs-5.6.39-2.el7.x86_64
mysql-connector-python-2.1.7-1.el7.x86_64
mysql-utilities-1.6.5-1.el7.noarch
mysql-community-release-el7-5.noarch
mysql-community-common-5.6.39-2.el7.x86_64
mysql-community-client-5.6.39-2.el7.x86_64
mysql-community-server-5.6.39-2.el7.x86_64
mysql-community-devel-5.6.39-2.el7.x86_64

MySQLにBacula用のデータベースを作成します

  1. データベースにログインします
  2. # mysql -u root -p
    Enter password: dbのパスワード
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 37
    Server version: 5.6.39 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
  3. bacula用のデータベースを作成します
    作成後にデータベースが作成できているかを確認します
  4. mysql> create database bacula;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | bacula             |
    | mysql              |
    | performance_schema |
    +--------------------+
    5 rows in set (0.00 sec)
    
  5. ユーザに権限を付与します
  6. mysql> grant all privileges on bacula.* to bacula@localhost identified by 'dbのパスワード';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> quit
    
  7. bacula用のテーブルを作成します
    ここで入力するパスワードはdbのパスワードです
  8. # /usr/libexec/bacula/make_bacula_tables mysql -u bacula -p
    Making mysql tables
    Enter password: 
    Creation of Bacula MySQL tables succeeded.
    
  9. データベースの切り替えを行います
  10. # alternatives --config libbaccats.so
    
    3 プログラムがあり 'libbaccats.so' を提供します。
    
      選択       コマンド
    -----------------------------------------------
       1           /usr/lib64/libbaccats-mysql.so
       2           /usr/lib64/libbaccats-sqlite3.so
    *+ 3           /usr/lib64/libbaccats-postgresql.so
    
    Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:1
    
  11. もう一度コマンドを実行して設定が変わっているかを確認します
  12. # alternatives --config libbaccats.so
    
    3 プログラムがあり 'libbaccats.so' を提供します。
    
      選択       コマンド
    -----------------------------------------------
     + 1           /usr/lib64/libbaccats-mysql.so
       2           /usr/lib64/libbaccats-sqlite3.so
    *  3           /usr/lib64/libbaccats-postgresql.so
    
    Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
    

Baculaのインストールはここまでになります。次回は設定を行います。