2014年4月20日星期日

磁盘IOPS测试指南

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
磁盘IOPS测试指南  阅读原文»

每日博报 精彩不止一点关闭
磁盘IOPS测试指南

一、IOmeter介绍

  Iometer是一款用于单系统和集群系统的I/O子系统度量(measurement)和特征化(characterization)工具,它是一个负载生成器(workloadgenerator),也是一个度量工具(measurement tool),可用于模拟任何程序或benchmark的磁盘或网络I/O操作,在单个或多个(联网)系统上生成并度量负载。

1.1 IOmeter组成

  Iometer由两个程序组成,Iometer和Dynamo。Iomter是控制程序/GUI,它告诉Dynamo需要做什么,收集数据结果并总结到一个输出文件。一次只应该运行一个Iometer,通常运行在服务器上。Dynamo是一个负载生成器,它没有GUI,在Iometer的命令下执行I/O操作并记录性能信息,然后返回数据给Iometer。一次可以运行多个Dynamo,通常是一个副本运行在服务器上,另一个副本运行在每一台客户端上。Dynamo是多线程的,每一个副本可以模拟多个客户端程序的工作(workload),每一个正在运行的Dynamo副本被称为是一个Manager,Dynamo中的每一个线程被称为worker。

1.2 IOmeter启动说明

  双击Iometer.exe运行Iometer,出现Iometer GUI(如下图所示),同时会在本地系统上启动Dynamo的一个副本。双击一个.icf设置文件、将icf或.txt文件拖拽到Iometer.exe也能启动Iometer,并且加载配置信息。命令行启动方式形如:c:\iometer myconfig.icf。如果需要在其他机器上启动Dynamo,将机器名作为Iometer的命令行参数,例如c:\dynamo IOServer。

wKioL1NQgTewszBOAAILF8Kukvc347.jpg

  如果Iometer和Dynamo在单个系统上运行,那么是不需要网络支持的,否则就需要配置TCP/IP网络。不需要在任何一台机器上启动多于一个的Dynamo的副本,要增加worker的数量,使用Iometer启动其他worker线程即可。

  蓝色图标的Targets代表物理驱动器(图中并没有物理驱动器),只有当物理驱动器上没有任何逻辑分区时才会被显示出来。黄色图标代表逻辑(已挂载,mounted)驱动器,只有当它们为可写(writable)时会被显示出来。黄色图标带有红色斜杠代表该驱动器在测试开始之前,需要先做准备(prepare)。单击选中一个或多个(shift)磁盘来做测试,被选中的磁盘将自动分发给Manager的worker。

  对逻辑驱动器的访问是通过对文件\iobw.tst的写入来完成的,如果该文件不存在,驱动器图标上会有一条红色斜杠,在测试开始之前,该文件会被创建并占满整个磁盘空间。

二、快速开始测试磁盘性能

  1、双击Iometer.exe,Iometer主窗口出现并自动运行一个Dynamo负载生成器。

  2、在Iometer窗口的左侧的拓扑面板点击一个Manager,你会在DiskTargets tab中看到可用的磁盘驱动器。

  3、在DiskTargets tab中,选择一个或多个磁盘

  4、切换到Access Specifications tab,在Global AccessSpecifications列表中双击"Default",出现"Edit Access Specification"对话框。

  5、EditAccess Specification对话框告诉你磁盘将如何被访问,默认是2KB随机I/O,67%读+33%写,代表典型的数据库负载。你可以就使用默认设置或对其进行更改。点击OK关闭对话框。

  6、为了获得最大吞吐量(MB/s),尝试更改Transfer Request Size = 64KB,Percent Read/Write Distribution = 100% Read,PercentRandom/Sequential Distribution = 100% Sequential.

  7、为了获得最大的I/O速率(IOPS),尝试更改TransferRequest Size = 512Bytes,Percent Read/Write Distribution= 100% Read,Percent Random/Sequential Distribution =100% Sequential。

  8、切换到Results Display tab,设置Update Frequency = 10秒。

  9、点击StartTests按钮(绿色旗帜),一个标准的文件保存对话框出现,选择一个文件用以保存测试结果(默认是result.csv)

  10、10秒钟之后,第一个测试结果显示在Results Display tab并每隔10秒更新一次。点击每个bar左侧的chart可以选择你想要的显示结果,你也可以将一个worker或manager拖拽到一个barchart上来查看某一个worker或manager的结果。

  11、点击StopTest按钮(Stop标志),测试将停止,结果会被保存在results.csv文件中,这是一个逗号分隔的文本文件,可以用任何文本编辑器查看或导入电子表格。

