Proxmox PVE
Proxmox PVE 相關
- Proxmox Virtual Environment
- PVE 掛載NFS目錄
- PVE LXC OpenVPN客戶端安裝
- PVE Postfix由Gmail寄發信件
- PVE 安裝Synology 黑群暉
- PVE LXC安裝PNETLAB
- PVE LXC 修改名稱
- PVE 發送syslog到遠端伺服器
- PVE 備份 LXC 失敗問題
- PVE LXC 掛載 NFS
- Proxmox Backup Server
Proxmox Virtual Environment
PVE
PVE 掛載NFS目錄
於PVE WEB介面新增NFS目錄,新增成功後於PVE內修改掛載參數/etc/pve/storage.cfg
option後加入soft
nfs: pvebackup1
export /xxx/xxx
path /mnt/pve/pvebackup1
server xxx.xxx.xxx.xxx
content vztmpl,rootdir,snippets,iso,images,backup
prune-backups keep-all=1
options soft
預設為hard(硬連結),當NFS Server有問題時,client會持續進行連接,可能影響主機與節點(影響更久可能會觸發Watchdog)
更改後重開機或NFS Storage 取消掛載
umount /mnt/pve/pvebackup1
再去PVE WEB介面上點選左邊NFS儲存區就會自動掛載NFS目錄(可能會自動掛載)
於PVE內確認使用soft掛載
mount | grep pvebackup
xxx.xxx.xxx.xxx:/xxx/xxx on /mnt/pve/pvebackup1 type nfs4
(rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,soft,
proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.xxx.xxx,local_lock=none,addr=xxx.xxx.xxx.xxx)
如果要移除NFS連接,於PVE WEB介面上先停用此NFS然後cli 取消掛載
umount /mnt/pve/pvebackup1
如果取消不了可以強制umount
umount -l /mnt/pve/pvebackup1
或
fusionrmount -u -z /mnt/pve/pvebackup1
PVE WEB上再刪除此NFS即可
PVE LXC OpenVPN客戶端安裝
運行環境
- PVE
- LXC
- Ubuntu
LXC設定
PVE/etc/pve/lxc/xxx.conf新增設定後啟動
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,create=dir
安裝OpenVPN
wget https://git.io/vpn -O openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh
依序步驟使用預設安裝即可
範例:將homevpn.ovpn檔案丟到/etc/openvpn/client內
執行openvpn客戶端讀取設定檔
openvpn --daemon --cd /etc/openvpn --config client/vpn.ovpn --log-append /var/log/openvpn.log &
確認連上 OpenVPN Server 所取得的 IP
ip a | grep tun
關閉連線
pkill openvpn
PVE Postfix由Gmail寄發信件
運行環境
- PVE 7
安裝相關套件
apt install libsasl2-modules -y
設定Postfix
編輯/etc/postfix/main.cf
# GMail Setting
relayhost = [smtp.gmail.com]:587
# use tls
smtp_use_tls=yes
# use sasl when authenticating to foreign SMTP servers
smtp_sasl_auth_enable = yes
# path to password map file
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# list of CAs to trust when verifying server certificate
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# eliminates default security options which are imcompatible with gmail
smtp_sasl_security_options = noanonymous
smtp_always_send_ehlo = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
編輯 /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 <google信箱>:<應用程式密碼>
需到 Google 帳號產生應用程式密碼
更改檔案權限
postmap /etc/postfix/sasl_passwd
cd /etc/postfix
chown postfix /etc/postfix/sasl_passwd*
/etc/init.d/postfix reload
測試寄件
echo “Test mail from postfix” | mail -s “Test Postfix” test@test.com
PVE 安裝Synology 黑群暉
安裝
建立虛擬機
於PVE內建立VM
作業系統:不使用任何媒體
系統:架構選Q35
磁碟:刪除
CPU:核心自行設置,類別選host
記憶體:自行設置
網路:自行設置(VirtIO)
完成建立虛擬機
下載RR
下載最新版RR引導,並上傳ISO映像
進入PVE shell,導入RR映像
命令為導入VM編號 映像檔位置 磁碟儲存位置
qm importdisk 500 /mnt/pve/space3/template/iso/rr.img space3
虛擬機有出現剛剛導入的映像檔,選擇SATA
新增一塊SATA硬碟
將SATA0設置開機順序第一位
RR引導安裝
虛擬機開機後進入控制台會看到提示,進入IP:7681進行設定
型號自行選擇,這裡使用DS920+,自行選擇版本
點選URL下載pat系統文件
最後編譯開機檔開機
NAS初始化安裝
進入IP:5000開始安裝
上傳剛剛下載的pat檔案
提示刪除硬碟資料確認後開始安裝
提示10分鐘後重啟,實際上5分鐘內應該會完成
完成後進入安裝引導
關閉自動更新
略過建立帳號
不勾選裝置分析
完成後成功進入NAS桌面
硬碟設定
因為只有一顆硬碟我選擇Basic
自行選擇,這裡選擇建議系統
自行選擇,這裡選擇不加密
套用後就建立完成
PVE LXC安裝PNETLAB
PVE內安裝PNETLAB可建立VM正常安裝,但是虛擬機在PVE裡經過多層虛擬化效能不佳,故使用CT安裝來接近本機效能
運行環境
- PVE 7
- LXC ubuntu-18.04
PVE設定
確認PVE已安裝openvswitch-switch
systemctl status openvswitch-switch
若未安裝執行
apt update
apt install openvswitch-switch
建立CT
取消勾選無特權容器,範本選擇ubuntu-18.04,建立容器後選擇不開機
進入PVE SHELL修改LXC設定,編輯/etc/pve/lxc/<lxc-id>.conf,新增以下設定後啟動CT
features: nesting=1
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.cgroup2.devices.allow: c 10:232 rwm
lxc.mount.entry: /dev/kvm dev/kvm none bind,create=file
安裝PNETLAB
PVE網頁上開啟CT視窗,修改允許root SSH登入
sed -i -e "s/.*PermitRootLogin .*/PermitRootLogin yes/" /etc/ssh/sshd_config
service sshd restart
重新登入PNETLAB,編輯/etc/apt/sources.list新增repository
deb [trusted=yes] http://repo.pnetlab.com ./
開始安裝
echo "nameserver 8.8.8.8" > /etc/resolv.conf
apt-get update
apt-get purge netplan.io
apt-get install pnetlab -y
安裝到這裡時會卡住,因為PNETLAB和CT網路設定會衝突
To activate the new configuration, you need to run:
systemctl restart apache2
Considering dependency proxy for proxy_html:
Enabling module proxy.
Considering dependency xml2enc for proxy_html:
Enabling module xml2enc.
Enabling module proxy_html.
To activate the new configuration, you need to run:
systemctl restart apache2
將CT的網路設定靜態並移除IP後重啟CT
重新登入PNETLAB後開始初始化安裝,完成後會再次重啟
重啟後確認可進入PNETLAB網頁
若出現file_get_contents訊息
file_get_contents(http://127.0.0.1/html5/api/tokens): failed to open stream: HTTP request failed! HTTP/1.1 5XX Service Unavailable
於PNETLAB內修正
sed -i '/skip_ssl/d' /etc/mysql/mysql.conf.d/mysqld.cnf
echo "skip_ssl" >> /etc/mysql/mysql.conf.d/mysqld.cnf
service mysql restart
qemu啟動需安裝net-tools
apt install net-tools
測試虛擬機
測試建立的虛擬機可正常執行
若啟動失敗,觀察詳細報錯紀錄
tail -f /opt/unetlab/data/Logs/unl_wrapper.txt
PVE LXC 修改名稱
VM名稱可從網頁上直接修改,但LXC改名稱需要修改以下檔案
/var/lib/lxc/lxc-id/config
/etc/pve/lxc/lxc-id.conf
PVE 發送syslog到遠端伺服器
運行環境
- PVE 8.2
設定rsyslog
由於PVE已改成systemd-journald簡化日誌架構,需啟用轉發到Syslog並安裝rsyslog傳送log到遠端
編輯/etc/systemd/journald.conf
ForwardToSyslog=yes
安裝rsyslog
apt install rsyslog
新增/etc/rsyslog.d/remotelog.conf
傳送所有log
*.* @remoteip:516
篩選log,範例為篩選sshd程式訊息包含pam_unix則傳送
if ($programname == "sshd" and $msg contains "pam_unix") then {
action(type="omfwd" target="remoteip" port="516")
stop
}
重啟系統服務
systemctl enable rsyslog
systemctl restart rsyslog
systemctl restart systemd-journald
測試
使用Synology日誌接收,確認有PVE的log
PVE 備份 LXC 失敗問題
當使用PVE備份LXC時,出現INFO: tar: /mnt/pve/synology_home_backup/dump/vzdump-lxc-103-2025_10_31-13_50_35.tmp: Cannot open: Permission denied
ERROR: Backup of VM 103 failed - command 'set -o pipefail && lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536..等訊息並備份失敗
由於非特權容器不是使用root執行備份,而vzdump預設把/tmp 拿來當做暫存資料夾故沒權限寫入而失敗
解決方法在/etc/vzdump.conf 編輯tmpdir指向其他目錄
在執行備份就能成功
PVE LXC 掛載 NFS
運行環境
- PVE 8.4
- LXC Debian 12
建立 CT
取消勾選無特權容器,NFS 需要特權容器才可掛載
建立後在選項內功能把 NFS 勾選並開機
安裝 NFS Client
apt install nfs-common
systemctl start rpcbind && systemctl enable rpcbind
掛載 NFS 目錄
檢查 NFS 服務分享的目錄設定
root@pbs:~# showmount -e 192.168.0.1
Export list for 192.168.0.1:
/volume1/file 10.0.0.250/32
建立掛載目錄
mkdir /backup
掛載 NFS 至本地創建目錄,使用 soft 參數避免掛載失敗時 IO 操作會持續重試導致伺服器卡住
mount -t nfs -o soft 192.168.0.1:/volume1/file/backup /backup
root@pbs:~# mount |grep backup
192.168.0.1:/volume1/file/backup on /backup type nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.1,mountvers=3,mountport=892,mountproto=udp,local_lock=none,addr=192.168.0.1)
Proxmox Backup Server
Proxmox Backup Server 備份
PBS 新增 NFS 儲存區
運行環境
- PVE 8.4
- LXC Debian 12
安裝 NFS Client
參考本篇安裝NFS Client,本次掛載的是Synology 的 NFS,故在掛載前先修改使用者id
Synology新增backup使用者和群組,並記錄id
修改PBSbackup使用者id與Synology相同
usermod -u 1030 backup
groupmod -g 65537 backup
root@pbs:~# id backup
uid=1030(backup) gid=65537(backup) groups=65537(backup)
掛載後將目錄更新權限
chmod 770 /synology_nfs
新增儲存區
在 PBS 網頁上
增加後可以看到資料儲存區
PVE 新增 PBS 儲存
在PVE網頁上新增PBS資訊,帳號這裡求方便直接使用PBS 的root帳密,可以自行建立帳號並給予資料儲存區相應權限
指紋從PBS 連線區可以找到
可以看到已經有PBS儲存
PBS 安裝在PVE LXC
運行環境
- PVE LXC
- Debian 12
LXC安裝PBS
apt update
安裝 repo key
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
新增加 PBS 來源庫
編輯/etc/apt/sources.list
# 以下是新增加資訊
# Proxmox Backup Server pbs-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription
# security updates
deb http://security.debian.org/debian-security bookworm-security main contrib
apt update
apt install proxmox-backup-server
註解掉訂閱來源庫 /etc/apt/sources.list.d/pbs-enterprise.list
#deb https://enterprise.proxmox.com/debian/pbs bookworm pbs-enterprise
重啟之後瀏覽器登入 https://ip:8007
PBS ESTALE Stale file handle 解決
由於PBS掛載的NFS儲存區有搬遷過系統,在掛載時無異常,但是PBS回收作業或是PVE備份作業有ESTALE Stale file handle訊息而失敗
PBS錯誤
TASK ERROR: unable to get exclusive lock - ESTALE: Stale file handle
PVE錯誤
可以先嘗試重新掛載
umount /backup
mount -t nfs -o soft 192.168.0.1:/volume1/file/backup /backup
若依舊錯誤則重啟PBS可恢復
PBS namespaces 命名空間
當有多台 PVE 使用同一個 PBS,容器有重複VMID時,可能造成備份被覆蓋或是錯誤,可以增加命名空間來區分個別 PVE 的備份
於PBS網頁上儲存區中新增命名空間
PVE 新增 PBS 時,輸入新增的命名空間
可以為不同的PVE建立不同的空間,每台PVE備份都會儲存到自己的命名空間,不受VMID影響