我正在考虑将 ZFS 用于我自制的 NAS 阵列。我将在 Ubuntu Server 10.04 机器上的 raidz 中安装 4 个 HDD。
我想在存储数据时使用快照功能和重复数据删除。我不太关心速度,因为机器是通过 N 无线网络访问的,这可能是瓶颈。
那么,有没有人有使用 zfs-fuse 0.6.9 此类(或类似)配置的实际经验?
答案1
我家用 NAS(debian lenny)上的 zfs-fuse 镜像设置中有两个 500GB 驱动器。它已经运行了近 6 个月,没有遇到任何问题。更多详细信息这里在我的博客上。
答案2
现在有一个原生 Linux 端口ZFS。我最近才知道这一点,因此还没有机会测试它。不过,它正在积极开发中,这是一个好兆头。它可能值得一试,只要你不害怕必须自己编译内核模块和工具。
如果您能让它工作,毫无疑问,它的性能会比 zfs-fuse 好得多。
答案3
我知道这个帖子已经过时了,但自那时以来事情已经发生了很大变化。(例如 ZFS-FUSE 和内核选项的状态,“开放”Solaris 的消失,等等。)
首先,ZFS 的内核移植不会一定性能比 ZFS-FUSE 好得多“毫无疑问”。这个回答似乎呼应了一个常见的误解,即 FUSE 文件系统的性能总是比内核文件系统差。(如果您还不知道,简而言之:理论上,在其他所有条件相同的情况下,内核文件系统的性能更好。但还有许多其他因素影响性能,其影响比内核与用户空间的影响更大。)然而,对于 ZFS-FUSE,根据基准测试,在某些情况下它确实比原生 ZFS(或 BTRFS)慢得多。但对于我的用途来说,它没问题。
Ubuntu 现在通过其 PPA 存储库系统拥有一个“ubuntu-zfs”包,这只是原生 zfs-on-linux 项目的良好打包和自动模块构建。它在内核空间中运行,目前支持比 zfs-fuse 更高的 zpool 版本。
我曾经在一台大型冗余 20TB 服务器上使用 OpenSolaris,现在在其上使用 Oracle Solaris 11。Solaris 存在一些重大问题和挑战(特别是如果您熟悉配置和管理 Linux 而不是老式 UNIX),并且它们在操作系统版本甚至更新之间彻底改变了许多硬件管理和其他配置界面,使其成为一个经常令人沮丧的移动目标(即使在升级到下一个版本之前最终掌握了一个版本)。但是,如果有合适的(兼容的)硬件和对变化、学习和调整的耐心,它在文件系统方面可能是一个很棒的选择。
还有一条建议:不要使用内置的 CIFS 支持。使用 Samba。内置支持已损坏,可能永远无法投入使用。上次我检查时,有很多企业安装使用 Samba,但没有一个使用 CIFS,因为权限管理太麻烦了。
我每天也在 Ubuntu 上使用 ZFS-FUSE(在个人工作站上),并且发现它非常可靠,是一个很棒的解决方案。我能想到的 ZFS-FUSE 的具体问题是:
您无法禁用 ZIL(写入缓存),至少不能在源代码中设置标志并自行编译的情况下禁用。顺便说一句 - 与常见的误解相反,禁用 ZIL 不会导致您在崩溃时丢失池。您只是丢失当时正在写入的内容。这与大多数文件系统没有什么不同。对于许多关键任务服务器场景来说,它可能并不理想(在这种情况下,您可能应该使用本机 Oracle Solaris),但对于大多数工作站/个人用例来说,这通常是一个非常值得的权衡。对于小规模设置,ZIL 可能是一个巨大的写入性能问题,因为默认情况下缓存分布在池本身中 - 这可能会非常慢,尤其是在奇偶校验条带设置(RAIDZx)的情况下。在 Oracle Solaris 上,禁用它很容易,我相信这是池的“同步”属性 IIRC。(我不知道它是否可以在本机 Linux 内核版本上轻松禁用。)
此外,对于 ZFS-FUSE,zpool 版本不够高,无法支持较新版本中更好的池恢复选项 - 因此,如果您决定将写入缓存卸载到一个或多个 SSD 或 RAM 驱动器,请小心谨慎。(并且始终镜像它!)如果您丢失了 ZIL,您几乎肯定也会丢失整个池。(这在我使用 OpenSolaris 时发生了灾难性的事情。)Oracle Solaris 上较新的 zpool 版本已经缓解了这个问题。我似乎无法确定内核级 linux 端口是否已纳入该缓解措施。
另外,您可以放心地忽略那个家伙似乎用来发送垃圾讨论的“ZFS ARC 错误”警报。我的服务器受到严重攻击,全世界无数的生产服务器也受到攻击,但我从未遇到过这种情况。
就我个人而言,虽然我非常不喜欢 Solaris,但 ZFS 非常棒,现在我已经开始依赖它的功能,没有它我就活不下去了。我甚至在 Windows 笔记本电脑上也使用它。(通过复杂但非常可靠的虚拟化解决方案和用尼龙搭扣固定在盖子上的 USB 驱动器。)
编辑:为了清晰度、相关性和承认 ZFS-FUSE 性能限制,进行了一些小的编辑。
答案4
在将池迁移到 OpenSolaris 之前,我在 Ubuntu 下运行了 ZFS-FUSE 近一年,没有任何问题。也就是说,多 TB 池上的 Dedup 内存要求可能会超过家庭 Linux 服务器的内存。一旦您的重复数据删除表从 ARC(主内存缓存)溢出,Dedup 性能就会非常糟糕,除非您有用于 L2ARC 的 SSD 来保持它们随时可用。如果内存中没有重复数据删除表,许多操作可能会变得非常慢(删除文件目录、删除快照等)。快照可以在没有重复数据删除的情况下运行,并且几乎没有开销,所以除非您存储大量冗余数据并且有 8-16GB 的 RAM 和/或 SSD 来解决问题,否则我会跳过重复数据删除。