最近自己组了一个服务器,准备用来做NAS,顺便研究机器学习等。由于是学习研究使用,硬件配置不高,属于是能用就行,硬盘也用上了服务器3万小时基本全新拆机的SAS盘。
为了服务器能够物尽其用,实现更多功能,选择了用PVE作为底层虚拟机系统,通过虚拟机的方式安装NAS系统等。期间涉及到了硬件直通,因为大家的设备型号不尽相同,查阅到网络上的教程只能作为参考,也因此踩了不少坑。
本文只作为自己踩坑经历的记录,可以作为参考,切不可盲目抄作业。
设备方案
分类 | 型号 | 备注 |
---|---|---|
CPU | Intel i3-8100 | |
主板 | 华擎 Z370-Pro4 | |
内存 | 金百达 DDR4-3200 16g * 2 | |
SSD | 阿斯加特 256G | 多年前买的闲置的 |
阵列卡 | LSI 3008 | SAS 12Gbps IT模式 |
硬盘 | 希捷SAS盘 (6T) * 2 | |
显卡 | NVIDIA RTX 2060 super (微星万图师) | 闲置显卡 |
机箱 | 见方L8 | |
电源 | 安钛克 550W | 自用8年基本全新,总比楼下up主几十块钱的炸弹强 |
硬件方案来源,
转码,万兆,8盘全部满足!不到千元装台全新机箱的“高性能”NAS (bilibili: 司波图)
开始踩坑
PVE安装
这块没啥好说的,搞个U盘直接装就完事了。
安装完成后可以配置国内源:
# 使用清华的镜像源。修改文件的同时, 会创建一个.bak后缀的备份文件
sed -i.bak 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
# 替换企业源
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
配置核显直通
基本知识
首先一个非常关键的信息,就是要确定硬件支持的是哪种方式的虚拟化。
目前英特尔核显支持两种虚拟化方式
- Intel GVT-g (Graphics Virtualization Technology)
- SR-IOV (Single Root I/O Virtualization)
Intel核显从12代开始,支持SR-IOV,如果CPU是12代以下,则支持的是GVT-g。如果配置不正确,虚拟机将无法启动。
BIOS设置
检查主板 BIOS, 必须开启 VT-D 虚拟化。各家主板的配置方法不一样,具体请参考主板说明书。
PVE安装源配置
然后,无论你是使用SR-IOV还是GVT-g,都得先装个驱动。建议直接使用安装包(需要注意是否适配你的PVE内核版本)
下面开始安装pve的内核头文件,先找到/etc/apt/sources.list
,增加以下apt源地址。
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
注意,
bookworm
是PVE 8.x的系统代号,如果是其他版本请自行替换它。
安装内核头文件
apt update
apt install pve-kernel-$(uname -r)
proxmox-boot-tool kernel pin $(uname -r)
apt install pve-headers-$(uname -r)
apt install build-essential git dkms sysfsutils flex bison -y
驱动安装
如果一切顺利,开始安装驱动吧。这里使用的是i915-sriov-dkms
# 安装DKMS驱动包
dpkg -i i915-sriov-dkms_2025.02.03_amd64.deb
# 验证驱动状态
dkms status | grep i915-sriov
驱动安装成功后,配置GURB。由于我的是8代CPU,故使用的是GVT-g方式(12代以前CPU)直通。
打开/etc/default/grub
,修改如下内容。
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1 initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction video=efifb:off,vesafb:off"
SR-IOV 方式 (12代及以后CPU)
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_guc=3 i915.max_vfs=3"
i915.max_vfs
为虚拟核显数量,目前搜到的资料里边有设置3或者7的,自行判断吧。
以上各个设置项的具体含义如下(AI生成)
intel_iommu=on # 启用IOMMU iommu=pt # 仅对直通设备启用IOMMU i915.enable_gvt=1 # 启用GVT-g虚拟化 initcall_blacklist=sysfb_init # 禁用帧缓冲初始化 pcie_acs_override=downstream,multifunction # PCIe拓扑覆盖 video=efifb:off,vesafb:off" # 禁用宿主机显卡占用
⚠️安全警示
修改GRUB参数前请做好备份,错误配置可能导致系统无法启动
⚠️应急恢复方案
若配置错误导致无法启动:
- 在GRUB界面按
e
进入编辑模式- 删除
intel_iommu=on
等新增参数- 按
Ctrl+X
以默认参数启动
安装完成后,以下代码应用设置,并重启PVE让设置生效。
update-grub
update-initramfs -u
reboot
使用命令可以检查IOMMU是否正确启用。
dmesg | grep -i 'IOMMU enabled' # 确认IOMMU状态
lsmod | grep vfio # 检查VFIO模块加载
配置驱动屏蔽
修改/etc/modules
文件,加入
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
kvmgt
进入/etc/modprobe.d
文件夹
- 创建
i915.conf
(已存在则修改)
options i915 enable_guc=0
- 创建(或修改)
kvm.conf
options kvm ignore_msrs=1
- 创建(或修改)
pve-blacklist.conf
blacklist i915
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
# P.S. 如果要直通NVIDIA显卡的话再加下面几个
blacklist nvidia
blacklist nvidiafb
blacklist nouveau
SR-IOV 方式 (12代及以后CPU,本人未验证这个方式,只是提供一种思路)
如果是需要拆分核显,则需要增加以下操作。其中
sriov_numvfs
的数量需要和上一步提到的i915.max_vfs
值一致。echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 3" > /etc/sysfs.conf
配置成功后通过
lspci|grep 00:02
可以看到多个虚拟核显。其中
00:02.0
是显卡的ID,如果不确定可以通过lspci
查看实际的ID更新配置,重启PVE
update-initramfs -u -k all reboot
自此,宿主机上的配置就完成了。
虚拟机配置
NAS操作系统我选择了不折腾黑某,直接用飞牛OS,最近B站上吹的挺多的,实际用起来感觉也还不错,基本上能满足我的日常需求。
先创建好虚拟机,参数可以按以下的来设置:
踩坑记录
- 飞牛官方文档里边,是不建议使用 OVMF 方式的,其实只是因为PVE 7.x 开始加入了TPM功能导致无法正常启动飞牛OS。在BIOS里边屏蔽掉就好了。具体方法是:
- 启动虚拟机,出现Proxmox画面时,按
ESC
键,进入BIOS。 - 依次选择
Device Manager
——Secure Boot Configuration
- 取消勾选
Attempt Secure Boot
,如下图 - 回到主页面,选择
reset
即可生效。 - 机型方面,部分文档提到使用
q35
,我使用默认的i440fx
也是可以的,这俩区别上就是添加PCI设备那边不能勾选PCI-E了。实际使用上没有发现不稳定的情况,具体的请以自己的机器为准吧。 - 处理器类别可以使用
host
方式虚拟化,据说是性能最好的一种
为虚拟机添加PCI设备,选择对应的设备ID,勾选所有功能
,点击确定添加即可。注意不要勾选主CPU
飞牛OS,启动!
自此,全部配置完成。启动虚拟机,安装飞牛OS,完成后可以查看CPU是否能正常工作
可以看到GPU被正常识别,可以在飞牛影视中开启对应的GPU加速。
后记
All-in-One 一时爽,All in boom 了更爽!
整套平台下来大概也就是花了2k左右(不包含旧设备再利用),待机功耗在70W-80W左右,7*24开机一个月大概也就是30来块钱电费。当然作为一台多功能机器,除了NAS,它更多是用来运行深度学习计算的服务器,如果不喜欢折腾或者是在意功耗的话,还是别玩DIY,老实买成品NAS,毕竟维护成本也是成本,品牌NAS的价值更多还是体现在服务质量上。
参考资料