问题
为什么我的初始重新同步这么慢?最初cat /proc/mdstat
报告~ 30000K/sec
。
- 然后我把 增加到
/sys/block/md0/md/stripe_cache_size
。256
这样16384
就把速度提高到了~50000K/sec
。 - 我
/proc/sys/dev/raid/speed_limit_min
从1000
改为,100000
并/proc/sys/dev/raid/speed_limit_max
从200000
改为400000
,但这没有帮助。
我还能做些什么来加快速度?
- 这个话题建议用其他任何硬盘替换 Western Digital Green 硬盘。这对我来说不是一个选择。
- 运行
smartctl -t short /dev/sd[bcd]
之后并smartctl -l selftest /dev/sd[bcd]
没有发现任何错误。 - 我在这个主题上找到了一些资源(1,2) 没有具体说明如何(哪些命令)来改变某些设置,也没有很好地解释它们的作用以及它们为什么有帮助。
一些背景
如何设置 raid 阵列
我刚刚在我的 Ubuntu 14.04 服务器上添加了三个 2TB Western Digital SATA(其“绿色”系列)硬盘。它们是/dev/sd[bcd]
。
我决定在 raid5 阵列中使用它们并按如下方式设置所有内容:
1)在每个磁盘上创建一个分区:
fdisk /dev/sdb
( 和sdc
也一样sdd
)
基于这篇博文我选择2048
和3907029128
作为每个磁盘上的第一个和最后一个扇区。这些数字可以被 4 整除,因为这些驱动器是 4K 扇区驱动器。
da (Non-FS data)
根据该博客文章,fs 类型设置为
这会停止分发自动挂载启动脚本,以搜索标记为“fd”的驱动器上的超级块并尝试以有趣的顺序挂载它们。
由于 raid 阵列对于启动系统来说不是必需的,所以这对我来说是有意义的。
2)使用以下命令创建 raid 阵列mdadm
:
mdadm --create --verbose /dev/md0 --level=5 --chunk=2048 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=0 --force
该--chunk=2048
选项还受到了同一篇博文,“牢记‘应该可以被 4 整除’的逻辑。”
这些--spare-devices=0 --force
选项是我自己创建的,因为如果没有这些选项,mdadm
命令将启动初始重新同步过程,但会很快减慢到< 200K/sec
,然后退出并显示“可能已失败”的消息/var/mail/root
。/dev/sdd
发生这种情况后, 的输出mdadm --detail /dev/md0
将显示/dev/sdd1
已移至备用驱动器。
自从添加这些选项以来,重新同步继续运行。它首先减慢到< 100K/sec
但随后速度增加到大约30000K/sec
并保持在那里。
关于正在运行的重新同步过程
atop
揭示了/dev/sdd
最慢的
DSK | sdd | busy 103% | read 930 | write 304 | KiB/r 512 | | KiB/w 512 | MBr/s 46.50 | MBw/s 15.20 | avq 112.12 | avio 8.10 ms |
DSK | sdc | busy 85% | read 942 | write 384 | KiB/r 508 | | KiB/w 410 | MBr/s 46.75 | MBw/s 15.40 | avq 20.59 | avio 6.21 ms |
DSK | sdb | busy 73% | read 942 | write 387 | KiB/r 508 | | KiB/w 411 | MBr/s 46.75 | MBw/s 15.55 | avq 17.31 | avio 5.31 ms |
关于 WD Green 硬盘
所有驱动器都是在不同时间购买的(因此我怀疑它们来自不同的生产批次,相隔数月)。
/dev/sdb
并且/dev/sdc
是最新的,具有 64MB 缓存。/dev/sdd
具有 32MB 缓存。
答案1
在发布此问题仅几分钟后,初始重新同步就再次取消了,方法是将我最旧的磁盘移至“备用”位置,甚至在达到 100% 之前。
尽管设备没有发现任何smartclt
问题,但事实证明它确实坏了。这是由 确定的badblocks
,它显示了数千个损坏的扇区。用新磁盘替换该磁盘解决了我的问题。