Bacula 現在のステータス

投稿者: | 2014年6月11日

Bacula 現在のステータス

もしくは、何が出来て、何がまだ出来ないのか。

Baculaで出来る事

  • ジョブ制御
    • 中央集権化されたディレクタによるネットワーク経由のバックアップ/リストアの
      制御。
    • ジョブ(§ 1.6 on page 7 も参照) 実行を自動化するための組み込みスケジューラ
    • 複数ジョブの同時実行スケジューリング。
    • 単一ジョブのみの実行、または複数ジョブの同時実行(マルチプレクシング) を選
      択できる。
    • 優先順位にもとづくジョブ実行順序の制御。
    • ディレクタを完全に制御するためのコンソール機能。現在、シェル、Qt4 GUI、wxWid-
      gets GUI、Web インタフェースが利用可能。Qt4 GUI であるBacula Administration
      Tool (bat) は、シェルプログラムにはない付加機能を持っている。

     

  • セキュリティ
    • 以前にカタログに追加されたファイルの照合。Tripwire と似た機能を実現する(シ
      ステムの不正改ざんの検出)。
    • 各コンポーネント(デーモン) 間の通信のCRAM-MD5 のパスワードによる認証。
    • 通信の暗号化(Bacula TLS) によるコンポーネント間通信の暗号化。
    • クライアント単位で制御できる(ボリュームレベルでの) データ暗号化。
    • MD5 またはSHA1 によるファイルデータのシグネチャを要求時に算出。

     

  • リストア機能
    • 直近または特定日時以前のバックアップから任意のファイル(複数選択可) をリス
      トアするための対話的操作。
    • ベアメタル・リカバリによるシステムの完全な復旧。Linux についてはほぼ全プロ
      セスが、Solaris については部分的に自動化されている。詳細はディザスタリカバ
      リを参照。Win2K/XP でも動作するとの報告もある。
    • bls およびbextract プログラムによる、ファイルリストとリカバリのスタンドア
      ロン実行。Bacula 全体またはカタログが利用できない場合であっても、この機能
      を使ってファイルを取り出せる。ただし、コンソールのrestore コマンドを使って
      リストアするのが推奨であり、これらのプログラムは最後の手段として用意されて
      いる。
    • あらかじめ作成しておいたブートストラップファイルを利用した、カタログデータ
      ベースの迅速な復元
    • bscan プログラムでバックアップボリュームをスキャンして、カタログファイルを
      再構築できる。

     

  • SQL カタログ
    • バックアップしたボリューム、プール、ジョブ、ファイル情報を記録するカタログ
      データベース機能。
    • カタログ用データベースとしてMySQL、PostgreSQL、SQLite をサポート。
    • MySQL、PostgreSQL、SQLite に対しするクエリをユーザが拡張可能。

     

  • ボリュームとプールの拡張管理機能
    • 少なくともBacula による意図しない上書きを防止するための、ボリュームラベル機能。
    • ひとつのボリュームに複数クライアントに関する複数ジョブをバックアップできる。
      Linux、Unix、Sun、Windows クライアントを同一ボリュームに混在してバックアッ
      プでき、またリストアできる。
    • マルチボリューム・バックアップ。あるボリュームを使い切ったら、Bacula は次
      のボリュームを要求してバックアップを継続できる。
    • プールおよびボリュームライブラリ管理機能により、ボリュームの柔軟性を実現。
      たとえば月次ボリュームセット、週次ボリュームセット、日時ボリュームセット、
      クライアント別ボリュームセットなど。
    • ボリュームのデータ形式はマシンに依存しない。このため、希望するならばLinux、Unix、Sun、Windows それぞれのクライアントを同じボリュームにバックアップできる。
    • ボリュームのデータ形式は後方互換があり、古いボリュームからの読み出しが可能。
    • メッセージハンドラの柔軟な設計により、デーモンからのフィードバックをディレ
      クタにルーティングし、電子メールによる自動通報を実現。
    • バックアップデータをディスクにスプールし、さらにスプールしたファイルをテープに書き込める。増分/差分バックアップ実行中の「靴磨き(shoe shine)」を防止できる。

     

  • 多数のストレージデバイスのサポート
    • シンプルなシェルインターフェースがインタフェースとなって、事実上ほとんどすべてのオートローダをサポート。mtx を活用するためのスクリプトを提供。
    • オートローダのバーコードをサポート。バーコードにもとづくテープラベル付けを自動化
    • バーコード読み込みまたは実際にテープを読むことによって、オートローダの複数マガジンを自動的に使い分けられる。
    • 複数ドライブのオートローダをサポート
    • Raw デバイスのバックアップとリストア。ただしリストア先は同じデバイスでなければならない。
    • ボリュームのブロック(約64KB) はデータのチェックサムを含む。
    • 移行のサポート– あるプールから他のプールに、またはあるボリュームから他のボリュームにバックアップデータを移動できる。
    • DVD への書き込みをサポート。

     

  • マルチプラットフォーム対応
    • 任意の長さのファイル名とメッセージを取り扱える。
    • 必要に応じて、ファイル単位のGZIP 圧縮をネットワーク転送前にクライアント側
      で実行できる。
    • 有効化してあれば、ほとんどのOS でPOSIX ACL と拡張ACL をバックアップ/リストアできる。
    • コンソールに対してアクセス制御リストを設定して、ユーザごとにそのユーザのデータのみへのアクセスに制限できる。
    • 2 ギガバイト以上のデータのバックアップ/リストアをサポート。
    • 64bit マシンのサポート、たとえばamd64、Sparc。
    • ANSI またはIBM テープラベルをサポート
    • Win32 におけるユニコードファイル名(日本語や中国語など) のサポート。
    • Win32 システムにおけるボリュームシャドウコピー(VSS) を活用した、オープン中のファイルのバックアップ(Win2000 を除くWindows)。
    • Win32 における最大64 キロバイトのファイル名/パス名のサポート(Unix/Linux は無制限)。

     

  • その他
    • マルチスレッドの実装。
    • 解りやすく拡張性のある、デーモン別設定ファイル。

