ZFS - RAIDZ-1真的那么糟糕吗?

我有一个NAS服务器,使用4个2TB的WD RE4-GP硬盘以RAID10配置(可用空间为4TB)。我快没有空间了(剩余不到1TB可用空间)。我没有预算来购买更大/更多的硬盘/外壳。 我很喜欢ZFS的数据完整性功能,这已经足够让我从现有的XFS(软件)RAID10切换过来。然后我了解了ZFS对RAID5的卓越实现,所以我认为使用RAIDZ-1,甚至可以多获得2TB的可用空间。

然而,我不断阅读到更多更多 帖子,几乎都说绝对不要使用RAIDZ-1。只有RAIDZ-2+足够可靠,可以应对"真实世界"中的硬盘故障。当然,在我的情况下,RAIDZ-2没有任何意义。最好在一个单一存储池中使用两个镜像vdevs(RAID10)。

我是不是疯了,想要在4个2TB硬盘上使用RAIDZ-1?

我是否应该只使用两个镜像vdevs(实际上是RAID10),并希望压缩可以提供足够的额外空间?

无论哪种方式,我计划使用压缩。我只有8GB的RAM(已达到最大),所以去重不是一个选择。

这将安装在一个FreeNAS服务器上(即将取代当前的Ubuntu操作系统),以避免ZFS-on-Linux存在的稳定性问题。


1不确定这个问题为什么被认为是离题的。我正在寻求关于服务器适当的文件系统配置的建议。 - Andrew Ensley
RAIDZ1或RAIDZ2的写入速度与RAID10相比较差劲。 - JamesRyan
2如果您有足够的CPU计算能力而不会降低速度,RAIDZ在大多数写入操作上应该与RAID10一样快或更快。RAIDZ会将所有数据写入完整的RAID条带中,不像RAID5那样需要读取-修改-写入周期。因此,您将获得更高的磁盘带宽(更多数据,更少开销),并且写入操作应该比RAID10更快。然而,这也意味着读取通常会变慢。"每次都写入完整条带"会导致碎片化,并且不能让您在许多小型读取操作中只读取部分磁盘,这是一个有意识的设计决策。 - Dan Pritts
我之前说的只是部分正确。如果你有并发的小写入,比如数据库服务器,RAID10会更快。在RAIDZ中,所有磁盘都对所有写入活跃;RAID10则将它们分割开来。我试图传达的观点是,RAIDZ消除了RAID5中性能降低和潜在不安全的读取-修改-写入循环。 - Dan Pritts
2RAIDZ2比RAID10更可靠。使用RAIDZ2,即使有两个磁盘损坏,您仍将保留数据。而在RAID10中,两个损坏的磁盘(在四个磁盘阵列中)可能会导致数据丢失。 - Klaws
3个回答

在我们深入讨论之前,请考虑您的使用情况。您是存储照片、MP3和DVD副本吗?如果是这样,您可能不会在意数组中永久丢失一个块。另一方面,如果这是重要数据,那么这可能是一场灾难。 关于RAIDZ-1“对于真实世界的故障来说不够好”的说法是因为当重建时间到来时,您很可能在其中一个幸存磁盘上有一个潜在的媒体错误。相同的逻辑也适用于RAID5。 ZFS在一定程度上减轻了这种故障。如果无法重建RAID5设备,您基本上就没有办法了;将(剩余的)数据复制出来,从头开始重新构建。然而,与此相反,ZFS将重建除了坏块以外的所有内容,并允许管理员“清除”错误。您将会丢失一个文件/文件的一部分,但不会丢失整个数组。当然,ZFS的奇偶校验检查意味着您将可靠地被告知存在错误。否则,我相信(虽然不太可能)多个错误将导致重建似乎成功,但却返回错误数据给您。

由于ZFS是一个“广泛的层叠违规”,它还知道哪些区域上没有数据,可以在重建过程中跳过它们。因此,如果您的阵列只有一半空置,出现重建错误的可能性就只有一半。

