我正在构建的文件服务器将托管一个datapool
由 3 个磁盘组成的 ZFS 池,配置为双奇偶校验 RAID-Z 池。datapool/home
池上创建了一个数据集。数据集datapool/home
导出为 NFS 共享。这是我所做的:
1. zpool create datapool mirror /dev/sdb /dev/sdc /dev/sdd
2. zfs create datapool/doc
我创建了有 3 个磁盘和一个数据集的 zpool datapool/doc
。我知道可以通过运行以下命令来创建 RAID:
mdadm --create --verbose /dev/md0 --level=5 --raid-level=3 /dev/sdb /dev/sdc /dev/sdd
但是,我对如何将我的 3 个磁盘配置为双奇偶校验 RAID-Z 池感到困惑。
答案1
要创建具有 2 个奇偶校验磁盘的 RAID-Z 池 ( raidz2
),您可以运行:
zpool create datapool raidz2 <disk1> <disk2> <disk3> ...
您根本不应该使用mdadm
此配置。ZFS 本身实现卷管理——mdadm
在 ZFS 使用的相同设备上使用会损坏你的数据。此外,一旦创建了池,您就无法更改数据冗余设置(除非是在您添加的新磁盘上,或者除非您将数据从现有池中复制出来,擦除并从头开始重建池)。
但是,如果您愿意,仍然无法仅对 3 个磁盘运行上述命令raidz2
。RAID-Z 背后的理念与镜像基本相同 - 您希望通过存储冗余信息来降低磁盘故障导致数据丢失的可能性 - 只不过它应该减少磁盘故障时重建数据所必须存储的冗余信息总量。但是,如果您想在除一个磁盘以外的所有磁盘故障的情况下幸存下来,您必须将所有数据放在最后一个幸存的磁盘上,因为没有其他磁盘可以读取来重建数据。
因此,如果您想要 2 故障冗余,那么镜像是仅使用 3 个磁盘所能实现的最佳方案:
zpool create datapool mirror <disk1> <disk2> <disk3>
但是,我相信raidz1
如果 1 故障冗余可以的话你可以使用:
zpool create datapool raidz1 <disk1> <disk2> <disk3>