Proxmox PVE

Proxmox PVE 相關

Proxmox Virtual Environment

PVE

Proxmox Virtual Environment

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即可

 

Proxmox Virtual Environment

PVE LXC OpenVPN客戶端安裝

運行環境

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

Proxmox Virtual Environment

PVE Postfix由Gmail寄發信件

運行環境
安裝相關套件
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
Proxmox Virtual Environment

PVE 安裝Synology 黑群暉

安裝

建立虛擬機

image.png

於PVE內建立VM

作業系統:不使用任何媒體

系統:架構選Q35

磁碟:刪除

CPU:核心自行設置,類別選host

記憶體:自行設置

網路:自行設置(VirtIO)

完成建立虛擬機

下載RR

下載最新版RR引導,並上傳ISO映像

image.png

進入PVE shell,導入RR映像

命令為導入VM編號 映像檔位置 磁碟儲存位置

qm importdisk 500 /mnt/pve/space3/template/iso/rr.img space3

虛擬機有出現剛剛導入的映像檔,選擇SATA

image.png

新增一塊SATA硬碟

image.png

將SATA0設置開機順序第一位

image.png

RR引導安裝

虛擬機開機後進入控制台會看到提示,進入IP:7681進行設定

進入Settings menu選擇語言先切換中文

型號自行選擇,這裡使用DS920+,自行選擇版本

點選URL下載pat系統文件

最後編譯開機檔開機

image.png

NAS初始化安裝

進入IP:5000開始安裝

image.png

上傳剛剛下載的pat檔案

image.png

提示刪除硬碟資料確認後開始安裝

image.png

提示10分鐘後重啟,實際上5分鐘內應該會完成

image.png

完成後進入安裝引導

image.png

關閉自動更新

image.png

略過建立帳號

image.png

不勾選裝置分析

image.png

完成後成功進入NAS桌面

image.png

硬碟設定

image.png

因為只有一顆硬碟我選擇Basic

image.png

image.png

image.png

image.png

自行選擇,這裡選擇建議系統

image.png

自行選擇,這裡選擇不加密

image.png

套用後就建立完成

image.png

Proxmox Virtual Environment

PVE LXC安裝PNETLAB

PVE內安裝PNETLAB可建立VM正常安裝,但是虛擬機在PVE裡經過多層虛擬化效能不佳,故使用CT安裝來接近本機效能

運行環境
PVE設定

確認PVE已安裝openvswitch-switch

systemctl status openvswitch-switch

若未安裝執行

apt update
apt install openvswitch-switch

 

 

建立CT

取消勾選無特權容器,範本選擇ubuntu-18.04,建立容器後選擇不開機

image.png

進入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

image.png

重新登入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

image.png

重新登入PNETLAB後開始初始化安裝,完成後會再次重啟

image.png

重啟後確認可進入PNETLAB網頁

image.png

若出現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

image.png

於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

測試虛擬機

測試建立的虛擬機可正常執行

image.png

若啟動失敗,觀察詳細報錯紀錄

tail -f /opt/unetlab/data/Logs/unl_wrapper.txt

Proxmox Virtual Environment

PVE LXC 修改名稱

VM名稱可從網頁上直接修改,但LXC改名稱需要修改以下檔案

/var/lib/lxc/lxc-id/config
/etc/pve/lxc/lxc-id.conf

 

Proxmox Virtual Environment

PVE 發送syslog到遠端伺服器

運行環境

設定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

image.png

Proxmox Virtual Environment

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..等訊息並備份失敗

image.png

由於非特權容器不是使用root執行備份,而vzdump預設把/tmp 拿來當做暫存資料夾故沒權限寫入而失敗

解決方法在/etc/vzdump.conf 編輯tmpdir指向其他目錄

image.png

在執行備份就能成功

image.png

Proxmox Virtual Environment

PVE LXC 掛載 NFS

運行環境

 

建立 CT

取消勾選無特權容器,NFS 需要特權容器才可掛載

image.png

建立後在選項內功能把 NFS 勾選並開機

image.png

 

安裝 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 備份

Proxmox Backup Server

PBS 新增 NFS 儲存區

運行環境

 

安裝 NFS Client

參考本篇安裝NFS Client本次掛載的是Synology 的 NFS,故在掛載前先修改使用者id

Synology新增backup使用者和群組,並記錄id

image.png

修改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 網頁上

image.png

增加後可以看到資料儲存區

image.png

 

PVE 新增 PBS 儲存

在PVE網頁上新增PBS資訊,帳號這裡求方便直接使用PBS 的root帳密,可以自行建立帳號並給予資料儲存區相應權限

指紋從PBS 連線區可以找到

image.png

可以看到已經有PBS儲存

image.png

Proxmox Backup Server

PBS 安裝在PVE LXC

運行環境

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

 

 

 

 

Proxmox Backup Server

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錯誤

unable to get shared lock - ESTALE: Stale file handle

可以先嘗試重新掛載

umount /backup
mount -t nfs -o soft 192.168.0.1:/volume1/file/backup /backup

若依舊錯誤則重啟PBS可恢復

 

Proxmox Backup Server

PBS namespaces 命名空間

當有多台 PVE 使用同一個 PBS,容器有重複VMID時,可能造成備份被覆蓋或是錯誤,可以增加命名空間來區分個別 PVE 的備份

 


於PBS網頁上儲存區中新增命名空間

 

image.png

PVE 新增 PBS 時,輸入新增的命名空間

image.png

可以為不同的PVE建立不同的空間,每台PVE備份都會儲存到自己的命名空間,不受VMID影響

image.png

image.png