理解OpenStack+Ceph(8):基本的性能测试方法

作者: 云计算机网 分类: 云存储 发布时间: 2016-02-15 10:58

本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成:

(1)安装和部署

(2)Ceph RBD 接口和工具

(3)Ceph 物理和逻辑结构

(4)Ceph 的基础数据结构

(5)Ceph 与 OpenStack 集成的实现

(6)QEMU-KVM 和 Ceph RBD 的 缓存机制总结

(7)Ceph 的基本操作和常见故障排除方法

(8)基本的性能测试和调优方法

继续学以致用,学习下基本的Ceph性能测试工具和方法。

0. 测试环境

同Ceph 的基本操作和常见故障排除方法一文中的测试环境。

1. 测试准备1.1 磁盘读写性能1.1.1 单个 OSD 磁盘写性能,大概 165MB/s。
root@ceph3:~# echo 3 > /proc/sys/vm/drop_cachesroot@ceph3:~# dd if=/dev/zero of=/var/lib/ceph/osd/ceph-0/deleteme bs=1G count=1 oflag=direct

测试发现,其结果变化非常大,有时候上 75,有时是150.

1.1.2 两个OSD同时写性能,大概 18 MB/s。怎么差距那么大呢?几乎是单个磁盘的 1/10 了。
root@ceph3:~# for i in `mount | grep osd | awk '{print $3}'`; do (dd if=/dev/zero of=$i/deleteme bs=1G count=1 oflag=direct &) ; done
1.1.4 单个 OSD 磁盘读性能,大概 460 MB/s。
root@ceph3:~# dd if=/var/lib/ceph/osd/ceph-0/deleteme of=/dev/null bs=2G count=1 iflag=direct
1.1.5 两个 OSD 同时读性能,大概 130 MB/s。
for i in `mount | grep osd | awk '{print $3}'`; do (dd if=$i/deleteme of=/dev/null bs=1G count=1 iflag=direct &); done
1.2 网络性能

在 ceph3上运行iperf -s -p 6900,在 ceph4 上运行iperf -c ceph3 -p 6900,反复多次,两节点之间的带宽大约在1 Gbits/sec = 128 MB/s。

root@ceph4:~# iperf -c ceph3 -p 6900------------------------------------------------------------Client connecting to ceph3, TCP port 6900TCP window size: 85.0 KByte (default)------------------------------------------------------------[  3] local 192.168.56.103 port 41773 connected with 192.168.56.102 port 6900[ ID] Interval       Transfer     Bandwidth[  3]  0.0-10.0 sec  1.25 GBytes  1.08 Gbits/sec
2. Ceph 性能测试2.1 RADOS 性能测试:使用 Ceph 自带的 rados bench 工具

该工具的语法为:rados bench -p <pool_name> <seconds> <write|seq|rand> -b <block size> -t --no-cleanup

pool_name:测试所针对的存储池 seconds:测试所持续的秒数 <write|seq|rand>:操作模式,write:写,seq:顺序读;rand:随机读 -b:block size,即块大小,默认为 4M -t:读/写并行数,默认为 16 --no-cleanup 表示测试完成后不删除测试用数据。在做读测试之前,需要使用该参数来运行一遍写测试来产生测试数据,在全部测试结束后可以运行rados -p <pool_name>cleanup 来清理所有测试数据。

写:

