LogoSaito Go's Blog
ホームキーワード検索プロフィール
LogoSaito Go's Blog

© 2026 Saito Go's Blog. All rights reserved.

ホームに戻る

Proxmox VE + PBSでLXCバックアップを25分→4分に高速化した話

ProxmoxPVEPBSLXC
2026/08/13
2026/08/17

Proxmox VEで多くのLXCコンテナを稼働させており、毎日Proxmox Backup Server (PBS) にバックアップを取っています。 ストレージはCeph RBD (SSD)、ネットワークは2.5GbEとスペック的には十分なのに、バックアップに毎回約25分かかっていました。

調査と対策の結果、最終的に4分強まで短縮できたので、その過程を共有します。

本記事の高速化対象は、Proxmox Backup Serverへ保存するLXCのバックアップです。 VMのバックアップは別の仕組み(dirty bitmap)で増分化されるため、今回の高速化は適用されません。

環境

項目 値
Proxmox VE 9.2.3 (8C16T CPU, 64GB RAM, 2.5GbE)
Proxmox Buackup Server 4.1.4 (8C16T CPU, 32GB RAM, 2.5GbE)
バックアップ対象 LXC 17台
ストレージ Ceph RBD (SSD)
/etc/vzdump.conf 全デフォルト(最適化一切なし)

PBSバックアップの仕組み

まず、なぜデフォルト設定のままだと遅いのかを理解するために、PBSバックアップの内部動作を整理します。

LXCコンテナのバックアップフロー

vzdumpはコンテナのスナップショットを作成し、proxmox-backup-clientを使ってPBSに送信します。 このときファイルの変更検出には3つのモードがあります。

モード 変更検出方法 変わってないファイルの扱い
Default(初期値) 全ファイルを読み込み、ハッシュ値で比較 読むが送らない
data 全ファイル読み込み+メタデータ分離保存 読むが送らない
Metadata メタデータ(サイズ・更新日時など)で比較 読まない、送らない

PBSはチャンク(データの断片)単位で重複排除を行うため、Defaultモードでも「変わっていないチャンク」は再送信されません。 しかし変わっていないことを確認するために、全ファイルをディスクから読み込んでハッシュ計算する必要があります。

これが「読んでいるのに送っていない」という非効率の正体です。

Metadataモードは、前回バックアップのメタデータと比較し、ファイルサイズ、種類、所有者、パーミッション、ACL、拡張属性、mtimeなどが変わっていないファイルを再利用候補とします。未変更と判定できた場合は、ファイル内容をディスクから再読込せず、前回スナップショットのデータチャンクを再利用します。 なのでメタデータの比較だけで変更判定を行うため、ディスクI/Oが激減します。

変更のないファイルの読み取り自体をスキップする、これがMetadataモードの核心です。

Change Detection Mode(Default / Data / Metadata)は、Proxmox VE 8.3で導入されました。

VMは違う仕組み

QEMU VMはファイル単位ではなくブロックデバイス単位でバックアップされ、dirty-bitmap(変更ブロック追跡)による高速な増分バックアップがデフォルトで有効です。 VM側は既に最適化されているため、今回のボトルネックはLXCコンテナのファイル単位バックアップにあります。

原因調査

バックアップログから各コンテナのpxarメトリクスを抽出しました。

典型的なコンテナ

バックアップ対象 全体サイズ 処理時間 ファイル数 処理速度の目安
85 MiB 7.9 GiB 316秒 約60万 約1,898 ファイル/秒
92 MiB 5.7 GiB 124秒 約23万 約1,854 ファイル/秒
158 MiB 4.4 GiB 161秒 約13万 約807 ファイル/秒

変更ゼロのコンテナ

バックアップ対象 全体サイズ 処理時間 状態
0 B 3.9 GiB 68秒 変更なし(メタデータ等スキャンのみ)
0 B 3.8 GiB 63秒 変更なし(メタデータ等スキャンのみ)

全コンテナに共通するのは、ファイルシステム全体のうち実際に変更されているのは1〜5%程度なのに、 Defaultモードでは残り95〜99%の変更のないファイルもすべてディスクから読み込んでいることです。

特に「変更ゼロ」のコンテナでさえ60秒以上かかっていることが、全ファイル読み取りのオーバーヘッドを如実に示しています。

17台のLXC合計で約150万ファイル、総ファイルシステムサイズは約80GiB。 この全量を毎回スキャンしていることが25分の主因でした。

解決策: Metadata変更検出モード

