GPFS 3.4 的配置变更与性能评估
GPFS 的概念
GPFS 的全称为:General Parallel File System,即通用并行文件系统。IBM GPFS 是一个可自由扩展的高性能并行文件系统,它主要有以下三个特点:
- 基于高可用的集群架构,可灵活扩展
- 支持并行的共享磁盘访问方式,提供单一命名空间
- 针对并行 I/O 负载优化,提供极高的 I/O 处理能力
本文主要立足于 GPFS 配置的变更与性能的测试,因此 GPFS 的安装,在本文不做赘述。
GPFS 的配置变更
动态增加一个 NSD client
我们以一个 6 节点的 GPFS 集群为例:
图 1. 查看一个 6 节点的 GPFS 集群
首先,设置 NSD server 对 NSD 磁盘的访问顺序,以便实现负载均衡和多路径。
修改之前,需要先卸载所有节点上的 gpfs 文件系统:
图 2. 卸载一个 GPFS 文件系统
设置磁盘的访问优先级:
mmchnsd "nsd1:78001_lpar2,78001_lpar3,78002_lpar1"
mmchnsd "nsd2:78001_lpar2,78001_lpar3,78002_lpar1"
mmchnsd "nsd3:78001_lpar3,78001_lpar2,78002_lpar2"
mmchnsd "nsd4:78002_lpar1,78002_lpar2,78002_lpar3"
mmchnsd "nsd5:78002_lpar2,78002_lpar1,78002_lpar3"
mmchnsd "nsd6:78002_lpar3,78002_lpar2,78002_lpar1"
mmchnsd "nsd7:78002_lpar4,78002_lpar2,78002_lpar1"
mmchnsd "nsd8:78002_lpar1,78001_lpar2,78001_lpar3"
mmchnsd "nsd9:78002_lpar2,78001_lpar3,78002_lpar3"
mmchnsd "nsd10:78001_lpar3,78002_lpar3,78001_lpar2"
然后,确认变更已经生效:
图 3. 查看 NSD 磁盘访问路径
接下来,给 GPFS 集群增加第 7 个节点“78001_lpar1”
首先确认节点 78001_lpar1 不属于任何 GPFS 集群:
图 4. 查看节点状态
如果不进行任何配置,直接向集群增加节点会报错 :
图 5. 增加集群节点
必须在所有节点上(包括第 7 个节点)编辑 /etc/hosts 和 /.rhosts 两个配置文件
图 6. 修改系统配置文件
再次添加第 7 个节点,可以成功:
图 7. 增加集群节点
检查添加结果,第 7 个节点已经添加成功:
图 8. 检查增加结果
将第 7 个节点设置成仲裁节点:
图 9. 设置仲裁节点
接下来,启动第 7 个节点:
图 10. 启动节点
现在,第 7 个节点已经处于活动状态 :
图 11. 检查节点状态
在第 7 个节点上挂载 GPFS 文件系统,文件系统能够挂载成功 :
图 12. 检查文件系统状态
动态删除一个 NSD client
以 7 节点的 GPFS 集群为例:
图 13. 查看集群的信息
下面的操作将删除第 7 个节点:78001_lpar1。
若节点处于活动状态,删除将会失败 :
图 14. 删除集群节点
因此需要,先将节点 78001_lpar1 关闭:
图 15. 关闭集群节点
检查状态,已经处于关闭的状态 :
图 16. 查看集群节点状态
再次删除节点,可以成功;
图 17. 删除集群节点
GPFS 的性能评估
本章将会以测试的方式验证 GPFS 的并发读写特性,包含读测试、写测试以及读写混合测试。
本测试以 P7-780 服务器作为试验机,配置为 64 个处理器、512 GB 内存,然后划分 6 个 LPAR,每个 LPAR 的配置为:10C 处理区 /64G 内存。操作系统版本为 AIX 6106,GPFS 的版本为 GPFS3.4。
并发写测试:首先,为测试编写一些简单的测试脚本:
“start_write.sh”脚本,用于在所有节点上对 GPFS 文件系统中的一个发起并发写:
图 18. 并发写脚本
“view_status.sh”脚本用于监控 GPFS 集群所有节点上的 I/O 性能:
图 19. 实时性能监控脚本
“kill_dd.sh”脚本用于杀死所有节点上的 dd if 进程:
图 20. 杀死进程脚本
“monitor.sh” 脚本用于启动 nmon 进程,“kill_monitor.sh”用于杀死 nmon 进程:
图 21. 启动 nmon 与终止 nmon 脚本
现在,启动并发写测试:
然后,观察所有节点上的 I/O 性能:
图 22. 观测节点 I/O 性能
并发写测试结果分析
从上面的结果可以看出,GPFS 集群所有节点对 GPFS 文件系统中同一个文件的写操作是并发的,虽然各个节点的 IOPS 和吞吐量在同一时刻并不相同,但整体而言,各个节点对于文件系统中的同一个文件的写操作的 IOPS 和吞吐量是比较平稳的,这充分验证了 GPFS 作为并发文件系统的优良特性。
并发读测试
停掉所有节点上的 dd if 进程:
图 23. 杀死 dd if 进程
编写一个简单的脚本“start_read.sh”,以便进行并发读测试:
图 24. 并发读脚本
运行“start_read.sh”脚本,然后运行“view_status.sh”脚本来检测实时读:
图 25. 观测节点 I/O 性能
并发读测试结果分析
从上面的结果可以看到,GPFS 集群所有节点对 GPFS 文件系统中同一个文件的读操作是并发的,虽然各个节点的 IOPS 和吞吐量在同一时刻并不相同,但整体而言,各个节点对于文件系统中的同一个文件的读操作的 IOPS 和吞吐量是比较平稳的,这充分验证了 GPFS 作为并发文件系统的优良特性。
- 长时间并发混合读写测试 在所有的节点上,对 GPFS 文件系统中的同一个文件发起读写操作: 图 26. 发起混合读写压力
两个小时以后,利用“Nmon analyzer”分析收集到的 nmon 结果,可以看出所有节点对文件系统的同一文件的读写的并发的,但所有节点上的 IOPS 和吞吐量并不时刻相同: 图 27. 观测节点 I/O 性能
- 长时间并发混合读写测试结果分析 可以看到,GPFS 集群所有节点对 GPFS 文件系统中同一个文件的混合读写操作是并发的,虽然各个节点的 IOPS 和吞吐量在同一时刻并不相同,但整体而言,各个节点对于文件系统中的同一个文件的读操作的 IOPS 和吞吐量是比较平稳的;并且,通过长达两个小时的大量混合读写,GPFS 文件系统并未出现报错以及其他任何问题,这充分验证了 GPFS 作为并发文件系统的优良特性以及稳定性。
总结
本文通过一系列测试,验证了 GPFS 的并发读写特性:GPFS 集群中的多个节点可以同时对 GPFS 文件系统中的同一个文件进行并发读写,并且吞吐量和 IOPS 比较平稳。这一点,可以提高客户应用的性能以及稳定性,是十分有用的。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringMVC中传参date类型失败,需要@DateTimeFormat(““)
- new ScalarHandler()-->返回值为long,不能用int接收!!!
- JavaWeb使用德鲁伊(略)实现登录、激活码注册(发送激活码到邮箱,点击激活链接后,才能正常登陆)、注册界面
- 转发的两种方式与重定向
- 关于监控、链路追踪、日志三者的区别
- 10.12面试:SpringMVC静态资源放行+如何实现转发和重定向+如何支持json+设置时间格式+设置json的key+对json的value序列化
- 10.13面试:什么是跨域?如何解决跨域问题+springMVC如何处理文件上传和下载+ssm整合思路 (待完善)
- 查找jar地址
- shiro篇:缓存配置
- 定时器篇:定时任务入门小案例
- 设置SSH + 远程仓库操作
- SSM整合:商城小项目001(配置SSM环境+查询所有操作+添加操作)
- 在MyBatis中参数的传递4种方式+代码示例
- MySQL篇:MySQL5.5和 MySQL5.7.x 版本安装和卸载《从入门到入狱,删库--->你值得拥有》
- 1016面试:quartz的核心组件+cron表达式语法+如何实现一个每天中午12点备份的数据库?写伪代码