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

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

我有 28 个 2TB 磁盘池(56T),分为 4 个 7 磁盘阵列。由于是 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

那么,实际只有 42T,而不是 48T。缺失的 6TB 在哪里?50.5T 这个数字又从何而来?

答案1

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

4 个阵列,每个阵列包含 6 个有效磁盘,则为 24 * 1862 = 44703 GiBI,或者43.6 钛合金真实可用的存储空间。

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

答案2

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

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

答案3

硬盘制造商以十进制来测量磁盘大小。计算机以二进制来测量字节。
应该说 42TiB 阐明 tera- 前缀的 SI 用法

相关内容