/etc/vzdump.confに1行追加するだけです。

pbs-change-detection-mode: metadata

またはWebUI: Datacenter → Backup → ジョブ編集 → Advanced → Change Detection Mode → Metadata

Backup JobのAdvancedの設定画面

初回実行時は移行処理のため通常速度です(Default形式の前回バックアップと比較できないため、全ファイル読み込みが発生します)。 2回目以降からMetadataモードの本領が発揮されます。

mtimeを更新しない特殊なファイル操作(ddで直接書き込む等)があると変更を検出できないリスクがあります。 ただし一般的なアプリケーションでは発生しません。 安全性を高めたい場合は、週1回程度のDefaultモードでのバックアップジョブを併用するとよいでしょう。

効果測定

Metadataモード設定後、短時間で連続2回実行して効果を測定しました。

実行 時間 備考
1回目 25分55秒 Default→Metadataに変更
2回目 4分17秒 Metadata本領発揮

全17台の改善詳細

下表は実際のバックアップログから抽出した各VM/CTの所要時間、ファイル数、再利用率です。 Defaultの値はMetadata導入前の直近数回の平均、Metadataの値は2回目実行時の実測値です。

ID 種別 ファイル数 FSサイズ Default Metadata 改善率 再利用率
102 LXC 133,653 4.4 GiB 69秒 11秒 -84% 99.1%
103 LXC 77,852 3.4 GiB 82秒 7秒 -91% 98.5%
104 LXC 113,043 3.6 GiB 74秒 9秒 -88% 98.7%
105 LXC 77,020 8.1 GiB 83秒 7秒 -92% 98.1%
106 LXC 108,693 3.2 GiB 62秒 15秒 -76% 97.4%
107 LXC 76,913 3.0 GiB 62秒 6秒 -90% 99.1%
108 LXC 89,460 4.1 GiB 135秒 7秒 -95% 99.0%
109 LXC 228,453 5.7 GiB 99秒 18秒 -82% 99.5%
110 LXC 192,113 4.5 GiB 57秒 15秒 -74% 99.2%
111 LXC 83,463 3.5 GiB 319秒 7秒 -98% 99.2%
112 LXC 606,984 7.9 GiB 316秒 52秒 -84% 99.6%
113 LXC 109,506 3.9 GiB 61秒 10秒 -84% 100%
114 LXC 93,203 3.8 GiB 63秒 9秒 -86% 100%
115 LXC 101,238 3.5 GiB 54秒 9秒 -83% 100%
116 LXC 84,292 2.8 GiB 72秒 7秒 -90% 99.5%
117 LXC 124,237 3.3 GiB 72秒 11秒 -85% 99.0%
118 LXC 137,410 7.3 GiB 92秒 11秒 -88% 99.8%
特筆すべきポイント

変更ゼロのコンテナ(LXC 113, 114, 115)

Defaultモードでは「何も変わっていない」ことを確認するだけで約60秒かかっていましたが、 Metadataモードではメタデータ比較のみで完了するため10秒未満に。

Change detection summary:
  109,165 unchanged, reusable files with 3.9 GiB data
  0 changed or non-reusable files with 0 B data
root.ppxar: reused 3.9 GiB (100.0%)
Duration: 10s

最多ファイル数のコンテナ(LXC 112: 約61万ファイル)

全ファイル中、実際に変更があったのはわずか44ファイル。 99.6%を前回スナップショットから再利用し、316秒→52秒に。

LXC 111

7.9GiBのファイルシステムのうち変更は約267MiBでしたが、 Defaultモードでは全量スキャンのため319秒。Metadataモードでは7秒と約45倍高速化。

最終結果

フェーズ 処理時間
Metadata導入前(Default) 約25分
Metadata導入後(1回目) 約26分
Metadata導入後(2回目) 約4分17秒

まとめ

17台のLXCコンテナ、合計約150万ファイル・約80GiBのPBSバックアップが、 /etc/vzdump.confにたった1行追加するだけで25分→4分17秒になりました。

pbs-change-detection-mode: metadata
Saito Go

Saito Go

Blog Owner

大手製造業の現場で働きながら趣味でWeb系エンジニアやってます。

当サイトはアフィリエイト広告を使用しています。

目次

環境PBSバックアップの仕組みLXCコンテナのバックアップフローVMは違う仕組み原因調査典型的なコンテナ変更ゼロのコンテナ解決策: Metadata変更検出モード効果測定全17台の改善詳細最終結果まとめ