Proxmox Backup Server(PBS)のインストールと設定ガイド — 仮想マシンの自動バックアップを構築する

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

実体験:深夜2時にVMを失ったとき

自分のhomelabではProxmox VEで12台のVMとコンテナを管理している。本番環境に持ち込む前にいろいろ試すための遊び場だ。あるとき、PostgreSQLが動いているVMでカーネルをアップデートしてリブートしたら、起動しなくなった。スナップショットを取るのを忘れていた。結果:1週間前に手動で取ったバックアップから3時間かけてリストア作業をする羽目になった。あのときPBSがあれば、リストア全体で15分もあれば終わっていたはずだ。

それ以来、Proxmox Backup Serverに移行した。Proxmox VEを使っていて、バックアップが「気が向いたらやる、忘れたらそれまで」という状態なら——このガイドで自動バックアップをきちんと設定して、一度終わらせてしまおう。

Proxmox Backup Serverとは何か、なぜ使うべきか

PBSは汎用バックアップツールではない。Proxmoxチームが自ら作った、Proxmox VEエコシステムに特化したソフトウェアだ。rsyncやClonezillaを使った手動バックアップと比べると、いくつか大きな違いがある:

  • 増分バックアップ — 前回からの変更分だけを保存する。50GBのVMでも変更が2GBなら、アップロードは2GBだけ
  • 重複排除(Deduplication) — VM間の重複データを排除する。この機能のおかげで自分のhomelabではストレージを約65%節約できている
  • ダウンタイムなしのバックアップ — PBSがバックアップ中もVMは通常通り稼働し続ける(ライブスナップショット)
  • 柔軟なリストア — VM全体をリストアすることも、バックアップ内の特定のファイルだけを取り出すことも可能
  • プルーンポリシー — あらかじめ設定したルールに従って古いバックアップを自動削除するので、ディスクが満杯になる心配がない

PVEユーザーにとって最大のメリットは、PBSがProxmox VEのWeb UIに直接統合されていることだ。設定、監視、手動バックアップのトリガー——すべて使い慣れたインターフェースから操作でき、別のタブを開く必要はない。

Proxmox Backup Serverのインストール

システム要件

PBSは必ず独立したマシンで動かすこと——バックアップ対象のProxmox VEと同じホストにインストールしたり、そのVMとして動かしたりすることは絶対にしてはいけない。理由は単純で、メインホストが壊れたときにPBSが生きていなければリストアできないからだ。

  • CPU:2コア以上(x86_64)
  • RAM:最低2GB、推奨4GB以上
  • ストレージ:バックアップ対象のVM総容量の1.5〜2倍程度を目安に
  • OS:Debian 12(PBSはDebianベース、専用ISOからインストール)

自分のhomelabのPBSマシンは古いPC:RAM 4GB、HDD 2TB。12台のVMを30日間のリテンションでバックアップしても余裕で動き、容量もまだ余っている。

ISOのダウンロードとインストール

PBS ISOはproxmox.com/en/downloadsからダウンロードする。インストール手順はProxmox VEと同じだ——USBブート、ディスク選択、静的IP・ホスト名・rootパスワードの設定。特に迷うところはない。

# インストール完了後、以下のURLからWeb UIにアクセス:
https://<PBS_IP>:8007

# ログイン情報:
# ユーザー名: root
# レルム: Linux PAM
# パスワード: インストール時に設定したパスワード

PBSのインターフェースはPVEによく似ている。Proxmox VEに慣れていれば、5分もあれば操作を把握できるだろう。

PBSとProxmox VEの詳細設定

PBSにデータストアを作成する

データストアはPBSがすべてのバックアップを保存する場所だ。専用のディスクを指定すること——OSと同じディスクを共用すると、容量が満杯になったときに両方ともダメになる。

# バックアップ用ディスクをマウント(例:/dev/sdb)
fdisk /dev/sdb          # 新しいディスクの場合はパーティションを作成
mkfs.ext4 /dev/sdb1
mkdir -p /mnt/backup-disk
mount /dev/sdb1 /mnt/backup-disk

# 再起動時に自動マウントされるよう /etc/fstab に追加
echo "/dev/sdb1  /mnt/backup-disk  ext4  defaults  0  2" >> /etc/fstab

マウントが完了したら、PBS Web UIでAdministration → Datastore → Add Datastoreを開く:

  • Name:vm-backups
  • Backing Path:/mnt/backup-disk

PBSをProxmox VEに接続する

