1. 我们首先来测试随机写的IOPS,可以看到随机写的IOPS可以达到5082,顺序写的IOPS可以达到5087:

    $ sudo fio -filename=/data/testfile -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=libaio -bs=16k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest

    $ sudo fio -filename=/data/testfile -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=16k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest

  2. 同样的方法我们测试一下随机读的IOPS,默认情况下,读缓存是打开的,随机读可以达到114619万左右的IOPS,顺序读可以达到139746左右的IOPS:

    $ sudo fio -filename=/data/testfile -direct=1 -iodepth 1 -thread -rw=read -ioengine=libaio -bs=4k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest

    $ sudo fio -filename=/data/testfile -direct=1 -iodepth 1 -thread -rw=read -ioengine=libaio -bs=4k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest

  3. 我们再来做一个测试,关闭缓存服务,即缓存服务设为无,进行测试,可以看到:

    随机写:5089 顺序写:5099    随机读:5163    顺序读:5102

RAID 0高性能磁盘配置及测试

在有些情况下,比如高负载的MySQL,MongoDB服务器,可能对于单盘的IOPS要求高于5000,希望达到2000或者更好,那么在这种情况下,获得更高IOPS的方式就是使用软RAID,RAID 0的方式。在后续测试中,为了看到实际性能,所有磁盘的缓存都是关闭的状态,及缓存为"无"。

  1. 前面已经在界面上添加了4个1T的SSD数据盘,其中sdc用来做单盘测试,剩下的sdd,sde,sdf来做RAID。
  2. 使用SSH登陆虚拟机,安装RAID管理软件mdadm:

    $ sudo yum install mdadm

  3. 使用mdm创建RAID 0设备/dev/mdraid

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 /dev/sdc1 /dev/sdd1 /dev/sde1

  4. 创建挂载文件目录,并格式化文件系统为ext4格式:
$ sudo mkdir /data

$ sudo mkfs -t ext4 /dev/md127

如果你想快速启用,快速格式化,可以使用参数-E lazy_itable_init=1

例如:$ sudo mkfs -t ext4 -E lazy_itable_init=1 /dev/md127

  1. 最后,需要把文件挂载信息添加到fstab里面,确保每次机器重启的时候可以自动挂载文件系统,首先获得刚才创建设备的UUID:

    sudo /sbin/blkid

  2. 打开fstab文件,将文件关在信息添加到该文件如下:

    $ sudo vi /etc/fstab

    最后一行添加(需要换成你自己的UUID)

    UUID=bf5f2973-ded3-4da2-a67a-0dc9fd36554c /data ext4 defaults 0 2

按照之前注意事项提到的,你需要设置barrier和nofail,所以我的fstab文件的设置如下:

UUID=3c8289a5-de55-4e1c-9baf-5a603d8230e3 /data ext4 defaults,barrier=0,nofail 0 2

  1. 执行sudo mount -a并检查当前挂载状态:

  1. 在使用RAID0条带化以后,iodepth的数值会和测试结果有较大的关系,我们通过不同的参数来看一下不同的结果:

$ sudo fio -filename=/data/testfile -direct=1 -iodepth 32 -thread -rw=write -ioengine=libaio -bs=16k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest

Iodepth

Randwrite

Write

Randread

Read

16

iops=15185

iops=17523

iops=17523

iops=19885

32

iops=15164

iops=25033

iops=15183

iops=30788

128

iops=15169

iops=31862

iops=15227

iops=31805

可以看到,在你需要更高磁盘性能,单个P30无法满足你的要求的情况下,可以使用soft RAID的方式来提升磁盘的性能,随着磁盘的增加,性能呈线性增长,当然就如之前所有,磁盘的性能依赖于磁盘的类型,磁盘的大小和虚拟机的大小,例如DS14在无缓存的情况下最大可以达到51200 IOPS,可以根据自己的需求选择合适的VM,搭配高级存储。

最后,简单聊一下一些做数据库服务器架构设计的一些想法,在大部分情况下,创建高IOPS的虚拟机都是作为数据库来使用的,但是高性能和高可用是两个概念,如果你要保证数据库的高可用性,以MySQL来举例,你需要配置MySQL集群,比如Master-Slave模式,或者多maste多slave模式;从性能和扩展性的角度来讲,如果你使用了非常高IOPS,大内核的虚拟机,但还是不能满足要求,你需要尽早考虑一下数据库的扩展性问题,原来这种性能不够就加CPU,加内存,vertical scale的方式被证明并不是一个好的设计,无论物理机还是虚拟机,性能都是有上限的,为了满足当前大规模高并发访问的需求,数据库需要考虑sharding,分库,分表等方式来增加数据库的可扩展性,把压力分散到各个数据库节点,而且需要尽早考虑,因为这部分的改变往往需要应用程序的修改来做配合,所以大家需要综合考虑。

