常见的pve使用问题
[TOC]
场景1:安装 windows 无法识别硬盘
报错原因:
- 创建虚拟机,在配置 OS 的时候,
Type
默认为Linux
,需要改为Microsoft Windows
- 创建虚拟机,在配置 System 的时候,务必指定
TPM Storage
和EFI Storage
为local-vm
场景2:无法登录 web 页面
症状:2022.11.18,在联想SR558H上装完vpe之后,打不开 https://ip:8006
,且登录pve后台,ping 不通网关地址。
解决:后来经过多次尝试才发现,这台机器共2块网卡,每块网卡有4个网口,pve默认使用第一块网卡的第一个网口,后来在配置网络及IP地址的时候,调整绑定正确的网口就好了,调整过程如下:
场景3:无法关闭虚拟机
症状:2023.03.03.有一台windows机器无法关机,在vpe终端对该虚机执行 Stop
或 Shutdown
都失败。
解决:登录pve的 >_ Shell 控制台,执行 qm list
找到这台虚机的 vmid(比如示例windows的vmid为103),然后执行 qm stop <vmid>
来执行关机(亲测有效)。
root@node01:~# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 linux-template stopped 4096 40.00 0
101 k8s-node1 running 4096 40.00 4963
102 k8s-node2 running 4096 40.00 8673
103 win10-4.240 running 4096 32.00 599826
104 ubuntu-template stopped 4096 32.00 0
root@node01:~# qm stop 103
场景4:暴露Clickjacking漏洞
症状:2023.03.28.针对pve web暴露的 Web应用程序可能易受Clickjacking
漏洞
针对Apache:在配置文件中添加:Header always append X-Frame-Options SAMEORIGIN
针对Nginx:在 nginx.conf 中 http{} 添加:add_header X-Frame-Options SAMEORIGIN;
解决:实测下来,并未找到配置 X-Frame-Options 的地方。建议通过nginx代理的方式访问pve控制台,在nginx中修复Clickjacking漏洞,并通过iptables封掉源pve端口,具体步骤如下:
- 第1步,pve服务端:离线安装docker,并拉起一个nginx容器,nginx映射8007:8007
mkdir -p /data/docker/nginx/www
docker pull nginx:1.23.1
cat /data/docker/nginx/nginx.conf
docker run -idt -p 8007:8007 -v /data/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /data/docker/nginx/www:/data --name nginx nginx:1.23.1
- 第2步,pve服务端:配置nginx代理,将
https://pve.xxx.com:8007
转发给https://{ip}:8006
,注意在nginx.conf中配置域名+证书、消除tls漏洞、点击劫持漏洞,核心配置如下:
http {
#.修复Clickjacking漏洞
add_header X-Frame-Options SAMEORIGIN;
server {
#.配置ssl证书
listen 8007 ssl;
server_name pve.xxxx.com;
ssl_certificate /data/server.crt;
ssl_certificate_key /data/server.key;
#.修复tls漏洞
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#.配置nginx代理
location / {
root html;
index index.html index.htm;
proxy_pass "https://192.168.4.37:8006";
}
}
}
- 第3步,pve服务端:配置iptables限制8006仅本机内网ip访问(比如 192.168.4.37),用于nginx转发。而伪装后的8007则允许本网段访问
/usr/sbin/iptables -F
/usr/sbin/iptables -X
/usr/sbin/iptables -Z
/usr/sbin/iptables -A INPUT -i lo -j ACCEPT
/usr/sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
/usr/sbin/iptables -A INPUT -p tcp -s 192.168.4.37 --dport 8006 -j ACCEPT
/usr/sbin/iptables -A INPUT -p tcp -s 192.168.4.0/24 --dport 8007 -j ACCEPT
/usr/sbin/iptables -A INPUT -p tcp -s 192.168.4.0/24 --dport 22 -j ACCEPT
/usr/sbin/iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
/usr/sbin/iptables -A INPUT -j DROP
/usr/sbin/iptables -A FORWARD -j DROP
- 第4步,windows客户端:配置hosts
修改 C:\Windows\System32\drivers\etc\hosts
添加 192.168.4.37 pve.xxxx.com
- 第5步,windows客户端:使用浏览器访问
https://pve.xxxx.com:8007
,不要再使用https://{ip}:8006
来访问
参考:https://forum.proxmox.com/threads/how-to-configure-web-interface-internals.56470
场景5:调整内存导致启动失败
症状:2023.05.04.将虚拟机内存从4G改为16G后开机启动失败并显示以下错误:
Kernel panic - not syncing : Fatal exception
Shutting down cpus with NMI
注:没有找到解决办法,最后重装了系统,囧。
场景6:恢复快照遇到 VM is locked
症状:2023.07.19.将虚机恢复快照的时候,最后弹出窗口提示 VM is locked (rollback),执行 qm list
看到该节点(示例305
)状态已经是 stopped
root@pve27:~# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 ubuntu20.04-template stopped 1024 50.00 0
101 cnetos79-template stopped 4096 40.00 0
102 kylin-template stopped 4096 40.00 0
305 zhanglu-3.213 stopped 4096 40.00 0
root@pve27:~# qm unlock 305
解决:执行 qm unlock 305
,再次重试ok。
场景7:虚拟机cpu不支持avx指令集
症状:2024.06.18.在pve安装的虚拟机上创建合合ocr容器一直失败(docker run提示restarting且无任何日志)
解决:合合ocr容器及Mongodb 5.0以上版本,都要求CPU必须支持AVX指令集
- 第1步,确认宿主机的cpu支持avx指令集
#.执行如下命令若无返回则表示不支持adx
cat /proc/cpuinfo | grep avx
lscpu | grep avx
- 第2步,在pve控制台启用虚拟机的avx指令集支持,然后重启虚拟机即可