现代分布式文件系统普遍具有高性能、高扩展、高可用、高效能、易使用、易管理等特点,架构设计的复杂性使得系统测试也非常复杂。从商业产品ISILON, IBRIX, SONAS, Filestore, NetApp GX, Panasas, StorNext, BWFS, Loongestor,到开源系统Lustre, Glusterfs, Moosefs,CEPH并列成为四大开源分布式文件系统,如何对这些分布式文件系统进行测试评估并选择最适合数据应用的产品系统呢?这里从功能测试和非功能测试两个方面,简要地介绍分布式文件系统的测试方法,并对主要测试工具进行简要说明,为产品选型或产品研发提供依据。

分布式文件系统测试方法

功能性测试(手动+自动化)

文件系统功能主要涉及系统实现的POSIX API,包括文件读取与访问控制、元数据操作、锁操作等功能与API。文件系统的POSIX语义不同,实现的文件系统API也不同,功能测试要能覆盖到文件系统设计实现的API和功能点。功能测试工作量大,应该重点考虑应用自动化测试方法进行,同时结合adhoc手动测试进行补充,自动化测试工具可以采用 LTP、fstest和locktests。

非功能性测试

数据一致性测试(手动+自动化)

这里的数据一致性是指,文件系统中的数据与从外部写入前的数据保持一致,即写入数据与读出数据始终是一致的。数据一致性,能够表明文件系统可以保证数据的完整性,不会导致数据丢失或数据错误,这是文件系统最基本的功能。这部分测试可以应用diff, md5sum编写脚本进行自动化测试,LTP也提供了数据一致性的测试工具。另外,我们也可以进行Adhoc手动测试,比如编译软件源码、linux kernel来验证数据的完整性。

POSIX语义兼容性测试(自动化)

POSIX (Portable Operating System Interface),表示可移植操作系统接口,由IEEE开发并由ANSI和ISO标准化。POSIX目的在于提高应用程序在各种OS之间的可移植性,符合POSIX标准的应用程序可以通过重新编译后运行于任何符合POSIX标准的OS上。POSIX的本质是接口,Linux是符合POSIX标准的,VFS也要符合POSIX标准。因此,文件系统只要满足VFS,就可以说符合POSIX标准,就具备了良好的可移植性、通用性和互操作性。文件系统 POSIX兼容性测试采用 LTP (Linux Test Project)和PCTS (Posix Complicance Testing Suite)进行自动化测试,支持Linux90, Linux96, UNIX98 POSIX标准测试。

部署方式测试(手动)

目前的分布式文件通常都具备Scale-out的特点,能够构建大规模、高性能的文件系统集群。针对不同应用和解决方案,文件系统部署方式会有显著不同。部署方式测试需要测试不同场景下的系统部署方式,包括自动安装配置、集群规模、硬件配置(服务器、存储、网络)、自动负载均衡、高可用HA等。这部分测试不大可能进行自动化测试,需要根据应用场景来设计解决方案和具体部署,然后手动进行测试。

可用性测试(手动)

高可用性已经是分布文件系统不可或缺的特性之一,从而保证数据应用业务的连续性。分布式文件系统可用性主要包括元数据服务MDS和数据两部分,元数据服务 MDS高可用性通常采用Failover机制或MDS集群,数据可用性主要包括Replication、Self-heal、网络簇RAID、纠删码等机制。文件系统高可用性对很多应用非常关键,需要严格进行测试和验证,这部分测试以手动方式进行。

扩展性测试(手动)

NIST给出的云计算权威定义:按需的自我服务,广泛的网络访问,资源池,快速的弹性能力,可度量的服务。云存储是云计算的一种形式,分布式文件系统又是云存储的基础,因此弹性扩展能力对于云计算时代的文件系统尤为重要。文件系统扩展性测试,主要包括测试系统的弹性扩展能力(扩展与回缩两方面),以及扩展系统带来的性能影响,验证是否具有线性扩展能力。这部分测试也是以手动方式进行。

稳定性测试(自动化)

分布式文件系统一旦上线运行,通常都是不间断长期运行,稳定性的重要性不言而喻。稳定性测试主要验证系统在长时间(7/30/180/365x24)运行下,系统是否仍然能够正常运行、功能是否正常。稳定性测试通常采用自动化方式进行,可以采用LTP、Iozone、Postmark、fio等工具对测试系统产生负载,同时使用功能测试方法验证功能的正确性。

压力测试(自动化)

分布式文件系统的负载能力总是存在上限的,当系统过载时,系统就有可能出现性能下降、功能异常、拒绝访问等问题。压力测试就是要验证系统在大压力下,包括数据多客户端、高OPS压力、高IOPS/吞吐量压力,系统是否仍然能够正常运行、功能是否正常、系统资源消耗情况,从而为生产运营提供依据。压力测试采用自动化方式进行,使用LTP、Iozone、Postmark、fio对系统进行持续增加压力,同时使用功能测试方法验证功能正确性,并采用top, iostat, sar, ganglia等工具对系统资源进行监控。

性能测试(自动化)

