前言:目前NAS各种玩法网上资料都非常多了,本篇仅对一些配置中的注意点和优化措施进行详细说明,其它流程不再赘述,具体使用设备请参阅全闪NAS搭建日记一(硬件篇)。
为什么选择PVE(Proxmox VE)
目前自建NAS可选的宿主机系统有ESXi、PVE、unRaid,ESXi非原生linux,扩展性肯定差直接放弃,unRaid注重磁盘阵列和扩容,然而读写速度太慢,扩容还得花钱订阅,注定不适合全闪。
PVE其实就是debian+kvm,作为企业级虚拟化平台,具有完全的扩展性同时还可以多台组成集群实现高可用,而且除了订阅更新所有功能完全免费,还支持LXC容器,这还不够?PVE还自带中文界面!
作为系统来说,有什么问题是linux下不能解决的?在PVE中遇到问题,你不光能在PVE论坛中找到答案,在linux论坛中也会有类似参考。总之如果你是一位熟悉linux的IT工作者,使用PVE再适合不过。
什么是LXC(Linux Containers)
初入NAS,你一定会看到各种硬盘直通的文章,深怕机械硬盘那点速度被消耗,感觉非常头大,别怕LXC能解救你。
KVM应该都能理解,就是运行在宿主机中完全隔离的虚拟操作系统,基于硬件支持,而LXC则是基于linux操作系统,与宿主机共用内核,通过独立的用户空间实现轻量级的隔离,与docker类似也是一种容器技术。通俗点说,kvm相当于windows上的VMware,lxc则是在windows中新建了一个账户。
所以使用LXC部署NAS应用,是不需要考虑什么设备直通的,对于全闪性能损耗可以忽略不计。
PVE安装
安装参考了这两位大佬的文章,做下简单整合梳理:
2024年最牛家用NAS+虚拟化方案,极低功耗
最新保姆级PVE8安装教程!虚拟机PCIE设备及SR-IOV核显直通
镜像刻录
中科大源下载地址:https://mirrors.ustc.edu.cn/proxmox/iso/proxmox-ve_8.2-1.iso
rufus烧录工具下载:https://github.com/pbatard/rufus/releases/download/v4.4/rufus-4.4.exe
准备一个8G以上U盘,使用rufus工具将PVE安装镜像刻录到U盘中。
系统安装选项
- 启动前先规划好网络和网口,将用于PVE管理端口的网口接入到家庭网络中
- 进入bios选择刚才的U盘作为启动盘,即可进入PVE安装界面,默认就是可视化界面
- 指定系统使用的磁盘为我们的m.2固态,注意安装时这块盘将被格式化
- 设定自己的密码和管理邮箱
- 设定时区和网络配置,如果我们已接入网络这里应该会自动设置,只需修改Hostname和IP为我们想要的即可,比如我设置为
192.168.1.254 - 一路确认后等待安装完毕即可
系统初始化
安装完成后我们就可以通过刚才设置的IP访问PVE管理后台了,访问地址是https://{ip}:8006,比如我的是https://192.168.1.254:8006
以下操作均可以通过一些脚本一键操作,比如pve_source,不过初次建议手动操作,遇到兼容性问题可以自己调试,但是非常建议先用脚本固定网卡名称,避免后续由于pcie变动导致网卡名称不一致
wget -q -O /root/pve_source.tar.gz 'https://bbs.x86pi.cn/file/topic/2023-11-28/file/01ac88d7d2b840cb88c15cb5e19d4305b2.gz' && tar zxvf /root/pve_source.tar.gz && /root/./pve_source
1. 更换PVE软件源,去除订阅弹窗等
# 删除系统自带的商用源
rm -f /etc/apt/source.list.d/*.list
# pve免费源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
# ceph免费源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list
# LXC容器仓库
sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.ustc.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm
wget -O /var/lib/pve-manager/apl-info/mirrors.ustc.edu.cn https://mirrors.ustc.edu.cn/proxmox/images/aplinfo-pve-7.dat
systemctl restart pvedaemon
# Debian系统仓
sed -i.bak "s#ftp.debian.org/debian#mirrors.ustc.edu.cn/debian#g" /etc/apt/sources.list
sed -i "s#security.debian.org#mirrors.ustc.edu.cn/debian-security#g" /etc/apt/sources.list
# 更新全部仓库的缓存,如果这一步失败了,请检查外部网络是否连通。
apt update
# 更新系统包
apt upgrade -y
#去除订阅弹窗(清除浏览器缓存后生效:Ctrl+F5)
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
2. 调整系统分区
默认安装后会产生三个逻辑卷
pve/root,100GB,系统盘安装位置,并可以存放iso镜像
pve/data,900GB,可以存放系统镜像和lxc容器
pve/swap,90GB,内存缓存分区,不动。
我们需要把系统盘扩容一些,你也可以选择直接用脚本把data盘完全删除合并到root中
# 删除pve/data,扩容root后重建data
lvremove pve/data
lvextend -L +300GB -r pve/root
lvcreate -l +100%FREE -n data pve
# 对pve/data进行分区和挂载
mkfs.ext4 /dev/pve/data
vim /etc/fstab
/dev/pve/data /mnt/data ext4 defaults 0 0
# 挂载
systemctl daemon-reload
mount -a
然后在pve控制台中重新添加为volumes目录

3. 临时配置科学上网
由于后续步骤需要访问github等外网资源,因此最好先开启pve的科学上网,否则会很慢。
这里推荐使用v2raya快速开启:
#安装xray内核,如果服务端是v2ray请自行搜索安装v2ray内核
#https://github.com/XTLS/Xray-install
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install-geodata
#测试安装成功
command -v xray
#安装v2raya
wget -qO - https://apt.v2raya.org/key/public-key.asc | sudo tee /etc/apt/keyrings/v2raya.asc
echo "deb [signed-by=/etc/apt/keyrings/v2raya.asc] https://apt.v2raya.org/ v2raya main" | sudo tee /etc/apt/sources.list.d/v2raya.list
sudo apt update
sudo apt install v2raya xray ## 也可以使用 v2ray 包
#启动
sudo systemctl start v2raya.service
#设置自启
sudo systemctl enable v2raya.service
然后浏览器访问pve的2017端口即可打开v2raya控制台进行配置,具体参考:https://v2raya.org/docs/prologue/quick-start/
最后在pve中测试curl www.google.com.hk
虚拟机安装
LXC虚拟机
下载Debian-12模版,前文中已经替换过LXC仓库源了,可以直接下载,如果还是很慢也可以自行下载后上传:https://mirrors.ustc.edu.cn/debian-cd/current/amd64/iso-dvd/

后续安装配置参考这篇:https://post.smzdm.com/p/ao9z4k87/
windows虚拟机
参考这篇已经很详细了:https://blog.csdn.net/u012374381/article/details/130567910
注意如果是1G以上网卡,网卡设备应该选择虚拟网卡,否则网速只能达到千兆

OpenWRT旁路由
由于我们多个虚拟机都会用到科学上网,一个个配置很麻烦,而且后续做NAT和DDNS等用op更方便,因此推荐部署一个旁路由。
-
编译OpenWRT固件:https://v2rayssr.com/openwrtimg.html
或者也可以直接用我编译的,要用到的功能都有了(FRP,SSR+,DDNS,KMS)
链接: 提取码: tjm9 -
上传固件并新建虚拟机,配置2C2G就够了
-
配置好SSR,选择GFW列表模式
-
将其他虚拟机的网关和DNS都改为旁路由的IP,即可科学上网
硬件直通
如前文所说,我们不需要硬盘直通,唯一需要直通的就是核显了,这里我们通过开启SR-IOV虚拟化出多个核显,来直通给任意的多个虚拟机,SR-IOV需CPU支持,可以在intel官网自行确认。
对直通原理感兴趣的可以参阅:https://blog.csdn.net/Rong_Toa/article/details/110843839
在直通前请先测试确认自己的硬件均能够正常使用,否则会像我一样,直通失败排查很久才发现是硬件问题T_T
注意以下内容细节参数与其他博客可能有所不同,基于我的硬件进行适配调整
1. 修改启动引导和内核模块
分别开启IOMMU(内存虚拟地址映射)和VFIO(用户态硬件驱动)
#IOMMU: intel_iommu=on iommu=pt
#i915.enable_guc=3 i915.max_vfs=7 用于核显SR-IOV
#pcie_aspm=off 关闭系统自动调整PCIE拆分卡电源策略,因为拆分卡不支持调整会一直输出报错(Unable to change power state from D3cold to D0)
#pcie_acs_override=downstream,multifunction 默认情况下PCIE拆分卡上的所有接口都属于同一个IOMMU GROUP,如果需要将每块硬盘划分给不同的虚拟机,则需要该配置,将控制权下放到PCIE内部
sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7 pcie_aspm=off pcie_acs_override=downstream,multifunction"' /etc/default/grub
update-grub
#VFIO:注意很多博客中添加的vfio_virqfd在新内核中已废弃无需配置
echo -e "vfio\nvfio_iommu_type1\nvfio_pci" | tee -a /etc/modules
update-initramfs -u -k all
#重启后进入BIOS设置
reboot
2. 修改BIOS设置
(排查可参考官方说明:https://pve.proxmox.com/wiki/PCI_Passthrough#BIOS_options)
- CPU设置:开启Intel Virtualization Technology(VT-x)和VT-d
- PCIE设置:开启IOMMU,开启SR-IOV,
Above 4G Decode,Resizable BAR - 其余配置均保持默认即可。
3. 开启核显SR-IOV
apt update && apt install git pve-headers mokutil sysfsutils -y
KERNEL=$(uname -r); KERNEL=${KERNEL%-pve}
cd ~
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd ~/i915-sriov-dkms
cp -a ~/i915-sriov-dkms/dkms.conf{,.bak}
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf
sed -i 's/"@PKGVER@"/"'"$KERNEL"'"/g' ~/i915-sriov-dkms/dkms.conf
cat ~/i915-sriov-dkms/dkms.conf
apt install --reinstall dkms -y
dkms add .
cd /usr/src/i915-sriov-dkms-$KERNEL
dkms status
dkms install -m i915-sriov-dkms -v $KERNEL -k $(uname -r) --force -j 1
dkms status # 回显显示:i915-sriov-dkms/6.5.13-5, 6.5.13-5-pve, x86_64: installed -- 成功安装
lspci | grep VGA # 请记录当前的核显ID,修改下行的ID后执行下面的代码。
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf ##你想虚拟化出几个就改成几,7个是上限
reboot
重启后检测是否成功lspci | grep VGA,如果显示多个就说明成功
root@pve:~# lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 770] (rev 0c)
00:02.1 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 770] (rev 0c)
00:02.2 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 770] (rev 0c)
00:02.3 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 770] (rev 0c)
00:02.4 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 770] (rev 0c)
00:02.5 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 770] (rev 0c)
00:02.6 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 770] (rev 0c)
00:02.7 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 770] (rev 0c)
4. 添加直通核显
注意:不要直通00:02.0,这个是根设备

5. 核显驱动安装
-
在添加核显时先不要勾选主GPU,因为此时还不能使用
-
进入win10,在设备管理中应该能看到有一个带感叹号的未知设备(我这里是已安装的效果)
-
浏览器中到intel官网下载驱动安装程序并安装:https://dsadata.intel.com/installer/weberror
-
按照intel驱动助手的指引安装核显驱动,完成后重启查看核显是否识别
-
回到虚拟机硬件选项,将核显设备勾选为主GPU,然后将显示修改为标准VGA,这样就实现既禁用默认的虚拟显卡,同时在pve后台中也可以访问win10桌面
-
额外的,我们还可以把pve用不上的主板自带无线网卡和蓝牙直通给win10,做到充分利用哈哈
无线网卡:
蓝牙:先在pve中查看蓝牙设备ID,然后给win10添加usb设备8087:0033root@pve:~# lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 0cf2:7750 ENE Technology, Inc. 6K7750 Bus 001 Device 004: ID 8087:0033 Intel Corp. AX211 Bluetooth Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub最后也是用刚才intel程序安装驱动即可使用wifi和蓝牙功能
结语
PVE整个的安装还是比较复杂的,需要多花点时间耐心调试,下一篇将介绍我目前对这台NAS的使用方式,每个软件的部署和使用,敬请期待。




