带有ZFS的RAID 1E

IBM的存储系统以及Linux的mdraid都支持RAID级别1E,因此可以使用奇数个磁盘来实现50%的冗余:

RAID 1E

在设置copies=2是否可以达到创build具有奇数个单磁盘vdevs的zpool的效果? 这是如何从pipe理的angular度来看 – 我仍然可以做一个zpool replace来replace磁盘? 在这种设置下,池如何在磁盘发生故障时运行?

据我所知,不。

如你所知,'zpool copies'会创build冗余位,我记得,它应该试图将这些冗余位尽可能地推送到尽可能远的地方,但是我不相信这是一个硬性和快速的要求。镜像中的镜像位vdev; 空间限制,我相信其他的移动片段可能导致复制#2仍然在同一个磁盘上的情况。 如果这种情况发生一次,那么从这样的configuration丢失驱动器将是一个问题,数据保留明智。

池pipe理命令的devise也不像处理镜像的vdevs一样。 也不是ZFS工作stream的devise方式与处理镜像或奇偶校验vdevs的方式相同 – 即使您有多个磁盘作为顶级vdevs,即使您拥有的副本数为2或更高从第1天开始,我期望ZFS可以大声抱怨,并可能开始返回数据访问错误。

我不希望副本= 2(或更多)像RAID 1E一样行事。 但是,如果您在磁盘上创build了多个分区,并将其设置在正确的镜像vdevs中,则可以使用ZFS复制RAID 1E的想法。 如果您有3个驱动器,每个驱动器都有2个分区,并且您设置了镜像vdevs,以便每对分区不是来自同一个驱动器,则生成的池可以承受单个磁盘丢失。 然而,这样一个游泳池的performance特征从来没有被发现,据我所知(我猜测他们会是坏的)。

ZFS不支持RAID 1E,因为RAID-Z不会受到RAID 5写入漏洞的影响。 RAID-Z提供更好的空间利用率,性能差异和相同的容错性。

设置copies=2不会强制这些副本位于不同的物理磁盘上。 所以它不提供物理磁盘故障的故障保护。 将数字设置为1以上(默认值),可以创build称为“同上”块的副本。 这些对于从URE恢复或断电数据损坏是有用的(因为会有另一个数据副本,希望有一个有效的校验和)。 ZFS提供了固有的数据损坏检测,而不是保护; 这是防止某些types的腐败。