第一次玩PVE,有很多需要学习的地方,这里简单记一下不同于Windows内虚拟机软件(比如VMWare)的地方。第三、四部分比较了一下不同机箱不同CPU的日常使用情况。
安装PVE的内容就不写了,和安装普通的系统没有两样,需要注意的是填写后台地址的时候:
- 网卡选择要记住,PVE只能用你选择的网口做管理口访问后台。
- ip写你路由器管理的网段下,保证可以访问到。
- 要写 https
一、PVE 准备
1.1 换源
这个操作可有可无,如果你的网络连接默认源够快,完全不需要换。
- 无论是安装啥,安装完先把时间改了,错误的时间可能影响你正常上网
# 不知道怎么一个命令改出来
date -s 2022-04-25
date -s 22:32
有时候你会发现这个时间怎么改都不对,那是因为https://sspai.com/post/55983,所以我建议你,先去BIOS里把时间改成北京时间减去8个小时,这样类unix系统都会正确了。如果安装windows,通过修改注册表让windows也将硬件时间看成UTC时间,在哪里看过好像微软自己也要修改这个规则了。
注释掉
/etc/apt/sources.list.d/pve-enterprise.list
中的源换PVE源
wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.list
sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm
apt update && apt dist-upgrade #更新软件,可不执行
- 换debian源
sed -i.bak "s#ftp.debian.org/debian#mirrors.163.com/debian#g" /etc/apt/sources.list
sed -i "s#security.debian.org#mirrors.163.com/debian-security#g" /etc/apt/sources.list
apt update && apt dist-upgrade #更新软件,可不执行
1.2 去掉无有效订阅弹窗
修改/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
文件中的这块代码
Proxmox.Utils.API2Request(
{
url: '/nodes/localhost/subscription',
method: 'GET',
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
success: function(response, opts) {
let res = response.result;
if (res === null || res === undefined || !res || res
.data.status.toLowerCase() !== 'active') {
Ext.Msg.show({
title: gettext('No valid subscription'),
icon: Ext.Msg.WARNING,
message: Proxmox.Utils.getNoSubKeyHtml(res.data.url),
buttons: Ext.Msg.OK,
callback: function(btn) {
if (btn !== 'ok') {
return;
}
orig_cmd();
},
});
} else {
orig_cmd();
}
},
},
);
Ext.Msg.show就是那个弹窗,可以直接在let res = response.result;
前面加个return;
。
sed -i.bak "s#let res = response.result;#return; let res = response.result;#g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
1.3 直通pci设备准备
-
修改
/etc/default/grub
文件,将GRUB_CMDLINE_LINUX_DEFAULT="quiet"
修改为GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
# 修改/etc/default/grub sed -i.bak "s#GRUB_CMDLINE_LINUX_DEFAULT=\"quiet\"#GRUB_CMDLINE_LINUX_DEFAULT=\"quiet intel_iommu=on video=efifb:off\"#g" /etc/default/grub # 更新GRUB update-grub
-
添加内核模块
# 添加模块, 包括核显直通 echo -e "vfio \nvfio_iommu_type1 \nvfio_pci \nvfio_virqfd" >> /etc/modules # 这个命令好像是更新内核的 update-initramfs -k all -u # 重启 reboot
-
注意
虚拟机芯片组一定要q35 。因为Q35,才能PCIE直通,否则就是PCI直通。
二、开玩
要实现的网络拓扑图,一个OpenWRT做路由,Ubuntu做服务器跑一些自己的web应用,还有其它用网的虚拟机,统统接到第三个口。
同学们(其实是我)可能有个疑问,这样AP这里能访问到PVE的管理口吗?其实是可以的,不记得在哪个文章里看到了,不同的虚拟机只要接到PVE的同一个虚拟网口,相当于接到了一个虚拟交换机,也就是说拓扑图中接在第三个网口上的三根线是互通的
2.1. 安装OpenWRT
1)创建虚拟机,ISO、磁盘不选,系统默认,创建完成。
2)用命令qm importdisk 虚拟机ID img文件地址 local-lvm
将img文件转换为虚拟机的硬盘,比如
qm importdisk 100 /var/lib/vz/template/iso/openwrt.img local-lvm
3)回到虚拟机,点击未使用的硬盘,将总线/设备设置为sata
4)到选项-引导顺序,将硬盘启动选中,调到第一位。
5)这样,硬盘就配置好了。最后在网络设备中添加四个网口。启动。
7)暂时用不到PVE了,先将管理端口的ip改成192.168.1.5,两种方法:
- 直接在web管理页面修改pve-网络-对应的网口
- 修改
/etc/network/interfaces
,/etc/issue
,/etc/hosts
三个文件中的ip(interfaces中还有网关),然后重启。其实只需要修改/etc/network/interfaces
中的信息,/etc/issue
应该是命令行下的开机提示,/etc/hosts
是映射域名和ip的。
四个网口只有其中的一个指定了IP地址,指定的那个网口就是管理口,并不像网上说的怎么固定。
2.2. 配置OpenWRT
先改时间。
镜像是eSir的,默认第一个网络设备是LAN口(ip是192.168.5.1),这样我们启动之后将电脑的网线插入ETH0网口,便可以直接通过浏览器访问OpenWRT后台(192.168.5.1)。
根据拓扑图调整网络,eSir固件默认只有一个LAN口(第一个网口)和一个WAN口(第二个网口)。这里我把WAN口调到第一个网口,因为现在只有一根入户宽带,另一个WAN口先留着吧(想必以后也用不到)。最后在LAN口中选择第三个和第四个网口,ip改成192.168.1.1(最后调这个,调完就需要重插网线了)。
插网线
将光猫出来的网线接入WAN口(ETH0),LAN口(ETH3)插在电脑上,经测试可以正常访问OpenWRT(192.168.1.1)和PVE(192.168.1.5)控制台。
2.3 安装Ubuntu 20.04
这里就不多写了,想必大家都轻车熟路了。其实我想安装Ubuntu Server,但是在格式化完磁盘,复制系统文件的时候总是报错。日志太长看不懂,所以不确定问题出在哪里,有知道的同学可以交流一下。Desktop也好,怕系统占用可以不启动图形界面(这么安慰自己)。(N5105到货了,安装Ubuntu Server没有发现这个问题)
2.4 安装Android TV x86
配置虚拟机的时候注意硬盘选SATA,芯片组选Q35。
安装过程按照eSir的教程来,其中他输入了一串命令pm disable com.tosanthony.tv.networkprovider
,按照哔哩哔哩的那篇文章,tosanthony最初制作的Android TV 9 x86是收费的,这个命令好像就是来禁用com.tosanthony.tv.networkprovider
这个应用来避免收费的。但是我不知道在哪里下载的包,没有看到这个收费界面(后来好像又不收费了),所以没执行这个命令也正常安装完了。
之后重启了一次小主机,竟然只能进命令行的界面了,没有图形界面。解决办法:PVE里强行停止再打开就好了。
2.4.1 直通核显用显示器输出
注意:以前不知道,原来11代U不能直通!不能!看Vedio Talk说可以,他提取了vbios,正在修复,但是就没有下文了。
我没有搞成功,同学们试试运气吧。看我参考的三篇文章,个人感觉第一篇更全面合理一些,推荐。
- 将显卡驱动加入pve黑名单
我不太理解这个步骤是为什么,是不是说不要pve来管理显卡了?而且看的两篇教程指定的pve黑名单文件都是/etc/modprobe.d/blacklist.conf
,但是我看系统内自带了一个/etc/modprobe.d/pve-blacklist.conf
,而且里面写着:“This file contains a list of modules which are not supported by Proxmox VE.” 感觉这个应该才是黑名单的文件吧,而且设置完他们都没有什么验证,不确定是不是生效了。所以我这一步先不做。新版本的pve,例如pve7.0,无需做驱动屏蔽
- 查找设备id
这个搞过黑苹果的同学一定知道,最后的格式是vendor-id:设备id
。
先用lspci
命令查看显卡和声卡的pci位置(第一列),找到VGA和Audio字样分别对应显卡和声卡,然后用lspci -n -s pci位置
来查看设备id,我的是VGA(8086:4e61)、Audio(8086:4dc8) - 将得到的信息按照
options vfio-pci ids=ID1,ID2,...
的格式写入/etc/modprobe.d/vfio.conf
echo "options vfio-pci ids=8086:4e61,8086:4dc8" > /etc/modprobe.d/vfio.conf
- 最后更新内核,重启虚拟机
update-initramfs -u reboot
- 配置虚拟机
- 添加pcie显卡设备。根据pcie位置来选就好了,我的没有教程中那么完整的信息。
- 把显示那里改成无。
- 结果,Ubuntu成功(后期来纠正一下,这里并没有成功,只是ubuntu一直等能显示画面,但是并不能操作,当时应该是看到画面就以为成功了),AndroidTV不成功。Android TV没有任何的反应,看着系统可能启动了,但是应该是进入那个命令行界面了(看内存占用猜的)。
- 用这串代码
args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1
替换下直接在pve里添加的pcie设备的配置项(/etc/pve/qemu-server/102.conf)。Ubuntu 成功(第一次启动把pve搞死机了,是不是添加options防止VM死机那一步可以避免这个问题),AndroidTV不成功。 - 添加VBios
跟着第三个教程来,失败了...,echo 1 > rom
报错permission denied。看着第四个文章(pve官方的教程)也是这么弄的,应该不会有问题,但是我放弃了,想着即便直通成功,Android内多数的国内视频软件都用不了,kodi用不了,甚至YouTube视频都加载不出来,就没有折腾的动力了。想想在物理机上安装x86也有进不去图形界面的问题,所以我又试了用SeaBIOS引导,修改grub启动文件,结果问题还是一样,内存占用500M左右,感觉卡在了启动图形界面之前的那个命令行的状态,他想启动但是找不到合适的显示器输出。
最后,这东西发热严重,恰巧看到N5105有货了,果断换货,过几天折腾N5105。
三、N5105到货
在上面的基础上有安装了OpenMediaVault,没啥好说的,也没搞高级功能。欢迎留言交流。
记录一下直通硬盘:
# 查看磁盘的id,记录下你要用的硬盘
ls /dev/disk/by-id
# qm set 虚拟机id 虚拟机硬盘编号 硬盘id
qm set 101 -sata2 /dev/disk/by-id/ata-TOSHIBA_MQ04ABD200_32EOP03AT
下面说一下这两个机器的优缺点,下面说的数据基本都是在pve下运行着OpenWRT和Ubuntu(待机状态)的情况下统计的。
功耗
5095没测。5105不接sata硬盘14-15w,接个2.5寸的机械硬盘15-17w。-
温度
- 晚春(室温19-21度 )我买的是G30B机箱的,就是散热鳍片小的。一是缺钱,二是觉得G31那个鳍片不太好看。N5095长时间保持在70多度,偶尔能到80度。N5105长时间保持在60多度。我手上只有一个12V的闲置的小风扇(接在5V的USB上转速很低),稍微一吹能降到50多度,偶尔到40多度。所以N5105建议买G31的机箱,应该可以免去改造散热。N5095还是用主动散热吧。
-
中秋,时隔快半年了更新,我想测试一下换了硅脂能对散热有多大帮助,买的硅脂导热系数声称10w/mk。天气预报说今天最高温度28度,我感觉现在室内25度只多不少。G30B加主动散热,unraid显示cpu50度。撬开了发现散热铁片和机箱中间的硅脂只涂了一点点,我就多涂了一些,换之后cpu42度,效果不错
想吐槽一下这个sata硬盘设计。G30B机箱只适用7mm的2.5寸硬盘,9mm的按照螺丝孔位固定硬盘之后根本就拧不上盖板螺丝,因为给的数据线会顶住nvme硬盘,不固定在板上斜着也能放进去。G31没有这个问题。
-
网速
iperf3: 我手上只有千兆的网卡,所以没法测这个2.5G的网口,但是我可以用拓扑图ETH2那里的虚拟交换机测试一下那个网卡的极限速度。OpenWRT做iperf3服务端,OMV做客户端。一测我惊了:
怎么8G多了,看来虚拟网桥那里的流量并不经过网卡,我真是个大聪明。看来网速测不了了,但是也看到OpenWRT那里cpu占用44%,PVE那里占用36%。
局域网拷贝: windows下从NAS拷贝文件都能跑到900多兆。macOS下面差不多
在线开发: 把图形处理的深度学习程序(对硬盘读取算中等)放在本地和NAS上,跑一个阶段。NAS上用的时间竟然更少,这应该是显卡状态的原因,至少说明一般开发任务千兆局域网不是瓶颈。
在线剪辑: FCPX默认选项新建项目1080P 60帧,正常操作几十M,复制媒体到资源库(H264,1080p,14Mbps,30帧,15分钟,1.64G的素材)或者后台渲染(核显UHD630)的时候最多500-600M。
四、G31机箱N5105
快618了,刚买一个多月价格直接降了150多(G30B 690大洋,G31 720大洋),就离谱!那咋办?我又买了一个G31机箱的N5105,想着如果618之后价格如果能涨一点就卖掉一个好回点本🤣。
然后,我惊奇的发现!我真没想到!这个G31机箱散效果这么好,室温23度,待机(Openwrt+OMV)CPU 40度左右,局域网拷贝半个小时了(CPU占用10%左右)才四十五六度。
夏天不开空调室温可能大概差不多30度(没有温度计),OpenWRT待机55度左右,跑点东西就70多度,烫手,还是需要加个小风扇的。
所以如果能接受G31机箱的外形,并且室温不是很高的话还是建议买G31的机箱,可以省掉一个小风扇的钱。
五、补充
5.1 Windows Server 2022安装i225v3 驱动
PVE下直通核显暂时还无解,另一个办法是将windows(server)直接装在物理机上,用hyper-v虚拟机。可是我安装完windows server怎么装不上网卡的驱动(windows可以)。捣鼓半天,发现这么整可以:打开设备管理器-其他设备-以太网控制器-右击选择更新驱动程序-浏览我的电脑以查找驱动程序-让我从计算机上的可用驱动程序列表中选择-网络适配器-Intel-Intel(R) Ethernet Controller(3) I225-IT
除了IT还有LM、LMvP两个后缀的,不清楚有什么区别,我试了一下都可以用。
5.2 pve下温度监控
安装 lm-sensors 监控CPU温度,hddtemp 监控硬盘温度
# 安装
apt install lm-sensors hddtemp -y
# 查看
sensors
hddtemp /dev/sda
可以用tmux显示,先安装apt install tmux
,再写一个tmux默认执行的脚本,vim ~/.tmux.conf
new -s temp
split-window -v
select-pane -t 0
split-window -h
split-window -v -p 25
send-keys -t temp:0.1 "watch -n 10 sensors" Enter
send-keys -t temp:0.2 "watch -n 10 hddtemp /dev/sda" Enter
select-pane -t 3
最后执行tmux a
。
5.3 pve删除local-lvm分区
默认pve会生成两个存储区域local
和local-lvm
不知道有什么用,但是很碍眼。可以用以下的命令删除local-lvm
并把腾出来的空间分配给local
lvremove pve/data
lvextend -l +100%FREE -r pve/root
然后到数据中心>存储删掉local-lvm
。这样就没有LVM-Thin的这种存储,好像就不能存快照了,自己取舍。而且如果改了,后面img文件转换成OpenWRT系统盘的命令也要做相应更改。
5.4 pve添加硬盘
错误记录
- 不知道咋的PVE的web管理页面登录不了,提示”登录失败,请重试“
解决办法: 清除浏览器缓存就可以了。
参考
- PVE
- 分区调整
- 换源
- 无有效订阅弹窗
- vfio
- 直通
- 安装OpenWRT
- PVE修改ip
- Android TV 9 x86
- 硬盘直通
- 硬解