8505处理器家庭组网PVE下iKuai、OpenWrt、CentOS、DSM、Windows等系统All In One实践记录

背景

在平日生活和工作中,家庭网络环境的管理和维护始终是一个重要但容易被忽视的问题。智能家居设备越来越多,手机电脑电视等设备不断增多,对于网络的需求越来越高,比如数据同步,路由管理,电视观看内网高清影院等,这些都需要一个稳定且强大的家庭网络环境来支持。

技术选型

在我开始进行家庭组网实践前,我对多种虚拟化解决方案进行了深度研究和对比。主要考虑了PVE (Proxmox Virtual Environment)、ESXi和Unraid这三种解决方案。以下是我对比的几个重点:

1. PVE (Proxmox Virtual Environment)

  • 开源和自由:PVE是完全开源的,用户可以自由地使用和修改。这是我选择PVE的主要原因之一,因为这意味着我可以更好地控制我自己的系统,并可以参考和学习社区中的众多资源。
  • 丰富的特性:PVE支持KVM/QEMU和LXC的虚拟化,提供了一个方便的Web界面来管理虚拟机和容器。它还支持硬件直通,可以使虚拟机直接访问硬件资源,对我来说非常重要。
  • 稳定性:PVE被广泛认为是非常稳定的系统,这对我来说很重要,因为我需要我的家庭网络环境始终保持在线。

2. ESXi

  • 成熟和广泛使用:ESXi是VMware公司的产品,有很多大公司在使用,因此有很高的稳定性和可靠性。
  • 企业级特性:ESXi提供了许多企业级的特性,如vMotion、High Availability等。
  • 商业软件:虽然有免费版本,但是许多高级特性需要购买许可证才能使用,而且它的封闭性限制了一些自定义和修改。

3. Unraid

  • 易用性:Unraid以其用户友好的界面和简单的设置而受到许多家庭用户的喜爱。
  • 弹性存储:Unraid的最大特点是它的弹性存储功能,可以很容易地添加或替换硬盘。
  • 插件系统:Unraid有一个活跃的插件社区,可以轻松地添加新功能。

经过对比,我选择了PVE,主要是因为它的开源性,稳定性、使用者广泛和配置简单的特性,这些特性正好满足了我对家庭网络环境的需求。

实现过程

PVE安装

首先,我在8505小主机上安装了PVE,这样我就可以在同一台硬件上运行多个操作系统。
首先,我们需要下载PVE的ISO镜像,然后将镜像放入Ventoy数据分区中。重启小主机从这个iso启动。

安装注意事项

  • 管理网口尽量选择第一或者最后一个。比较好分辨
  • hostname 这里可以随意填、装好后也可以修改
  • ip 地址是pve安装好后用于进入后台服务的 ip
  • 网关填写同一网段的,比如 192.168.18.1,与你后面要配置的路由器DHCP网段一致
  • 这个 DNS 是在配置好 pve 后决定 pve 能否正确域名解析的关键,我们可用 8.8.8.8 或者 1.1.1.1

如果安装好后想修改这些配置,不用重装pve,ssh连接修改这些文件对应的地方即可

修改 IP 地址、网关以及管理网口
nano /etc/network/interfaces
auto lo
iface lo inet loopback
iface enp3s0 inet manual
auto vmbr0
iface vmbr0 inet static
        address 192.168.18.18/24 # 管理 ip
        gateway 192.168.18.1 # 网关
        bridge-ports enp3s0 # 管理网口, lspci | grep net 查看所有网口,或者看下方其他的
        bridge-stp off
        bridge-fd 0
iface enp4s0 inet manual
iface enp5s0 inet manual
iface enp6s0 inet manual
iface enp7s0 inet manual
iface enp8s0 inet manual
修改终端提示的 ip 和端口
nano /etc/issue
------------------------------------------------------------------------------

Welcome to the Proxmox Virtual Environment. Please use your web browser to 
configure this server - connect to:

  https://192.168.18.18:8006/

------------------------------------------------------------------------------
修改本地 hosts
nano /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.18.18 pve.vanjay.cn pve

# The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
修改 DNS
nano /etc/resolv.conf
root@pve:~# cat /etc/resolv.conf
search vanjay.cn
# nameserver 202.96.134.33
nameserver 114.114.114.114

硬件直通支持

