MD Raid 1 读平衡算法

Sid*_*ado 5 linux raid lvm raid-1 luks

我通过google搜索过,但没有找到任何关于MD raid1的读平衡算法的信息。

几年前,我可能在某处读到它用来hashing the process id确定它使用哪个设备,但我不确定。

我在 raid1 之上安装了 KVM 虚拟化 + LVM,并且多次目睹从多个虚拟机读取数据到同一个磁盘,利用率达到 100%,而 raid1 中的另一个磁盘处于空闲状态。(通过 iostat -x)

编辑:问题还与虚拟机内的多个进程有关。即使在虚拟机内部也会发生读取平衡吗?

读数是否平衡?如果是的话通过什么算法?

我问的原因是因为我目前正在两种变体之间做出选择

  1. LUKS 位于单个 MD 设备之上
  2. MD 位于两台 LUKS 设备顶部

第二种变体使用更多的CPU,但这不是问题。

Ove*_*ind 5

只要一次执行两个单独的磁盘读取操作,Linux 实现的 RAID1 就可以加快磁盘读取操作的速度。这意味着在 RAID1 上读取一个文件不会比在单个磁盘上更快,但同时读取两个不同的文件会更快。

在 DD 和读取缓存禁用的情况下完成读取测试:

Test single file:
1048576000 copied @ 224MB/s

Test same file 2 transfers:
Test single file:
1048576000 copied @ 116MB/s
1048576000 copied @ 104MB/s

Test 2 files 2 transfers:
1048576000 copied @ 212MB/s
1048576000 copied @ 217MB/s
Run Code Online (Sandbox Code Playgroud)

至于选项,LUKS 在单个 MD 设备之上听起来更合乎逻辑。

从同一磁盘发生的读取问题可以使用best_dist_diskbest_pending_disk参数进行调整。您可以在此处查看完整的示例。