我正在尝试配置 MD RAID1(使用 mdadm),--write-mostly
以便网络(EBS)卷和本地驱动器互为镜像(想法是本地驱动器对我的实例来说是短暂的,但具有更好的性能)。
为了验证这个想法,我使用以下两个脚本对我的驱动器进行了基准性能评估。
fio -name=RandWrite -group_reporting -allow_file_create=0 \
-direct=1 -iodepth=128 -rw=randwrite -ioengine=io_uring -bs=32k \
-time_based=1 -ramp_time=10 -runtime 10 -numjobs=8 \
-randrepeat=0 -norandommap=1 -filename=$BENCHMARK_TARGET
# Read performance
fio -name=RandRead -group_reporting -allow_file_create=0 \
-direct=1 -iodepth=128 -rw=randread -ioengine=io_uring -bs=32k \
-time_based=1 -ramp_time=10 -runtime 10 -numjobs=8 \
-randrepeat=0 -norandommap=1 -filename=$BENCHMARK_TARGET
结果:
- 网络驱动器:写入速度为 117 MiB/s,读取速度为 117 MiB/s
- 本地驱动器:写入速度为 862 MiB/s,读取速度为 665 MiB/s
当我引入 mdadm 时,问题就出现了。即使使用简单的无镜像“RAID1”,使用网络驱动器时写入性能也会严重下降。
mdadm --build /dev/md0 --verbose --level=1 --force --raid-devices=1 "$TARGET"
# mdadm --detail /dev/md0
/dev/md0:
Version :
Creation Time : Mon Sep 30 14:22:41 2024
Raid Level : raid1
Array Size : 10485760 (10.00 GiB 10.74 GB)
Used Dev Size : 10485760 (10.00 GiB 10.74 GB)
Raid Devices : 1
Total Devices : 1
State : clean
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
- 由网络驱动器支持的 0 镜像 RAID1 阵列:写入速度为 69.9 MiB/s,读取速度为 118 MiB/s
- 由本地驱动器支持的 0 镜像 RAID1 阵列:写入速度为 868 MiB/s,读取速度为 665 MiB/s
我们在这里可以看到,本地驱动器(MD-raid 与原始访问)的写入性能没有太大变化,但通过 MD-raid 使用网络驱动器时,写入性能会严重受损。为什么会发生这种情况?