三、测试计算机之间的网络性能

  1、在computer-a上,双击Iometer.exe

  2、在computer-b上,打开一个cmd并执行C:\dynamo computer-a

  3、在computer-a上,你将看到computer-b作为一个新的manager出现在Topology面板,点击它可以观察到其磁盘驱动器将出现在Disk Targetstab

  4、选中computer-b,点击Start Network Worker按钮(网线图示)早computer-b上创建一个网络服务器。

  5、切换到Network Targets tab,从列表中选择computer-a的一个接口,这将在computer-a上创建一个客户端并将客户端和服务器连接在一起。

  6、切换到Access Specifications tab,在Global AccessSpecifications列表中双击"Default",出现"Edit Access Specification"对话框,指定TransferRequest Size = 512Bytes,点击OK。

  7、切换到Results Display tab,设置Update Frequency = 10秒。

  8、点击StartTests按钮(绿色旗帜)并选择一个文件用于保存结果。如果指定一个现有的文件,新的结果会被附加在已有结果后面。

  9、观察结果后,点击Stop Test按钮停止测试并将结果保存到文件。

四、IOmeter界面说明

4.1拓扑面板的"Disk Target tab"

  拓扑面板显示当前活动Manager(Dynamos)和Worker(线程)的一个层级列表。点击一个worker、manager、或AllManager可以在Disk Targets,NetworkTargets和Access Specification tab中查看并修改其设置。默认,manager的名称和其所在机器的名字是一样的,Worker的名字是"Worker n",可以通过单击选中的manager或worker来修改名字。"All Manager"的名字是不可更改的。

wKiom1NQgcTzGBytAAJGv6ZJ1nE427.jpg

  点击某个worker,被选中的targets(磁盘或网络接口)将由该worker使用,其他的设置显示了当前该worker的设置,任何更改仅针对该worker。

  点击某个manager,被选中的targets将以轮询的方式分发给该manager下的所有worker。Disk Targets,NetworkTargets和Access Specification tab显示了该manager下所有worker的公共设置。如果所有worker的设置参数都相等,那么设置项会显示某一个值,否则将是空白的(说明该manager下的worker对该参数的设置不同),任何参数的更改会被应用到该manager下的所有worker。

  点击All Manager不会显示任何target,因为manager的target列表可能是不同的。其他设置显示了所有worker的公共参数,任何更改都会被应用到所有worker。

  Disk Targets tab允许查看并控制当前选中的worker所使用的磁盘。单击或shift-单击选择任意数量的驱动器供已选worker在测试时使用。Physical驱动器以蓝色图标显示,名称是"PHYSICALDRIVEn"(仅当它们不包含任何信息,除了空闲空间)。Worker直接读写raw disk来访问物理驱动器,而非使用iobw.tst文件。推荐用Physical驱动器进行测试。

  Worker通过读写\iobw.tst文件来访问逻辑驱动器,如果该文件不存在,驱动器的图标会有一条红色的斜线。在测试开始的时候,系统会被创建该文件并扩容直至磁盘空间撑满(该过程会在状态栏显示"Preparing Drives")。当然,可以通过设置      Maximum DiskSize来设置该文件的大小,从而控制Iometer使用的磁盘空间。如果该文件存在但是不可写,那么该驱动器被认为是只读的,而且根本不会被显示出来。

  Maximum Disk

基于heartbeatV2版本的ha-gui工具对httpd做高可用集群(1)  阅读原文»

基于heartbeatV2版本的ha-gui工具对httpd做高可用集群(1)

一、简述