在虚拟化环境中,硬件直通是一种非常重要的技术。它允许虚拟机直接访问物理硬件,从而大大提高了虚拟机的性能。对于那些需要高性能计算的应用(比如家庭网络环境中的路由器或NAS),硬件直通是非常必要的。

对于使用Intel CPU的主机,我们需要在GRUB的配置文件中添加 intel_iommu=on 参数来启用硬件直通。具体步骤如下:

  • 通过SSH连接到PVE主机。
  • 编辑GRUB的配置文件,nano /etc/default/grub
  • 找到GRUB_CMDLINE_LINUX_DEFAULT项,添加 intel_iommu=on
  • 保存并退出编辑器。
  • 更新GRUB,update-grub。
  • 重启PVE主机。

在此过程中,intel_iommu=on 的设置实质上告诉系统启用IOMMU,这是实现硬件直通的关键技术。

接下来,我们需要配置系统加载VFIO模块,VFIO模块可以让虚拟机直接访问并控制硬件。操作如下:

  • 编辑 /etc/module 文件。
  • 添加以下内容:
    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
  • 保存并退出编辑器。
  • 更新内核参数update-initramfs -k all -u
  • 重启PVE主机。

这里的VFIO模块,包括vfio,vfio_iommu_type1,vfio_pci,vfio_virqfd等,都是为了支持硬件直通的必要模块。他们在系统启动时被加载,使得PVE可以将特定的硬件资源直接分配给特定的虚拟机。

这样设置之后,PVE的硬件直通就配置成功了。我们可以在创建虚拟机时选择将硬件资源直通给虚拟机,从而提高虚拟机的性能。对于需要高性能的虚拟机,比如爱快路由器或黑群晖NAS,这是非常有帮助的。

如果你使用的是AMD的CPU,硬件直通的配置过程可能会有所不同,建议你自行搜索相关教程进行配置。

验证是否开启了 iommu

出现 IOMMU enabled 即已开启

root@pve:~# dmesg | grep -e DMAR -e IOMMU
[    0.033047] ACPI: DMAR 0x0000000032E6B000 000088 (v02 INTEL  EDK2     00000002      01000013)
[    0.033079] ACPI: Reserving DMAR table memory at [mem 0x32e6b000-0x32e6b087]
[    0.070806] DMAR: IOMMU enabled
[    0.134742] DMAR: Host address width 39
[    0.134742] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.134747] DMAR: dmar0: reg_base_addr fed90000 ver 4:0 cap 1c0000c40660462 ecap 29a00f0505e
[    0.134748] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.134751] DMAR: dmar1: reg_base_addr fed91000 ver 5:0 cap d2008c40660462 ecap f050da
[    0.134752] DMAR: RMRR base: 0x0000003c000000 end: 0x000000403fffff
[    0.134754] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.134755] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.134756] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.136337] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.364625] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics
[    0.456681] DMAR: No ATSR found
[    0.456682] DMAR: No SATC found
[    0.456683] DMAR: IOMMU feature fl1gp_support inconsistent
[    0.456684] DMAR: IOMMU feature pgsel_inv inconsistent
[    0.456684] DMAR: IOMMU feature nwfs inconsistent
[    0.456685] DMAR: IOMMU feature dit inconsistent
[    0.456686] DMAR: IOMMU feature sc_support inconsistent
[    0.456686] DMAR: IOMMU feature dev_iotlb_support inconsistent
[    0.456687] DMAR: dmar0: Using Queued invalidation
[    0.456689] DMAR: dmar1: Using Queued invalidation
[    0.458760] DMAR: Intel(R) Virtualization Technology for Directed I/O

更换源,不解释

先备份: mv /etc/apt/sources.list  /etc/apt/sources.list.bak
来一份修改:cp /etc/apt/sources.list.bak /etc/apt/sources.list 

sources.list 修改为
deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib

deb http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main

deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib

deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

NAS (黑群晖 DSM) 安装和配置

