杂谈:从零散需求到一套 Homelab
最开始,我没打算在家里摆一个机柜。想要自己的服务器,改善网络,找个地方存数据,这些需求陆续出现,设备才一点点凑到了一起。搭建时,我主要依靠已有的知识和常见的做法。这里记下目前的安排,也说说选这些方案时,除了功能本身,我还考虑了什么。

在考虑 NAS 以前,我就想过有一台自己的 Minecraft 服务器。日常电脑关机以后,服务最好还能继续运行;想换个环境做实验,也希望有地方可以放。这样的需求不一定很大,但需要一台能长期运行、又不用迁就日常使用习惯的机器。
数据是另一件事。我希望重要的文件有个固定的存放位置,几台设备都能访问,换电脑或重装系统时也不必到处搬。云服务很方便。不过,有些数据放在哪里、怎样备份、以后怎么取出来,我希望自己能决定。
网络方面,我在意的不只是带宽。电脑、虚拟机和容器都需要访问外部资源,如果每换一个运行环境,就要把连接问题再解决一遍,后面很难维护。我希望内网设备都能获得稳定的全球互联能力,相关配置尽量在网络这一层处理,不用给每个服务单独想办法。
我对机器人和本地运行的智能系统也一直有兴趣,会想给以后的实验留些余地。不过,究竟会用到哪些东西还说不准,眼下先照顾已经有的需求。
一台性能不错的主机能做很多事情。存储、虚拟机、容器,甚至网络功能,都可以集中起来。少买设备,少接几根线,平时也少管理几个系统。对个人使用来说,这些好处很实在。但假设我只是要调整一个服务,操作却需要重启宿主机,那就得先确认其他东西能不能一起停。同一宿主上的虚拟机,软件环境各自独立,关机时还是会一起停下来。
数据也有类似的问题。一个服务以后可能换软件、换系统,甚至干脆不用了,它留下的文件却未必能跟着删。部署的时候,把程序和数据放在一起很顺手;等到要迁移,就得重新分辨哪些是可以重建的环境,哪些是必须保留的东西。当家里的服务、数据和网络开始互相牵扯时,问题可能不是“还差一台设备”,而是“该开始分清职责和生命周期了”。
目前我把网络、计算和存储分开考虑,也分别安排了设备。网络有独立的节点,主要计算环境放在 PVE 上,长期保存的数据交给 NAS。网络单独承担连接和访问配置,也可以与计算环境分别安排维护。为此多保留一台设备,我能接受。
计算这边选择 PVE,是因为我要运行的东西不止一个,也不想让它们的安装方式和依赖都混在同一套系统里。试新的软件时,可以放进单独的虚拟机,不必装到已有服务的系统里。不过,这些环境仍然共用主机的 CPU、内存和磁盘,资源要按它们一起运行时的需要来安排。
NAS 上的数据则尽量不跟着应用环境变化。文档、照片、项目文件要保留多久,和某个服务打算用哪个版本,没有必要绑在一起。服务需要重建时,我希望处理的是程序和配置,不用顺带搬动整批长期保存的文件。这样安排也有代价。应用访问独立存储,就要依赖网络和存储节点;路径和权限配错了,文件不会因为放在 NAS 上就自动可用。独立存储更不等于有了备份,误删除照样可能发生,恢复办法仍然得另外考虑。
多一台设备,就得多照顾一个系统,连电源和线缆都要跟着增加。原来在一台主机内部完成的事情,也可能变成几台设备之间的配合。家里能用的空间、能接受的噪声,以及我愿意花在维护上的时间,都有限。某个小服务如果没有特别的要求,和其他服务共用计算资源很正常,没有必要为了分开而分开。
而且,分开的设备仍然要一起工作。它们可能共用交换机或供电,应用也可能依赖同一份存储。哪些操作可以单独做,哪些需要几台设备配合,还是得按实际连接来看。
监控和告警该覆盖什么,备份能否按预期恢复,功耗和噪声还有多少调整空间,这些是我接下来想继续弄清楚的事。再往这套环境里加东西之前,我也想多问一步:它要依赖现有的哪些部分,会给其他服务增加什么负担?如果过一段时间不用它了,能不能把它拿掉,而不用跟着重装其他东西?
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!

