我正在构建一个 OpenSolaris 盒,以尝试使用 ZFS 和 RAIDZ。我从一个驱动器上的操作系统开始,并希望将所有数据存储在 RAIDZ 卷上。我对 RAIDZ 处理奇偶校验有点困惑。我使用命令“zpool create pool_1 raidz drive1 drive2 drive3”创建了一个池,当我执行 zpool list 时,它显示了三个驱动器的可用大小。我认为如果奇偶校验是自动计算的,它应该小于 1 个驱动器的大小。所以我删除了那个池,并使用“zpool create pool_1 raidz drive1 drive2 spare drive3”创建了一个池,可用大小正是我期望看到的。对我来说,热备用不是奇偶校验,但它是一个可以在您的 raid 丢失驱动器的情况下填充奇偶校验的磁盘。我不想走上这条路,让这两个驱动器中的一个发生故障,然后发现没有奇偶校验。
任何对此的解释都将非常感激。
答案1
RAID-Z 的“池”大小是池可用的整个物理空间 - 而不是文件系统的空间。
为此,您应该检查“zfs list”命令。
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
storage 5.32T 2.23T 3.09T 41% 1.00x ONLINE -
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
storage 1.49T 2.00T 38.6K /storage
正如您正确推测的那样,RAID-Z(或 RAID-Z1)是 (N-1) * 大小空间,而 RAID-Z2 是 (N-2) * 大小空间,其中 N 是驱动器数量,大小是单个驱动器的容量。
与 RAID-5 不同,RAID-Z 不使用某个特定驱动器进行奇偶校验,而是在不同的磁盘上轮流进行奇偶校验。这样可以提高系统效率,并防止奇偶校验磁盘过快磨损:
在此示例中,dw
是数据写入操作,pw
是奇偶校验写入操作。D3 是 raid 5 配置中的奇偶校验磁盘
突袭5:
D1 D2 D3
dw pw
dw pw
dw pw
dw pw
dw pw
dw pw
dw pw
您可以看到对磁盘 1 或磁盘 2 的每次写入操作都会导致对磁盘 3 的写入。
突袭-Z:
D1 D2 D3
dw pw
dw pw
pw dw
pw dw
dw pw
pw dw
pw dw
您可以看到更加均匀的磁盘写入模式。
zpool 的spare
vdev 是一个保留磁盘,可以随时与任何其他磁盘交换 - 热备用。除非您指示,否则不会使用此磁盘。
答案2
RAID 4 使用专用奇偶校验驱动器。RAID 5 对奇偶校验进行条带化。