记录下常用的内容方便查阅 当前版本为 PVE 7.2

Proxmox VE 棒棒哒

  1. 下载并打开:UltraISO
  2. 文件-打开-proxmox-ve_7.2-1.iso
  3. 启动-写入硬盘映像…
    在这里插入图片描述
  4. 选U盘-刻录校验-确认镜像-选RAW-写入-等完成
    在这里插入图片描述
  5. 确认写入完成后把U盘插到要装的电脑上 开机,选择U盘启动
  6. 进入proxmox安装程序,选择:install Proxmox VE
  7. 进入安装协议,I agree
  8. 进入安装硬盘选择,选择要目标硬盘Next
  9. 进入国家时区语言选择,China,Shanghai,Englis,Next
  10. 进入设置密码,输入密码:***,再次输入密码:***,输入E-Mail:***,Next
  11. 进入网络设置,选择网卡,输入主机名:***,输入IP:192.168.*.*,输入网关:192.168.*.1,输入DNS:192.168.*.1,(自己输),Next
  12. 进入确认 确认输入无误,Install
  13. 等安装完成,确认完成后,Reboot
  14. 重启开机后自动默认选择第一项启动
  15. 启动完成,显示:pve login:_
  16. 局域网浏览器地址输入设置的IP和端口(https://192.168.*.*:8006)进入【控制台】

开启iommu虚拟化

编辑/etc/default/grub文件.把GRUB_CMDLINE_LINUX_DEFAULT="quiet"改成下面的

intel:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

AMD:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

然后更新一下引导

update-grub

LVM-Thin

请先确保自己的虚拟机没有位于lvm-thin上,若有,请先移动到local

移除

lvremove pve/data

合并到local

lvextend -l +100%FREE -r pve/root

数据中心-存储-删掉lvm-thin

数据中心-存储-local-内容全选上

修改源

关闭订阅提醒 -下面的shell温度脚本也修改了这个.这里可随你自己选用

# 关闭订阅提醒
sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service
# 删除原来的企业源
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
# 更新 debian 国内更新源和 pve 非订阅版更新源
cat > /etc/apt/sources.list<<-EOF
# debian updates
deb http://ftp.cn.debian.org/debian bullseye main contrib
deb http://ftp.cn.debian.org/debian bullseye-updates main contrib
# deb http://security.debian.org bullseye-security main contrib

# debian aliyun source
deb https://mirrors.aliyun.com/debian buster main contrib non-free
deb https://mirrors.aliyun.com/debian buster-updates main contrib non-free
deb https://mirrors.aliyun.com/debian-security buster/updates main contrib non-free

# proxmox source
# deb http://download.proxmox.com/debian/pve buster pve-no-subscription
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve buster pve-no-subscription
EOF
# 更新&升级 速度慢正常
apt update && apt dist-upgrade

# 升级完成后,可以执行pveversion -v查看下最新的软件版本。然后执行reboot重启物理服务器

点我查阅官方文档

安装 CPU&主板、硬盘温度检测

将以下代码保存为sh脚本,执行就可以了.其他说明查看原作者


#!/usr/bin/env bash
np="/usr/share/perl5/PVE/API2/Nodes.pm"
pvejs="/usr/share/pve-manager/js/pvemanagerlib.js"
plib="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js"

if ! sensors;then
  echo 安装lm-sensors
  apt update && apt install -y lm-sensors
fi

pvever=$(pveversion | awk -F"/" '{print $2}')
echo pve版本$pvever
echo 备份源文件
[ ! -e $np.$pvever.bak ] && cp $np $np.$pvever.bak || { echo 已经修改过,请务重复执行; exit 1;}
[ ! -e $pvejs.$pvever.bak ] && cp $pvejs $pvejs.$pvever.bak
[ ! -e $plib.$pvever.bak ] && cp $plib $plib.$pvever.bak

therm='$res->{thermalstate} = `sensors`;';
cpure='$res->{cpure} = `cat /proc/cpuinfo | grep -i  "cpu mhz"`;';

echo 修改node.pm:
sed -i "/PVE::pvecfg::version_text()/a $cpure\n$therm" $np

sed -n "/PVE::pvecfg::version_text()/,+5p"  $np


tmpf=tmpfile.temp
touch $tmpf
cat > $tmpf << 'EOF'
        {
                  itemId: 'thermal',
                  colspan: 2,
                  printBar: false,
                  title: gettext('温度'),
                  textField: 'thermalstate',
                  renderer:function(value){
                        let b = value.trim().split(/\)\s+(?=[A-z]+-)/);
                        let c = b.map(function (v){
                                let name = v.match(/^[^-]+/)[0] + ': ';
                                
                                let tempure = v.match(/(?<=:\s+\+)[\d\.]+/g).map( v => v + '°C');
                                if (/coretemp/i.test(name)) {
                                        name = 'CPU温度: ';
                                        tempure = tempure[0] + '(' +   tempure.slice(1).join(', ') + ')';
                                } else  {
                                        tempure = tempure[0];
                                        
                                }
                                
                                return name + tempure;
                        });
                        return c.join(' | ');
                        
                        // const m = value.match(/(?<=:[^\+]+\+)\d+/g);
                        // const m2 = m.map( e => e + '°C');
                        // return `CPU: ${m2[0]}(${m2[1]},${m2[2]},${m2[3]},${m2[4]}) | BOARD: ${m2[5]} | NVME: ${m2[6]}`;
                 }
        },
        {
                  itemId: 'cpumhz',
                  colspan: 2,
                  printBar: false,
                  title: gettext('CPU频率'),
                  textField: 'cpure',
                  renderer:function(value){
                        const m = value.match(/(?<=:\s+)\d+/g);
                        const m2 = m.map(e => e + 'MHz');
                        return m2.join(' | ');
                 }
        },
