我如何在预算内建立家庭实验室

在我之前的文章中,我讨论了什么是 Homelab 以及为什么你应该(或不应该)为自己拥有一个。

现在,任何想要或需要的人都可以拥有一个家庭实验室吗? 这取决于几件事,但可以解决金钱或资源问题。 在这篇文章中,我将解释我是如何在不投入大量资金的情况下成功拥有自己的 Homelab 的。 事实上,它花费了我不到 1,000 美元,而且效果很好,足以满足我家的基础设施需求。

话虽如此,重要的是作为免责声明提及:本文没有描述做事的最佳方式。 它只是描述了我如何设法使它工作,即使知道它存在一些问题和风险,但现在,我可以忍受这些。

首先:硬件

建立一个家庭实验室需要一台基本上可以用来连续托管的计算机。 一台旧的(但功能强大的)笔记本电脑可以完成这项工作,或者如果您有一些钱可以使用,您可以购买零件并构建自己的计算机。

如果您有一点额外的现金,您甚至可以购买任何 IT 公司由于其老旧而被淘汰的重新调整用途的小型服务器。 这些服务器仍然可以为这样的项目提供良好的用途,尽管它可能会脱离“预算内”的概念。

你也可以使用 类似树莓派的设备.

关于主服务器,最重要的部分是:尝试获得可以处理虚拟化的主板和CPU,特别是具有IO直通能力的CPU。 对于 Intel,确保处理器具有 VT-x 容量,对于 AMD,它应该具有 AMD-v 容量。 没有这个,你将无能为力。

如果您不打算购买独立的 GPU,例如 NVIDIA 或 AMD 显卡,请尝试购买至少具有集成 GPU 的 CPU。

然后,您需要为此提供一些磁盘空间。 磁盘的大小取决于您要使用它的目的。 就我而言,我想要一个媒体播放器、一个游戏 PC、一个防火墙/DNS 服务器,可能还有一个非常小的 DVR 控制台,所以我买了一个 2 TB 的硬盘。 这是您可能遇到预算问题的部分。 如果钱不是问题,您希望拥有尽可能多的空间并将其翻倍,以便您可以使用 RAID。 同样,在我的情况下,我必须使用单个 2 TB(甚至不是 SSD)硬盘来解决问题。

我在那里放了几个 1 TB USB 硬盘,它们已有 10 多年的历史,但使用量很小(在云之后,我真的避免在本地存储太多东西)。 这些用于处理或虚拟机将非常缓慢,但出于备份目的,它们会这样做。

然后你想专注于 RAM。 越多越好。 就我而言,我只能买得起 8 GB。

然后,假设您希望将其集成到您自己的家中并与其他网络和设备进行交互,您可能至少需要一个小型路由器或网络交换机。 如果你想在你的地方设置一个小型路由器或 DNS 小型服务器,那么你至少需要有第二个 NIC 卡。 我有一张 USB NIC 卡,我用它作为我的辅助卡,以便能够运行虚拟防火墙/路由解决方案。

软件:管理程序

你需要虚拟化,为此你需要一个管理程序。 Hypervisor 分为 Type 1 和 Type 2。阅读我们的文章以了解更多信息。

总而言之:如果您使用 Type-1 虚拟机管理程序,您必须更具技术性,但您拥有更多控制权,因此您可以在虚拟机上使用 GPU 和其他一些资源。

使用 Type-2 虚拟机管理程序,它变得更容易处理,因为您对事物的控制较少,但您无法执行某些事情,例如将 GPU 能力传递给您的虚拟机。 如果您想拥有一个 VM 来工作和编辑视频或玩游戏,那么您将无法使用 Type 2 来做到这一点。如果这不是目的,那么您可能会使用 Type-2 就足够了。

我曾经有 虚拟盒子,并将主主机用作我自己的媒体服务器。 这运作良好。 主机能够进行视频转码。 但是,当我想尝试不同的媒体服务器以进行实验时,我开始挣扎,因为我不得不影响我的主服务器进行可能出错的实验。

这使我迁移到 Type-1 管理程序并重新开始。 我搬到 Proxmox 作为我的管理程序,因为我喜欢开源。 我发现 VMWare ESXI 实施起来太难了,因为我家里什至没有 Windows 机器,所以我什至无法重新处理 ISO 映像以允许我注入正确的硬件驱动程序来安装它。

Homelab 上线了,现在怎么办?

我的 Proxmox 仪表板正在运行

我已经设置好了,我开始根据我想要使用的东西创建初始的一组东西。 我想要一个媒体服务器,但是我的能力有限(带有内部 GPU 的 Intel i5),我想托管几件事情。 所以,我必须决定(并研究)如何让它为我工作。

如果我想要一个托管我的虚拟机 或者 水母 服务器并且能够转码,我必须将 GPU 传递给这个媒体服务器。 那将使我无法将其用于游戏 PC,至少不能同时使用。 您一次只能将 GPU 传递给一个虚拟机。

这是一个问题,因为我可能想在我的孩子或我的妻子想看电影或电视节目的同时玩。 所以我解决了这个问题。

我使用设置了一个基本的 NFS 服务器 Debian (因为它很轻)我将在哪里托管我的文件。 我会简单地处理我拥有的所有视频文件,使其采用大多数设备不需要转码的通用格式:MP4。

这将要求我掌握文件并确保在将它们索引到我的媒体服务器之前始终将它们转换。 您可以轻松地使用 cron 和 手刹-cli. 我什至不必编写 cron 脚本,我搜索了许多可用的脚本之一 GitHub.

由于我的文件集中在 NFS 服务器中,我不再需要虚拟机。 我只使用一个容器来运行我的媒体服务器,并且使用的资源量尽可能少。 我刚刚将 NFS 服务器映射为容器中的文件夹!

然后,对于防火墙,我设置 pFSense再次,为了尽可能多地共享资源,我使用了一个容器。

接下来,对于游戏机,我只是设置了一个 Windows VM。 原因是我想建立一个 蒸汽 并且还可以玩游戏 GOG.com,两者都比任何其他系统都对 Windows 提供更多的支持。 因此,我为此设置了一个 VM,并设置了 GPU 直通,这样虚拟机就可以获得我的 Intel i5 所拥有的 GPU 能力。

已知问题和承担的风险

风险

正如我在本文开头提到的那样,我不一定以最佳或最好的方式做事。 我刚刚适应了我的预算,并从那里解决了问题和问题。

拥有一个硬盘,如果磁盘发生故障,我将处于危险之中(硬盘就像人类一样:它们从那个特定时刻出生并开始消亡)。 如果我不备份,我会失去很多东西。 我没有备份所有虚拟机,因为我没有足够的磁盘空间来存储所有内容。

此外,只有一个磁盘,使得读取速度不会那么快。 使用 RAID 配置将使磁盘读取达到最佳状态,因此速度更快。 除此之外,我在某些时候还有很多 IO 延迟。 这是因为多个虚拟机和容器正在访问同一个 NFS 服务器。 如果我不小心在不同时间设置自动化任务或 crons 以避免重叠,我可能会以数据损坏告终。

我的 GPU 只是英特尔的集成显卡,它对于非常基本的东西来说还算不错,所以拥有一个真正的 GPU,甚至是旧的 NVIDIA 都是理想的。 不过,不仅钱是个问题,而且我使用的是小型 mini-ITX 机箱,所以我必须寻找适合的小型型号。

最后,在这些条件下使用我的硬件,特别是硬盘,会降低它的预期寿命,但由于我不打算大量使用,而只是适度的家庭使用,我认为现在值得保留这种架构。