系统IO优化相关思路
-----------------------
最近原搭建的vcloud+vsphere5.1+openfiler的测试环境出现I/O瓶颈。
具体环境如下:
hostX4---单通道8GHBAX4------<FC链路>-------双通道8GHBAX2----openfilerX1
VM数量 60台
在openfiler端使用vmstat命令查看
在host段利用iostat工具查看
#iostat,这个需要先安装sysstat ,即yum -y install sysstat
----------------------相关数值说明
I/O 操作: 总IO(io)/s = r/s(读) +w/s(写)
平均等待时间 = 单个I/O 服务时间 * ( 1 + 2 + ... + 请求总数-1) / 请求总数
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据 大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务 时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果%util 接近100%,说明产生的I/O请求太多,I/O系统 已经满负荷,该磁盘
可能存在瓶颈;idle 小于70% IO压力就较大了,一般读取速度有较多的wait。
同时可以结合vmstat 查看查看b参数 (等待资源的进程数 )和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高 )
-----------------------------
结合其他工具分析,问题出在openfiler的IO处理性能上,磁盘事件等待时间远大于磁盘处理时间。openfiler是用DELLR510搭建的用的SATA2TB做的raid5,本身磁盘性能较低,在多台host上多台vm同时读取数据时候会出现处理排队过长。。。。这个时候测试硬盘速度是正常的
后续因为测试环境不能申请高级存储设备,决定拆掉1拖4的存储布局,改成利用多台openfiler组ipsan线路做分散式存储配合vm的磁盘DRS
HOST-------<多条IP-san链路>----磁盘DRS池------openfiler多台