软件RAID测试·四

由于RAID-10不能实现动态扩容,我就打起了支持动态扩容的RAID-5的主意。
实际上,公司搭建存储很少在乎动态扩容这么一回事,但对于我这种穷苦老百姓来说,动态扩容还真是件很重要的事。
但是由于RAID-5的奇偶校验,可能会比较大地影响读写性能。
奇偶校验的情况比较复杂,所以我打算先在虚拟机里面简单测试下。
由于虚拟机无法模拟条带化带来的读写性能的上升,所以就以数据量来代替速度指标。
先在RAID-10上检验方法是否可行。这次的RAID-10参数如下:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid10 sde1[3] sdd1[2] sdc1[1] sdb1[0]
      16765952 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]

构筑这个阵列的时候,我并没有刻意制定Chunk大小,很意外地发现程序自动指定的大小竟然高达512kB。
以下是文件系统建立好并挂载后iostat给出的值。

# iostat -md
Linux 3.11.0-12-generic (ubuntu)        03/25/2014      _x86_64_        (1 CPU)

Device:        tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda           3.99         0.08         0.00        108          6
sdb          88.50         5.71         0.01       8194         17
sdc          87.28         5.71         0.01       8188         17
sdd          87.48         5.71         0.01       8189         17
sde          87.16         5.71         0.01       8188         17
dm-0          4.00         0.07         0.00        104          6
dm-1          0.22         0.00         0.00          1          0
md127         1.86         0.00         0.02          4         23
dm-2          0.92         0.00         0.01          1         12

接下来,cd到阵列挂载的目录,使用iozone跑一跑自动参数。

iozone -aI

这里一个小插曲,可能是虚拟机虚拟的SATA总线有点不如人意,跑着跑着就跑得I/O堵塞然后整个文件系统出毛病自动转ReadOnly了。
只好先重启,清空下iostat的统计数据。

# iostat -md
Linux 3.11.0-12-generic (ubuntu)        03/25/2014      _x86_64_        (1 CPU)

Device:        tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda          78.59         1.40         0.06         89          3
sdb           8.42         0.03         0.00          2          0
sdc           3.88         0.02         0.00          0          0
sdd           4.96         0.02         0.00          1          0
sde           3.94         0.02         0.00          0          0
md127         5.62         0.02         0.00          1          0
dm-0          3.32         0.01         0.00          0          0
dm-1        117.99         1.11         0.06         70          3
dm-2          3.82         0.01         0.00          0          0

重新跑过iozone,这次指定下跑的大小。

iozone -g64M -n64M -aI

这次跑得很顺,跑完后iostat数值如下,

# iostat -md
Linux 3.11.0-12-generic (ubuntu)        03/25/2014      _x86_64_        (1 CPU)

Device:        tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda          13.13         0.23         0.01         91          3
sdb         244.03        17.15         4.10       6708       1604
sdc         222.75        14.49         4.10       5667       1604
sdd         248.87        17.12         4.75       6694       1857
sde         229.62        14.53         4.75       5682       1857
md127        89.75         9.01         8.85       3524       3461
dm-0         89.08         9.01         8.85       3523       3461
dm-1         19.61         0.19         0.01         72          3
dm-2          0.62         0.00         0.00          0          0

看到实际上数据并不是均匀写到两组RAID-1里面的,这是因为RAID-0里面数据按照指定的Chunk分条而非均匀分条。
然后发现件令人费解的事情,这个读取的数据量为什么大得有点离谱,而且在各个盘不是均匀的?不太理解这个,可能跟其他什么有关。
由于出现了意料之外的变量,这个本来就不太严谨的检测可能越发不严谨,但我还是决定继续做下去,至少写入的数据检测到是准确的。
现在,我把RAID-10拆了改成了RAID-5。

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid5 sde1[4] sdd1[2] sdc1[1] sdb1[0]
      25148928 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

重启,清空iostat数据。

# iostat -dm
Linux 3.11.0-12-generic (ubuntu)        03/25/2014      _x86_64_        (1 CPU)

Device:        tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda          35.11         0.53         0.01         61          0
sdb           2.60         0.01         0.00          1          0
sdc           2.16         0.01         0.00          0          0
sdd           2.57         0.01         0.00          1          0
sde           2.21         0.01         0.00          0          0
md127         0.82         0.00         0.00          0          0
dm-0         29.99         0.51         0.01         57          0
dm-1          2.17         0.01         0.00          0          0

重复跑iozone的过程后,iostat数据如下。

# iostat -dm
Linux 3.11.0-12-generic (ubuntu)        03/25/2014      _x86_64_        (1 CPU)

Device:        tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda          17.72         0.27         0.00         62          1
sdb          67.69         6.00         5.17       1370       1180
sdc          76.92         5.92         6.67       1353       1523
sdd          66.82         5.65         5.84       1291       1335
sde          76.23         5.65         6.86       1291       1567
md127       151.96        15.40        15.14       3521       3461

时间太晚了,就列个数据,明天再分析。

发表评论

电子邮件地址不会被公开。 必填项已用*标注