ZFS、raidz1:为什么卷大小(42T)比池大小(50T)小得多?

Pav*_*vel 5 zfs raid5 raidz zpool

我在 7 个磁盘的 4 个阵列中拥有 28 个 2TB 磁盘 (56T) 的池。由于它是 raidz1 (~RAID5),我希望每个阵列中的奇偶校验使用 1 个磁盘,因此生成的卷应该是 2TB*4*(7-1)=48TB,对吗?

现在,我在我的系统上看到的:

$ zpool list volume
NAME     SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
volume  50.5T   308K  50.5T   0%  1.00x  ONLINE  -

$ zfs list volume
NAME     USED  AVAIL  REFER  MOUNTPOINT
volume  2.00T  40.3T  75.8K  /volume

$ df -h /volume
Filesystem             Size   Used  Available Capacity  Mounted on
volume                  42T    75K        40T     1%    /volume
Run Code Online (Sandbox Code Playgroud)

所以,只有42T而不是48T。缺少的 6TB 在哪里?50.5T这个数字从何而来?

ada*_*ptr 6

2TB 磁盘的大小不是 2 TiBi - 它只有 2*10^12 / 2^30 ~ 1862 GiBi。

4 个包含 6 个有效磁盘的阵列将是 24 * 1862 = 44703 GiBI,或43.6 TiBi的实际可用存储空间。

我认为它有一些您没有考虑的额外开销 - IIRC RAIDZ 还执行快照和清理,这会占用额外的空间。


Sha*_*den 5

要澄清命令之间的输出差异:

zpool命令将用于冗余的磁盘计算为空间,而该zfs命令不计算;因此,50.5 TB 数字是您的原始磁盘大小,而 42T 是在取出 4 个磁盘以进行冗余之后。