扇子专栏:存储怎么测才精彩

 编者按:扇子长期从事存储技术相关工作,目前专注于openZFS、opensource illumos 等方面的研究。2008~2013年任职于IBM中国,担任企业级存储产品DS8000三线售后支持专家、金融行业存储高级售前工程师等职位。

DOIT存储专栏:相信大家对存储厂商公布的性能数据都不陌生,笔者的很多客户都在感叹一边是“理想很美好”的测试报告,另一边却是系统上线后“现实很骨感”的糟糕性能。事实上,我们的IT运维人员天天面对着海量的设备和业务部门各种各样的要求,很难像原厂商的工程师一样,对某一款存储设备精通。很多人平时可能只会参与到项目的前期规划和系统设计阶段,没有动手的机会,也很难对存储的性能有一个理性认识。这样就会有一个令人啼笑皆非的结果,很多客户在选择存储设备的时候,总会问“你的IOPS最大能到多少?”

到底IOPS越大就越好么?笔者认为,再好的性能报告,如果与真实环境数据相差太大,都没有意义。那些动辄十几w的IOPS究竟是怎么来的呢?

图一:IOmeter中12w的IOPS

首先要考虑的是测试环境,要尽可能接近客户的真实情况,这可能包括硬件设备、网络环境、逻辑配置等。10块盘和40块盘,提供相同的容量,测出来的性能肯定是不同的,也就是常说的overprovision。

其次要考虑的是测试方法,相对靠谱的是就用客户的真实数据和应用来测,这个方式的最大缺点在于需要相对充足的时间和资源来搭建环境。参与测试的客户往往并不是应用专家,资源的协调和测试过程中遇到的问题,如果没有办法及时解决,那测试的价值就会大打折扣。厂商的选择往往是那些性能测试工具,比如IOmeter、fio或orion 。这种想法也没有问题,毕竟作为厂商需要展示的是存储的IO性能,而客户应用如果不够合理,测试结果要么就是存储的使用效率很低,应用成为瓶颈;要么就是过分依赖存储,什么都往里面写,造成存储忙得要死,而应用还是慢。这些问题不是一时半会能够解决的,再加上各种其他因素,比如商务、客户实际情况,有可能很好的产品就因为糟糕的测试结果而落选了。一个优秀工程师的作用就是在现有条件下,可以将结果最大化,努力实现客户的真实测试需求。

以Iometer为例,在没有人为修改程序的前提下,我认为其结果还是比较真实的。有两点需要说明,一个是Iometer的写是同步写,而很多存储设备可以修改其写入模式为同步还是异步写入的。最简单的解释就是同步写时,数据必须有效写入到后端磁盘中;而异步写时,数据写入DRAM中就可以了。异步写的性能显然会优于同步写,这点往往会被人忽略。另一点就是读取性能测试,很多时候厂商会故意不写入数据测试,这时候的测试数据会非常“理想”。比较合理的方式是,先连续写入几遍数据,然后重启客户端和存储控制器来清除内存,我更相信这时候的读取结果。

下图为笔者在一次测试中的IOmeter测试结果,由于使用了SSD作为设备的读写加速设备,整体性能都有了非常明显的提高。

图二 几种常见的测试案例

还有一个很重要的方面是,如何来解读测试数据。我们希望展示给客户的是存储设备在高并发下,延时与IOPS的关系,在IOmeter中,可以通过增加manager,worker的数量,以及增加outstanding IO来模拟多台服务器同时访问存储设备时的表现。当然,各种读写比例的IOPS压力测试也可以很好的帮助客户了解设备的整体性能。

图三 IOPS与并发IO

图四 不同读写比例

如果可以很好地了解存储设备的设计原理,这些测试可能都并不需要。但是在现实的情况下,大部分的客户工程师并不具备这些能力。客户在现有的条件下,如果可以最大程度了解产品的真实性能,并结合实际情况,最大程度地使用好存储产品,这才是测试的意义吧。

笔者结语:

最近工作真的非常忙,长时间的熬夜加班和连续出差,很难有时间写一些博客来与大家分享。希望大家在未来一年有更好的工作和生活。笔者今后也会结合代码来和大家更好的解读存储技术。希望有问题的读者可以联系我,邮箱地址是 feizheng.philips@gmail.com