性能是评估一个分布式文件系统的最为关键的维度,根据文件系统在不同场景下的性能表现,可以判断文件系统是否适合特定的应用场景,并为系统性能调优提供依据。文件系统性能主要包括IOPS、OPS、吞吐量三个指标,分别表示小文件、元数据、大数据的处理能力。性能测试采用自动化方式进行,测试系统在不同负载情况下的性能,主要包括小文件、大文件、海量目录、email server、fileserver、videoserver、webserver等应用下的OPS、IOPS、吞吐量,产生IO负载的工具可采用 Vdbench、Iozone、Postmark、Fio、filebench等。

分布式文件系统的性能测试方法相关推荐

  1. 阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能(附论文)

    摘要: 将存储与计算分开来大有意义,对于部署的云数据库而言更是如此.为此,阿里巴巴推出了一种新开发的名为PolarFS的分布式文件系统,旨在确保低延迟和高可用性.这个文件系统与阿里云上自己的Polar ...

  2. 高可用集群之分布式文件系统

    一.分布式文件系统和单机文件系统的区别: 单机文件系统的分区只能被一台主机所挂载,不能同时被多台主机挂载使用,因为单机文件系统是通过系统内核层的锁机制来完成的,所以一个系统上可以有多个进程访问,但只能 ...

  3. 彻底理解大数据 HDFS 分布式文件系统,这篇就够了

    来源:https://www.cnblogs.com/cainiao-chuanqi/p/11420490.html 文件系统的基本概述 文件系统定义:文件系统是一种存储和组织计算机数据的方法,它使得 ...

  4. 世界最优秀的分布式文件系统架构演进之路

    来自:架构之美 前言 Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. Hadoop实现 ...

  5. 详细讲解MFS分布式文件系统搭建(内含源码包)

    初步了解分布式原理: 分布式文件系统(Distributed File Systemm)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.简单来说,就是把一些分散 ...

  6. 阿里推出 PolarFS 分布式文件系统:将存储与计算分开(附论文)

    将存储与计算分开来大有意义,对于部署的云数据库而言更是如此.为此,阿里巴巴推出了一种新开发的名为PolarFS的分布式文件系统,旨在确保低延迟和高可用性.这个文件系统与阿里云上自己的PolarDB数据 ...

  7. Hadoop系列之六:分布式文件系统HDFS

    1.MapReduce与分布式文件系统 前面的讨论中,我们已经得知,Hadoop中实现的MapReduce是一个编程模型和运行框架,它能够通过JobTracker接收客户提交的作业而后将其分割为多个任 ...

  8. shell 删除了hdfs 文件_知识干货 | 大数据全解 HDFS分布式文件系统

                                                                                      HDFS概述 Hadoop分布式文件 ...

  9. 轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)

    轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级) 实验室所在的课题组以研究云计算为主,但所有的研究都是在基于理论的凭空想像,缺少分布式环境的平台的实践,云计算神马的都是浮云了.因此,我 ...

  10. 多种分布式文件系统简介

    2019独角兽企业重金招聘Python工程师标准>>> 分布式文件系统 GFS以及 FastDFS.mogileFS.HDFS.TFS等类GFS系统都不是系统级的分布式文件系统,而是 ...

最新文章

  1. 编程小白的第一本python入门书-编程小白的第一本 Python 入门书
  2. WINCE屏蔽NK的串口输出信息
  3. java split函数报错
  4. 如何系统性地保障软件性能
  5. 完全背包问题+01背包问题+分组背包+多重背包 总结
  6. 数据工程师需要掌握的 18 个 Python 库
  7. Incorrect string value: '\xE8\x8B\x8F\xE6\x99\xA8...' for column 'user_name' at row 1
  8. Linux怎么取消软链接
  9. iOS流布局UICollectionView系列四——自定义FlowLayout进行瀑布流布局
  10. haproxy1.7编译安装配置
  11. 使用Foxit Reader实现批量打印以及一页多版设置技巧
  12. dos 批处理 for知识学习
  13. 自己搭建微信小程序服务器,微信小程序搭建自己的Https服务器
  14. 2010年最怪异的25个面试问题,你能回答吗?
  15. C++ Primer Plus习题及答案-第五章
  16. 整理苹果官网上iOS的各种辅助功能
  17. 手把手教你DIY一款属于自己的万能红外遥控器!
  18. ValueError: cannot reshape array of size xxx into shape (xxx,xxx,xxx)解决方法
  19. 二阶系统临界阻尼和欠阻尼_如何使用开关阻尼器使机械键盘静音
  20. R 实现分层抽样教程

热门文章

  1. paraview启动失败:failed to get wglChoosePixelFormatARB
  2. windows/ubuntu系统下安装teamview教程
  3. 四位共阴极数码管使用经验
  4. weka的java环境配置_weka环境配置
  5. VS2017 社区版 许可证过期
  6. SECS/GEM协议库开发开源代码
  7. 整数规划--指派问题
  8. 智能控制基础(6):自动控制原理第五版第二章答案(部分)
  9. 软件工程考试归纳知识点
  10. Java开发之消息队列