Lustre可靠性增强系统MTFS:第5篇 在Lustre文件系统中的使用

MTFS虽然适用于多种类型的下层文件系统,但是其主要目的在于为分布式文件系统提供可靠性增强方法。本文选取分布式文件系统Lustre作为下层文件系统,提出了一种使用MTFS的副本模式增强分布式存储系统可靠性的方法。

Lustre是一种基于对象的并行分布式文件系统,因其高性能和高可扩展性而被广泛应用在高性能计算领域中。Lustre采用数据与元数据分离的存储方式,将元数据存储在元数据存储目标(MDT)中,并通过元数据服务器(MDS)提供服务,将数据以对象的方式存储在对象存储目标(OST)中,并通过对象存储服务器(OSS)提供服务。为了方便存储资源的管理,对象存储服务器和对象存储对象可被划分成若干独立的资源池,文件数据对象的分布可被限定在某个资源池内。

下图给出了基于Lustre的分布式存储系统架构图。如图所示,系统提供了基于服务器间的故障接管的服务高可用保障方法。这种方法采用两台互为热备的元数据服务器,连接到同一台元数据存储目标,保证元数据服务的高可用。对象存储服务器和对象存储目标则采用两两交叉互联的方式,通过对象存储服务的故障接管,来实现对象存储服务的高可用。这种服务高可用保障方式可以应对服务器发生故障的情况,但是在盘阵失效或损坏时,将无法确保数据的可用性。在存储系统盘阵数目持续增长的情况下,这种不足将严重影响存储系统的可靠性。


图 基于Lustre的分布式存储系统架构

针对Lustre文件系统的结构特点,可以使用基于多副本的可靠性增强方法。该方法将Lustre文件系统的目录作为MTFS的分支,在这些分支间MTFS维持文件的若干副本。这样,即使部分的对象存储服务器或对象存储目标发生故障,导致某些副本无法正常读写,MTFS仍能正常读写其他副本,从而提高存储系统的可靠性。

5.1 数据分布

Lustre是一个基于对象的文件系统,通过设置分条,可将单个文件的数据对象分布于多个对象存储目标上,而且提供了对象存储目标池的管理手段。为了保证高可用,MTFS将文件分支分布在不同的对象存储目标池上。只要文件存在一个分支,其所在的对象存储目标池能正常服务,那么文件数据就能被正常访问,从而增强了存储系统的可靠性。在存储系统的安装部署中,可以通过对不同的对象存储资源池采用不同的存储网络或电源供给等各种方式,降低这些对象目标池发生故障情况的相关性,进一步提高存储系统的可靠性。

将不同分支的数据对象分布在多个对象目标池还可以减少多副本造成的性能损失。在同步副本模式下,每个写操作都需要应用到MTFS的多个分支上,因此数据写入的总量或者元数据修改总量等于原总量乘以分支个数,故而极大地增加了对存储系统系统的压力。如何减少数据量增长而造成的性能损失,成为基于副本机制的可靠性增强方法所面临的重大挑战之一。MTFS利用分布式存储系统的结构特点,将分支分布在不同的对象目标池上,分散了数据写操作造成的数据对象写入压力,减少了性能损失。

此外,这种数据分布方式还可以简化存储管理的复杂度。由于只要保证对象目标池的其中之一能正常服务,就可以保障文件系统服务的正常运行。因此可以暂停部分对象目标池的服务,对其中的盘阵、服务器、网络等进行维修、更新或替换,从而实现对存储系统的在线维护。

5.2 一致性语义

一致性语义保证对于并发I/O访问语义的正确性至关重要。Lustre的设计和实现严格遵循了POSIX I/O接口语义。POSIX I/O接口语义要求在一个客户端上的写入的数据必须立即对其他客户端可见。为此Lustre使用分布式锁机制来保证在多客户端并发读写时的一致性,即在客户端进行数据读写时,需要首先获得文件对应区间的分布式全局读写锁,然后才能真正开始访问数据。

MTFS在每次写数据时,首先使用Lustre的分布式锁机制对每个分支的对应区间上锁,在对所有分支上锁之后,才把数据写入每个分支中。由于这些锁的获取和释放是按照分支的固定排序顺序进行的,因此避免了死锁现象的发生。通过这种方式,MTFS在对应用透明的前提下,维持了Lustre的强一致性语义保证。

5.3 元数据的可靠性

MTFS的副本机制使得单个文件不仅存在多份数据副本,而且存在多份元数据副本。然而,现有的Lustre文件系统只支持单台元数据服务器,因此MTFS无法将将元数据分布在不同的元数据服务器上,达到提高元数据的可靠性的目的。不过,Lustre文件系统对元数据服务器集群的支持已处在设计开发过程中。可以预见,在集成了元数据服务器集群的Lustre文件系统中,可以方便地利用MTFS的副本机制,提高存储系统的元数据可靠性。

