mdadm raid5 写入时太慢

mdadm raid5 写入时太慢

我使用 4 个磁盘分区设置了一个 RAID5 阵列。所有磁盘都是 2TB。当 RAID5 阵列最初同步时,速度太慢了。所以我做了一个

回显 32768 > /sys/block/md2/md/stripe_cache_size

然后就很快了。但仍然需要一天的时间才能完成同步。现在我想做一个

dd if=/dev/zero of=/dev/md2 bs=1024k

到 RAID5 阵列上,一天过去了,但还没有完成。这会花太多时间吗?我做错了什么。

我的突袭详情在这里http://dpaste.com/749742/
Iostat 详细信息请点击此处http://dpaste.com/749761/ 硬盘分区详细信息请点击此处http://dpaste.com/749765/

我有一台完全相同的机器,细节也类似。但速度更快。

更新:我已经添加了我的硬盘分区详细信息。

答案1

构建此类阵列的正常时间为 5.5-6 小时。有几件事可能会减慢阵列重建过程 - 同一磁盘上的并发 IO、系统上的高 CPU 使用率、硬盘或电缆故障。

dd if=/dev/zero of=/dev/md2 bs=1024k- 会减慢重建速度。如果您确实需要用零重写数组 - 请在数组构建后进行。

检查其他分区上是否有负载 - 使用atopiostat -nx 1

检查您的平均负载atoptop

检查系统日志中是否存在 HDD 错误smartctl

答案2

在 raid 5 中您应该查看 raid 块大小。运行:cat /proc/mdstat来检查您的。

要更改它,请运行:

mdadm --grow /dev/md0 --chunk=16

这将重建您的阵列,需要很长时间才能完成。您可以阅读本文以了解更多相关信息: https://raid.wiki.kernel.org/index.php/RAID_setup#Chunk_sizes

然后您可以再次使用 dd 测试您的写入性能。

我编写了一个小脚本来测试读写:

#!/bin/bash

MDDEV="`cat /proc/mdstat | grep md | head -1 | awk '{print $1}'`"
if [ -z "$MDDEV" ]
then
    echo "I can\'t find any md" 
    exit 1
fi

DEVS="`cat /proc/mdstat | grep $MDDEV | tr " " "\n" | grep '^sd' | grep -v \(S\)$ | awk '{print substr($0,3,1)}' | tr -d "\n"`"

NUMDEVS=${#DEVS}

# write dd performance
echo 3 > /proc/sys/vm/drop_caches
dd if=/dev/zero of=/dev/$MDDEV bs=1M count=1024 conv=fdatasync,notrunc

for RASIZE in 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 
do
    echo $RASIZE
    MDRASIZE=$[$RASIZE*$NUMDEVS]
    blockdev --setra $MDRASIZE /dev/$MDDEV
    blockdev --setra $RASIZE /dev/sd[$DEVS]
    blockdev --setra $RASIZE /dev/sd[$DEVS]1

    echo 3 > /proc/sys/vm/drop_caches
    hdparm -t /dev/$MDDEV | grep "Timing"
    #echo 3 > /proc/sys/vm/drop_caches
    #dd if=/dev/$MDDEV of=/dev/null bs=1M count=1024 | grep "bytes"
done

对于读取性能,此脚本将为您提供最佳的预读值。然后将 blocdev 命令放入您的 /etc/rc.local 文件中以使其持久

答案3

软件 RAID-5 的速度非常慢,正如 DukeLion 指出的那样,系统上的任何其他负载(CPU 或 IO)都会使其速度进一步降低。如果您必须使用 RAID-5,我强烈建议您使用硬件(并且是合适的硬件,而不是驱动程序使用系统 CPU 在软件中执行的卡之一);或者耸耸肩,准备丢失三分之一的阵列,然后使用软件 RAID-1(从性能角度来看,这很好)。

编辑:我不是说 RAID-5 很慢;我说的是 RAID-5在软件中很慢。如果你将其他(不错的)系统的 IO 统计数据与硬件 RAID-5 的 IO 统计数据进行比较,我想你会发现差异很明显。我这里有一个新系统,带有一个不错的硬件 RAID 卡(Dell H700),如果你愿意的话,我很乐意和你一起做一些时间测试。

我承认,两个软件 RAID-5 的性能差异确实令人沮丧,但是,如果不了解每个软件 RAID-5 的物理和逻辑设置,就很难提出调整建议,而且我不确定我是否会这么做,因为根据我的经验(请原谅我的表达),调整软件 RAID-5 有点像给粪便镀金。

相关内容