我将从FreeBSD构建一个ZFS文件服务器。我最近了解到,一旦RAIDZ成为池的一部分,我就无法扩展它。这是一个问题,因为我是一个家庭用户,可能会增加一个磁盘最多一年。
但是,如果我将copies=3设置为对整个池设置,然后将单独的驱动器抛到单独的池中怎么办?我读到过一些地方,如果可能的话,拷贝会试着在不同的驱动器上分发。有保证吗?我真的只是想要保护,防止比特腐烂和驾驶故障的便宜。速度不是一个问题,因为它将通过一个1Gb的网络和最多720 p播客。
我的数据能保证不受单一驱动器故障的影响吗?有什么我没考虑的吗?任何和所有的输入都是感激的。
发布于 2010-01-17 11:50:44
在同一个池中使用raidz vdev +单个磁盘vdevs将不会受到保护。此时,您应该添加两个磁盘(并将它们镜像)到zpool中,这将覆盖一个磁盘故障。
原因是copies不能保证块最终会在不同的磁盘上结束。
扩展raidz的一个替代方法是使用zfs send暂时将所有数据存储在某个地方,同时添加磁盘并重新构建raidz,然后使用zfs receive将其取回。一旦你通过了一些结核病,这将是很困难的,因为你需要大量的空间来存储数据。
发布于 2012-05-07 07:31:37
文件系统数据很可能是多余的,特别是在copies=3中,因此您的数据将受到保护以防止位腐烂。
但是,由于没有办法用新的磁盘替换错误的磁盘,因此无法可靠地保护它以防止整个磁盘故障。即使在失败之后,您应该能够访问所有数据,但您的系统将无法通过重新启动,因为您的池是不可输入的。
类似的问题请参见如何在丢失驱动器后恢复正确的拷贝数?。
发布于 2012-05-06 17:42:49
有意思,今天发现了这个。副本应该保证由“副本”创建的代码块存储在不同的vdevs上:https://blogs.oracle.com/bill/entry/ditto_区块_这个_令人惊奇_磁带 (参见“散开它们”一节)
因此,根据这篇博客文章,您将受到保护,防止文件系统中存在多个副本的全磁盘故障。但只有在那些文件系统上。
在有多个设备的存储池(vdevs)中,情况会变得更加复杂。我们在一个单独的vdev上分配一个块的每个副本。
https://serverfault.com/questions/97916
复制相似问题