我注意到写入 raid-6 的速度非常低,但是当我使用 hdparm 进行测试时,速度是合理的:
dd if=/dev/zero of=/store/01/test.tmp bs=1M count=10000
给出:50Mb/s 甚至更低。
hdparm 给出:hdparm --direct -t /dev/vg_store_01/logical_vg_store_01 给出 450MB/s
为什么文件写入速度低于 hdparm 测试?是否需要调整某些内核限制?
我有一个 Areca 1680 适配器,带有 16x1Tb SAS 磁盘,科学 Linux 6.0
编辑
我的错。抱歉,所有单位均为 MB/s
有关硬件的更多信息:
双四核机器中的 2 个 areca 控制器。16Gb RAM,
sas 背板和 areca 的固件是最新的。
磁盘是 seagate 7.200 rpm 16x1Tb x2 raid 盒。每 8 个磁盘都是 raid6,因此共有 4 个卷,lba=64。
两个卷按条带化 lvm 和 ext4 格式分组
条带大小为 128
当我格式化卷时,我可以通过 iotop 看到它写入 400mb/s
iostat 还显示两个 lvm 成员驱动器的写入速度均为 450MB/s
最终以 1600GB/s 的速度写入
由于磁盘损坏,其中一个 raid 的性能下降。奇怪的是,jbod 模式下的磁盘与其他磁盘一样,使用 hdparm 时速度为 100MB/s。在大量 IO 之后,它在日志文件中报告写入错误(不是有 10 个)。raid 仍然没有发生故障或性能下降。
更换后我的配置如下:
- 2xARC1680 控制器,配备
- RAID0 带有 16x1Tb SAS 磁盘条带 128 lba64
- RAID0 带有 16x1Tb SAS 磁盘条带 128 lba64
具有 128K 条带大小的卷组
格式化为 XFS
直接的
hdparm --direct -t /dev/vg_store01/vg_logical_store01
/dev/vg_store01/vg_logical_store01:计时 O_DIRECT 磁盘读取:3.00 秒内 4910 MB =1636.13 MB/秒
无直接
hdparm -t /dev/vg_store01/vg_logical_store01
/dev/vg_store01/vg_logical_store01:计时缓冲磁盘读取:3.00 秒内 1648 MB =548.94 MB/秒
** dd 测试直接**
dd if=/dev/zero of=/store/01/test.tmp bs=1M count=10000 oflag=direct 10000+0 条记录输入 10000+0 条记录输出 10485760000 字节(10 GB)已复制,8.87402 秒,1.2 GB/秒
** 无需直接联系**
dd if=/dev/zero of=/store/01/test.tmp bs=1M count=10000 10000+0 条记录输入 10000+0 条记录输出 10485760000 字节(10 GB)已复制,19.1996 秒,546 MB/秒
答案1
检查您的 FS 是否与 RAID 尺寸对齐。我在 XFS 上使用 8 x 2TB SATA 驱动器在 RAID-6 阵列上获得 320MB/s,我认为它受到 3Gb/s SAS 通道速率的限制,然后是 RAID-6 性能。您可以从中获得一些关于对齐的想法此主题。
答案2
不幸的是,你正在比较苹果和橘子。
450Mb/s = 56MB/s,这与您在现实生活中看到的速度大致相同。它们都给出相同的读数(但一个以位为单位,一个以字节为单位)。您需要将 450 除以 8 才能得到两者的相同测量值。
(在您的问题中,您把大写字母颠倒了,现在我只能希望/假设这是一个打字错误,因为如果您反转大写字母,您会得到几乎完美的匹配)
答案3
检查是否可以在 RAID 控制器上启用写入缓存
最好你的控制器上有电池,否则你可能会在断电时丢失数据
答案4
但当我用 hdparm 进行测试时,速度还算合理
hdparm
做不是测试写性能,它是“只读的”。此外,它实际上测试堵塞I/O 读取性能,但调用的方式dd
会同时测试写和文件系统性能(而且 RAID-5,6 的写入速度明显慢于读取速度)。例如,如果您的文件系统是 EXT3,则由于格式化不正确(例如不是考虑您的 RAID 的完整条带大小参数)。
此外,很多人倾向于使用较小的条带大小,这会导致磁盘 I/O 不理想。创建此 RAID 时,您的条带大小选择是什么?
另一个问题是,dd
随着参数的变化,数字有何不同bs
?您是否尝试过使用全条带写入大小?