Gre*_*reg 9 performance zfs mdadm raid1 btrfs
鉴于 RAID1 写入数据的两个副本,我的理解是读取应该接近单个磁盘的两倍。
我测试了不同技术(mdadm、zfs、btrfs)的读取性能,但收效甚微。
根据我的经验:
我已经使用 dd、iotop 和 iostat 验证了结果。
如何同时读取两个磁盘上的数据才能达到单个磁盘两倍的读取性能?
Wax*_*ead 12
问题是关于如何完成测试的信息有点有限,所以我假设您只是使用 dd 直接写入文件。
BTRFS:
在 BTRFS 术语中,RAID1 意味着两个副本,无论池中有多少磁盘。因此,为简单起见,我们假设数据和元数据都存储在两个磁盘上的 RAID1 中。因此,每个磁盘都是另一个磁盘内容的副本(在 BTRFS 中,磁盘布局可能不相同)。
当 BTRFS 执行读取它时(我最后一次检查)依赖于进程的 PID 来确定首先从哪些磁盘读取。这意味着如果您运行单个进程,它将只从其中一个磁盘读取,除非出现错误并且需要从另一个磁盘检索良好的副本。
下次运行该进程时,它可能具有不同的 PID,BTRFS 将首先从另一个磁盘读取数据。
MD:(MDADM)
对于顺序读取,您不会获得太多收益,因为两个设备上都有相同的数据,因此两个磁盘在开始读取之前都需要跳过(查找)相同数量的数据。例如,磁盘 A 在读取接下来的 10 个字节之前需要等待(跳过)前 10 个字节,即使磁盘 B 可以在磁盘 A 跳过的同时读取前 10 个字节,它仍然需要等到磁盘 A 有完成能够将它应该在内存中读取的 20 个字节放在一起。
从 MD 手册页 (man md):
“请注意,驱动程序完成的读取平衡不会使 RAID1 性能配置文件与 RAID0 相同;单个顺序输入流不会被加速(例如单个 dd),但多个顺序流或随机工作负载将使用多个主轴。理论上,拥有 N 盘 RAID1 将允许 N 个顺序线程从所有磁盘读取。”
ZFS:
我对 ZFS 一无所知,但我希望它的工作方式与 BTRFS/MDADM 大致相同。
结论:
对于像您可能使用 dd 所做的单顺序读取操作,通过在 BTRFS 和/或 MDADM 上设置 RAID1 并没有太多的性能提升。
如果您想在 BTRFS 和 MDADM 上看到改进的读取速度(确实存在),您需要在阵列上并行执行多个不同的读取。BTRFS 可能会根据 PID 将读取分布在不同的磁盘上,而 MDADM 应该会显着减少查找次数。请记住,RAID1 与 RAID0 不同,尤其是在 BTRFS 阵列上。
| 归档时间: |
|
| 查看次数: |
3013 次 |
| 最近记录: |