黑群晖安装比Hackintosh简直简单了几个数量级,在我看来,都用不上『Hack』这个词。在 pve 里安装 dsm 主要步骤如下,具体细节请自行谷歌:

  • 虚拟机下安装引导镜像不需要的三个参数去除
  • 开启硬件直通和分组IOMMU
  • 虚拟硬盘建立/ NVMe硬盘直通 / SATA硬盘直通 (可以用虚拟磁盘,但建议用另一个磁盘直通,分散风险)
  • 建立黑群晖虚拟机,引导选UEFl,机型 35。引导顺序设置、移除不需要的软盘和硬盘)
  • 获取黑群晖地址(路由器查看、群晖助手等)
  • 安装黑群晖,设置登录相关
  • 进入系统开启并建立 SMB / NFS 共享

相关命令

导入img:qm importdisk 102  /var/lib/vz/template/iso/DS918-7.0.1-42218_7.1.0-42661_update3.img local-lvm
查看磁盘:ls -al /dev/disk/by-id
为虚拟机设置直通硬盘:qm set 102 --sata1 /dev/disk/by-id/nvme-Samsung_SSD_980_1TB_S649NX0T144808H

其他系统服务安装

我在PVE上部署了iKuai和OpenWrt。iKuai用于主路由宽带拨号,OpenWrt主要用于旁路由实现墙外访问。我还部署了一个CentOS系统,用于运行其他服务,比如Nginx或者Haproxy等,以分散风险并增加应用的弹性。

另外,我还安装了Windows系统,这样我可以直接使用桌面系统连接电视,当需要的时候,电视就可以成为我的显示器。

爱快网络配置和服务部署

爱快软路由的配置需要根据具体的网络环境和需求来设定。在我的案例中,我选择了桥接模式,因此运营商的光猫会WAN口进入8505主机。主机的eth0口用作pve维护通道口,剩下五个口都直通给爱快,一个用于wan口,剩余四个用链路桥接给其他设备使用。

注意事项

  • PVE的设置:PVE的硬件直通是重要的一环,需要保证虚拟机能直接访问硬件
  • PVE的硬件直通:PVE的硬件直通功能是实现虚拟化的关键。通过硬件直通,虚拟机能够直接访问到硬件资源,比如网卡,硬盘等。这样我们就可以在一个主机上部署多个虚拟机,并且每个虚拟机都能够像真正的独立的计算机一样运行。
  • iKuai网口、DHCP、网段的设置:iKuai的设置需要根据实际的网络环境和需求来进行。在我的案例中,我选择了桥接模式,因此运营商的光猫会WAN口进入8505主机。主机的eth0口用作pve维护通道口,剩下五个口都直通给爱快,一个用于wan口,剩余四个用链路桥接给其他设备使用。

附录

导入 gz 包

./img2kvm istoreos-21.02.3-2022092019-x86-64-squashfs-combined-efi.img.gz 105

OpenWrt 换源

先备份: mv /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.bak
来一份修改:cp /etc/opkg/distfeeds.conf.bak /etc/opkg/distfeeds.conf

distfeeds.conf 修改为
src/gz openwrt_core https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/targets/rockchip/armv8/packages
src/gz openwrt_base https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_generic/base
src/gz openwrt_luci https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_generic/luci
src/gz openwrt_packages https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_generic/packages
src/gz openwrt_routing https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_generic/routing
src/gz openwrt_telephony https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_generic/telephony

效果展示

pve管理界面

爱快管理界面

群晖桌面

其他服务,比如ChatGPT、kodbox、博客

总结

整个家庭组网的实践中,虚拟化技术以及PVE的硬件直通展示了很大的魅力。它们让我在一台8505小主机上同时运行了爱快、OpenWrt、CentOS、黑群晖以及Windows系统,满足了我家庭网络环境的多样化需求。

爱快作为主路由器,负责宽带拨号,同时也提供了稳定的网络连接;OpenWrt作为旁路由,实现了墙外访问的功能;黑群晖则部署在家庭网络中,作为NAS为所有设备提供数据存储和访问的服务;CentOS用于开启其他服务,为家庭网络增加更多可能性;最后,Windows系统提供了桌面环境,让我可以方便地把电视当作显示器使用。

总的来说,通过这次实践,我建立了一个高效、灵活、稳定的家庭网络环境,我期待在这个环境中,我可以更好地享受数字生活的便利和乐趣。

以上就是我在8505家庭组网PVE下iKuai、OpenWrt、CentOS、DSM、Windows等系统All In One实践记录。希望我的经验可以对你有所帮助。如果你有任何问题或者建议,欢迎在评论区留言。