Heartbeat通过插件技术实现了集群间的串口、多播、广播和组播通信,在配置的时候可以根据通信媒介选择采用的通信协议,heartbeat启动的时候检查这些媒介是否存在,如果存在则加载相应的通信模块。这样开发人员可以很方便地添加新的通信模块,比如添加红外线通信模块。
对于高可用集群系统,如果集群间的通信不可靠,那么很明显集群本身也不可靠。Heartbeat采用UDP协议和串口进行通信,它们本身是不可靠的,可靠性必须由上层应用来提供。那么怎样保证消息传递的可靠性呢?
Heartbeat通过冗余通信通道和消息重传机制来保证通信的可靠性。Heartbeat检测主通信链路工作状态的同时也检测备用通信链路状态,并把这一状态报告给系统管理员,这样可以大大减少因为多重失效引起的集群故障不能恢复。例如,某个工作人员不小心拨下了一个备份通信链路,一两个月以后主通信链路也失效了,系统就不能再进行通信了。通过报告备份通信链路的工作状态和主通信链路的状态,可以完全避免这种情况。因为这样在主通信链路失效以前,就可以检测到备份工作链路失效,从而在主通信链路失效前修复备份通信链路。
Heartbeat通过实现不同的通信子系统,从而避免了某一通信子系统失效而引起的通信失效。最典型的就是采用以太网和串口相结合的通信方式。这被认为是当前的最好实践,有几个理由可以使我们选择采用串口通信:
(1)IP通信子系统的失效不太可能影响到串口子系统。
(2)串口不需要复杂的外部设备和电源。
(3)串口设备简单,在实践中非常可靠。
(4)串口可以非常容易地专用于集群通信。
(5)串口的直连线因为偶然性掉线事件很少。
不管是采用串口还是以太网IP协议进行通信,heartbeat都实现了一套消息重传协议,保证消息包的可靠传递。实现消息包重传有两种协议,一种是发送者发起,另一种是接收者发起。
对于发送者发起协议,一般情况下接收者会发送一个消息包的确认。发送者维护一个计时器,并在计时器到时的时候重传那些还没有收到确认的消息包。这种方法容易引起发送者溢出,因为每一台机器的每一个消息包都需要确认,使得要发送的消息包成倍增长。这种现像被称为发送者(或者ACK)内爆(implosion)。
对于接收者发起协议,采用这种协议通信双方的接收者通过序列号负责进行错误检测。当检测到消息包丢失时,接收者请求发送者重传消息包。采用这种方法,如果消息包没有被送达任何一个接收者,那么发送者容易因NACK溢出,因为每个接收者都会向发送者发送一个重传请求,这会引起发送者的负载过高。这种现像被称为NACK内爆(implosion)。
Heartbeat实现的是接收者发起协议的一个变种,它采用计时器来限制过多的重传,在计时器时间内限制接收者请求重传消息包的次数,这样发送者重传消息包的次数也被相应的限制了,从而严格的限制了NACK内爆。

二、对httpd做高可用集群

1.环境说明

我们通过192.168.1.210对外提供web服务,两个客户端的ip地址分别为192.168.1.200和192.168.1.201,在192.168.1.202上提供了nfs服务为两台web服务器提供共享存储

2.前期准备工作

由于heartbeat是基于主机名通信的,需要对两台服务器配置主机名,并能够对实现主机名的解析

在/etc/hosts文件中添加如下行
192.168.1.201node2.wangfeng7399.com node2
192.168.1.200node1.wangfeng7399.com node1

为了实验的方便性,本处我们基于ssh的密钥认证,实现两台主机登陆不需要密码

[root@node1 ~]# ssh-keygen
[root@node1 ~]# ssh-copy-id root@node2
在node2上同样使用以上命令生成sshkey

3.在node1和node2上分别准备httpd,本处可以通过yum安装也可以通过编译源码安装,关于安装过程,本处不在累赘,如想了解过程,其移步至本人的博客http://wangfeng7399.blog.51cto.com/3518031/1379373

4.时间同步,本处使用的互联网的时间服务器,也可以自建时间服务器,关于如何自建时间服务器,将会在后续推出,敬请期待

[root@node1 ha]# ntpdate time.windows.com

查看两边的服务器时间是否同步

[root@node1 ha]# ssh node2 'date';date
Thu Apr 1722:05:42CST 2014
Thu Apr 1722:05:42CST 2014

5.安装heartbeat

①.解决依赖关系,由于centos6.5提供的为heartbeatV3版本,本处不能直接通过yum安装

yum install perl-TimeDate PyXML libnet net-snmp-libs -y

说明:libnet包在eprl源中,请确保安装epel源

②.安装heartbeatV2版本的rpm包

[root@node1 ha]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm

6.配置heartbeat

①.准备配置文件

阅读更多内容

没有评论:

发表评论

声明

转载有价值的IT博客,版权属原作者所有

标签

博客归档