关于使用 ZFS 和 FreeBSD 的反馈

关于使用 ZFS 和 FreeBSD 的反馈

我需要创建一个仅用于备份文件的服务器。该服务器一开始将有 2TB 的 RAID-5 存储空间,但我可能希望稍后添加额外的存储空间。因此,我目前正在考虑使用 FreeBSD + ZFS 作为操作系统和文件系统。

有人能指出他们在生产环境中使用 ZFS 并且对他们的选择感到满意的场景吗?我读到过 ZFS 应该与 OpenSolaris 一起使用而不是 FreeBSD,因为就版本更新和稳定性而言,OpenSolaris 的 ZFS 通常处于领先地位。但是,我对在这个项目中使用 OpenSolaris 不感兴趣。

我正在考虑的另一种选择是坚持使用 ext3 并在需要时创建多个卷,因为我知道我不需要大于 2TB 的单个连续卷。

提前感谢您的反馈。

答案1

几个月来,我一直在使用 FreeBSD 8.0 以及随后的 8.0-stable-February 2010 快照来试验 ZFS。该系统有几个独立的 4 盘 RAIDZ1 池。起初一切似乎都或多或少地完美无缺,但我遇到了一些越来越令人不安的问题,这让我认为在某些特定情况和配置下,避免这种设置可能是明智之举。我的第一个问题不一定是 FreeBSD/ZFS 整体的稳定性/功能,而是 FreeBSD 下某些设备驱动程序和磁盘驱动器的可靠性和功能。我发现默认的 ata/ide 驱动程序不支持我正在使用的控制器,但 siis 硅片映像存储驱动程序具有所需的端口倍增器 SATA 支持,可以使驱动器与 FreeBSD 8 一起工作。然而,仔细检查后,我认为驱动程序代码还没有真正准备好投入生产——它不能很好地处理与第一个磁盘相关的软错误/超时/重试情况,这导致阵列中的驱动器出现几十秒的延迟响应等情况。我不知道具体发生了什么,但阵列超时、重置和重新建立操作大约需要一分钟,在此期间,阵列中的每个驱动器都“丢失”了运行状态,并导致更高文件系统级别出现无法恢复的数据故障。据我所知,甚至 SIIS 驱动程序的维护者也表示驱动程序的超时/重置处理尚未真正完全完成/健壮/优化。公平地说,但关键是,无论操作系统或 ZFS 有多好,如果您的磁盘驱动器、控制器或驱动程序不可靠,尽管使用了 ZFS,它肯定会破坏整体操作,导致致命错误和数据丢失。此外,SMART 诊断请求似乎不适用于此特定控制器驱动程序。至于导致错误的原因……不稳定的 Seagate 驱动器/固件?我不知道,但一个驱动器错误导致整个阵列“失败”,尽管使用了 RAIDZ,但这完全违背了 RAIDZ 的可靠性。zpool scrup/zpool status 等问题之后的行为也有点可疑,并且目前还不清楚该诊断/恢复过程是否在 ZFS/ZPOOL 级别正常工作;当然,我收到了一些关于错误状态和错误清除等的混合消息。尽管没有明确的 zpool clear 命令,但错误指示在重新启动后消失了;也许这是有意的,但如果是这样,zpool status 输出并没有暗示这一点。

更严重的情况是,在正常运行几天后,似乎在操作过程中悄然出现了问题,其中包含多个文件系统 (ZFS) 的大部分阵列从 (ls) 中列出,并从正常 I/O 访问中“消失”。如果我没记错的话,df -h、ls 等并未报告文件系统的存在,而 zpool list / zpool status 继续指示池中预期的消耗存储量,但列出的任何已安装或未安装的文件系统均未说明这一点。/var/log/messages 不包含任何错误情况消息,在出现该问题之前,操作一直完全正常进行。zpool list / zpool status 未指示池存在问题。zfs unmount -a 失败,并显示繁忙指示,原因不明显,与交互式使用有关,持续了几分钟,然后最后一个已安装的 zfs 文件系统才会卸载。重新启动并重新检查 /var/log/messages、zpool status、zpool list 未显示任何问题。之前丢失的文件系统确实在手动要求时重新挂载,并且最初似乎具有正确的内容,但在池中挂载各种 zfs 系统一分钟左右后,发现有些系统再次意外消失。可能是我在定义 zfs 文件系统时做错了什么,不知何故导致了问题,但目前我觉得无法解释的是,一个正在对各种 zfs 目录进行 I/O 的工作系统会突然失去对整个文件系统的视图,而几分钟/几小时/几天前,这些文件系统还运行良好,没有中间系统管理员命令来修改基本的 zpool/zfs 配置。

当然,我正在运行 2010 年 2 月的稳定快照,该快照不适用于生产用途,但自 8.0 版本发布以来,已经向稳定分支提交了几项针对已知 ZFS/存储问题的相对值得注意的修复,因此,对于某些人来说,由于这些问题,运行原始 8.0 版本在可靠性/功能方面可能会不令人满意。

无论如何,仅仅几周的相当简单的测试就导致了足够多的潜在灾难性可靠性/功能问题,这些问题似乎并非全部都与存储驱动器/控制器/驱动程序的特定缺陷有关,因此,在没有非常严格控制的硬件和软件配置和离线备份策略的情况下,我对将 FBSD 8.0 + ZFS 用于生产/可靠性使用持谨慎态度。

无论如何,在我看来,OpenSolaris 现在无法使用,即使您想运行它——据我所知,zfs 重复数据删除存在严重的已知问题,几乎使其无法使用,而且这个问题和其他问题似乎导致建议等待更多补丁版本发布,然后再信任 OpenSolaris+ZFS,尤其是带有重复数据删除系统的版本。B135/B136 似乎没有发布,也没有解释,以及 2010.03 主要操作系统版本。有人说 Oracle 只是对时间表的延误守口如瓶,但预期的代码最终会延迟发布,而其他人则怀疑,鉴于所有权/领导权/管理层的过渡,我们是否会看到 Sun 正在开发的全套预期功能作为 Oracle 未来的开源版本发布。

恕我直言,我会坚持只做镜像,并且只使用经过严格审查/稳定的存储控制器驱动程序和磁盘驱动器模型,以在 FreeBSD 8 下实现最佳的 ZFS 可靠性,即便如此,我可能还是会等待 8.1。

答案2

过去两年来,我一直在使用 FreeBSD+ZFS 存储超过 2TB,没有任何问题。不过,我建议您使用支持 ZFS 版本 13 的 FreeBSD 8 (amd64)。

答案3

您可以根据以下一件事来做出决定:您需要哪些功能以及 freebsd 的 zfs 实现中包含哪些功能?

http://wiki.freebsd.org/ZFS很好地指出了尚未解决的问题。

(例如,在撰写本文时,fbsd 似乎不支持 zfs 上的 iscsi。因为您想将您的盒子用作存储/备份,并且也许您有一个苹果在飞来飞去……他们喜欢 iscsi,尤其是对于时间机器)

相关内容