全闪NAS搭建日记二(系统篇)
本文最后更新于 632 天前,其中的信息可能已经有所发展或是发生改变。

前言:目前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盘中。

系统安装选项

  1. 启动前先规划好网络和网口,将用于PVE管理端口的网口接入到家庭网络中
  2. 进入bios选择刚才的U盘作为启动盘,即可进入PVE安装界面,默认就是可视化界面
  3. 指定系统使用的磁盘为我们的m.2固态,注意安装时这块盘将被格式化
  4. 设定自己的密码和管理邮箱
  5. 设定时区和网络配置,如果我们已接入网络这里应该会自动设置,只需修改Hostname和IP为我们想要的即可,比如我设置为192.168.1.254
  6. 一路确认后等待安装完毕即可

系统初始化

安装完成后我们就可以通过刚才设置的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更方便,因此推荐部署一个旁路由。

  1. 编译OpenWRT固件:https://v2rayssr.com/openwrtimg.html

    或者也可以直接用我编译的,要用到的功能都有了(FRP,SSR+,DDNS,KMS)
    链接: 提取码: tjm9

  2. 上传固件并新建虚拟机,配置2C2G就够了

  3. 配置好SSR,选择GFW列表模式

  4. 将其他虚拟机的网关和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 DecodeResizable 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. 核显驱动安装

  1. 在添加核显时先不要勾选主GPU,因为此时还不能使用

  2. 进入win10,在设备管理中应该能看到有一个带感叹号的未知设备(我这里是已安装的效果)

  3. 浏览器中到intel官网下载驱动安装程序并安装:https://dsadata.intel.com/installer/weberror

  4. 按照intel驱动助手的指引安装核显驱动,完成后重启查看核显是否识别

  5. 回到虚拟机硬件选项,将核显设备勾选为主GPU,然后将显示修改为标准VGA,这样就实现既禁用默认的虚拟显卡,同时在pve后台中也可以访问win10桌面

  6. 额外的,我们还可以把pve用不上的主板自带无线网卡和蓝牙直通给win10,做到充分利用哈哈
    无线网卡:


    蓝牙:先在pve中查看蓝牙设备ID,然后给win10添加usb设备8087:0033

    root@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的使用方式,每个软件的部署和使用,敬请期待。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