前情提要:

家里云这种东西其实也可以称为一种私人服务器,因为它是依靠着家庭宽带和充当服务器的主机(电脑)来运行的

对我自己来说,从最开始的在NAS上运行docker容器,因为功能太少而更换了实体机装Linux,又因为东西太多而不得不迁移到虚拟化平台上,相比于VMware ESXI,PVE对我们来说安装比较方便(因为驱动导致的兼容性问题更少)

PVE全称“Proxmox Virtual Environment”,是基于Debian的一个虚拟化平台

以下文章内引用了多篇我自己在安装时参考的文章,如有侵权请联系我删除

首先是硬件选择

我自己用过的PVE版本,分别是:

  • 系统版本 8.1.4(内核Linux 6.5.13-1-pve)

  • 系统版本 8.2.2(内核Linux 6.8.12-1-pve)

  • 系统版本 8.3.5(内核Linux 6.8.12-8-pve) - SRIOV 还未适配(2025.03.27)

PVE官方建议的系统要求:

推荐硬件

带有 Intel VT/AMD-V CPU 标志的 Intel EMT64 或 AMD64。

内存,至少 2 GB,用于操作系统和 Proxmox VE 服务。以及为客人指定的内存。对于 Ceph 或 ZFS,需要额外的内存,每使用存储大约 1 GB 内存。

快速冗余存储,SSD 磁盘效果最佳。

操作系统存储:具有电池保护写入缓存 (“BBU”) 的硬件 RAID 或具有 ZFS 和 SSD 缓存的非 RAID。

VM 存储:对于本地存储,请使用具有电池供电写入缓存 (BBU) 的硬件 RAID 或 ZFS 的非 RAID。ZFS 和 Ceph 都与硬件 RAID 控制器不兼容。共享和分布式存储也是可能的。

冗余 Gbit NIC,根据首选存储技术和集群设置的其他 NIC – 还支持 10 Gbit 和更高。

对于 PCI(e) 直通,需要带有 VV/AMD-D CPU 标志的 CPU。

最低硬件要求(仅用于测试)

CPU:64 位(Intel EMT64 或 AMD64)

支持 Intel VT/AMD-V 的 CPU/主板(用于 KVM 完全虚拟化支持)

最低 1 GB RAM

硬盘

1 个 NIC

系统的安装:

在这里我是用的官方提供的安装镜像进行的安装

你也可以在Debian上自行安装PVE,参考:https://pve.proxmox.com/wiki/Installation

准备工作

  1. 大于 2G 的 U 盘(存放 Proxmox Virtual Environment ISO 镜像)

  2. 刻录工具( 推荐 balenaEtcher ) 点击下载

  3. Proxmox Virtual Environment ISO 镜像 点击下载

  4. SSH 登录工具 FinalShell(支持 MacOS、Windows)点击下载

安装步骤

