raidz1 6x4TB = 16.9t?

raidz1 6x4TB = 16.9t?

我正在运行 Ubuntu 服务器,其中安装了最新版本的 zfs-utils。我安装了 6x4TB 磁盘(lsblk -b 显示所有磁盘分区 1 大小 = 4000787030016),并创建了包含所有 6 个磁盘的 raidz1 配置。raidz 计算器网站说我应该看到 20TB“可用”。当我运行“zpool list”时,我看到 21.8T“FREE”。当我运行“zfs list”时,我看到 16.9T“AVAIL”。当我运行“df -h”时,我看到 17T“Size”。据我了解,这与 RAID5“类似”。我很惊讶地发现,我一开始有大约 24T 的磁盘,但在 raidz1 之后,我只剩下 17T?据我了解,raidz1 与 RAID5“类似”,预计至少会因条带化而损失 4T,但其他 3T 去哪儿了?

2021/02/20 更新 - 我删除并重新创建了 /tank 几次,可能发布了之前版本的统计数据。以下是使用 6x4TB 磁盘时的统计数据。抱歉显示混乱。我还不熟悉如何在这个论坛上正确输入/显示内容。

root@bignas1:~# zfs list
NAME   USED  AVAIL     REFER  MOUNTPOINT
tank   805K  16.9T      153K  /tank

root@bignas1:~# zpool list
NAME   SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH ALTROOT
tank  21.8T  1.12M  21.8T        -         -     0%     0%  1.00x    ONLINE  -

root@bignas1:~# zpool list -v
NAME        SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
tank       21.8T  1.12M  21.8T        -         -     0%     0%  1.00x    ONLINE  -
  raidz1   21.8T  1.12M  21.8T        -         -     0%  0.00%      -  
ONLINE  
sda        -      -      -        -         -      -      -      -  ONLINE  
sdb        -      -      -        -         -      -      -      -  ONLINE  
sdc        -      -      -        -         -      -      -      -  ONLINE  
sdd        -      -      -        -         -      -      -      -  ONLINE  
sde        -      -      -        -         -      -      -      -  ONLINE  
sdf        -      -      -        -         -      -      -      -  ONLINE  

root@bignas1:~# zpool list
NAME   SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
tank  21.8T   912K  21.8T        -         -     0%     0%  1.00x    ONLINE  -

root@bignas1:~# zfs list
NAME   USED  AVAIL     REFER  MOUNTPOINT
tank   594K  16.9T      153K  /tank
root@bignas1:~# zfs version
zfs-0.8.3-1ubuntu12.6
zfs-kmod-0.8.3-1ubuntu12.5

2021/02/20 更新 2

root@bignas1:~# cat /sys/module/zfs/parameters/spa_slop_shift 5

root@bignas1:~# lsblk | grep sd sda 8:0 0 3.7T 0 磁盘
═─sda1 8:1 0 3.7T 0 部分
└─sda9 8:9 0 8M 0 部分
sdb 8:16 0 3.7T 0 磁盘
═─sdb1 8:17 0 3.7T 0 部分
└─sdb9 8:25 0 8M 0 部分
sdc 8:32 0 3.7T 0 磁盘
═─sdc1 8:33 0 3.7T 0 部分
└─sdc9 8:41 0 8M 0 部分
sdd 8:48 0 3.7T 0 磁盘
═─sdd1 8:49 0 3.7T 0 部分
└─sdd9 8:57 0 8M 0 部分
sde 8:64 0 3.7T 0 磁盘
═─sde1 8:65 0 3.7T 0 部分
└─sde9 8:73 0 8M 0 部分
sdf 8:80 0 3.7T 0 磁盘
═─sdf1 8:81 0 3.7T 0 部分
└─sdf9 8:89 0 8M 0 部分

答案1

首先,您需要考虑 4 TB 磁盘实际上是 3.64 TiB 磁盘(由于十进制/二进制转换,即:1 TB 定义为 10^12 而不是 2^40)。

所以,3.64 TiB * 5 个数据盘 = 18.2 TiB。注意:根据设计,zpool list报告总原始空间,不考虑奇偶校验开销。这就是它显示 21.8 TiB(3.64 * 6)的原因

从中,您需要减去 ZFS 为自己保留的空间。默认情况下,它设置为总池大小的 3.2%(可通过以下方式调整spa_slop_shift

18.2 TiB-3.2%=17.61 TB

奇怪的是,你又损失了约 600 GB,我无法解释。在我的一台配置了 6x 3.64 TiB 虚拟磁盘的测试机上,zfs list报告预期的 17.6 TiB 为可用。

cat /sys/module/zfs/parameters/spa_slop_shift你能展示一下和的输出lsblk吗?

答案2

我很惊讶地发现我开始时大约有 24T 的磁盘,而在 raidz1 之后只剩下 17T?

4000787030016字节大约为3.64 T,您的“感谢”归于营销。

相关内容