Hogex spotted

Feed Rss

CentOS6でBaculaバックアップシステムを構築する #1

03.26.2012, bacula, サーバ構築, by .

Bacula導入手順 #1 Baculaの特徴と仕組み

用意するノードは2台、バックアップサーバとバックアップクライアント。以下、サーバ、クライアントと表現します。

OSはCentOS6.2 x86_64を利用。導入に際しては下記のサイトをそれぞれ参考にさせてもらいました

http://www.bacula.org/5.0.x-manuals/en/main/main/Bacula_Main_Reference.html

http://server-world.info/query?os=CentOS_6&p=bacula

http://lunatear.net/archives/001067.html

www.bacula.orgの公式ドキュメントは英語で400ページオーバーというなかなかのボリュームで読むのが大変でした。私も英語のマニュアルの方に目を通したのはまだごく一部です^^;

少し長くなりそうなので、何回かにわけてお送りしようと思います。

 

第1回)Baculaの特徴と仕組み

第2回)デーモンのインストールと初期設定

第3回)バックアップストレージとバックアップジョブの設定

第4回)バックアップとレストア

第5回)システムフルバックアップとベアメタルレストア

設定関連は書いてて長くなったら細分化するかもしれませんw

では、今回はBaculaの特徴と仕組みについて解説します。ArcServeやTivoli等の商用エンタープライズバックアップソリューションは大抵似たような仕組みだと思うので、興味の無い方は読み飛ばして頂いて構いません。

 

Baculaはクライアント・サーバ方式で動作するOSSのエンタープライズ向けバックアップソリューションです。商用製品としては前述したArcServeやTivoli等が有名ですね。

ではまずは主な特徴を紹介します。

主な機能としては、ネットワーク経由での複数のマシンのバックアップ一括管理、スケジューリングによる自動バックアップ、バックアップボリュームの自動リサイクル、システムの完全なバックアップとベアメタル状態からのレストア、オートチェンジャーテープライブラリへの対応等、エンタープライズ用途に必要と思しきものはひと通り対応しています。

2012年3月現在の最新版は5.2.6で、動作そのものは比較的安定しているようです。

欠点としては、商用製品に比べてGUIの管理コンソールが現状致命的に弱いと感じます。バックアップ対象サーバの追加・削除やバックアップツールの変更等はエディタを使った設定ファイルの編集が必須です。

また手動でのバックアップジョブ実行やバックアップデータからのレストア等は公式でGUIアプリケーションが用意されいるものの非常に不安定で、またCUIでは手動実行の際にその場限りの設定変更が可能(レストア先のパスの変更等)ですが、GUIではどうもこの機能は実装されていないようです。

このため、本格的な運用においてはシステム管理者がある程度Baculaの内部構造について知っている必要があると言えます。

 

では、次にBaculaの基本的な動作原理をデーモンの連携、及びカタログ・ストレージ・プール・ボリューム・ジョブの関係から見ていきたいと思います。

まず、各デーモンの基本的な動作を表したのが下図です。

本来はもう少し色々とやっているのですが、ひとまずは分かりやすさ重視で細かいところは省いています。

この図のように、まずbacula-dirがジョブをキックし、ジョブの対象となるクライアントのbacula-fdに対してジョブのプロセスを開始するよう指示を出します。

ジョブが開始されると、bacula-fdがバックアップ対象となるファイルを収集しサーバのbacula-sdに対してファイルを転送します。サーバのbacula-sdはバックアップの保存に利用できるストレージデバイスの一覧を持っており、ジョブに対応したストレージデバイスに実データの書込みを実施します。

また、一方でbacula-dirはMySQLデータベースに対してカタログデータと呼ばれるデータを書込みます。

カタログデータには、Baculaが保存した実データアーカイブを管理する上で必要となる情報が格納されています。一部を紹介すると

 

・アーカイブの保持期限

・アーカイブの形式(フルバックアップか、差分バックアップか、増分バックアップか)

・アーカイブのステータス(対応するジョブID、バックアップ取得日次、利用可能か、再利用フラグ等)

・アーカイブが保持する実データのパス情報

 

といった情報が保持されています。アーカイブデータ単品ではbaculaはアーカイブを操作することができないので、カタログデータは非常に重要になります。

 

次にBaculaが管理するデータの概念や種別に注目して動きを見てみましょう。

Baculaは実データを「ストレージ」/「プール」/「ボリューム」という3つの階層に分けて管理します。今回はハードディスク上に構築したファイルシステム上にバックアップデータを保存するという方式を前提に解説を行います。

大まかにこの3つを説明すると、以下のようになります。

 

ストレージ)

これは、そのままストレージデバイスに対応します。HDDでバックアップを行う場合はデバイス名にディレクトリパスを指定します。テープデバイスを利用する場合は、テープドライブのデバイスファイルを指定することになるでしょう。

プール)

ストレージ上に保存するアーカイブをまとめる単位となります。プールはOSのファイルシステム上には明確には存在しません。

プールの概念はHDDストレージ上のシステムを想定すると非常に分かりづらいので、ここでは便宜的にテープデバイスを利用したバックアップのケースを例にプールの機能を説明します。

最初にバックアップの計画として、週次バックでシステムのフルバックアップを、日次バックアップで直近のフルバックアップからの差分バックアップを実施すると想定します。また、それぞれのバックアップの保存期限を 週次バックアップ:5週間分 日次バックアップ:30日分 と想定します。

このケースでは、管理者の手元に「週次用テープ5本」のセットと「日次用テープ30本」のセットがそれぞれ1セットずつあるでしょう。プールとはこの「テープ1セット」をBaculaがソフトウェア上で管理するための概念です。

例えば、tarコマンド等を利用した古典的なバックアップを行なっていた場合、5本の週次用テープを使い切ると1本目をテープドライブにセットし、ボリュームラベルを確認した上で手動で消去を行い、再度テープに書きこまなければなりません。

プールはこの一連の工程を自動化する為にボリュームラベルとその保持期限、またメディアの再利用が可能かどうかのフラグ等の情報をMySQL等のRDBMS上でカタログデータとして管理しています。

bacula-dirはジョブを実行するときに、カタログデータベース上の指定されたプールの情報を参照し、書込み/読み込みやデータ消去を行うデータを決定します。

ボリューム)

ボリュームは、Baculaがバックアップした実データと紐付けられます。ここで注意すべき点は2点です。まず、ボリュームにはジョブ数という概念があり、必ずしも1ボリューム=1ジョブとは限らない事です。1巻に2話が収録されているビデオテープ等を想像すると分かりやすいかもしれませんw

 

次に、少し細かい話になりますがBaculaの設定ファイル上で「ボリュームのみの設定」を行うディレクティブはありません。ボリュームの動作を決定するパラメータは基本的にプール設定のディレクティブ内で行います。

私は最初、プールとボリュームの概念が曖昧な状態で設定ファイルを読んでいたので、この辺りで随分と混乱しましたw

ここまでをまとめると、まずBaculaを主として構成するのは

 

・バックアップシステム全体を統括し管理するbacula-dir (Directoryデーモン)

・データを格納するストレージサーバ上で動作するbacula-sd (Storageデーモン)

・バックアップ対象のサーバ上で実ファイルの管理をするbacula-fd(Fileデーモン)

・カタログデータベースを格納するRDBMS

 

の4つのコンポーネントです。また、この4コンポーネントは全て別のノード上で動作させる事が可能です。

次にデータの管理ですが、データは主に3つの階層で表現され、データを保存する物理ストレージを決定するストレージ、データを種類ごとに分類し管理する為のプール、管理上の最小単位であり実データとの紐付けがなされるボリュームの3つからなります。

 

Baculaによるバックアップシステムを構築する上で最も重要となるのは、Directoryデーモンにおけるプール及びジョブの設定と言っていいでしょう。

では、次回は各種デーモンのインストールとコンソールを実行可能にする為の最低限の設定を行いたいと思います。

2 Responses to CentOS6でBaculaバックアップシステムを構築する #1

  1. Pingback: CentOS6でBaculaバックアップシステムを構築する #2 - Hogex spotted

  2. Pingback: 1:Baculaの設定時に不明なだった点、注意点など | www.kinryo.net

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


   Beat diabetes   Diabetes diet