利用Azure高级存储搭建高性能Linux服务器(2)的更多相关文章

  1. 利用Azure高级存储搭建高性能Linux服务器(1)

    目前Azure针对虚拟机提供两种类型的存储,一种是标准存储,基于HDD的,一种是高性能存储Premium Storage(在下文中简称PS),基于SSD的.针对用户高性能,低延迟,I/O密集型的应用, ...

  2. 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化

    高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...

  3. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  4. 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件

    高性能Linux服务器 第6章  ext3文件系统反删除利器ext3grep  extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ...

  5. 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

    优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...

  6. 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

    优化Linux内核参数/etc/sysctl.conf  sysctl  <高性能Linux服务器构建实战:运维监控.性能调优与集群应用> http://book.51cto.com/ar ...

  7. 高性能linux服务器内核调优

    高性能linux服务器内核调优 首先,介绍一下两个命令1.dmesg 打印系统信息.有很多同学们服务器出现问题,看了程序日志,发现没啥有用信息,还是毫无解决头绪,这时候,你就需要查看系统内核抛出的异常 ...

  8. 分享关于搭建高性能WEB服务器的一篇文章

    这篇文章主要介绍了Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器的相关资料,需要的朋友可以参考下(http://m.0813s ...

  9. 高性能Linux服务器

    TCP/IP协议族——高性能Linux服务器编程   现在 Internet 使用的主流协议族是 TCP/IP 协议族,它是一个分层.多协议的通信体系. TCP/IP 协议族体系结构以及主要协议 TC ...

随机推荐

  1. 关于css中overflow的一些理解

    在做移动端开发的时候,遇到过这么个问题:要把图片进行放大,但有时候图片比较长,一个手机的版面看不了,于是需要用到overflow的属性,刚开始用了overflow-y:scroll, 于是问题来了,如 ...

  2. gets和从键盘输入换行符

    i was wrong! 虽然setbuf可以让程序自己管理缓冲,但是像getchar,gets这些标准IO函数还是要通过隐藏的stdin进行操作,而stdin是啥呢?还是一个FILE*,而FILE* ...

  3. QuickTime 专业版 pro 注册码

    打开QuickTime Player下拉编辑菜单--选偏好设置--注册 Name: Dawn M Fredette Key: 4UJ2-5NLF-HFFA-9JW3-X2KV 重新启动 QuickTi ...

  4. 漫游Ruby

    Ruby是一门完全面向对象的编程语言,Ruby中的每个值都是对象(nil是Ruby总的特殊值代表null),以下是在irb中的案例. 在Ruby中,圆括号通常都是可选的而且一般都被省略掉. Ruby中 ...

  5. android slidingview

    http://blog.csdn.net/sky181772733/article/details/6969810 http://blog.csdn.net/ithomer/article/detai ...

  6. VS2010安装与测试编译问题(fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt)

    由于第三方库的各种原因,与编译冲突问题,公司又决定把整个项目都统一改用VS2010来编译.所以我把我开发机上的VS2008卸载了,又重新安装了VS2010.无奈出现了COFF格式转换问题.搜索了下.完 ...

  7. linq 跨库查询

    可以用多个DBContext,例如有DBContext1和DBContext2,但是不能将两个DBContext用在同一个查询中,可以分开,先用一个查出结果集1,再在第二个查询中使用结果集1就可以了

  8. 【每天一个Linux命令】19. 创建文件夹目录命令mkdir

    命令用途 mkdir 命令用来创建指定的名称的目录 使用说明 1.  创建目录的用户在当前目录中具有写权限 2. 指定的目录名不能是当前目录中已有的目录. 命令实例 0. 帮助文件 bixiaopen ...

  9. pkill killall kill pidof

    http://blog.csdn.net/whycold/article/details/11771841  http://www.cnblogs.com/rsky/p/4886043.html ht ...

  10. 【ArcGIS 10.2新特性】ArcGIS Online新特性(上)

    概述 7月,ArcGIS Online发布了很多更新.主要内容有:新的网站设计,增强了Web制图,数据分析,应用程序创建,以及机构管理等功能. 更新的大致内容总结如下: 地图查看器:新的分析工具.获取 ...