记录下常用的内容方便查阅 当前版本为 PVE 7.2
Proxmox VE 棒棒哒
- 下载并打开:UltraISO
- 文件-打开-proxmox-ve_7.2-1.iso
- 启动-写入硬盘映像…
- 选U盘-刻录校验-确认镜像-选RAW-写入-等完成
- 确认写入完成后把U盘插到要装的电脑上 开机,选择U盘启动
- 进入proxmox安装程序,选择:install Proxmox VE
- 进入安装协议,I agree
- 进入安装硬盘选择,选择要目标硬盘,Next
- 进入国家时区语言选择,China,Shanghai,Englis,Next
- 进入设置密码,输入密码:***,再次输入密码:***,输入E-Mail:***,Next
- 进入网络设置,选择网卡,输入主机名:***,输入IP:192.168.*.*,输入网关:192.168.*.1,输入DNS:192.168.*.1,(自己输),Next
- 进入确认 确认输入无误,Install
- 等安装完成,确认完成后,Reboot
- 重启开机后自动默认选择第一项启动
- 启动完成,显示:
pve login:_
- 局域网浏览器地址输入设置的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
英文看不懂的话请在此页面搜索 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
启动后等待网卡启动完成后即可进入熟悉的控制台了(记得插上网线...........)