我计划不久后构建一个 FreeNAS 盒,但是如果 Linux 上的 ZFS 最终被证明是可靠的,我可能会想要切换,只是为了拥有一个更熟悉的操作系统。
所以我想知道我是否可以相信 ZFS 的不同实现是兼容的。换句话说,如果我只是将启动盘从 FreeNAS 换成 Linux 或 OpenIndiana,我是否可以相信我的数据不会发生任何不良情况?
这似乎是一个愚蠢的问题——显然它應該兼容——但我猜 ZFS 在计算机之间移动驱动器的情况下并不常用,所以我希望有人能提供比“它應該成为”。
答案1
您应该密切关注 zpool 版本。这是 Oracle、以前的 OpenSolaris、Linux 和 *BSD ZFS 变体之间的主要区别。
基本上,你可以将较旧的 zpool 升级到较新的版本,但你不能降级。
奇怪的是,维基百科有最佳总结不同 zpool 版本以及它们之间的区别。
目前名单ZFS 实现中的 zpool 版本在此处。
我使用 NexentaStor 3.1。根据该计划,我可以使用 OpenIndiana 和 FreeBSD 的 ZFS 文件系统,但不能使用 Solaris 11。
不过,我确实相信 FreeNAS 使用的是超旧版本的 ZFS。考虑 Nexenta 吗?
答案2
Oracle 之外的 ZFS 开发未来将引入ZFS 功能标志。这应该使您能够在基于旧 ZFS 版本的存储池上使用较新的 ZFS 系统。所以答案是肯定的,今天开始使用 FreeNAS 应该是安全的,稍后当 ZFS 更加成熟时再转移到 Linux。
我知道 FreeBSD 现在非常密切地关注 Illumos 中的 ZFS 变化。几天或几周内,新的错误修复或功能就会添加到 FreeBSD-HEAD 中。我还相信linux系统项目遵循 Illumos ZFS 源中的 ZFS 更改。如果尚未添加,它们很可能会有 ZFS 功能标志。但目前它们确实更优先考虑达到 Illumos 和 FreeBSD 所具有的稳定性和质量水平。
答案3
FreeBSD 和 OpenIndiana 中的 ZFS 支持基于相同的 OpenSolaris 代码,因此它们在正常限制内肯定是兼容的(其他 OpenSolaris 衍生产品也是如此)。Linux 模块可用这使得您可以在 Linux 中使用 OpenSolaris 代码(由于 Linux 的传染性许可证,它们永远不能一起分发)。出于同样的原因,这也将是兼容的。
有人试图从头开始构建 GPL 的 ZFS 代码库。目前或将来任何时候都无法保证兼容性。他们决定将项目带到何处是他们自己的责任,尽管他们的“目标”是兼容性,但目前还未实现。
我还看到很多人声称 Linux 可以包含来自其他许可证的代码。这是真的。然而,OpenSolaris 所适用的 CDDL 许可证不允许将其包含在施加比它更严格条款的项目中。Linux 的 GPL 要求当人们对操作系统进行改进时,必须将这些改进贡献出来;这个“更严格”的条款意味着 CDDL 代码不能包含在 GPL 代码中。给 Oracle 一个起诉你的借口可能不是一个好主意。FreeNAS 和其他 BSD 使用 BSD 许可证,该许可证的限制性比 CDDL 更少。
答案4
我已移动一些大型池如下:
从 solaris 10 开始(由于 Oracle 制度下 .edu 定价变化而离开)
移至 nexenta(它并不像您希望的那样棒...特别是,即使它具有 debian'ish 用户空间,所有系统管理员内容仍然是 solaris/illumos/无论如何)。
移至 freebsd(很好,只是我的硬件没有 scsi 驱动程序)。在这里,我添加了一个或两个新池。
搬到了印第安纳公开赛(感觉就像回家一样)
因此,一般来说,跨操作系统移动池是完全可能的。您甚至可以从小端移动到大端(从 sparc 移动到 x64,反之亦然)。然而,正如另一位发帖者所说,关键在于池版本。只要您要移动到支持相同或更新版本的 ZFS 代码的系统,您就应该感到高兴。我想这可能是在升级操作系统时避免升级池版本的原因。