Proxmox Backup Server (PBS) 導入・設定ガイド:重複排除とクライアント暗号化の実践

社内のPC10台がそれぞれ100MBの同じ社内マニュアルをダウンロードした場面を想像してみてください。もし10台すべてのディスクを外付けドライブに丸ごとコピーした場合、全く同じデータに1GBもの容量を浪費することになります。従来の仮想マシン(VM)バックアップもまさに同じ課題を抱えていました。Proxmox Backup Server (PBS) はこのボトルネックを根本から解決します。同一のデータブロックは1つだけ保存し、残りのマシンには参照フラグを割り当てる仕組みを採用しています。

筆者の検証環境では現在、12台のVMとLXCコンテナがProxmox VE上で稼働しています。以前はクラスタ全体のバックアップを実行するたびに、LANの帯域逼迫やNAS容量の急速な枯渇に頭を悩まされていました。しかしPBSへ移行したことで、そうした運用負荷は完全に解消されました。

Proxmox VMバックアップ手法の比較

Proxmox環境の管理者は通常、以下の3つのアプローチを検討します。

  • 従来のVZDump(NAS/NFSへのフルバックアップ):実行するたびにディスク全体を含む圧縮ファイル(.vma.zst)を生成します。昨日とデータがほぼ同じであってもゼロから書き直すため、ディスク容量と所要時間が大幅にかかります。
  • スナップショット+ZFS Send/Receive:変更ブロックのみを転送するため非常に高速です。ただし送信元と送信先の両方でZFSが必要であり、世代管理(retention policy)の設定が煩雑になるデメリットがあります。
  • Proxmox Backup Server(チャンクベースの重複排除):PBSはディスクデータを小さなチャンク(平均4MB)に分割し、SHA-256ハッシュ値を計算します。サーバー上に既に存在するチャンクはスキップされ、新規のチャンクのみがネットワーク経由で転送されます。

技術比較表

各ソリューションにはリソースと運用の利便性においてそれぞれトレードオフが存在します。

評価項目 VZDump(フルバックアップ) ZFS Send/Receive Proxmox Backup Server (PBS)
バックアップ速度 低速、LAN帯域を圧迫しやすい 非常に高速 極めて高速(新規チャンクのみ転送)
ストレージ効率 最低、TB単位の容量を浪費 良好 最高(重複排除率 4x〜15x)
リモートストレージのセキュリティ 手動で圧縮パスワードを設定 ZFS Native Encryptionが必須 クライアント側暗号化(PVE側で暗号化)
個別ファイル復元 巨大なバックアップ全体の展開が必要 スナップショットの手動マウントが必要 Web UIから直接ブラウズして単一ファイルをダウンロード可能

PBSの最大の強みはクライアント側暗号化(Client-side Encryption)にあります。秘密鍵はProxmox VE (PVE) サーバー側に保持されます。PVEがデータをチャンク分割・暗号化した上でPBSへ送信するため、たとえ外部のホスティング環境にPBSを配置していても、データセンター側の作業員がVM内のデータを閲覧することは一切できません。

PBSへ移行すべきタイミング

稼働しているVMが1〜2台程度でデータ変更も少なく静的な環境であれば、週末に外付けHDDへVZDumpを実行するだけで十分です。無理に構成を複雑化する必要はありません。

一方で、管理対象のVMが5台以上あり、同じUbuntuやWindows Serverを複数台運用している環境なら、今すぐPBSを導入すべきです。また、業務時間中に1〜2時間間隔で定期バックアップを取得したい場合にもPBSは真価を発揮します。所要時間を30分からわずか15〜30秒程度に短縮でき、ネットワーク帯域を圧迫することもありません。

実践:Proxmox Backup Server 構築・設定の5ステップ

ステップ 1: PBS上でDatastoreを作成する

PBSのインストール完了後、Web UI(ポート8007)またはSSH経由でサーバーにアクセスします。チャンクのハッシュ計算速度を最大化するため、Datastoreには専用のSSDを使用することを推奨します。

# Datastore用ディレクトリの作成
mkdir -p /mnt/backup-pool/pbs-datastore
chown -R backup:backup /mnt/backup-pool/pbs-datastore

# 'production-backup' という名前のDatastoreを初期化
proxmox-backup-manager datastore create production-backup /mnt/backup-pool/pbs-datastore

ステップ 2: PBSの認証フィンガープリントを取得する

中間者攻撃(Man-in-the-Middle)を防ぎ、PVEからPBSサーバーを正しく検証・識別するためにSHA-256フィンガープリントを取得します。

proxmox-backup-manager cert info | grep "Fingerprint:"

ステップ 3: Proxmox VE上で暗号化キーを生成する

PVEサーバーにログインして暗号化キーを作成します。このキーファイルはローカルに保持され、チャンク送信前の暗号化に使用されます。

# PVE設定ディレクトリ内にランダムな暗号化キーを生成
pvesm pbs-encryption-key create /etc/pve/pbs-enc.key

# 生成したキーのフィンガープリントを確認
pvesm pbs-encryption-key show /etc/pve/pbs-enc.key

ステップ 4: Proxmox VEにPBSストレージを登録する

Proxmox VEのCLIから直接PBSをターゲットストレージとして追加します。

pvesm add pbs PBS-Storage \
    --server 192.168.1.50 \
    --datastore production-backup \
    --username root@pam \
    --password 'MatKhauCuaPBS' \
    --fingerprint 'ab:cd:12:34:56:78:90:ef:ab:cd:12:34:56:78:90:ef:ab:cd:12:34:56:78:90:ef:ab:cd:12:34:56:78' \
    --encryption-key /etc/pve/pbs-enc.key

ステップ 5: バックアップを実行して重複排除率を確認する

対象の仮想マシン(例: VM ID 101)でテストバックアップを実行します。

vzdump 101 --storage PBS-Storage --mode snapshot

初回の実行では全データが転送されます。完了後、10分ほど待ってから同じコマンドを再実行してみてください。わずか数秒で処理が完了することが確認できます。

PBSの管理画面でDatastore Summaryを開くと、Deduplication Factor(重複排除率)が表示されます。同じベースイメージを持つLinux VMが5台ある環境では、この数値は容易に4.0x〜8.0xに達し、数百ギガバイトものディスク容量を節約できます。

暗号化を利用する際の重要な注意点

クライアント側暗号化は第三者の不正アクセスからデータを守る強力な仕組みですが、「パスワードのリセット」機能は存在しません。万が一pbs-enc.keyファイルを紛失した場合、PBS上のバックアップデータは完全に復号不可能な無意味なデータの塊となり、復元する手段は一切ありません。

ステップ3を実行した直後に、このキーファイルをBitwardenや1Passwordなどのパスワードマネージャーに保管し、さらに印刷して金庫などに保管するなど、必ず2箇所以上の独立した安全な場所にバックアップしてください。

Share: