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