跳到主要內容
節省工具箱Jason Tools
經驗分享

PBS 災難復原:設定檔備份清單

Jason Cheng 發布 瀏覽 1 次
PBS 災難復原:設定檔備份清單
本文目錄
  1. 結論先講:整個目錄一起備份
  2. 檔案清單與用途
  3. PBS 沒有存的東西
  4. 定期自動備份
  5. 災難復原步驟
  6. 結論
  7. 參考資料

Proxmox Backup Server(PBS)負責保護所有 VM 的備份,但 PBS 自己的設定誰來備份?很多人會想到備份 datastore 本身,卻忘了 /etc/proxmox-backup/ 這個目錄:使用者、權限、同步工作、磁帶加密金鑰都在這裡,PBS 主機重灌之後沒有它,等於全部要重新設定,加密過的磁帶甚至讀不回來。

這篇整理 /etc/proxmox-backup/ 裡每個檔案的用途,並對照官方文件與原始碼修正了我原本的清單,最後附上備份與還原的做法。

結論先講:整個目錄一起備份

我原本列了一份要備份的檔案清單,對照官方文件和 PBS 原始碼後發現漏了好幾個,而且每次版本更新都可能新增設定檔。所以最保險的做法是整個 /etc/proxmox-backup/ 目錄打包,不要只挑幾個檔案:

