お金をかけずにサーバーの勉強をしよう

Baculaで Ubuntu Serverのバックアップ(その3)

2023年5月17日

メニューへ戻る

Baculaに戻って構成要素のお勉強をし直し。

Baculaで Ubuntu Serverのバックアップ(その1)」で Baculaをインストールをし、
Baculaで Ubuntu Serverのバックアップ(その2)」で WebGUIのBacularisをインストールしました。

ここでは、一旦 Baculaでバックアップをするのにどういった考え方があるのか、その構成要素をおさらいしたいと思います。
(というか私も知らんからですが)

有償のバックアップソフトウェアでも概ねこれと同じ考え方になっていますので、この手のソフトを使ったことがない人には参考になると思います。


こちらのドキュメントをご覧ください。
Getting Started with Bacula

この中で「Understanding Pools, Volumes and Labels」という段落があります。
Pool・Volume・ラベルというのはバックアップしたものをどこに置いておくかに関わる観念なので、これを理解しないとそもそものバックアップができません。

一つずつ見ていきましょう。


Volume

A Volume is a single physical tape (or possibly a single file) on which Bacula will write your backup data.

[tape]って言うのは、昔のカセットテープとかビデオテープのイメージで、磁性体を塗った帯がケースの中でクルクルしてるやつで、専用のドライブに専用のテープカートリッジを入れて使います。
これまでいろいろなメディアがありましたが最近では LTOが主流かと思います。
カートリッジ式のリムーバブルメディアですね。

[single file]の方は OS上の実際のファイルそのものです。

バックアップは基本的に複数のファイルを1つにまとめる「アーカイブ」と呼ばれる作業を含んでいます。
なのでバックアップ先テープ・バックアップ先ファイルともに、その中に複数のデータを纏めて入れておくのだと考えてください。


Pool

Pools group together Volumes so that a backup is not restricted to the length of a single Volume (tape).

Volumeを複数まとめたものがプールです。
1回のバックアップ量が Volumeの 1つ分のサイズを超えてしまっても、続けて次の Volumeを使うことで事実上容量の制限を受けなくなります。

Consequently, rather than explicitly naming Volumes in your Job, you specify a Pool, and Bacula will select the next appendable Volume from the Pool and request you to mount it.

個々のバックアップの設定では、バックアップ先には Volume単体ではなく Poolを指定することになります。


Volumeと Poolの関係を図にするとこんな感じです。
Volumeと Pool


Label

ちょっと前後します。 Adding Volumes to a Pool is usually done manually with the Console program using the label command.

ある Volumeを特定の Poolに紐付けるには Labelという作業によって行います。

Although the basic Pool options are specified in the Director's Pool resource, the real Pool is maintained in the Bacula Catalog. It contains information taken from the Pool resource (bacula-dir.conf) as well as information on all the Volumes that have been added to the Pool.

Volumeが Poolに紐付けられている状態(Label情報)は、Baculaの「カタログ」情報に収められます。

For each Volume, Bacula maintains a fair amount of catalog information such as the first write date/time, the last write date/time, the number of files on the Volume, the number of bytes on the Volume, the number of Mounts, etc.

バックアップソフトでは「カタログ」って言葉がよく出てきますが、バックアップしたファイルの情報とバックアップメディアの管理情報を足したもののことで、大体はデータベースで管理しています。
ここでは PostgreSQLがその役割になっています。

Before Bacula will read or write a Volume, the physical Volume must have a Bacula software label so that Bacula can be sure the correct Volume is mounted. This is usually done using the label command in the Console program.

よって Volumeを使う前には必ず Label作業をしましょうということですね。


データベースの役割はこうです。
データベースにバックアップデータそのものが入っているわけではありません。
データベースの役割
私が経験した中では、BackupExecという商品は中で SQL Serverの Express Edition(無償だが大きなデータを扱えない)を使っていました。

バックアップしたファイルの日時とどのテープにあるかの情報を「カタログ」とか「インデックス」と言い、これがデータベースで管理されています。

このおかげで ファイル単位・ディレクトリ単位・マシン全体と、柔軟に復旧の対象を選ぶことができるようになっています。


これらの管理を Linuxコマンドを駆使したり Excelの表につけてやれないこともないのですが、大変な手間です。

そして復旧を求められる状況がどういう時かを鑑みると、バックアップソフトを使って手早くやれる事にどれだけ価値があるかは自明の理ですよね。


次回「Baculaで Ubuntu Serverのバックアップ(その4)」では、Bacula独自の設定に関してのお勉強をします。