熱門分類
載入中…
目錄0%

💾 Proxmox VE 備份與還原全攻略:PBS + ZFS Snapshot + 異地容災

    💾 Proxmox VE 備份與還原全攻略:PBS + ZFS Snapshot + 異地容災(可驗證 SOP)

    Proxmox VE 要做到「可用、好用、可維運」,關鍵往往不是叢集,而是備份、還原、容災是否真的能落地、可演練、可驗證。 本文把 PBS(Proxmox Backup Server)與 ZFS Snapshot 串成一條可執行 SOP:從策略、排程、保留、驗證,到故障時的還原演練與異地容災。

    📑 目錄

    一、備份策略怎麼選:你要的是 RPO 還是省空間?

    先把目標定清楚,後面所有排程與保留才不會「做很多但救不了」。

    名詞 定義 常見目標 策略影響
    RPO 最多能容忍丟失多久的資料 15 分鐘 / 1 小時 / 1 天 決定備份頻率(PBS)與快照頻率(ZFS)
    RTO 多久內要恢復服務 30 分鐘 / 4 小時 / 1 天 決定還原路徑(整機、磁碟、單檔)與演練方式
    可驗證 備份要能成功還原並通過檢查 每週 1 次演練 需要隔離測試環境 + 健康檢查腳本/流程

    建議落地作法:

    • VM(系統盤/整機):用 PBS 做一致性備份(dedup + incremental)。
    • 資料盤(SMB/NFS/DB data):用 ZFS Snapshot 做高頻保護,再搭配複寫/異地。
    • 每週固定演練:還原一台 VM 到隔離網段,跑健康檢查。

    二、PBS 架構建議(最少踩雷版)

    • PVE 與 PBS 分離主機(或至少分離儲存):避免同故障域一起掛。
    • PBS Datastore 建議用 ZFS:壓縮、校驗、易於複寫(send/receive)。
    • 備份流量建議獨立網段或至少做 QoS/限速:避免影響 VM 生產流量。
    • 啟用加密(建議):備份是高價值資料,傳輸與儲存都要顧。

    三、PVE → PBS:建立備份 Job(含保留策略)

    以下用「每日 + 每週 + 每月」保留策略示範。實務上通常會依 VM 重要性拆成多個 Job。

    # 1) 先確認 PBS Datastore 已建立(PBS Web UI → Datastore)
    # 2) PVE Web UI:Datacenter → Backup → Add
    #    Storage: pbs
    #    Mode: snapshot
    #    Schedule: daily 02:30
    #    Compression: zstd(常見)
    #    Retention: keep-daily=14, keep-weekly=8, keep-monthly=12
    #
    # 建議:關鍵 VM 再加一個「更密」的 Job(例如 daily 6:00 / 12:00 / 18:00)

    保留策略的直覺版本:

    • daily 14:保留近兩週,最常用來救「昨天/前天」的事故。
    • weekly 8:保留近兩個月,常用來回溯「某次更新前」。
    • monthly 12:保留一年,符合多數稽核與長期回朔需求。

    四、ZFS Snapshot:把「VM 備份」與「資料盤快照」拆開管

    VM 系統盤用 PBS;資料盤(例如 SMB/NFS/DB data)用 ZFS Snapshot 做更高頻率保護。 這樣你可以把 RPO 壓到 15~60 分鐘,而不需要讓整機備份也跟著同頻率暴增。

    # 例:手動建立遞迴快照(示意)
    # zfs snapshot -r tank/data@`date +%Y%m%d-%H%M`
    
    # 列出快照
    # zfs list -t snapshot -o name,creation,used -s creation

    快照保留(建議搭配自動清理):例如每 30 分鐘留 48 份(1 天)、每日留 14 份、每週留 8 份。

    五、備份驗證:每週至少做一次「還原演練」

    最務實的做法:建立一台隔離測試 VM/網段,定期從 PBS 還原一台 VM,並跑健康檢查(服務能起、資料完整)。 備份不是「有做」,而是「救得回來」。

    # 還原後檢查清單(示意)
    # - VM 是否能開機
    # - 網卡/驅動是否正常
    # - 服務是否可 listen(systemd / docker / k8s 等)
    # - DB 是否能啟動、是否能查到關鍵資料
    # - 應用程式健康檢查(HTTP 200 / 特定 API 回應)
    #
    # 建議:把檢查做成腳本 + 產出一份「演練紀錄」

    六、還原路徑:整機 / 單檔 / 磁碟層級

    • 整機還原(VM Restore):事故最大宗;最快讓服務回來(對 RTO 最友善)。
    • 單檔還原:誤刪檔案/勒索前後比對;通常由 PBS 或掛載備份內容來取回。
    • 磁碟層級還原:只回復某顆資料盤或某個版本點,適合 DB/檔案服務。

    原則:先把服務救回來(RTO),再把資料補齊(RPO)。不要一開始就追求「完美還原」拖垮復原時間。

    七、異地容災:PBS Datastore 複寫 + 演練切換

    異地容災的核心是:第二份備份必須在不同故障域(不同主機、不同機櫃、不同站點)。 若你的 PBS Datastore 建在 ZFS 上,通常會用 ZFS replication(send/receive)做複寫。

    7.1 典型架構

    • Site A:PVE(生產) + PBS(主備份)
    • Site B:PBS(異地備份)或 ZFS 儲存節點
    • 複寫頻率:依 RPO 決定(常見 1 小時 / 4 小時 / 每日)

    7.2 ZFS 複寫(示意)

    # A → B:第一次全量
    # zfs snapshot -r pbs/pool/datastore@init
    # zfs send -R pbs/pool/datastore@init | ssh root@site-b "zfs receive -F backup/pbs/datastore"
    
    # 後續增量(示意)
    # zfs snapshot -r pbs/pool/datastore@20260213-0230
    # zfs send -R -i pbs/pool/datastore@init pbs/pool/datastore@20260213-0230 | ssh root@site-b "zfs receive -F backup/pbs/datastore"

    容災演練重點:

    • 每季至少一次:假設 Site A 全毀,從 Site B 把關鍵 VM 還原到 DR PVE。
    • 切換演練要有「DNS/入口位址」調整方案(例如反向代理、VIP、或臨時入口)。
    • 演練要產出紀錄:耗時、失敗點、改善項目。

    八、上線前自檢清單(可直接照抄)

    # ✅ 策略
    - [ ] 每台關鍵 VM 定義 RPO / RTO
    - [ ] VM 用 PBS;資料盤用 ZFS Snapshot(高頻)
    - [ ] 至少每週一次還原演練(隔離網段)
    
    # ✅ PBS
    - [ ] PBS 與 PVE 分離故障域(主機或儲存至少分離)
    - [ ] Datastore 使用 ZFS(建議)
    - [ ] Job 排程與 Retention 設定完成(daily/weekly/monthly)
    - [ ] 備份流量不影響生產(獨立網段或 QoS/限速)
    
    # ✅ ZFS Snapshot
    - [ ] 快照頻率符合 RPO
    - [ ] 有快照保留與清理策略(避免爆容量)
    - [ ] 可列出快照並能回復到指定時間點
    
    # ✅ DR(異地)
    - [ ] 第二份備份在不同站點/不同故障域
    - [ ] 複寫頻率符合 RPO
    - [ ] 每季至少一次 DR 還原演練

    💬 互動留言引導

    💬 留言交流
    如果你在實作過程遇到卡點(版本、環境、錯誤訊息、拓樸),歡迎把細節貼在留言區:
    • 你的環境版本(PVE / PBS / Kernel / ZFS)
    • 你做了哪些步驟(含排程、保留、快照策略)
    • 錯誤訊息或現象(最好附上關鍵 log)
    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級