他のバックアップシステムに対する優位性

  • マシンごとのクライアントが用意されているため、ファイルの属性も含めてファイルを適切にバックアップしてリストアできる。
  • クライアント側プログラムを使わずに、NFS やSamba などを経由してバックアップすることも可能だが、クライアント側でファイルデーモンを起動してバックアップすることを推奨する。
  • Bacula はマルチボリュームのバックアップをサポートしている。
  • バックアップしたファイルをSQL 標準データベースに保存する。このため、すべてのボリュームに保存されているファイルをオンラインで確認できる。
  • データベースを自動的に整理(古いレコードの自動削除)。
  • したがって、データベースの管理が容易になる。現在MySQL、PostgreSQL、およびSQLite用ドライバが用意されている。
  • Bacula はモジュール化されていて全体として統合されているため、スケーラビリティに優れている。
  • Bacula はクライアント側の機能を利用できる。このため、バックアップ開始前にクライアント側のツールを使ってデータベースや他のアプリケーションを停止し、バックアップ後に再起動できる。しかもこれらすべてをBacula ジョブの中で制御できる。
  • Bacula は組み込みのジョブスケジューラを持っている。
  • ボリュームのフォーマットは文書化されており、読み書きするための簡単なC プログラムが用意されている。
  • Bacula が使うTCP/IP ポート番号はIANA に正式に登録されている。RPC や共有メモリを必要としない。
  • 比較対象になる他の製品と比べて、Bacula のインストールと設定は相対的に容易である。
  • Bacula は有名でメジャーな商用アプリケーションと同レベルの速さで動作する、という報告がある。
  • カタログ情報を多数のファイルで管理している別の商用バックアップツールと比べて、Bacula は4 倍高速に動作する、という報告もある。
  • いくつかの管理用GUI に加えて、Bacula は全機能を制御できるシェルインタフェースを備えている。管理者はssh 経由でたとえ自宅からであっても、Bacula を管理できる。

 

現在の制限事項

  • ひとつのリストア目的に対して2 つのリストアジョブを同時に実行することは考えにくいが、あえてこれを実施する場合には、スプール機能を有効にした上でバックアップデータすべてをそれぞれのスプール領域に置いておかなければならない。この条件を満たしていなければ、正常にリストアできない。換言すれば、バックアップメディア上に混在しているジョブのバックアップデータを、同時実行する2 つのジョブで同一のリストア先にリストアすることはできない。この制約は、それぞれのジョブを順番に実行することによって簡単に解決できる。通常この状態は、リストアジョブを実行中に手作業で別のジョブID の実行を指示した場合に起こる。
  • Bacula はバックアップ元とは別のクライアントにリストアできる。しかしバックアップ元とリストア先のアーキテクチャが大きく異なる場合(たとえば32 ビットアーキテクチャと64 ビット、Win32 とUnix など)、以下のような制約や限界がある。Solaris のdoorファイルは他のUnix/Linux には存在しない。64 ビットマシンで作られたZlib 圧縮ファイルを32 ビットマシンで正しく読み込めないことがある、など。

設計上の制約または限界

  • Bacula 設定ファイルで定義する名前(リソース名、ボリューム名など) の最大長は固定長になっていて、現バージョンでは127 文字までとなっている。この制約はファイル名には適用されない。ファイル名の長さは任意である。
  • スタンドアロンツールのいくつか(btape、bconsole など) のコマンドラインに指定できるパラメータの文字数は数百文字に制限される。文字に制限されている。bscan コマンドに複数のボリューム名を指定する場合を除いて、通常これは現実の制約にはならない。コマンドライン文字数の制約を受けたくなければ、.bsr の中にボリューム名を列挙するとよい。
  • コンポーネントごとのBacula 設定ファイルの長さに制限はない。ただし行あたりの最大文字数は500 になっていて、これを超えた部分は切り捨てる。複数の名前を列挙したACL を定義するディレクティブなどで行の長さが500 文字を越えてしまう場合は、それより短い行の複数のディレクティブに分割すればよい。

その他の注意事項

  • Bacula における通常の差分および増分バックアップはタイムスタンプに依存している。結果、フルバックアップ後に、既に存在するディレクトリにファイルを移動したり、ディレクトリごとバックアップ・ファイルセットに移動すると、これらのファイルは、タイムスタンプが古いため、増分バックアップの対象にならない可能性がある。この問題を解決するには、厳格モードを使うか、すべての移動したファイルのタイムスタンプを更
    新する必要がある。
  • 40 億を越えるファイルをデータベースに登録すると、バージョン3.0.x 以前のBacula ではFileIdg がオーバーフローする。最近のBacula バージョンではこの問題は解決ずみである。
  • 厳格モードでない場合、フルバックアップ後に削除したファイルは、リストア対象になってしまう。これは他の同様のバックアッププログラムでも起こる問題である。厳格モードを使うことによって、この問題を回避できる。
カテゴリー: