关于 FreeNAS 是否可以作为虚拟机运行存在很多争论。
官方的立场是,是的,但是需要额外配置。
如果我不能保证我能遵循这些建议,那么与运行带有 EXT4/XFS 的原始 Linux 系统或带有 UFS 的 FreeBSD 相比,我是否更容易出现故障 - 尤其是灾难性故障?
具体来说,假设我无法进行 PCI 直通,也无法禁用写入缓存。此外,我只有一个 vDisk 用于存储(由硬件 RAID 支持的 VMDK),因此没有 RAIDZ。显然,会有备份。
编辑:澄清一下我为什么要这样做 - 我需要一台文件服务器,这是我必须使用的基础设施。如果需要,我可以获得额外的 vDisk 来设置 RAIDZ,但除此之外,仅此而已。我正在寻找一个好的文件服务器解决方案,而 FreeNAS 似乎符合要求。除了关于虚拟化 ZFS 以及如何丢失所有数据和损坏备份的所有这些可怕的警告。
我意识到在此基础架构上部署 FreeNAS 是有风险的。我的问题是:它比其他选择的风险更大吗?
编辑2:我似乎无法表达我的意图。FreeNAS 和 ZFS 是一个坚如磐石的 NAS 平台。然而,从我所拥有的读,似乎如果您在标准 VM 配置上运行它,那么使 ZFS 作为裸机文件服务器更可靠的功能实际上可能会对您不利。如果是这样,那么在标准 VM 设置(即没有直接 IO,启用写入缓存)上使用不同的文件系统是更好的选择。这是正确的评估吗?
答案1
一般答案
如果我不能保证我能遵循这些建议,那么与运行带有 EXT4/XFS 的原始 Linux 系统或带有 UFS 的 FreeBSD 相比,我是否更容易出现故障 - 尤其是灾难性故障?
风险不同,无法直接比较。
- 我总是更喜欢 ZFS 系统,即使没有冗余的 vdev,如果只是为了知识数据完整性(即使我必须从备份中恢复,我也想知道那我必须从备份中恢复,而不是我甚至不知道的静默损坏)。此外,
send/recv
或快照等功能使您的生活变得更加轻松,并且与完整性无关。 - 说起灾难性故障,只有备份才能阻止您发生这种情况,即使您的正常系统高度可靠,您也需要它们,因此首先从备份开始(就像您已经做的那样)来解决这个问题,然后再考虑您还需要什么其他服务质量以及您可以忍受哪些缺点。
- 理论上,更复杂的系统更容易出错,但由于所有提到的文件系统都已有 10 多年的历史,并且被积极使用和维护,我想说大多数错误已经被解决(当然,这并不意味着没有任何错误)。
- 有人可能会认为写时复制文件系统本质上更安全,因为它们永远不会覆盖实时数据,因此不会损坏数据。我认为这种风险更多的是理论上的,而且更多地受到其他因素的影响,比如实际实施和元数据的处理。
具体到你的情况
如果你查看参考的建议并进行分析,你会注意到以下几点:
- 如果您不使用 PCI 直通(下文将详细介绍),则必须禁用 ZFS 中的清理任务。硬件可能会“欺骗”ZFS,因此清理带来的损害可能大于好处,甚至可能永久破坏您的 zpool。
Scrub 只会读取底层 vdev 的每个块并验证其校验和。如果您的虚拟磁盘无法处理此问题,则它就是垃圾,您应该担心它,而不是 ZFS。另一方面,如果您的虚拟磁盘已经在 SAN 上进行了校验和,那么您的额外 Scrub 除了导致额外的 I/O(毫无用处)外,不会产生任何作用。
- 第二个预防措施是禁用 SAN、NAS 或 RAID 控制器本身上发生的任何写入缓存。写入缓存很容易使 ZFS 对已写入或未写入磁盘的内容产生混淆。这种混淆可能导致灾难性的池故障。
如果您不信任硬件,这是个好建议。当然,缺点是性能会大大降低。您可能也无法控制 SAN 设置,因此您需要将其视为从 ebay 购买并插入系统的廉价磁盘 - 任何事情都可能发生,至少在理论上如此。
- 使用单个磁盘会使池元数据损坏,从而导致池丢失。为避免这种情况,您至少需要三个 vdev,无论是条带化还是 RAIDZ 配置。由于 ZFS 池元数据在三个 vdev 之间镜像(如果可用),因此使用至少三个 vdev 来构建池比单个 vdev 更安全。理想情况下,最好使用具有自身冗余的 vdev。
作为一般建议,这没问题,但有点吹毛求疵。假设您的 SAN 不好,这将在某些情况下帮助您(至少运气好的话)。假设您的 SAN 很好,这不会起任何作用,只会浪费您的空间和性能。在我看来,最好确保从物理磁盘到 SAN 到网络到 VM 主机到 VM 客户机的链条同样好,这样您就不必在每一层都重复做所有事情。
FreeNAS 与其他
关于 FreeNAS 的建议,它们当然可以作为建议,即为一般读者提供的指导或提示。如果你遵循它们,你不会比不遵循它们时更糟糕,甚至可能会更好。不过,它们措辞严厉,这似乎是 FreeNAS 社区的惯常语气(至少从某些论坛发帖者来看)。我猜他们只是想稳妥行事。我一直更喜欢ZFS 最佳实践指南,因为它的措辞相当中性,只是陈述事实,让你自己决定。
有趣的是,根据 FreeNAS 文档和论坛的说法,如果你敢在内存不足 4GB 的情况下运行 ZFS 文件服务系统,你将会死得很惨,而在 OmniOS(或 SmartOS 或 illumos 或 Nexenta,我现在不记得了)的邮件列表中,人们测试了内存为 512MB 的系统并分享了如何配置它们的建议。总而言之,这更多的是关于细节的知识,选择权留给每个人,而不是制定你必须遵循的规则。
随着时间推移,这个问题也会变得不那么重要,建议也会发生变化,因为越来越多的系统在普通桌面和服务器版本上切换到 ZFS。Ubuntu 已经这样做了,其他人肯定会效仿。如果两三年内 80% 的发行版使用 ZFS 或 btrfs,那么其中大多数将要虚拟化运行,因此这是一个没有实际意义的问题。
答案2
说到替代方案,您可以尝试 StarWind Free。它具有 RAM 和 SSD 缓存、可选的重复数据删除功能,并使用同步复制来实现高可用性。
我唯一的抱怨是我无法从 VM 执行 SMB Direct,因为目前我使用的 RDMA 实现与 SR-IOV 存在一些问题。我希望 Mellanox 能尽快为他们的 Windows Server 2012r2 和 2016 驱动程序发布修复程序。
答案3
我不确定你想让我们做什么。
如果我不能保证我能遵循这些建议,......
如果您不能保证您可以遵循建议,那么您的环境不受支持,请不要这样做。
如果有人对你说“你肯定会没事的”,但事实并非如此,你期望从这个建议中得到什么呢?