在Ubuntu 14.04上,软件RAID 10的速度没有s / w RAID 5那么快,为什么?

我们正在使用4 x 240 GB SSD磁盘的新数据库服务器上进行一些testing。 从我读取的RAID 10应该比RAID 5更快,具有相同的“单磁盘丢失OK”冗余。

然而,当用bonnie ++进行testing时,似乎RAID 10并不比RAID 5更快。任何想法为什么?

  • 4个240GB固态硬盘,软件RAID,Ubuntu 14.04
  • 英特尔®至强®E5-1650 v2六核心Ivy Bridge-E 超线程技术128 GB ECC RAM
  • http://www.hetzner.de/en/hosting/produkte_rootserver/px120ssd

RAID5(全部4个磁盘):

# cat /proc/mdstat md2 : active raid5 sdd3[4] sdc3[2] sda3[0] sdb3[1] 688730112 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU] # df -h Filesystem Size Used Avail Use% Mounted on /dev/md2 647G 1.6G 613G 1% / # bonnie++ -d /tmp -u root Version 1.97 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP db1a 252G 1113 99 474860 26 327393 16 5943 99 1192788 23 +++++ +++ Sequential write: 0.474 G/s Sequential rewrite: 0.327 G/s Sequential read: 1.192 G/s 

RAID10:

 # cat /proc/mdstat md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0] 459153408 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] # df -h Filesystem Size Used Avail Use% Mounted on /dev/md2 431G 1.6G 408G 1% / # bonnie++ -d /tmp -u root Version 1.97 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP db1a 252G 1221 99 492972 27 323392 15 5688 100 1178194 23 +++++ +++ Sequential write: 0.492 G/s Sequential rewrite: 0.323 G/s Sequential read: 1.178 G/s 

更新

我使用iozone运行RAID 10testing,看看multithreading基准testing是否会更好,假设bonnie ++报告的99%-100%CPU可能表明存在瓶颈:

 # iozone -R -i 0 -i 1 -l 12 -u 12 -r 8k -s 22G (12 threads, 8k block size, total file size of 264G) " Initial write " 538817.21 0.538 G/s " Rewrite " 511450.04 0.511 G/s " Read " 1087437.45 1.087 G/s " Re-read " 1201127.73 1.201 G/s " Random read " 576435.70 0.576 G/s " Random write " 400612.46 0.400 G/s 

结果比bonnie ++略好,但不多。

iozone RAID 5的结果:

 " Initial write " 516469.10 0.516 G/s " Rewrite " 489970.21 0.489 G/s " Read " 1116074.84 1.116 G/s " Re-read " 1116666.97 1.116 G/s " Random read " 611738.43 0.611 G/s " Random write " 199486.44 0.199 G/s 

正如在答案中所解释的那样,RAID 10的随机写入性能是RAID 5的两倍,但所有其他统计数据相似或略好一些。

从我读取的RAID 10应该比RAID 5更快,具有相同的“单磁盘丢失OK”冗余。

我不同意。

让我们来看看这里,没有理由有任何区别。 两者都可以让您从所有四个驱动器中读取数据并使用其全部带宽。 使用RAID 5时,除非需要,否则不会读取奇偶校验,因此在那里没有差别。

现在,让我们看看写道。 对于RAID 10,带宽减半,因为每次写入都必须执行两次。 随着RAID 5,它不是那么糟糕。 我们必须写出奇偶校验,但是只有1/4的数据是奇偶校验的(对于我们写的每3个字节的数据,我们必须写一个奇偶校验字节)。 所以RAID 10的带宽减半,RAID 5有33%的惩罚。 所以RAID 10在这里差一点点。

为什么RAID 10应该更好? (假设没有设备故障。)

我没有东西剥离RAID与SSD的任何用处。 Striping distrubutes在多个磁盘磁头上工作,但SSD已经具有优秀的随机访问。