EOF

#找到关键字pveversion的行号
echo 修改pvemanagerlib.js
ln=$(sed -n '/pveversion/,+10{/},/{=;q}}' $pvejs)
echo "匹配的行号pveversion:" $ln

echo 修改结果:
sed -i "${ln}r $tmpf" $pvejs
sed -n '/pveversion/,+30p' $pvejs

rm $tmpf


echo 修改页面高度
sed -i -r '/widget\.pveNodeStatus/,+5{/height/{s#[0-9]+#360#}}' $pvejs
sed -n '/widget\.pveNodeStatus/,+5{/height/{p}}' $pvejs
sed -i -r '/\[logView\]/,+5{/heigh/{s#[0-9]+#460#;}}' $pvejs
sed -n '/\[logView\]/,+5{/heigh/{p}}' $pvejs


echo 修改去除订阅弹窗
sed -r -i '/\/nodes\/localhost\/subscription/,+10{/^\s+if \(res === null /{N;s#.+#\t\t  if(false){#}}' $plib
sed -n '/\/nodes\/localhost\/subscription/,+10p' $plib

systemctl restart pveproxy

echo "请刷新浏览器缓存shift+f5"

virtio 驱动下载

第一次玩的时候.死活找不到硬盘,一脸懵逼...求助了朋友才知道需要挂载 virtio驱动.....特么..这点不如esxi

驱动下载地址 https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html

英文看不懂的话请在此页面搜索 Stable virtio-win iso 然后点击连接下载

也可以打开https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/ 下载不同版本的驱动

最后安装WIN的时候记得挂载2个cdrom,一个是系统一个则是驱动.安装磁盘选择那里手动选择驱动后就可以继续安装系统了

挂载直通硬盘

安装磁盘直通的工具

apt install lshw

查看硬盘ID

ls -l /dev/disk/by-id/
# 100为虚拟机ID sataX X为你的盘号 
qm set 100 --sata1 /dev/disk/by-id/ata-Hitachi_HUA722020ALA330_JK1130YAH3B6VT
qm set 100 --sata2 /dev/disk/by-id/ata-Hitachi_HUA722020ALA330_JK1131YAH2WYKV
qm set 100 --sata3 /dev/disk/by-id/ata-ST3500418AS_6VMS8MGZ

FRP

映射一下控制台让外网可以访问

服务端

# 创建安装目录
mkdir -p /opt/modules

# 下载frp
cd && wget https://github.com/fatedier/frp/releases/download/v0.43.0/frp_0.43.0_linux_amd64.tar.gzz

