分布式文件系统测试方法与测试工具

发表于:2014-12-10来源:uml.org.cn作者:不详点击数: 标签:分布式
非结构化数据、大数据、云存储已经毫无争议地成为了信息技术发展趋势和热点,分布式文件系统作为核心基础被推到了浪潮之巅,广泛被工业界和学术界热推。

  非结构化数据、大数据、云存储已经毫无争议地成为了信息技术发展趋势和热点,分布式文件系统作为核心基础被推到了浪潮之巅,广泛被工业界和学术界热推。现代分布式文件系统普遍具有高性能、高扩展、高可用、高效能、易使用、易管理等特点,架构设计的复杂性使得系统测试也非常复杂。从商业产品ISILON, IBRIX, SONAS, Filestore, NetApp GX, Panasas, StorNext, BWFS, Loongestor,到开源系统Lustre, Glusterfs, Moosefs,如何对这些分布式文件系统进行测试评估并选择最适合数据应用的产品系统呢?这里从功能测试和非功能测试两个方面,简要地介绍分布式文件系统的测试方法,并对主要测试工具进行简要说明,为产品选型或产品研发提供依据。

  分布式文件系统测试方法

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

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

  (2)非功能性测试

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

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

  (2.2)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标准测试。

  (2.3)部署方式测试(手动)

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

  (2.4)可用性测试(手动)

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

  (2.5)扩展性测试(手动)

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

  (2.6)稳定性测试(自动化)

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

原文转自:http://www.uml.org.cn/Test/201212104.asp