在这篇博文中,我将讨论为什么在构建NAS时强烈建议使用带有ECC内存的ZFS。我认为,如果您不使用ECC内存,那么完全放弃ZFS并使用适合您需要的任何(遗留的)文件系统是合理的。
为什么ZFS ?
许多人在计划构建自己的NAS时考虑使用ZFS。这是有充分理由的:ZFS是NAS文件系统的绝佳选择。ZFS是一个很好的选择有很多原因,但最重要的可能是“数据完整性”。数据完整性是其中之一主要设计目标ZFS的。
ZFS确保通过使用校验和和奇偶校验来检测或(如果可能的话)纠正底层存储系统提供的任何损坏数据。这就是为什么ZFS对NAS构建者如此有趣:它可以使用廉价的(消费者)硬盘驱动器和固态驱动器,而不用担心数据完整性。ob体育下载欧宝体育直播官网
我不会详细讨论,但为了完整起见,我还将说明ZFS可以使丢失整个RAID阵列或仅丢失几个文件之间产生区别,因为与“传统”硬件/软件RAID解决方案相比,它处理读取错误的方式不同。
理解ECC内存
ECC内存或错误纠正码内存,包含额外的校验数据,因此可以验证甚至纠正内存中数据的完整性。ECC内存可以纠正单个比特错误,并检测每个字的多个比特错误1.
最有趣的是带有ECC内存的系统如何对无法纠正的比特错误做出反应。因为这是一个具有ECC内存的系统对不可纠正的比特错误的响应方式,这使得世界变得不同。
如果在一个单词中有多个比特损坏,CPU将检测到错误,但不能纠正它们。当CPU注意到内存中有不可纠正的比特错误时,它将生成一个多国评价这将由操作系统处理。在大多数情况下,这将导致停止2系统的。
这种行为将导致系统崩溃,但它可以防止数据损坏。它可以防止操作系统和/或应用程序处理可能造成严重破坏的坏比特。
ECC内存是所有主要供应商(如惠普、戴尔、IBM、超微等)销售的所有服务器硬件的标准。这是有原因的,因为内存错误是常态,而不是例外.
问题是为什么不呢所有计算机,包括台式机和笔记本电脑,使用ECC内存而不是非ECC内存。最重要的原因似乎是“成本”。
使用ECC内存比使用非ECC内存更昂贵。这不仅是因为ECC内存本身更昂贵。ECC内存需要支持ECC内存的主板,而且这些主板往往也更昂贵。
非ecc内存足够可靠,大部分时间都不会有问题。一旦出现问题,你就会责怪微软或苹果3..对于台式机来说,内存故障的影响没有服务器那么大。但是请记住,您的NAS是您自己的(家庭)服务器。有一些证据记忆错误很多4在桌面系统上。
价格差异很小,与企业无关,但对价格敏感的消费者来说,这是一个因素。基于ECC内存的系统可能比基于非ECC内存的系统多花费150 - 200美元。
如果你想花这笔额外的钱,那就由你自己决定。为什么建议你这样做将在接下来的段落中讨论。
为什么ECC内存对ZFS很重要
ZFS盲目地信任内存的内容。请注意,ZFS没有处理坏内存的机制。在这方面,它与所有其他文件系统类似。这是一张很好的纸欧宝体育直播官网关于ZFS和它如何处理损坏的内存(它没有!)
在最好的情况下,糟糕的内存会破坏文件数据并导致一些乱码文件。在最坏的情况下,坏内存会破坏内存中的ZFS文件系统(元)数据结构,这可能会导致损坏,从而丢失整个zpool。
正确看待这个问题很重要。只有一个实用为什么ECC内存是更重要的是与其他文件系统相比。从概念上讲,ZFS不像任何其他文件系统那样需要ECC内存。
与其他文件系统相比,ZFS没有什么特别之处需要/欧宝体育直播官网鼓励使用ECC RAM。如果您使用没有ECC RAM的UFS、EXT、NTFS、btrfs等,您的风险与使用没有ECC RAM的ZFS相同。我只想说:如果你喜欢你的数据,就使用ECC RAM。另外,使用一个文件系统来检查和数据,比如ZFS。
这是最重要的部分。文件系统,如NTFS, EXT4等有(数据恢复)工具吗这可以让您在由于内存不好而出现问题时挽救您的文件。ZFS没有这样的工具,如果池损坏,所有数据都必须被认为丢失,没有恢复的选项。
因此,与NTFS、EXT4、XFS等系统相比,糟糕的内存对ZFS系统的影响可能更具破坏性。ZFS可能迫使您更快地从备份中恢复数据。顺便说一下,你有备份,对吧?
我确实有个私人问题5.我没有任何证据来证实这一点,但我的想法是,由于ZFS是一种更高级和更复杂的文件系统,与遗留文件系统相比,它可能更容易受到不良内存的不利影响。
ZFS, ECC内存和数据完整性
使用ZFS而不是遗留文件系统的主要原因是能够确保数据完整性。但是ZFS只是数据完整性难题的一部分。谜题的另一部分是ECC内存。
ZFS涵盖了存储子系统提供损坏数据的风险。ECC内存覆盖了损坏内存的风险。如果您遗漏了这些部分中的任何一个,那么您就损害了数据的完整性。
如果关心数据完整性,则需欧宝体育直播官网要将ZFS与ECC内存结合使用。如果您不太关心数据完整性,那么使用ZFS或ECC内存其实欧宝体育直播官网并不重要。
请记住,ZFS是为了确保企业IT环境中的数据完整性而开发的,其中数据完整性是最高优先级,服务器中的ecc内存是标准,这是ZFS构建的基础。ZFS并不是在所有情况下都能保护数据的魔法仙尘。如果不满足其要求,则不能保证数据完整性。
ZFS可能是免费的,但数据完整性和可用性却不是。我们花钱购买额外的硬盘驱动器,这样我们就可以运行ob体育下载RAID(Z),并且在不丢失数据的情况下丢失一个或多个硬盘驱动器。我们必须在ecc内存上花钱,以确保糟糕的记忆不会产生类似的影响。
这有点诉诸于权威,而不是数据或理性,但我认为这仍然是相关的。FreeNAS是使用ZFS作为其基础的NAS解决方案的供应商。
他们是这样说ECC内存的:欧宝体育直播官网
但是,如果非ecc内存模块失控,可能会对ZFS池造成不可挽回的损坏,从而导致存储完全丢失. ...如果基于ZFS的系统必须始终可用,ECC RAM是必需的。如果需要从备份中恢复ZFS系统只是某种程度的恼人(轻微的,适度的…),那么非ecc RAM将符合要求。
希望您的备份不包含损坏的数据。如果你一开始就备份了所有数据。
许多家庭NAS构建者将无法负担备份NAS上的所有数据,只能备份最关键的数据。例如,如果您存储了大量的视频文件,您可能要承担重新下载所有内容的风险。如果你不能接受这个风险,ECC内存是必须的。如果您可以接受这样的场景,非ecc内存是可以的,并且可以节省一些费用。这完全取决于你的需要。
当你在家里应用同样的技术时,商业环境中面临的风险不会神奇地消失。企业环境和家庭之间的主要区别是经营规模,而不是其他。这些风险仍然是切实存在的。
事情就这么简单。尽管由于您在家中操作的规模较小,您可能不会面临同样的受影响的机会,但您的NAS可能不会放置在温度和湿度控制的服务器室中。随着温度的升高,记忆错误的风险也会增加6.记住,记忆可能会产生自发的和暂时的缺陷(随机的位翻转)。如果您的系统是全天候供电的,那么发生这种事情的几率就会更高。
结论
就我个人而言,我认为即使对于家庭NAS,无论是否使用ZFS,最好使用ECC内存。它提供了一个更稳定的硬件平台。如果钱真的是一个限制,最好看看AMD的产品,然后跳过ECC内存。重要的是,如果你选择AMD硬件,你要确保CPU和主板都支持ECC,并报告它正在工作。
不过,如果您决定在ZFS中使用非ecc内存:只要您了解本文中概述的风险,并且可以接受,那就没问题。这是您的数据,您必须自行决定什么样的保护和相关费用对您来说是合理的。
当人们就NAS构建寻求建议时,应该始终建议使用ECC内存。我认为,从技术和数据完整性的角度来看,没有人应该给人留下这样的印象,即不使用ECC RAM对家庭使用是“安全的”。人们必须明白他们是在冒险。但他们很有可能永远不会遇到问题,但这并不能保证。如果出了问题,他们会接受后果吗?
如果数据完整性不是那么重要——因为数据本身并不重要——我就会发现它完全合理的人们可能会决定不使用ECC内存,从而节省几百美元。在这种情况下,它会也不使用ZFS也是完全合理的,这也允许他们选择其他文件系统和RAID,可能更适合他们的特定需求。
问题与答案
问:当我买了非ecc内存时,我运行了memtest86+,即使在老化测试之后也没有发现任何错误。所以我想我是安全的。
答:不是。使用memtest86+的内存测试只是一个及时的快照。那时,当您运行测试时,您确信内存是正常的。当你正在阅读这些文字的时候,它可能已经坏了。可能正在破坏你的数据。因此,频繁地运行memtest86+并不能真正为您带来多少好处。
问:你看到了吗Brian Moses的文章?
A:是的,我不同意他的观点,但我很欣赏他强调的你应该真正意识到所涉及的风险并做出正确的决定你自己适合你的情况。在我看来,有几点是不合适的:
我所经历的每一个坏的RAM棒都是这样从工厂来的,可以通过一些老化测试找到。
在我的生活中,我见过一些消费设备在多年的完美运行后突然出现内存错误。这是个人轶事的观点,不应该被用作决策的依据。记住:内存错误是常态,而不是例外。甚至在家里。事情就这么简单。让设备全天候运转也无济于事。
此外,Brian似乎认为可以通过花钱购买其他东西(例如场外备份)来降低使用非ecc内存的风险。布莱恩自己链接到一篇文章反驳他在这方面的立场.为了完整起见:损坏数据的备份有多大价值?您如何知道哪些数据已损坏?ZFS不能在这里拯救您。
问:我应该在笔记本电脑还是台式机上使用ZFS ?
答:与NAS相比,在台式机或笔记本电脑上运行ZFS是完全不同的用例。我认为这没有问题,我不认为这个讨论适用于台式机/笔记本电脑的使用。特别是因为您可能会将数据定期备份到NAS或云服务,对吗?如果有任何内存错误,您很快就会注意到。
更新
2015年8月11日更新,以反映ZFS在设计时没有考虑到ECC。在这方面,它与其他文件系统没有什么不同。
2015年4月3日更新-重写了整篇文章的大部分内容,使其更好读。
更新于2015年1月18日-重新措辞一些句子。修改了“告知人们并给他们一个选择”这一段,以争论什么时候不使用ECC内存是合理的。此外,我更明确地指出,ZFS本身没有处理坏RAM的机制。
更新于2015年2月21日-我基本上重写了这篇文章,以更好地看待ZFS + ECC的“争论”。
Windows将产生“蓝屏死机”,Linux将产生“内核恐慌”。↩
你正在使用的电脑(笔记本电脑/台式机)很可能在今年遇到了内存问题,但你无法判断。消费者硬件没有任何机制来检测和报告内存错误。↩
微软已经完成了研究2008年,他们在8个月的时间里收到了大约100万个系统的100万份崩溃报告。结果是内核代码页中单比特内存错误的失败率为1 / 1700(占总内存的很小一部分)。
:::文本将我们的分析局限于内核代码页的一个后果是,我们将忽略绝大多数内存中的DRAM故障。在典型的机器上,内核代码页大约占用30 MB的内存,这是我们研究中平均系统内存的1.5%。[…由于我们仅在1.5%的地址空间中捕获DRAM错误,因此整个DRAM的错误率可能远远高于我们观察到的。↩
这个论点不是我自己提出的。↩
评论