# 解压frp
cd && tar -xf frp_0.43.0_linux_amd64.tar.gz -C /opt/modules
cd /opt/modules && mv frp_0.43.0_linux_amd64 frp

# 配置frp
cat > /opt/modules/frp/frps.ini << 'EOF'
[common]
bind_port      = 7000
bind_addr      = 0.0.0.0
kcp_bind_port  = 7000
token          = eXVuSGX6Bu9YSyanbo
max_pool_count = 0
tcp_mux        = true
EOF

# 创建启动脚本
cd && cat > frp.sh << 'EOF'
#!/bin/bash

ps -ef | grep -v grep | grep frps && { echo "The frps already is running!"; exit 1; }

nohup /opt/modules/frp/frps -c /opt/modules/frp/frps.ini > /opt/modules/frp/frps.log 2>&1 &

ps -ef | grep -v grep | grep frps || echo "Fail to start frps, please check details in log!"
EOF

# 赋予脚本执行权限
cd && chmod +x frp.sh

# 启动frps
cd && ./frp.sh

客户端

# 创建安装目录
mkdir -p /opt/modules

# 下载frp
cd && wget https://github.com/fatedier/frp/releases/download/v0.43.0/frp_0.43.0_linux_amd64.tar.gz

# 解压frp
cd && tar -xf frp_0.43.0_linux_amd64.tar.gz -C /opt/modules
cd /opt/modules && mv frp_0.43.0_linux_amd64 frp

# 配置frp
cat > /opt/modules/frp/frpc.ini << 'EOF'
[common]
server_addr = 你的服务端IP或者域名
server_port = 7000
pool_count  = 0
tcp_mux     = true
protocol    = kcp
token       = eXVuSGX6Bu9YSyanbo

[pve-dashboard]
type        = tcp
local_ip    = 127.0.0.1
local_port  = 8006
remote_port = 18006
EOF

# 创建启动脚本
cd && cat > frp.sh << 'EOF'
#!/bin/bash

ps -ef | grep -v grep | grep frpc && { echo "The frpc already is running!"; exit 1; }

nohup /opt/modules/frp/frpc -c /opt/modules/frp/frpc.ini > /opt/modules/frp/frpc.log 2>&1 &

ps -ef | grep -v grep | grep frpc || echo "Please start PVE frps first!"
EOF

# 赋予脚本执行权限
cd && chmod +x frp.sh

# 启动frpc,须确保宿主机的frps 已启动
cd && ./frp.sh

浏览器访问:https://服务端IP:18006

客户端设置为开机自启动

# 在 /lib/systemd/system/ 中新建 frpc.service文件。  

cat > /lib/systemd/system/frpc.service << 'EOF'
[Unit]
Desctiption = frpc service
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart = /opt/modules/frp/frpc -c /opt/modules/frp/frpc.ini

[Install]
WantedBy = multi-user.target
EOF

ln -s /opt/modules/frp/frpc.service /lib/systemd/system/frpc.service

# 保存后采用 systemctl 命令进行设定即可

systemctl start frpc.service
systemctl status frpc.service
systemctl enable frpc.service             这一个命令是将frpc服务设定为开机自启动

后增加网卡

PVE加网卡后无法进入后台及网络不通问题

给 PVE NAS 机器加了一块 PCI-E 网卡,加完重启后发现机器失联,无法进入后台,且软路由等都连不上。

原因: 添加了新的网卡(或调整过 IOMMU 分组)后,原桥接网卡接口名称可能会发生变化,而 PVE 的控制台绑定、网络桥接等都依赖网卡接口名称,因此出现混乱乃至失联的情况。

解决方法:先使用命令查看系统已经重新识别与分配的网卡名称

ip a

此时会发现网卡名称与之前单网卡的不一样了.故此vmbr0无法启动导致控制台连不上

去修改vmbr0的配置文件,把错误的名称改成新的网卡名称

nano /etc/network/interfaces

bridge-ports enp4s0 中的enp4s0 改成你的新的网卡名称,按下ctrl+s保存修改 , ctrl+x退出修改.

然后启动vmbr0网卡即可

# 关闭网卡
ifdown vmbr0

# 启动网卡
ifup vmbr0

启动后等待网卡启动完成后即可进入熟悉的控制台了(记得插上网线...........)