首先下载并准备好相应的工具

  1. 将下载好的PVE镜像写入U盘(我自己用的是Rufus,需要的话可以自行下载

找到插入的U盘,选择下载好的镜像

屏幕截图 2024-09-08 135146.png

中间会跳一个弹窗,直接确定就行

屏幕截图 2024-09-08 135139.png

完成以后是这样

屏幕截图 2024-09-08 135153.png

  1. 写盘完成后,插入待安装的主机

  2. 在BIOS中将U盘设置为第一启动项,同时开启 VT-d 和 SR-IOV(如果有的话),保存并启动机器,然后进入安装界面(记得装上显示器和键鼠)

  3. 安装过程

选择第一个Install Proxmox VE (Graphical),按回车

65f268ade00826177.png_e1080.webp

开始跑代码,要的时间看机器配置,这个时候什么都不用动,跑完了会出现使用协议页面,点击 I agree(我同意)

65f268add0af86177.png_e1080.webp

选择pve安装的硬盘,然后继续点击Next(下一步)

65f268ad45af46177.png_e1080.webp

设置国家、时区、键盘布局,然后点击Next(下一步)

65f268ada340b6177.png_e1080.webp

设置密码、和邮箱,继续点击Next(下一步)

65f268adabb426177.png_e1080.webp

设置网卡、域(保持默认即可)、PVE管理地址、网关、DNS等,继续点击Next(下一步)

65f268ad60d686177.png_e1080.webp

在配置详情中检查配置信息是否有误,没有问题点击Install(安装)

65f268ad8fb786177.png_e1080.webp

移除U盘,然后点击Reboot重启机器

65f268adb54cd6177.png_e1080.webp

到这里PVE就安装完了,然后就是一堆的优化设置

PVE的优化设置

优化设置

设置直通及换源

已经测试的支持内核范围 6.5.13-3-pve ~ 6.8.12-1-pve ,具体看项目支持情况(2025.03.27)

去除 PVE 的登录弹窗

Proxmox VE 6.3 / 6.4 / 7.0 / 7.1 / 7.2 / 7.3 / 7.4 / 8.0 / 8.1 去掉未订阅的提示

注意:去除订阅弹窗提醒以后,必须清除浏览器的缓存数据(清理浏览器缓存)后生效

sed -i_orig "s/data.status === 'Active'/true/g" /usr/share/pve-manager/js/pvemanagerlib.js
sed -i_orig "s/if (res === null || res === undefined || \!res || res/if(/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
sed -i_orig "s/.data.status.toLowerCase() !== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy

更换 PVE 源

非必须

wget https://v2rayssr.com/tool/yuan.sh -O yuan.sh && chmod +x yuan.sh && ./yuan.sh

直通 PCIe 设备

若你是想开启核显的 SR-IOV (需要支持的 CPU ),请使用如下命令直通 PCIE 设备:

i915.max_vfs=3 这里的 3 是需要虚拟的核显数量,需要和下面的数量相同:

sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream i915.enable_guc=3 i915.max_vfs=3"' /etc/default/grub
echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" | tee -a /etc/modules
update-grub
update-initramfs -u -k all
reboot

若你的 CPU 不支持 SR-IOV,或是不想开启 SR-IOV,请使用如下命令直通 PCIE 设备:

sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream"' /etc/default/grub
echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" | tee -a /etc/modules
update-grub
update-initramfs -u -k all
reboot

检验 PCIE 直通结果

Shell 窗口输入 lspci ,回显如下(里面包含你所有的 PCIe 设备列表)

屏幕截图 2024-09-11 133643.png

开启核显的 SR-IOV

什么是SR-IOV?这里引用 Oracle 的说明 SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到 I/O 设备。 简单来说,允许将一个PCIe设备虚拟化成多个设备,且每个虚拟化出来的设备都可以获得与物理设备相近的性能 如果显卡开启SR-IOV就可以给多台虚拟机同时配上显卡 网卡之类的设备也支持SR-IOV,但是不如显卡这么有用(毕竟虚拟化出来的网卡性能也没差多少,还不需要自己安装驱动)

在以下的 SR - IOV 设置中,请开启 PVE 的外网访问(需要访问 GitHub )

具体命令如下,如果实在搞不明白,可以看这个视频

#2024-09-04 支持内核 6.8

#Proxmox VE 主机推荐内核范围:proxmox-kernel-6.5.13-3-pve ~ 6.8.12-1-pve

uname -r       # 已经测试的支持内核范围 6.5.13-3-pve ~ 6.8.12-1-pve ,具体看项目支持情况 

# 更换源(可选,但是推荐更换)
wget https://v2rayssr.com/tool/yuan.sh -O yuan.sh && chmod +x yuan.sh && ./yuan.sh

# 更新源
apt update -y

# 更新内核,若刚才 uname -r 的内核版本过小,可以更新内核!更新后,内核大于 6.8.12-1 的情况还未尝试
apt upgrade -y   # 更新内核以后,必须重新启动!(大的更新,都是推荐重启)
reboot

# 更新到最新,但是前提内核不能超过GitHub项目的最新版本(更多内核没进行测试而已)。6.8.12-1
# 后续避免升级内核
uname -r       # 已经测试的支持内核范围 6.5.13-3-pve ~ 6.8.12-1-pve ,具体看项目支持情况 

apt install build-* dkms git sysfsutils -y
apt install proxmox-headers-$(uname -r) proxmox-kernel-$(uname -r)
cd ~
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd ~/i915-sriov-dkms
dkms add .
dkms install -m i915-sriov-dkms -v $(cat VERSION) --force
lspci | grep VGA    # 请记录当前的核显ID,修改下行的ID后执行下面的代码。

# sriov_numvfs = 3 这里的 3 是需要虚拟的核显数量,需要和上面的数量相同
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 3" > /etc/sysfs.conf
reboot

重启之后,在 SHELL 窗口输入 lspci | grep VGA ,回显如下所示,SR-IOV 开启成功,成功虚拟出了 7 个核显。

屏幕截图 2024-09-11 134132.png

参考文章https://bozai.me/pve.html

功能性设置(可选)

开启IPv6

PVE 本身也是默认开始了 IPv6 配置和转发的,我们只需要使用如下命令自动配置 SLAAC IPv6 地址即可:

echo "net.ipv6.conf.all.accept_ra=2" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.accept_ra=2" >> /etc/sysctl.conf
echo "net.ipv6.conf.vmbr0.accept_ra=2" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.autoconf=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.autoconf=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.vmbr0.autoconf=1" >> /etc/sysctl.conf

然后重启 PVE 后即可看到我们的 IPv6 公网地址了:

ip a|grep inet6

16781064039175.png

安装 ddns-go

因为 DDNS-GO 是目前比较好用的 DDNS 解析工具,考虑到 PVE 底层就是 Debian,我们使用 Docker 来部署 DDNS-GO 会更加简单方便一点,

PVE 安装 Docker 也比较简单方便,使用官方脚本即可一键安装了(注意,这个在你没换源的情况下大概率是用不了的,请自备环境):

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

Docker 安装 DDNS-GO

安装好 Docker 的话,使用如下命令即可部署搭建出 DDNS-GO 服务:

docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go

使用方法请自行搜索啦

参考文章https://pve.sqlsec.com/8/3/

额外的状态显示

我自己用的是恩山找来的的一键脚本

(curl -Lf -o /tmp/temp.sh https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh || curl -Lf -o /tmp/temp.sh https://mirror.ghproxy.com/https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh) && chmod +x /tmp/temp.sh && /tmp/temp.sh remod

运行完成后效果如图

屏幕截图 2024-09-08 142316.png

删除 local-lvm 并合并空间至 local

如果你觉得local-lvm 和 lvm 两个分区容易造成空间浪费,可以合并成一个

  1. 备份虚拟机

  2. 删除虚拟机

  3. 删除local-lvm

命令:

lvremove pve/data
  1. 把local-lvm空间分配给Local

命令:

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

resize2fs /dev/mapper/pve-root
  1. 删除local-lvm

登陆网页管理页面,路径:数据中心 - 存储 - 删除local-lvm

  1. 编辑local,内容里添加“磁盘映像和容器”,保存

  2. 恢复虚拟机

参考文章https://www.cnblogs.com/neza/p/17598392.html

设置IP变更自动重启

这个是自己糊的代码,直接看 GitHub 页面吧

项目地址:GitHub - LinineTy/New-IP-restart

如果你无法访问 GitHub 或访问比较困难,可以在下面直接下载文件包,参考里面的 README.md 使用

文件包:NewIP-Reboot.zip

暂时就这些,到时候如果有新东西的话再补上

文章作者: yixya
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 linine的茶歇室
文章 软件 代码
喜欢就支持一下吧