RAID的小插曲

我用mdadm在实机环境中搭起了个两块固态硬盘的RAID-0。
使用的硬盘是两块INTEL DC 530。

# cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid0 sda1[0] sdb1[1]
      468860064 blocks super 1.2 4k chunks

# hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
        Model Number:       INTEL SSDSC2BW240A4
        Serial Number:      BTDA327005BJ2403GN
        Firmware Revision:  DC02
        Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SAT
(……)

搭好后运行了一会,我就发现了一些问题。性能参数似乎有点不太对劲。

# iostat -x 60
Linux 2.6.32-openvz-amd64 (localhost)  2014年03月25日  _x86_64_        (40 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          21.77    0.00    1.83    0.66    0.00   75.75

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda              18.27  3544.73  249.98  243.19  1072.92 14985.95    65.13     4.51    9.14    0.38   18.13   1.16  57.28
sdb              18.03  3543.52  250.24  245.94  1073.01 14992.33    64.76     4.33    8.74    0.37   17.24   1.14  56.35
sdc               0.19     0.42   57.16    0.37  7114.68     4.22   247.49     0.07    1.30    1.23   11.59   0.70   4.03
md0               0.00     0.00  536.51 7535.96  2145.90 29978.28     7.96     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00  530.95 7497.14  2123.64 29978.28     8.00    86.79   13.58    0.99   14.48   0.08  67.78

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          47.60    0.00    3.06    1.48    0.00   47.85

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda              26.13   158.28   42.08  515.18   272.87  2410.12     9.63    11.75   21.09    6.85   22.25   1.60  89.34
sdb              26.18   146.22   42.27  525.42   273.80  2402.85     9.43     8.53   15.03    6.12   15.75   1.53  86.73
sdc               0.00     0.12    0.00    0.13     0.00     1.07    16.00     0.00    8.38    0.00    8.38   8.00   0.11
md0               0.00     0.00  136.67 1274.13   546.67  4808.57     7.59     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00  136.67 1205.65   546.67  4808.57     7.98    28.05   20.89    8.09   22.35   0.74  99.64

可以看到svctm和%util还有其他几个涉及到效能的值都太高了,几乎是单盘无阵列的10倍(以上),这代表着哪里出了问题。
要说哪里会有问题,首先怀疑到的自然是整个构建RAID过程中唯一可以自行设置参数的地方:Chunk大小。
这是我创建RAID使用的命令:

mdadm --create md0 -chunk=4 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1

之所以选取4kB这个值,一是觉得固态硬盘的小文件随机读写能力很强劲,二是我机器主要跑的几个应用产生的I/O大小都集中在4-8kB。
之后,跟IRC上的老外聊了聊天,老外说我的确把Chunk设置得太小了,但他也表示,并不知道取什么值是合适的。
于是我打算今晚试试把Chunk设置成16kB,试试看。

发表评论

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