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实践记录。希望我的经验可以对你有所帮助。如果你有任何问题或者建议,欢迎在评论区留言。