构建/维护基于 FreeNAS 和 ZFS 的定制 NAS

构建/维护基于 FreeNAS 和 ZFS 的定制 NAS

我需要一台 NAS,供一家约 30 名员工的公司使用。我们制作游戏(很多大文件、大型 git 存储库,其他的就不多了)。我打算购买便宜的组件,自己组装,使用 FreeNAS 之类的东西。(假设从价格上来说,这是一个可行的选择。)

我将在下面列出我的需求和顾虑,但我的主要问题是:它是否足够容易构建和管理,或者我应该只购买商业 NAS(我已经使用过 Synology 并且它满足我的所有需求。)

我的需求:

  1. 数据完整性至关重要(显然!)但我不需要 100% 正常运行时间。如果 CPU 坏了,我可以花 2 个小时来更换它。

  2. 它不需要经常修修补补和维护。我想把盒子放在某个角落,每个月左右当我想添加仓库或用户时登录一次。话虽如此,我可以忍受适度的工作量和复杂性设置盒子或新服务;但在那之后我希望它“正常工作”。

  3. 我想从一堆不同大小的硬盘开始(基本上就是我们闲置的硬盘),然后随着空间不足或硬盘坏掉,继续用不同大小的硬盘逐个升级它们。今天必须购买 8x4TB 硬盘,然后在两年后阵列空间耗尽时,同时用 8x10TB 硬盘全部替换它们,这对我来说是不可接受的。(Synology 的混合 RAID 在这里做得很好;我还没有在其他商用 NAS 盒中找到此功能。)

  4. 应该有一个图形用户界面(理想情况下是基于 Web 或其他的),以便非技术用户执行常见任务。

  5. 我将在此机器上运行的最重要的服务是 Samba 共享和 Git 存储库。我需要访问控制(不要太花哨或复杂)和良好的网络支持。

我的顾虑:

  1. FreeNAS 是适合此用途的操作系统吗?我可以运行 Linux 发行版并使用软件 RAID 和 LVM 等设置我想要的一切,但这有点超出我可接受的复杂度范围(或刚好在边缘),我更喜欢更简单、更直接的操作系统。

  2. 如果 FreeNAS 是可行的,那么我会担心它基于 FreeBSD,而我对它没有经验。它真的与 Linux 有太大不同吗?(我几乎在任何 Linux 终端上都很自如。)我从源代码构建软件没有什么问题,但一个好的包管理器(例如 apt 等)是巨大的另外。我应该预料到硬件支持方面会有什么问题吗?(基本上我能想到的唯一特殊硬件就是 NIC。)

  3. ZFS 是可行的吗?从我读到的内容来看,ZFS(和 RAIDZ)非常棒,基本上就是我一生都在寻找的东西!是吗?从基本硬件 RAID/LVM 和 ext4/NTFS 世界来看,我需要注意哪些陷阱和最重要的事情?

  4. 我认为便宜的 2 核或 4 核 CPU 和 ~4GB RAM 就足以运行它。是吗?这几乎不重要,但我想知道我是否错了。

  5. 在 Linux 中,网络链路聚合(NIC 绑定)相当简单。我读到 FreeBSD 也一样。是吗?

  6. 我要把几 TB 的数据(大多是不可替代的)放进这个盒子里;这些数据将非常如果这行不通,就很难搬家。我还应该研究、考虑或记住什么?

我知道我基本上是在向社区寻求建议!但我真的很感激任何帮助。谢谢。

更新:我忘记了一个重要的问题:在这样的系统中,更换硬盘的过程会是什么样的?(无论是由于故障还是升级。)是不是太难了?(请原谅这个太明显的双关语!)

更新2:根据以下答案和其他“研究”,我决定采用以下策略。我在这里写下它,希望它对处于我这种情况的其他人有用。(这不是最终决定;而是一个进一步调查的程序。)

我要购买硬件组件(我要使用便宜的东西,因为唯一的负载将是 I/O,并受到 GbE 对的限制),并使用我们闲置的空闲磁盘,构建一个基于 FreeNAS 的设备(尽管 RAM 比我最初打算的要多。)我将构建存储阵列,在将任何真实数据放入其中之前,将对其进行一段时间的调试(我们不着急。)

如果底层的 FreeBSD 被证明太过外来野兽,我可能会将相同的测试系统切换到 Linux 和 ZFS(以及下面接受的答案中提到的其他软件。)

如果这也不能令人满意,我一定会unRAID尝试一下。

如果以上方法都不起作用,我就把这个盒子改作其他用途,然后买一个现成的 NAS(可能是 Synology 1817 或类似的东西)。

在任何时候,如果我确信我可以在上述任何解决方案上维护和提供我的数据,我就会开始转移我们的实际内容。

答案1

只想谈谈你的几点看法。坦白说,我是 ZFS 的支持者。这些都是恕我直言。

回复:您的需求:

  1. 它不需要不断的修补和维护。

只要正确配置了所有清理、快照、安全更新、容量警报等,它就应该可以正常工作(至少在它回电之前)。尽管软件存在缺陷(请看 netatalk)。

  1. 我想从一堆不同大小的硬盘开始......