root@ceph3:~# rados bench -p rbd 10 write --no-cleanup Maintaining 16 concurrent writes of 4194304 bytes for up to 10 seconds or 0 objects Object prefix: benchmark_data_ceph3_12884   sec Cur ops   started  finished  avg MB/s  cur MB/s  last lat   avg lat     0       0         0         0         0         0         -         0     1      16        16         0         0         0         -         0...    12      15        75        60   19.9671         4   3.05943   2.46556 Total time run:         12.135344Total writes made:      75Write size:             4194304Bandwidth (MB/sec):     24.721Stddev Bandwidth:       13.5647Max bandwidth (MB/sec): 36Min bandwidth (MB/sec): 0Average Latency:        2.57614Stddev Latency:         0.781915Max latency:            4.50816Min latency:            1.04075 
  • 基本需求

    1、硬件支持虚拟化

    2、centos 6.3 64位系统

    准备工作

    1、确保selinux处于关闭状态

    2、确保hostname -f有正确的输出。我遇到执行出现"hostname:unknown host",经查是因为/etc/resolv.conf设置了 search所致,干掉它。再检查/etc/hosts文件。

    3、确保服务器能访问互联网,因为yum 安装需要远程的安装源。

    开始安装

    1、配置yum仓库 reposity

    创建文件/etc/yum.repo.d/cloudstack.repo,使其内容为:

    [cloudstack]

    name=cloudstack

    baseurl=http://cloudstack.apt-get.eu/rhel/4.0/

    enabled=1#p#分页标题#e#

    gpgcheck=0

    2、安装时间服务:

    yum install ntp

    3、安装管理服务器器

    任意路径执行 yum install cloud-client ,稀里哗啦一通,神不知鬼不觉的不知道安装了啥!通过事后侦查,安装了ant、jdk、tomcat6等等,似乎省了不少事情。不过后边维护和排错,就费劲了。

    4、安装mysql

    偷懒 yum install mysql-server.需要设置一下密码。也一并偷懒,以mysql_secure_install代替了。官方文档说明,需要在/etc/my.cnf加下面的内容,注意,要放在[mysqld]的下面第一行。可不可以放其他地方,有时间可以试试。其内容如下:

    innodb_rollback_on_timeout = 1

    innodb_lock_wait_timeout = 600

    max_connections = 350

    log-bin = mysql-bin#p#分页标题#e#

    binlog-format = 'ROW'

    比我日常安装的数据库选项文件/etc/my.cnf简单多了。

    5、创建cloudstack相关的数据库和表

    执行命令 cloud-setup-databases cloud:cloudstack@localhost --deploy-as=root:cloudstack

    root:后边那个cloudstack是数据库的root密码,初始化时(mysql_secure_install设定的);cloud:cloudstack@localhost--cloud是连接的用户名,紧跟着的是cloud的连接密码,你可以指定一个复杂的哟。

    文件cloud-setup-databases 是用python写的一个工具,好复杂,本人表示看不懂。不过当它执行完毕后,数据库连接的配置文件我却找到了,具体是/etc/cloud/management/db.properties 。打开可以看到用户名,数据库主机名,还有加密后的密码。

    实际上为了安全,还需要初始化cloud数据库采用加密措施,这里一并简化了。

    6、启动cloudstack管理器:

    cloud-setup-management

    如果输出为:

    Starting to configure CloudStack Management Server:#p#分页标题#e#

    Configure sudoers ... [OK]

    Configure Firewall ... [OK]

    Configure CloudStack Management Server ...[OK]

    CloudStack Management Server setup is Done!

    基本上可以认为是正确了。但你执行netstat -an|grep 8080的时候,根本没我们期待的。我在这里费了些时间。这个也是问题的关键,不解决服务一直都起不来。执行chown -R cloud:cloud /var/log/cloud/management ,然后再启动,浏览器输入 http://manager_ip:8080/client ,登录窗口就出来了。有人会问,你凭什么知道问题在这里呢?我有个习惯,凡是遇到问题,先找找有没有日志,然后才是搜索引擎。我先到/var/log下逛一圈,真有发现,有个目录是cloud,里面的子目录有 www.it165.net

    rwxrwxr-x. 2 root cloud 4096 Apr 21 03:00 agent

    drwxr-xr-x. 2 root root 4096 Apr 21 03:00 ipallocator

    drwxrwxr-x. 2 cloud cloud 4096 Jul 1 00:04 management

    -rw-r--r--. 1 root root 5667 Jul 1 00:33 setupManagement.log

    花点时间,查看目录下面的文件,就会有收获。management目录下的catalina.out,是我发现问题的地方,它提示我没有权限。


  • 相关推荐:

  • cloudstack4管理器安装备
  • 快速理解Kafka分布式消息
  • Win8系统快速入门基本操
  • Win批处理命令基本操作
  • 网站内容禁止违规转载,转载授权联系中国云计算网