在计算传统 RAID 阵列的 IOPS 时,可以使用以下公式(借自Getting The Hang Of IOPS v1.3 on Symantec Connect):
Ieffective = (n * Isingle) / (READ% + (F * WRITE%))
在哪里:
- Ieffective 是有效的 IOPS 数
- Isingle 是单个驱动器的平均 IOPS。
- n 是阵列中的磁盘数
- READ% 是从磁盘分析中读取的部分
- WRITE% 是从磁盘分析中获取的写入比例
F 是RAID 写入惩罚:
RAID Level Write Penalty RAID-0 1 RAID-1 2 RAID-5 4 RAID-6 6 RAID-10 2 RAID-DP 2
该公式本质上是以下函数:
- 阵列中每个驱动器的 IOPS
- 磁盘数量。更多磁盘意味着更多 IOPS
- 每个写入操作的 RAID 损失。
- RAID5 和 RAID6 每次写入都需要 4 次以上的磁盘操作。控制器必须先读取块再读取奇偶校验数据(两次操作),计算新的奇偶校验数据然后更新奇偶校验块并更新数据块(再执行两次操作)。RAID6 有两个奇偶校验块,因此需要三读和三写。因此,RAID5 和 RAID6 阵列的 IOPS 比 RAID1 少。
- RAID1 和 RAID10 只需要 2 次写入,镜像中的每个磁盘一次。
需要明确的是,这一切都提供了对理论性能的估计。各种控制器和 RAID 方法都有加快其中一些速度的技巧。
ZFS 的 RAID5 和 RAID6 等价物是 RAIDZ 和 RAIDZ2。在计算 RAIDZ 阵列的 IOPS 时,我是否可以使用与 RAID5 和 RAID6 相同的公式,或者 ZFS 是否有特殊技巧来减少写入操作所需的操作数量。
计算 RAIDZ 阵列的 IOPS 时是否有不同的公式可以使用?
这个比较容易回答...
这一切都在这里提炼:ZFS RAID 建议:空间、性能和 MTTDL和更深入地了解 ZFS、Vdevs 和性能
因此,如果您需要扩展,您可以根据 RAIDZ vdev 的数量进行扩展...例如,对于 16 个磁盘,4 组 4 磁盘 RAIDZ 将比 2 组 8 磁盘 RAIDZ 具有更大的 IOPS 潜力。
令人惊讶,对吧?
我通常在 ZFS 安装中使用条带镜像 (RAID 1+0)。同样的概念也适用。更多镜像对 == 更好的性能。
在 ZFS 中,您只能以完整 vdev 为单位进行扩展。因此,虽然扩展 RAID 1+0 集意味着添加更多对,但对 RAIDZ 集执行相同操作意味着添加更多组成相同的 RAIDZ 组。