我有一台运行 Ubuntu(服务器版)的服务器,它的主要任务是通过 FTP(vsftpd)和 AFP(netatalk)提供文件。我的 /srv 目录开始填满,我需要添加更多硬盘。由于它的技术已经过时,不符合我的需要,因此 RAID 不在考虑范围内。
就目前而言,我应该选择更成熟的 ZFS(使用内核模块或 FUSE 扩展)还是尝试更新但更像 Linux 的 btrfs?在这种情况下,每种方法的优缺点是什么?
短暂性脑缺血。
答案1
最大的负面影响两个都选项的缺点是,它们都还未准备好在 Linux 内核上投入使用。我强烈建议不要在此时使用它们,因为它们还不够成熟。
话虽如此,如果你必须使用其中之一,我倾向于使用 btrfs。它更适合操作系统,并且由于它位于内核而不是用户空间,因此性能应该比 ZFS 更好。
答案2
如果 RAID 对您来说“过时”,我假设您需要具有端到端校验和(即位腐烂保护)的东西。如前所述,BTRFS 尚未准备好用于任何类型的非开发环境,它仍在开发中。
fuse 下的 ZFS 在一定程度上确实有效,但性能(速度)较差,而且长期可靠性是一个很大的未知数。
如果这是供个人使用,那么您可以使用 Solaris 11 Express,但它是商业版本(不是“开发”或“评估”),您需要购买许可证才能使用它。它确实有最新的 ZFS 池版本(我相信是 31)。基于 SVN 151a 版本。
OpenIndiana 是最新的免费 Solaris 版本,因此可能是免费 ZFS 托管最“强大”的解决方案。它使用 ZFS 池版本 28。基于 SVN 147。
Nexenta - 两个版本,一个核心版本(仅限 CLI)和一个社区版本(免费提供高达 18TB 的存储空间)(好吧,还有付费版本)。它基于 SVN 134 和 ZFS 池版本 22,但包含大量修复,最多可从 147 个反向移植。
FreeBSD 拥有最成熟的非 Solaris ZFS 实现(也是我唯一会考虑使用的另一个实现)。8.2 稳定版本运行的是 ZFS 池版本 15。FreeBSD 9-Current 最高支持 ZFS 池版本 28。
关于 zpool 版本的说明,您可以向上迁移,但不能向后迁移 - 如果您在 10 个磁盘上拥有版本 15 的 ZPOOL,则可以将其导入到任何支持版本 15 或更高版本的操作系统中,但版本 28 的池必须导入到支持版本 28 或更高版本的操作系统中。
在 ZFS 版本 15 和 28 之间,可能最值得注意的功能是三重奇偶校验 (Raid-Z3) 和重复数据删除。如果您不使用它们,那么它们实际上并不重要(重复数据删除虽然很好,但非常耗内存 - 每 TB 重复数据删除占用 1GB 内存是一个很好的经验法则,如果您没有 RAM,那么性能就会停滞不前。因此,只有在您真正需要时才使用它。
此外,如果你使用基于 solaris 的发行版,你应该检查 napp-it 作为 Web 界面来支持配置和管理 ZFS -NAPP-it 网站。
如果你使用基于 BSD 的设置,你可能需要查看 ZFS-Guru 发行版 -ZFS Guru FreeBSD 发行版
您可能还可以设置 VM 并在虚拟机中运行其中一个发行版,如果您这样做,我建议您使用支持 Vt-d 定向 IO 直通的 ESXi 之类的东西。无论您的 SATA/SAS 接口是什么,请将其完全控制权传递给 ZFS 主机操作系统以获得最佳性能。如果您需要额外的端口,基于 LSI1068E 的卡是最好的选择(仅在 HBA 模式下)。它们的价格约为 70 美元。
答案3
如果您想使用 ZFS,最好的选择是使用 OpenIndiana (http://www.openindiana.org) 或 Oracle 的 Solaris 11 Express。ZFS 的第二佳选择是最新的 FreeBSD 8.2 版本 (http://www.freebsd.org)。
BTRFS 仍在大力开发中,我不会将我关心的任何数据托付给它,而在 Linux 下运行 ZFS 将会是一条充满潜在问题的道路。如果您真正关心的是文件系统,那么您应该选择最支持该文件系统的操作系统。使用 NTFS 也是如此。虽然可以在 Linux 下读取/写入 NTFS,但如果那是我想要使用的文件系统,我只会在 Windows 操作系统下执行此操作。