我用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,试试看。