您可以通过定期进行"zpool scrub""mdadm检查"来降低任何RAID级别出现这些重建错误的可能性。其他RAID也有类似的命令/流程;例如,LSI/dell PERC RAID卡将其称为“巡逻读取”。这些操作会读取所有数据,有助于磁盘驱动器发现故障扇区并重新分配它们,使其不会变成永久性问题。如果它们是永久性问题,RAID系统(如ZFS/md/raid卡/其他)可以通过奇偶校验重新构建数据。

即使使用RAIDZ2或RAID6,定期执行scrub操作也很重要。

最后一点注意事项 - 无论是什么类型的RAID都不能替代备份 - 它无法保护您免受意外删除、勒索软件等的侵害。尽管定期的ZFS快照可以成为备份策略的一部分。

1谢谢你的解释。这让我很有道理,也与我迄今为止对ZFS的了解相符。实际上,我已经重新加载了我的服务器,并选择了RAIDZ-1配置。我将其设置为每月一次的扫描。你认为这样的频率足够吗?还是你建议更频繁的扫描?无节制的层叠违规是我最喜欢的ZFS功能 :-) - Andrew Ensley
1我有一个运行在7个不同年龄的消费级硬盘上的raidz1。我每两周进行一次数据校验。它经常发现错误并进行修复。最近,我丢失了一块硬盘,并且丢失了一个含有潜在错误的文件。幸运的是,那是一个媒体文件,我可以轻松替换。对于我的重要数据,当然还有备份。 - Dan Pritts
我要指出的是,“家用”硬盘与“企业级”硬盘相比,其不可恢复位错误率差了两个数量级。尽管在良好的FC/SAS硬盘上,RAID-5的复合故障率是可以接受的,但对于SATA硬盘来说就不行了。 - Sobrique
1只有一个数量级来比较两个希捷硬盘:希捷 ST2000DM001:十万亿中的1。ST2000NM0033:千亿中的1。但是,很难确定这两款硬盘机制是否有所不同。我听说过一些可靠的来源给出了相互矛盾的答案。 - Dan Pritts
3我在我的系统上发现了一根坏的SATA电缆-自从更换后,我的磁盘扫描未发现任何错误。 - Dan Pritts
我想挑战你在这里对于“可能不关心”的使用情况的假设。当然,MP3和DVD副本可能很容易被替换(假设你保存了原始媒体),但大多数人认为照片是无法替代的——这里有一个例子,说明一个单一位翻转可以永久地破坏一张照片:https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Bitrot_in_JPEG_files%2C_1_bit_flipped.jpg/300px-Bitrot_in_JPEG_files%2C_1_bit_flipped.jpg - ghostly_s
我会支持“可能不在乎”。 - Dan Pritts

这里有一点误解。你看到的很多建议都是基于一个假设,这个假设可能不成立。具体来说,就是你的硬盘的不可恢复位错误率。 廉价的“家用”硬盘的不可恢复错误率为每10^14个错误中有1个。

http://www.seagate.com/gb/en/internal-hard-drives/desktop-hard-drives/desktop-hdd/#specs

这个级别是在RAID重建过程中存在较大的不可恢复错误的情况,所以你不应该这样做。(一个快速而粗略的计算表明,5块2TB硬盘的RAID-5阵列实际上有大约60%的机会出现这种情况) 然而,对于更昂贵的驱动器来说,这个情况并不适用: http://www.seagate.com/gb/en/internal-hard-drives/enterprise-hard-drives/hdd/enterprise-performance-15k-hdd/#specs 每10^16次操作中出现一次失败的概率要好100倍,这意味着5块2TB的硬盘重建失败的几率小于1%。(可能还要更低,因为对于企业使用来说,600GB的磁盘通常更有用) 所以个人认为,无论是RAID-5还是RAID-4都是可以使用的,原因和RAID-0仍然相当普遍。不要忘记,RAID-6的问题在于它的写入惩罚。你可以通过大量的缓存部分缓解这个问题,但是当你起初就使用慢速硬盘时,仍然会有一些痛苦。 而且更重要的是,永远不要完全依赖RAID来保证数据的可靠性。你会更经常因为“糟糕”的操作而丢失数据,而不是因为硬盘故障。所以,如果你在乎自己的数据,就需要一个合理的备份策略。

