我们正在使用 4 x 240 GB SSD 磁盘的新数据库服务器上进行一些测试。从我读到的内容来看,RAID 10 应该比 RAID 5 更快,具有相同的“一个磁盘丢失正常”冗余。
然而,当使用 bonnie++ 进行测试时,似乎 RAID 10 并不比 RAID 5 快。知道为什么吗?
- 4 个 240GB SSD 磁盘,软件 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 10 测试,以查看多线程基准测试是否会在假设 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++,但也不多。
RAID 5 的 iozone 结果:
" 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 5,除非需要,否则不会读取奇偶校验,因此没有区别。
现在,让我们看看写入。对于 RAID 10,带宽减半,因为每次写入必须执行两次。使用 RAID 5,它并没有那么糟糕。我们必须写出奇偶校验,但只有 1/4 的数据是奇偶校验(我们每写入 3 个字节的数据,我们必须写入一个字节的奇偶校验)。所以 RAID 10 将带宽减半,RAID 5 有 33% 的损失。所以 RAID 10 在这里稍微差一点。
为什么 RAID 10 应该更好?(假设没有设备故障。)
我认为条带化 RAID 对 SSD 没有任何用处。条带化分布在多个磁盘头上工作,但 SSD 已经具有出色的随机访问能力。