Linux 上的软件 raid10 读取性能较差

Linux 上的软件 raid10 读取性能较差

我最近设置了新的基于 Linux 的文件服务器。我使用的发行版是 Ubuntu 10.10。我创建了两个软件 raid 设备,如下所示:

mc@vmr:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf1[1] sdh1[3] sde1[0] sdg1[2]
  19530688 blocks [4/4] [UUUU]

md1 : active raid10 sdh3[3] sdf3[1] sde3[0] sdg3[2]
  1912461184 blocks 64K chunks 2 near-copies [4/4] [UUUU]

设备 /dev/md0 (raid1) 安装在“/”上,/dev/md1 (raid10) 安装在“/home”上。不幸的是,我的 raid10 的性能非常不令人满意。以下是每个单个 HDD 的性能:

mc@vmr:~$ sudo hdparm -t /dev/sdh3  
/dev/sdh3:
 Timing buffered disk reads:  410 MB in  3.00 seconds = 136.57 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sdf3
/dev/sdf3:
 Timing buffered disk reads:  402 MB in  3.01 seconds = 133.60 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sde3
/dev/sde3:
 Timing buffered disk reads:  418 MB in  3.01 seconds = 139.10 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sdg3
/dev/sdg3:
 Timing buffered disk reads:  406 MB in  3.00 seconds = 135.32 MB/sec

因此,我自然而然地期望读取性能在 260 MB/秒左右,但得到的却是这样的:

mc@vmr:~$ sudo hdparm -t /dev/md1
/dev/md1:
 Timing buffered disk reads:  172 MB in  3.04 seconds =  56.64 MB/sec

首先我假设hdparm测试方法不是 100% 可信的,所以我做了一些真实世界的读取测试,但性能仍然不如预期(random.bin 放在 raid10 上):

mc@vmr:~$ dd if=random.bin of=/dev/null bs=256k
38800+0 records in
38800+0 records out
10171187200 bytes (10 GB) copied, 96.3874 s, 106 MB/s

最后分享一下raid1的读取性能完全符合预期:

mc@vmr:~$ sudo hdparm -t /dev/md0
/dev/md0:
 Timing buffered disk reads:  412 MB in  3.01 seconds = 136.91 MB/sec

有人遇到过这样的问题吗?有什么线索吗?

答案1

64K 块

— 太小了。几乎每个 I/O 操作都有可能涉及 2 个具有这种条带大小的磁盘,这意味着更多的 I/O 浪费。我的建议是至少 512 KiB,也可能是 1—2 MiB。

另外,你可能会发现我的回答有用。

答案2

我刚刚再次创建了我的 md1 数组:

leo@stellie:~$ cat /proc/mdstat 
Personalities : [raid1] [raid10] 
md1 : active raid10 sdc6[0] sdb6[2] sda6[1]
      32807040 blocks super 1.2 64K chunks 2 far-copies [3/3] [UUU] 
md0 : active raid1 sda1[0] sdb1[2] sdc1[1]
      248896 blocks [3/3] [UUU]

请注意:1. 元数据版本升级至 1.2 2. 远拷贝取代近拷贝

leo@stellie:~$ sudo hdparm -t /dev/md1
/dev/md1:
 Timing buffered disk reads: 372 MB in  3.02 seconds = 123.29 MB/sec

在阵列尚未使用时,我做了更多 hdparm 测试,结果: - 64K 块和近拷贝的性能比以前更好(~70MB/秒) - 512K 块的传输速率较低(~50MB/秒) - 远拷贝和 64K 块已达到最大读取性能

正如您所说,我也需要用 iozone 进行测试。

答案3

选择不多

1.存在问题:

  • 硬盘固件
  • 固件主板
  • 固件 sata 控制器
  • ubuntu 中的错误

2.尝试调整一些东西

  • hdparm -t --direct /dev/md0
  • blockdev --setra 16384
  • 尝试使用 raid10 的更大块(不确定是否有用)

无论如何,hdparm 并不是最好的基准测试软件 - 尝试 bonni++、iozone 或 dd

相关内容