我正在使用4个WD RE4-GP硬盘,它们具有不可恢复的读取错误小于10^15中的1个。 - Andrew Ensley
1RAID6的写入惩罚是非常真实的。然而,RAID-Z2并不受其影响;ZFS会进行全条带写入。然而,这也会带来其他负面影响 - 由于多种原因,它往往会降低读取性能。 - Dan Pritts
哇,关于无法恢复的错误率的提醒真是太棒了!想到这个问题通常会让我头晕,但这是一个非常重要的警告! - Tmanok

嗯,这里有一些错误的信息。对于4个磁盘来说,XFS没有任何问题。出于性能和可扩展性的考虑(读/写较低,无法扩展),我倾向于避免使用ZFS RAIDZ。如果可以的话,使用ZFS镜像。然而,对于4个磁盘且没有地方放置操作系统的情况,你要么会失去很多容量,要么必须进行奇怪的分区游戏,将操作系统和数据放在同四个磁盘上。 根据你的使用情况,我可能不会推荐使用ZFS。在这里使用XFS没有任何问题。

3忘了提到操作系统存在一个独立的驱动器上,抱歉。我想要从ZFS中得到的是校验数据验证,可以检测到(并且自动修复)静默数据错误(比如驱动器上的位翻转,而硬盘毫无察觉)。我不认为XFS能够做到这一点。 - Andrew Ensley
如果有可能需要扩展或性能很重要,对于四个磁盘,请使用ZFS镜像。我还建议避免使用FreeNAS,直接在Linux上使用纯粹的ZFS即可。 - ewwhite
为什么要避免使用FreeNAS?我打算转换的原因是因为Linux上的ZFS使用了Solaris仿真层,这可能会在简单的Linux内核更新中出现问题,并有可能破坏zpool。而ZFS在Unix-/BSD-based操作系统上可以直接运行,不会出现这个问题。 - Andrew Ensley
DKMS负责Linux内核更新和ZFS软件包的更改。虽然我自2012年以来一直在生产环境中使用ZFS on Linux,但FreeNAS对存储池磁盘做了一些奇怪的事情,并且我们遇到了大量的配置错误和关于FreeNAS异常故障模式的问题。我认为仅仅为了获得一个图形界面而使用它不值得。这只是个人意见。ZFS on Linux运行良好。 - ewwhite
1我个人是一个终端用户,所以肯定不会为了图形界面而转换。主要的需求是一个稳定的文件系统,尽可能地保证存储在其中的文件的完整性。同时,我也希望在这个过程中能够节省一些空间。我看到了很多关于ZoL的问题报告,其中许多与Ubuntu操作系统升级有关。https://groups.google.com/a/zfsonlinux.org/forum/#!searchin/zfs-discuss/ubuntu$20upgrade 不是故意惹麻烦,只是解释我为什么持有这样的观点。当然,我也愿意接受更正。 - Andrew Ensley
1没问题。我在FreeNAS(而不是FreeBSD)上遇到的问题更多,所以两者都有各自的问题。有相关信息可以查阅。虽然我不使用Ubuntu,但我对ZFS很熟悉。我通常在RHEL或CentOS上使用ZFS on Linux。这里有一个示例工作流程 - ewwhite
谢谢你提供工作流程的链接。非常有启发。现在我感到比以往更犹豫不决,哈哈。 - Andrew Ensley
让我们在聊天中继续这个讨论。 - Andrew Ensley
感谢您在聊天中的帮助。由于我需要更多的存储空间,性能并不是太大的问题,所以我决定选择RAIDZ。 - Andrew Ensley
2我在Linux和CentOS 6上使用ZFS。我不允许内核或ZFS的自动更新。我曾经遇到过ZFS/SCL出错的问题,但从未发生数据丢失。顺便说一句,FreeBSD也有一套类似的Solaris兼容性程序,但它们与ZFS完全集成到发行版中,使得让所有东西协同工作变得简单得多。如果我只想要ZFS和文件服务,我可能会选择运行FreeBSD。实际上,以前我就是这么做的,但现在我还需要用这台机器做其他杂事,所以ZoL更具吸引力。 - Dan Pritts