SSD(Intel 530)RAID 10的读写速度非常慢

说明:

我们有一个服务器:

  • 型号:HP ProLiant DL160 G6
  • 4 x 240GB SSD(RAID-10)
  • 72GB DDR3内存
  • 2 x L5639
  • HP P410 RAID控制器(256MB,V6.40,Rom版本:8.40.41.00)

SSD硬盘是4个全新的2.5“Intel 530,具有540MB / s的读取速度和490MB / s的写入速度

  • CentOS 6
  • 文件系统是ext4

但这是raid 10的读取速度的testing结果:

hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 824 MB in 3.00 seconds = 274.50 MB/sec [root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root /dev/mapper/vg_localhost-lv_root: Timing buffered disk reads: 800 MB in 3.01 seconds = 266.19 MB/sec 

这是写速度:

 dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync 512+0 records in 512+0 records out 536870912 bytes (537 MB) copied, 4.91077 s, 109 MB/s 

我们希望RAID 10的读取速度为1GB,但270MB甚至不是单个磁盘的速度!

问题:

  1. 为什么这么慢?
  2. 是因为RAID控制器吗?

更新1 – 相同的读取/写入速度:

改变一些设置后,在答案中提到我有下面的结果:

(任何人都知道为什么它显示4GB而不是400MB的读取速度?!)

编辑:看起来像命令是错误的,我们应该已经使用-s144g这个数量的内存,这就是为什么它显示4GB(如由ewwhite的意见build议)

 [root@192 ~]# iozone -t1 -i0 -i1 -i2 -r1m -s56g Iozone: Performance Test of File I/O Version $Revision: 3.408 $ Compiled for 64 bit mode. Build: linux Record Size 1024 KB File size set to 58720256 KB Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g Output is in Kbytes/sec Each process writes a 58720256 Kbyte file in 1024 Kbyte records Children see throughput for 1 initial writers = 135331.80 KB/sec Children see throughput for 1 rewriters = 124085.66 KB/sec Children see throughput for 1 readers = 4732046.50 KB/sec Children see throughput for 1 re-readers = 4741508.00 KB/sec Children see throughput for 1 random readers = 4590884.50 KB/sec Children see throughput for 1 random writers = 124082.41 KB/sec 

但旧的hdparm -t /dev/sda命令仍然显示:

定时缓冲磁盘读取:3.00秒内为810 MB = 269.85 MB /秒

更新2(tuned-utils包) – 读取速度现在是600MB /秒:

最后有人希望,我们已经禁用了raid控制器的caching,并且在没有运气的情况下做了一些其他的事情,但是因为我们重新加载了服务器并重新安装了操作系统,所以我们忘记安装ewwhite的答案中提到的“tuned-utils” ewwhite为你提出的这个令人敬畏的包)

安装tuned-utils并selectenterprise-storageconfiguration文件后,读取速度现在是〜600MB / s +,但是写入速度仍然很慢(〜160MB)(:

这里是iozone -t1 -i0 -i1 -i2 -r1m -s144g命令的结果:

  Children see throughput for 1 initial writers = 165331.80 KB/sec Children see throughput for 1 rewriters = 115734.91 KB/sec Children see throughput for 1 readers = 719323.81 KB/sec Children see throughput for 1 re-readers = 732008.56 KB/sec Children see throughput for 1 random readers = 549284.69 KB/sec Children see throughput for 1 random writers = 116389.76 KB/sec 

即使使用hdparm -t /dev/sda命令,我们也有:

定时缓冲磁盘读取:在3.00秒1802 MB = 600.37 MB /秒

任何build议对于非常慢的写入速度?

更新3 – 在评论中请求的一些信息:

写入速度仍然非常低(〜150MB / s,甚至不是单个磁盘的1/3)

输出为df -hfdisk -l

 [root@192 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 441G 3.2G 415G 1% / tmpfs 36G 0 36G 0% /dev/shm [root@192 ~]# fdisk -l Disk /dev/sda: 480.0 GB, 480047620096 bytes 255 heads, 63 sectors/track, 58362 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00040c3c Device Boot Start End Blocks Id System /dev/sda1 * 1 58363 468795392 83 Linux 

虽然其他答案在这里有一些问题,但是您的具体问题是由于平台限制和操作系统configuration:

  • 您在惠普智能arraysP410 RAID控制器上使用消费型 SATA固态硬盘来限制吞吐量。 这些控制器上的SATA磁盘运行速度为3.0Gbps(3G),而不是6.0Gbps(6G)。 所以这是影响英特尔SSD读取速度的障碍; 每个驱动器300MB / s或更less。

  • Smart Array P410控制器在与SSD一起使用时有特定的要求和最佳实践 。 简而言之,控制器可以达到50,000 IOPS,为您的SSD容量禁用arrays加速器,性能在〜6驱动器上达到顶峰。

  • 磁盘性能并不总是与顺序读写速度有关。 尝试使用适当的工具,如iozone或bonnie ++进行基准testing。 您仍然可以获得多个驱动器的随机I / O优势。

  • 在操作系统级别,安装tuned-utils软件包并将configuration文件设置为enterprise-performance以消除文件系统的写入障碍,并为您的设置设置正确的I / O电梯。 这也包括在其他问题中 。

  • 看起来你正在使用LVM。 这可以有一个影响,以及…

这是一个G7 ProLiant的iozone报告,在同一个HP Smart Array P410 RAID控制器上运行四个 消费级6G SATA SSD (降低到3G速度)。

您应该看到〜470MB / s写入和650MB / s +读取。

 [root@mdmarra /data/tmp]# iozone -t1 -i0 -i1 -i2 -r1m -s56g Iozone: Performance Test of File I/O Version $Revision: 3.394 $ Compiled for 64 bit mode. Build: linux Record Size 1024 KB File size set to 58720256 KB Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g Output is in Kbytes/sec Each process writes a 58720256 Kbyte file in 1024 Kbyte records Children see throughput for 1 initial writers = 478209.81 KB/sec Children see throughput for 1 rewriters = 478200.84 KB/sec Children see throughput for 1 readers = 677397.69 KB/sec Children see throughput for 1 re-readers = 679523.88 KB/sec Children see throughput for 1 random readers = 437344.78 KB/sec Children see throughput for 1 random writers = 486254.41 KB/sec 

哦,亲爱的,从哪里开始?

有这么多的参与,你需要很好的理解一切。 只是抛出一堆磁盘对RAID控制器不会产生你正在寻找的结果。

这不容易回答。 但至less,这是一个你必须看的东西的清单:

  • 控制器是否具有所需的吞吐量? ( – >数据表)
  • 控制器是否有足够的带宽给主机(甚至在v1.0,因为它是x8)
  • 系统的芯片组是否有足够的吞吐量(CPU-Controller)? (未知)
  • 你有什么写策略指示财务主任聘用? ( 这是最有可能咬你的东西
  • 一切都alignment(分区开始,LV,PV)?
  • 块大小是否协调一致? (RAID条带大小,块大小,FS块,…)
  • 文件系统是否针对RAID设置进行了优化? (级别和块大小)

由于对整个RAID(无视FS)的吞吐量远低于单个磁盘,所以很可能是您错误地设置了您的写入策略; 控制器可能正在等待所有的磁盘来确认写入(除非你有控制器电池备份RAM,这可能是你最好的利益)。