正如 willcoq 指出的那样,ZFS 在这一点上并不出色。至少,您需要一对相同(或几乎相同)的驱动器进行镜像(这将为您提供 50% 的存储效率)。这也恰好是最常推荐的配置。

...然后同时将它们全部替换...

正如我向 willcoq 指出的那样,如果您使用镜像对 vdev,则可以一次升级池中的两个磁盘。如果您使用两个四磁盘 RAIDZ2 vdev,则可以一次升级池中的四个磁盘。如果您使用单个七磁盘 RAIDZ3 vdev(加上一个热备用),是的,您需要更换所有驱动器才能实现扩展。等等。

...Synology 的混合 RAID 在这里表现非常出色;我在其他商用 NAS 盒中尚未发现过此功能。

混合 RAID(Synology)、BeyondRAID(Drobo)、XFS(例如 unRAID)、ZFS(例如 FreeNAS)等都有各自的优缺点。如果能够将随机驱动器放入某个东西并让它发挥神奇的作用是您的主要要求,那么这肯定会促使您选择前两个选项之一。

应该有一个图形用户界面(理想情况下是基于 Web 或其他的),以便非技术用户执行常见任务。

与其他基于 ZFS 的解决方案相比,FreeNAS 在此表现出色。

回复:您的顾虑:

  1. ZFS 是可行之道吗?

ZFS 的学习曲线不一定比自己开发 XFS 解决方案更陡峭,但其架构可能不太宽容;在设计阶段可能会出现严重且难以修复的错误。不幸的是,存在大量“部落知识”,在规划解决方案时,您必须尽可能多地阅读和学习。与 Synology 和 Drobo 的商业现成系统以及 unRAID 等商业软件相比,基于 ZFS 的解决方案的学习曲线肯定更陡峭。

然而,复杂性带来了强大功能。您可以根据自己的用例构建所需的系统,几乎无需做出任何妥协。

  1. 如果 FreeNAS 是可行的,那么我会担心它基于 FreeBSD,而我对它没有经验。它与 Linux 真的有太大不同吗?

我当时的情况也差不多,同时学习 FreeNAS、FreeBSD 和 ZFS 确实很困难。GUI 的存在在心理上阻碍了我深入命令行——如果我无法弄清楚如何在 GUI 中执行操作,我就会开始怀疑我所尝试做的事情是否值得做——甚至是否可行。我使用 ZFS-on-Linux 构建了最后几个存储“设备”,它更适合我。它迫使我学习 ZFS,它让我可以在没有 VM 层的情况下在 ZFS 上运行 Docker 和 LXC/LXD。不幸的是,对于我们中技术不太熟练的人来说,它不那么用户友好。

如果您正在考虑采用 ZoL 路线,您应该看看 Proxmox,它本质上是 Ubuntu + ZoL + ZFS root + LXC/LXD + libvirtd + GUI。

  1. FreeNAS 是适合这个用途的操作系统吗?

如果您决定使用 ZFS 并且第一天就需要 GUI,那么答案是肯定的。在进入 FreeNAS 之前,可能值得尝试分别学习 FreeBSD 和 ZFS 基础知识。

  1. 我认为便宜的 2 核或 4 核 CPU 和 ~4GB RAM 就足以运行它。是吗?这几乎不重要,但我想知道我是否错了。

只要有 AES-NI(用于加密),便宜的 CPU 就没问题。如果您想在此服务器上运行其他应用程序,您可能需要考虑额外的插槽/核心。

ZFS 的经验法则是每 TB(可用)存储配备 1 GB 的 RAM,再加上操作系统和应用程序所需的任何内存。为了获得更好的读取性能,请添加额外的 RAM。默认情况下,ZFS 将尝试占用 50% 的 RAM;这在一定程度上是可调的(以 2 为底的值)。

  1. 在 Linux 中,网络链路聚合(NIC 绑定)相当简单。我读到 FreeBSD 也一样。是吗?

是的。只需确保做一些研究,了解哪种 NIC 在这两种情况下都运行良好。提示:不是 Realtek。

  1. 我将把几 TB 的数据(大部分都是不可替代的)放入这个盒子里;如果这行不通,这些数据将很难移动。我还应该研究、考虑或记住什么?

冗余不是备份。您应该考虑关键数据集的备份策略。

答案2

我从未使用过不使用 ZFS 的 FreeNAS,而且 ZFS 并不适合您需求列表中的第 3 项 - 能够一次更换不同大小的磁盘。您可以这样做,但直到您更换了 ZFS 池中的所有磁盘后,您才能利用额外的空间。您现在可以拥有 8x4TB 磁盘,并且可以一次将每个 4TB 磁盘换成 10TB 磁盘,但每个新磁盘上的额外 6TB 空间将不会被利用,直到您更换了所有 8 个磁盘。

话虽如此,FreeNAS 可能有非 ZFS 选项,但我从未探索过它们。

我认为 StableBit 的 DrivePool 可以对驱动器执行您想做的事情,但您不能使用 FreeNAS 来实现这一点。

相关内容