从 unRAID 迁移到 PVE 其实已经有三个多月了, 现在才来补一篇博客.
前两天我的笔记本电脑不小心被我搞坏了(伏笔是这里我玩硬件的时候, 由于别人画的一块版的逆天设计导致不小心把 12V 通到了 USB 里… 瞬间就不开机了…)
也多亏了这台为我服役了两年多的 HomeLab 让我没受到太大的影响(现在在宿舍用 Linux 板子凑合当电脑用, 这篇博客就是这么写的.)
说回正题, 换系统的契机是暑假刚开始时固态价格出人意料地大跳水(现在又涨回去点), 购入了一块西数国行五年联保的企业级固态 SN640. 第一次抄底成功我真是太感动了. 考虑到原来的 PE4010 多少有点灵车, 就闲鱼赶紧出手了.
但 unRAID 的 array 机制会严重限制现代 SSD 的性能发挥, 官方最新的 6.12 版本发布的 exclusive access 功能能绕过 array 机制的 fuse 实现, 部分缓解问题, 但也有不少 BUG, 而且使用 btrfs 和 zfs 完全丧失了原来 array 的灵活性. unRAID 本身 webUI 对 zfs 的支持也很差.
同时随着我的需求进一步膨胀, 基于 Slackware 的 unRAID 在很多方面不太能满足我的自定义需求了, 系统要安装别的包很麻烦, 而且 unRAID 安全性也欠佳, 后期不得不使用大量丑陋的脚本设置防火墙规则和其他自定义, 没有 2FA 登录, 插件没有权限控制, 整个系统也没有利用好 Linux 的权限管理机制, 最终还是换成了基于 Debian 的 PVE.
安装及初始化
安装完的第一感觉就是设置项目好多hh
系统内置的功能就解决了不少 unRAID 的痛点问题, 如自动申请并续期 SSL 证书, 2FA (包括 WebAuthN)支持, 内置的备份与虚拟机快照, 非常详细的虚拟机设置和支持, 详细的防火墙设置, LXC 容器的支持等等.
阵列
我这台 HomeLab 一个重要的功能就是 NAS, 之前选择 unRAID 主要考虑的是 array 的灵活性 + 主机能运行 Docker & VM 的便捷性.
现在考虑到 SSD 的 trim 支持和之后有可能的扩展和许多其他的高级特性, 直接将 SN640 格式化成了单盘 zfs 在 PVE 中使用. 期间自行熟悉了下 zfs 命令行的使用.
机械硬盘只留下了两块 4T 的盘组了个 RAID0, 每周定期使用脚本将 SSD 内容使用 zfs send
和 zfs receive
备份到机械盘所在的 pool 中.
最后当然还有备份到云端的部分, 这部分和以前变化不大, 不再赘述.
容器与服务
HomeLab 作为 lab 当然还要运行一些其他代码和服务的.
虚拟机
直接把原来的那些虚拟机镜像导入到 PVE 中, 简单配置就可以正常运行.
PVE 虚拟机直通核显我开始以为会比较困难, 毕竟 unRAID 曾经一个优势就是直通显卡配置简单, 没想到 10100 的 UHD630 很顺利的就能直通并在 Windows 10 下驱动.
容器
原本很多在 Docker 中运行的容器趁着这个机会搬到了 LXC 中, 直接使用 bind-mount 也可以将主机上的文件存储挂载到 LXC 中. 不过挂载时 LXC 中的 root 并非主机上的 root 用户, 需要注意 UID 的映射关系.
同时 LXC 每个容器都有了自己独立的 IP, 不需要再搞一堆丑陋的端口映射, 也可以更方便地配置防火墙规则. (防止容器之间互访, 阻止横向渗透.)
还直接解决了原来很烦人的 unRAID 的 Docker 必须用 unRAID webUI 配置, 最后得到一个很专有很丑陋的 XML 配置文件, 否则下次更新容器配置就会把你的设置直接覆盖掉.
不过虽然有了 LXC, 但有些使用 Docker 更合适的容器还是需要一个 Docker 实例.
虽然官方不推荐在 LXC 中运行 Docker (因为共享内核, 可能会在升级或集群运行时影响到 Docker), 但考虑到虚拟机文件系统挂载的开销, 我还是在 LXC 中又安装了一个 Docker.
值得一提的是在 LXC 中运行 Docker 如果不想授权 privileged, 也可以启动 nesting 和 fuse, 并将 Docker Daemon 的文件系统改成 rootless 的 overlay-fuse, 即可在 LXC 中正常跑 Docker.
总结
整体来说迁移过程还算比较顺利, 后续又逐渐迭代了一段时间现在系统也比较稳定了. 使用 Debian PVE 之后 HomeLab 比以前更加可定制&安全了.
上一张成果图:
本文采用 CC BY-NC-SA 4.0 许可协议发布.
作者: lyc8503, 文章链接: https://blog.lyc8503.net/post/16-pve/
如果本文给你带来了帮助或让你觉得有趣, 可以考虑赞助我¬_¬