5.4 性能优化

针对Lustre文件系统的特点,MTFS采用多种方式进行了优化。

由于VFS的支持不足,基于Linux的堆叠式文件系统面临着双重页高速缓存的问题。双重页高速缓存指的是堆叠式文件系统及其下层文件系统,对同一文件各自维持一份页高速缓存。双重页高速缓存将使得系统中有效的页高速缓存成倍减少,从而造成文件系统性能的降低。此外,在下层文件系统为Lustre等分布式文件系统时,双重页缓存还可能破坏数据的一致性。为此,MTFS不使用自身的页高速缓存,而直接使用Lustre的页高速缓存。

为了保持通用性,分支属性、策略属性等附加信息一般以文件扩展属性的方式保存。然而,扩展属性操作对于Lustre这种基于网络的文件系统来说存在较大的开销,为此我们修改了Lustre文件系统,将这些附加信息以基本元数据的形式进行存储和传输,减少了性能损失。

5.5 性能测试

测试中使用了三台服务器,分别作为Lustre的MDS和两个OSS。服务器上配备两个2.80GHzIntel Xeon X5560处理器,32GB DDR3内存,存储设备为两个1500转/分的SAS磁盘构建的RAID1。客户端使用相同的配置,只是内存为2GB。所有服务器和客户端通过infiniban网络连接。

在每种测试中,都通过改变配置反复运行获得lustre、mtfs_branch1和mtfs_branch2三组数据。其中lustre表示直接在Lustre文件系统上测试时获得的数据。在测试运行前,设置目标目录的分条,将目录中的所有文件数据对象分布在第一个OSS上。mtfs_branch1表示把MTFS安装在Lustre的一个目录上获得的测试数据。在测试运行前,设置该目录的分条,将目录中的所有文件数据对象分布在在第一个OSS上。mtfs_branch2表示把MTFS安装在Lustre的两个目录上获得的数据。在测试运行前,设置这两个目录的分条,将目录中的所有文件数据对象分别分布在在第一个和第二个OSS上。

5.5.1读写性能测试

Tiobench是一种测试数据的读写性能的基准测试。本文使用Tiobench测试了MTFS在不同的I/O粒度下的性能表现。图6到图9分别给出了写、随机写、读和随机读的测试结果。由图6和图7可以看出,mtfs_branch1和lustre的写性能和随机写性能差别不大,表明MTFS将开销维持在较小的程度。而mtfs_branch2和lustre相比,存在一定的性能损失,但降幅并未达到50%(顺序写性能最大降幅约为28%,随机写性能最大降幅约为21%),虽然mtfs_branch2需要写入的数据总量为lustre的两倍。这是因为,为了达到增强数据可靠性的目的,mtfs_branch2将两个分支分别分布在两个不同的对象服务器上,使得每个对象存储服务器的数据写入压力并未增加,而且在写文件时交替写两个分支,使得对象存储服务器有更多的时间刷新数据高速缓存,因此MTFS整体写性能并未降到单个分支写性能的一半。


图 基于Lustre的MTFS写性能


图 基于Lustre的MTFS随机写性能

由上面两图可以看出,mtfs_branch1、mtfs_branch2和lustre具有相近的顺序读性能和随机读性能。这是因为MTFS只需要读取一个有效分支,三者读出的数据量相同,性能差别只决定于前两者的分支选取开销。而MTFS针对Lustre文件系统进行了充分优化,降低了分支选取造成的开销,因而使得三者读性能相近。


图 基于Lustre的MTFS读性能


图 基于Lustre的MTFS随机读性能

5.5.2Postmark测试

Postmark是一种模仿电子邮件服务器负载的基准测试,会进行一系列的文件追加、读、创建和删除操作。因此其测试结果可以反映MTFS在I/O密集型环境下的综合性能表现。本文使用Auto-pilot测试工具来运行Postmark,测试了不同线程数下的各线程的飞行时间。在测试中,多个线程同时创建大小为512字节到8192字节的文件共16384个,这些文件分布在1024个子目录中,完成共131072个事务。每个线程完成的事务数、创建的文件数和分布的子目录数相等。


图10 MTFS的Postmark测试飞行时间

上图给出了不同线程数下测试消耗的平均总时间。从该图可以看出,mtfs_branch1和mtfs_branch2具有相近的总时间。在线程数为1时,由于开销的存在,mtfs_branch1和mtfs_branch2的平均总时间较lustre增加了约36%。但随着线程数的增长,两者的平均总时间不断下降,且逐渐逼近lustre的平均总时间。这表明,MTFS可以充分利用Lustre文件系统性能,较好地支持并发I/O访问。

本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值