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

解決 Proxmox VE 容器備份失敗問題

Jason Cheng 瀏覽 7,417 次
解決 Proxmox VE 容器備份失敗問題
本文目錄
  1. 問題狀況
  2. 解決方案
  3. 參考資料

Proxmox VE 內建完整的備份功能,這點是我喜歡使用它的其中一個原因。

不過,我在叢集最近新增的幾個節點卻經發生有幾個容器會備份失敗,這是什麼原因呢?

問題狀況

如本文首圖所示,我在 Proxmox VE 的作業記錄中發現了不少的錯誤訊息。

展開記錄細節,可以查看到這樣的訊息:

INFO: create storage snapshot 'vzdump'
INFO: creating vzdump archive '/mnt/pve/nas1/dump/vzdump-lxc-141-2021_07_19-01_26_24.tar.zst'
INFO: tar: /mnt/pve/nas1/dump/vzdump-lxc-141-2021_07_19-01_26_24.tmp: Cannot open: Permission denied
INFO: tar: Error is not recoverable: exiting now
INFO: cleanup temporary 'vzdump' snapshot
ERROR: Backup of VM 141 failed - command 'set -o pipefail && lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 ...中間略...' >/mnt/pve/nas1/dump/vzdump-lxc-141-2021_07_19-01_26_24.tar.dat' failed: exit code 2
INFO: Failed at 2021-07-19 01:26:24

備份失敗的錯誤訊息
備份失敗的錯誤訊息

經過比對,只有在 非特權容器 (Unpriviledged container) 才會發生,如果是 特權容器 (Priviledged container) 則可以順利備份。接著實際測試了一下,這兩種模式在 vzdump 程式備份時使用的身份不一樣,前者會使用大於 100000 的 UID,而後者直接用 root 執行。

使用 root 身份執行的 vzdump 備份作業
使用 root 身份執行的 vzdump 備份作業

但這又引來另一個問題,這個執行的身份跟備份失敗有什麼關係?

原因在於 vzdump 進行備份時會把 /tmp 拿來當做暫存資料夾,但這個資料夾的權限是無法讓 100000 以上的身份取用,這也是導致前述 vzdump 備份失敗的原因。

解決方案

既然已經明確查出問題的原因,接下來就好辦了。

請用編輯器打開 /etc/vzdump.conf 這個設定檔,裡面有一個 tmpdir 路徑的設定,請指向 /tmp 以外的一個新建路徑即可。

修改 vzdump.conf 中的 tmpdir 路徑
修改 vzdump.conf 中的 tmpdir 路徑

修改完成以後手動再次進行備份,或是下次排程備份時就可以正常的完成備份作業了。

參考資料

延伸閱讀