tar czf /root/pbs-etc-$(hostname)-$(date +%Y%m%d).tar.gz \
    /etc/proxmox-backup \
    /etc/network/interfaces \
    /etc/hosts /etc/hostname /etc/resolv.conf \
    /etc/fstab \
    /etc/systemd/system/*.mount

打包好之後一定要放到 PBS 主機以外的地方,放在同一台主機上,主機掛了就跟著一起不見。

注意:這個壓縮檔裡有密碼雜湊、API Token 密鑰、遠端 PBS 的帳密與磁帶加密金鑰,請當成機密檔案保管,存放位置要限制存取權限,最好再加密。

檔案清單與用途

以下依用途分類。標示「新增」的是我原本清單沒有、核對後補上的。

核心設定

檔案用途
datastore.cfgdatastore 定義(名稱、路徑、保留原則、維護模式等)
node.cfg節點設定:ACME 憑證網域、HTTP 代理、預設語系等(新增)
prune.cfg定期清理(prune)工作
verification.cfg定期驗證工作
sync.cfg同步工作(pull/push)(新增)
remote.cfg遠端 PBS 的連線資訊,含帳號與密碼/Token(新增)
traffic-control.cfg流量限制規則(新增)
metricserver.cfg外部指標伺服器(InfluxDB 等)(新增)
s3.cfgS3 端點設定,PBS 4.0 起的 S3 datastore 使用(新增)

帳號與權限

檔案用途
user.cfg使用者與 API Token 定義
shadow.json「Proxmox Backup 驗證伺服器」領域使用者的密碼雜湊
token.shadowAPI Token 的密鑰
acl.cfg權限設定
domains.cfg驗證領域(LDAP、AD、OpenID Connect)
ldap_passwords.jsonLDAP/AD 領域的繫結密碼(新增)
tfa.json使用者的兩步驟驗證設定(TOTP、WebAuthn、復原碼)(新增)

ldap_passwords.json 沒備份到的話,還原後 LDAP 領域會因為繫結失敗而無法同步、無法登入;tfa.json 沒備份到,使用者的兩步驟驗證全部失效,要重新設定。

通知

檔案用途
notifications.cfg通知目標與比對規則
notifications-priv.cfg通知用的機密資料,例如 SMTP 密碼、Webhook 密鑰

磁帶

檔案用途
tape.cfg磁帶機與換帶機
tape-job.cfg磁帶備份工作
media-pool.cfg媒體集區
tape-encryption-key-config.json磁帶加密金鑰的設定(受密碼保護的金鑰)
tape-encryption-keys.json磁帶加密金鑰本身

注意:磁帶加密金鑰遺失,加密過的磁帶就再也讀不回來。除了備份這兩個檔案,建議另外用 proxmox-tape key paperkey <指紋> 或網頁介面匯出紙本金鑰(paperkey),和磁帶分開存放。

憑證與金鑰

檔案用途
proxy.key / proxy.pem網頁介面與 API 的 HTTPS 憑證
authkey.key / authkey.pub簽發登入票證(ticket)用的金鑰
csrf.keyCSRF 防護金鑰

這幾個在主機名稱、IP 不變的情況下一起還原,PVE 端設定的 PBS 儲存(依憑證指紋驗證)就不用重新設定指紋。換了新主機名稱的話,建議讓 PBS 重新產生憑證,再到 PVE 更新指紋。

授權

檔案用途
subscription訂閱授權資訊

訂閱是綁定伺服器 ID 的,換了硬體或重灌後伺服器 ID 會改變,要到 Proxmox 的客戶入口重新發行(reissue)才能在新主機上啟用。

目錄外也要備份的

檔案用途
/etc/network/interfaces網路設定
/etc/hosts、/etc/hostname、/etc/resolv.conf主機名稱與 DNS
/etc/fstab掛載設定
/etc/systemd/system/*.mount從網頁介面在磁碟上建立 datastore 時,PBS 是用 systemd mount unit 掛載,不在 fstab 裡(新增)

PBS 沒有存的東西

有一點常被誤會:用戶端加密的金鑰不在 PBS 上。PVE 備份到 PBS 時如果有啟用加密,金鑰存在 PVE 端的 /etc/pve/priv/storage/<儲存 ID>.enc,PBS 只存加密後的資料。

這個金鑰遺失,備份就算完整也還原不了,所以 PVE 端的金鑰也要另外備份,建議同樣匯出紙本金鑰保存(PVE 網頁介面的儲存設定可以下載金鑰,或用 proxmox-backup-client key paperkey)。

定期自動備份

手動備份很容易忘記,可以寫成排程。例如每天打包一份,再用 rsync 送到另一台主機:

#!/bin/bash
# /usr/local/bin/pbs-etc-backup.sh
DEST=/root/pbs-etc-backup
mkdir -p "$DEST"
F="$DEST/pbs-etc-$(hostname)-$(date +%Y%m%d).tar.gz"

tar czf "$F" /etc/proxmox-backup /etc/network/interfaces \
    /etc/hosts /etc/hostname /etc/resolv.conf /etc/fstab \
    /etc/systemd/system/*.mount 2>/dev/null
chmod 600 "$F"

# 保留 30 天
find "$DEST" -name 'pbs-etc-*.tar.gz' -mtime +30 -delete

# 送到其他主機(事先設好 SSH 金鑰)
rsync -a "$DEST/" backup@nas.example.com:/backup/pbs-etc/
30 2 * * * /usr/local/bin/pbs-etc-backup.sh

也可以用 proxmox-backup-client 把 /etc/proxmox-backup 備份到另一台 PBS,有版本控管也方便還原。

災難復原步驟

PBS 主機重灌後的大致流程:

安裝與基本設定

安裝相同或更新版本的 PBS,主機名稱與 IP 設成和原本一樣,再還原網路與掛載設定,確認 datastore 所在的磁碟或 ZFS 儲存集區已經掛載(ZFS 用 zpool import)。

停止服務

systemctl stop proxmox-backup-proxy proxmox-backup

還原設定目錄

tar xzf pbs-etc-pbs01-20260313.tar.gz -C /
chown -R root:backup /etc/proxmox-backup

啟動服務並確認

systemctl start proxmox-backup proxmox-backup-proxy
proxmox-backup-manager datastore list
proxmox-backup-manager user list

最後到網頁介面檢查 datastore 內容、同步與驗證工作、通知、磁帶設定都正常,訂閱需要的話重新發行。

如果沒有設定備份、只剩 datastore 的磁碟,也還有救:PBS 3.3 起新增 datastore 時可以指向既有的 datastore 目錄,沿用裡面已經存在的備份資料(但不允許在其他非空目錄建立 datastore),只是使用者、權限、工作排程都要重新設定。

注意:還原時檔案的擁有者與權限很重要,/etc/proxmox-backup 的群組要是 backup,有些檔案(例如 shadow.json、token.shadow)只有 root 可讀。用 tar 打包再解開會保留權限,請勿用會改掉權限的方式複製。

結論

PBS 是最後一道防線,但它自己的設定常常沒人顧。我的建議很簡單:整個 /etc/proxmox-backup/ 打包、每天排程、放到別台主機,再加上磁帶與用戶端加密金鑰的紙本備份,這樣 PBS 主機真的掛了,也能在短時間內原樣復原。

參考資料

Jason Cheng

Jason Cheng

企業開源技術顧問,專注架構規劃與實務導入

關於作者 →

延伸閱讀