Proxmox VEでDatacenter → Storage → Add → Proxmox Backup Serverを開き、以下を入力する:

  • ID:pbs-main
  • Server:PBSマシンのIPアドレス(例:192.168.1.50
  • Username:root@pam
  • Datastore:vm-backups
  • Fingerprint:PBSのDashboard → Show Fingerprintからコピー
# またはProxmox VEノードのCLIから追加することも可能:
pvesm add pbs pbs-main \
  --server 192.168.1.50 \
  --datastore vm-backups \
  --username root@pam \
  --password YourPBSPassword \
  --fingerprint AA:BB:CC:DD:...   # PBS Web UIからフィンガープリントを取得

自動バックアップジョブを作成する

Proxmox VEでDatacenter → Backup → Addを開く。ここが核心的な設定だ——一度設定すれば、あとはバックアップのことを気にしなくてよい。

  • Storage:pbs-mainを選択
  • Schedule:0 2 * * * — 毎日午前2時にバックアップ
  • Selection:All(全VMをバックアップ)または特定のVM/CTを個別に選択
  • Mode:Snapshot — バックアップ中もVMはシャットダウンしない
  • Compression:Zstandard — 高速かつ圧縮率が高いのでこれを使う
  • Send email to:バックアップ失敗時の通知を受け取るメールアドレスを入力
# スケジュールを待たずに今すぐ手動でバックアップを実行してテスト
vzdump 100 --storage pbs-main --mode snapshot --compress zstd

プルーンポリシーの設定 — 古いバックアップを自動削除

プルーンを設定しないと、数週間でディスクが満杯になる。PBS Web UIでDatastore → vm-backups → Prune & GCを開く。

自分がhomelabで使っているポリシー:

  • Keep Last:3 — 直近3世代のバックアップを保持
  • Keep Daily:7 — 過去7日間は1日1世代を保持
  • Keep Weekly:4 — 過去4週間は1週1世代を保持
  • Keep Monthly:3 — 過去3ヶ月は1ヶ月1世代を保持
# プルーンで何が削除されるか事前確認(--dry-run:実際には削除しない)
proxmox-backup-manager prune-datastore vm-backups \
  --keep-last 3 \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 3 \
  --dry-run

# プルーン後にガベージコレクションを実行して実際にディスク容量を解放
proxmox-backup-manager garbage-collection start vm-backups

バックアップの確認とモニタリング

ログとステータスの確認

PBS Web UIのDashboardには概要が表示される:重複排除率、使用済み容量、最終バックアップ日時。Datastore → vm-backups → Contentでは、各VMのバックアップ一覧を日付別に確認できる。

# PBS上でバックアップのログを確認
journalctl -u proxmox-backup -n 50

# Proxmox VEでvzdumpのタスクログを確認
pvesh get /nodes/<node-name>/tasks --typefilter vzdump

# データストア内の全バックアップを一覧表示
proxmox-backup-client list \
  --repository root@[email protected]:vm-backups

リストアのテスト — 絶対に省略してはいけない手順

リストアをテストしていないバックアップは、技術的にはバックアップが存在しないも同然だ。セットアップが完了したら、必ず別のIDに試験的にVMをリストアしてデータが正常であることを確認する。

# VM 100 を新しいID 200 としてリストアしてテスト
qmrestore pbs-main:backup/vm/100/2025-03-01T02:00:00Z 200 \
  --storage local-lvm \
  --unique   # 新しいMACアドレスを生成してネットワークの競合を回避

テスト用VMを起動してデータを確認し、削除する。作業全体で10〜15分——一度やっておけば、あとは安心して眠れる。

通知とアラートの設定

PBSはバックアップ失敗時にメールを送信する。SMTPの設定はConfiguration → Notificationsから行うか、CLIで設定する:

# SMTPの設定
proxmox-backup-manager smtp-config set \
  --server smtp.gmail.com \
  --port 587 \
  --mode starttls \
  --username [email protected] \
  --password "app-password-here"

# テストメールを送信
proxmox-backup-manager smtp-config test --email [email protected]

ダッシュボードでパフォーマンスを監視する

PBSのダッシュボードで定期的に確認しておきたい数値がいくつかある:

  • CPU/RAMの使用率 — バックアップ実行中のリソース消費
  • 重複排除率(Deduplication ratio) — ストレージの節約率(通常2〜4倍に達する)
  • バックアップサイズの推移 — データ増加速度の把握

自分のhomelabでは現在、重複排除率が約2.8倍だ。12台のVMの生データ合計は約800GBだが、PBSが実際に占有しているのは約290GB——増分バックアップと重複排除の組み合わせのおかげだ。

実運用から得た注意点

  • PBSは必ず独立した物理マシンまたは別ホストで動かすこと — バックアップ対象のProxmox VE上にVMとしてPBSをインストールしてはいけない。PVEがダウンしたとき、PBSは生きていなければならない
  • 初回の増分バックアップは必ず遅い — 全データを転送する必要があるからだ。2回目以降は変更分だけのアップロードになり、大幅に速くなる
  • 内部ネットワーク1Gbpsがあれば深夜バックアップは余裕でこなせる。Wi-Fi経由だと遅くなり、タイムアウトが発生しやすい
  • no-subscriptionリポジトリの設定を忘れずに。セキュリティアップデートを受け取るために必要だ——ライセンスなしでenterpriseリポジトリを使うとエラーが出る
# PBS用no-subscriptionリポジトリを設定
echo "deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription" \
  > /etc/apt/sources.list.d/pbs-no-subscription.list

apt update && apt dist-upgrade -y

セットアップが完了すれば、毎晩自動でバックアップが走り、古いバックアップはスケジュール通りに削除され、問題があればメールで通知が届く。安心してカーネルをアップデートしたり、気兼ねなく実験したりできる——最悪のケースでも前日のバックアップからリストアすれば、失うのは数時間分の作業だけだ。もう一から再構築するために夜中に叩き起こされることはない。

Share: