我在带有 Broadcom/LSI MegaRAID SAS39xx RAID 控制器的文件服务器中拥有 20X SATA 12TB 磁盘。它正在运行 ubuntu。为了进行性能实验,我创建了两个存储池:
- 单个硬件 RAID6 阵列由 10 个磁盘组成 = 8 个数据磁盘 + 2 个奇偶校验磁盘(有效)。然后我使用 ZFS 将其池化并挂载。该池名为 hardA。
-10 个单磁盘“raid”,然后使用它们创建了一个 ZFS raidZ2 池。该池名为 softB。
令人惊讶的是(至少对我来说)softB 比 hardA 小约 5TB(83TB 而不是 87TB,我的数学表明 87TB 是预期值)。我的逻辑表明,这两个解决方案的所有开销应该相同或非常接近。有人能解释一下差异在哪里吗,以及我是否可以做些什么来修复它。
(顺便说一句,在迄今为止我所做的有限测试中,我发现在 FIO 中运行的几乎每个测试中,软 B 的性能都超过硬 A 的两倍,但这不是重点。工作正在进行中。是的,ashift 自动检测到 12)
随机诊断如下:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
hardA 15.9M 87.2T 96K /hardA
hardA/data 96K 87.2T 96K /store/hardA
softB 24.2M 83.0T 219K /softB
softB/data 219K 83.0T 219K /store/softB
# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
hardA 87.3T 16.1M 87.3T - - 0% 0% 1.00x ONLINE -
softB 109T 31.8M 109T - - 0% 0% 1.00x ONLINE -
# zpool status
pool: hardA
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
hardA ONLINE 0 0 0
sdc ONLINE 0 0 0
errors: No known data errors
pool: softB
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
softB ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
sdh ONLINE 0 0 0
sdi ONLINE 0 0 0
sdj ONLINE 0 0 0
sdk ONLINE 0 0 0
sdl ONLINE 0 0 0
sdm ONLINE 0 0 0
errors: No known data errors
# zpool iostat -v
capacity operations bandwidth
pool alloc free read write read write
---------- ----- ----- ----- ----- ----- -----
hardA 16.1M 87.3T 8 67 1.09M 51.6M
sdc 16.1M 87.3T 8 67 1.09M 51.6M
---------- ----- ----- ----- ----- ----- -----
softB 31.8M 109T 54 477 867K 70.0M
raidz2-0 31.8M 109T 54 477 867K 70.0M
sdd - - 5 49 86.8K 7.00M
sde - - 5 46 86.7K 7.00M
sdf - - 5 51 86.7K 7.00M
sdg - - 5 46 86.6K 7.00M
sdh - - 5 48 86.5K 7.00M
sdi - - 5 47 86.6K 7.00M
sdj - - 5 48 86.8K 7.00M
sdk - - 5 47 86.9K 7.00M
sdl - - 5 47 86.6K 7.01M
sdm - - 5 45 86.7K 7.01M
---------- ----- ----- ----- ----- ----- -----
# df -h
Filesystem Size Used Avail Use% Mounted on
--snip--
hardA 88T 128K 88T 1% /hardA
softB 83T 256K 83T 1% /softB
hardA/data 88T 128K 88T 1% /store/hardA
softB/data 83T 256K 83T 1% /store/softB
--snip--
#zfs version
zfs-2.1.4-0ubuntu0.1
zfs-kmod-2.1.2-1ubuntu3```
答案1
RAIDZ2 与 RAID 6 不同...相似的,但并不相同。需要考虑不同的开销。
对于 ZFS,spa_slop_shift
保留 3.2% 的池空间用于池操作,并作为防止空间不足的缓冲。这可以调整,对于大型 zpools 应该考虑。
预测 ZFS 可用容量涉及很多机制。请参阅:https://wintelguy.com/2017/zfs-storage-overhead.html
在许多情况下,每个 vdev 中的设备数量以及 vdev 的数量都会影响结果。