Chinaunix首页 | 论坛 | 博客
  • 博客访问: 564346
  • 博文数量: 33
  • 博客积分: 2001
  • 博客等级: 大尉
  • 技术积分: 2464
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 11:59
文章分类

全部博文(33)

文章存档

2009年(1)

2008年(32)

我的朋友

分类: LINUX

2008-10-27 22:19:59



文 国防科学技术大学计算机学院软件所 董勇 周恩强



关键词:

→Infiniband

由Mellanox公司提出,是一种新的I/O总线技术,用于取代目前的PCI总线。

→Lustre

它是一个开放源码的基于对象存储的高性能分布式文件系统,由Cluster File System(CFS)公司研发。

→Portals

来源于Sandia大学的Puma轻量内核项目,主要用于高性能的消息传递。

既然分布式文件系统能给用户带来更高的性能、扩展性和可用性,那么构建一个高性能的分布式文件系统又该从何处入手呢?基于Infiniband技术构建Lustre的实例可以让你见识到分布式文件系统的强大性能。

存储系统对于高性能计算平台的性能有重要的影响。很多关键应用,如天气预报、洋流模拟等都有很高的I/O吞吐量。分布式文件系统以其高可靠性、高可扩展性、高性能和高性价比成为高性能计算平台存储系统的首选。

Lustre作为新一代的基于对象的分布式文件系统,同一般的分布式文件系统,如NFS、GFS、PVFS等相比,具有独特的优势:

●针对大文件读写进行优化,可以提供高性能的I/O;

●数据独立存储;

●服务和网络失效的快速恢复;

●基于意图的分布式锁管理;

●融合了传统分布式文件系统(如AFS和Locus CFS)的特色和传统共享存储集群文件系统(如Zebra、Berkeley XFS、GPFS、Calypso、InfiniFile 和GFS)的设计思想,具有更加有效的数据管理机制;

●全局数据共享;

●基于对象存储,使存储更具智能化;

●系统可快速配置。

网络技术直接影响分布式文件系统的性能。Infiniband作为一种新的网络类型,其低延迟、高带宽的特点可以为分布式文件系统提供良好的网络支持,提高结点间的通信速度,从而提升整个文件系统的性能。

Lustre的发展

Lustre的组成

Lustre文件系统主要由三个部分组成:客户端(Client)、对象存储服务器(Object Storage Target,OST)和元数据服务器(MetaData Server,MDS)。客户端通过标准的POSIX接口向用户提供对文件系统的访问。对于客户端而言,Lustre是一个透明的文件系统。它无需知道具 体数据所在的位置,可以透明地访问整个文件系统中的数据。Client同OST进行文件数据的交互,包括文件数据的读写、对象属性的改变等;同MDS进行 元数据的交互,包括目录管理、命名空间管理等。OST负责对象数据的存储。MDS负责向客户端提供整个文件系统的元数据,管理整个文件系统的命名空间,维 护整个文件系统的目录结构、用户权限,并负责维护文件系统的数据一致性。三个组成部分除了各自的独特功能外,相互之间共享诸如锁、请求处理、消息传递等模 块。Lustre是一个高度模块化的系统,三个组成部分可以在一个节点上工作,也可以在不同的节点上工作。

在Lustre中,OST负责实际数据的存储,处理所有客户端和物理存储之间的交互。这种存储是基于对象(Object -based)的,OST将所有的对象数据放到物理存储设备上,并完成对每个对象的管理。OST和实际的物理存储设备之间通过设备驱动程序来实现交互。通 过驱动程序的作用,Lustre可以继承新的物理存储技术以及文件系统,实现对物理存储设备的扩展。

在Lustre中,元数据的管理由MDS负责。MDS构造、管理文件分布的视图,允许客户端访问对象。通过MDS的文件和目录访问管理,Lustre可以 控制客户端对文件系统中文件的创建、删除、修改以及对目录的创建、删除、修改等访问控制。通过MDS,客户端得到数据所在的OST,并与其建立连接,此后 的读写操作就在客户端同OST之间进行,除非有对命名空间的修改,将不再同MDS有关系,这样就降低了MDS的负载。在多个客户端的情况下,由于有多个 OST存在,上述的工作模式就把对文件系统的访问转换为并行操作,从而可以较好地提高性能。在Lustre中,客户端使用写回式Cache来保证元数据的 一致性。Lustre系统可以配置两个MDS服务器,其中一个作为备份。两个服务器采用共享存储的方式来存放元数据。当某个MDS出现故障后,备份服务器 可以接管其服务,保证系统的正常运行。为了满足高性能计算系统的需要,Lustre针对大文件的读写进行了优化,为集群系统提供较高的I/O吞吐率。

Lustre的网络通信

对于Lustre而言,其网络堆栈由四部分组成,即设备驱动程序、Portals消息传递层、Niobuf数据移动层、请求处理层。

在Lustre网络堆栈的最下层是设备驱动程序。在大多数情况下,设备的驱动程序都是可用的,但是有时候仍然需要利用RDMA的优势进行消息传递。在设备 驱动程序的上层是消息传递层,在Lustre中,该层使用了轻量消息传递API-Portals。Portals使用NAL(Net Abstraction Layer)来屏蔽底层网络的差异,为Lustre提供统一的消息传递接口。在消息传递层的上面是网络数据移动层。网络堆栈的最上层是请求处理层,提供了 用于分发请求以及提供回复的API。

Sandia Portals

Portals来源于Sandia大学的Puma轻量内核项目,主要用于高性能的消息传递。它通过底层的灵活的模块组合,有效地支持高层的协议。它不仅可以支持应用程序级的消息传递接口,如MPI等,更可以满足高性能文件系统的需要。

1.Portals API

Portals可以访问虚拟网络的接口,每个接口都具有一个相关的Portals Table,每个Table中包含n个Match Entry。Portals Table使用0到n-1对Entry进行索引,每个Entry都同某个高层的应用协议相对应。实际上,这些Entry同网络的Port相似,可以为不同 的协议提供有效的消息分发协议交换机制。

每个Portals Table上的Entry都连接一个Entry List,提供进一步的消息选择标准。每个到达Portals Table的消息都要同Entry List中的Entry进行匹配,如果可以与某个Entry匹配,则接收该消息;如果不能匹配,则会遍历整个Entry List,如果遍历完成仍然没有Entry成功匹配,此消息会被丢弃。

每个Match Entry都有一个Memory Descriptor。Memory Descriptor描述了一个逻辑上连续的包括应用程序地址空间的内存区域。这个内存区域由一个地址以及长度来描述。如果Memory Descriptor为空,那么相关的Memory Descriptor也不能使用。

每个Memory Descriptor都具有一个Event Queue,用来记录Memory Descriptor上所发生的操作。多个Memory Descriptor可以共享一个单独的Event Queue,但是每个Memory Descriptor只能有一个Event Queue。

在Event Queue中,所有的Event都保存在应用程序地址空间的一个循环缓冲区中。

2.Portals数据传输过程

在Portals中,数据的传输都具有两个进程,即Initiator和Target。Portals可以使用Put(Read)或者 Get(Write)操作进行数据的传输。Initiator对数据传输进行初始化,Target对操作进行响应。如果为Put操作,它可以接受数据,如 果为Get操作,它可以回复数据。

在Put操作时,Initiator向Target发送一个读请求消息。Target使用本地Portals结构对请求中的Portals地址消息信息进 行翻译,并且准备所需要的数据,将数据向Initiator发送。当请求被处理以后,Target可以选择发送一个确认消息。

在Get操作时,Initiator向Target发送一个Get请求,Target使用本地Portals结构对Portals地址信息进行翻译。在地址翻译完成以后,Target发送请求数据。

3.网络抽象层(Network Abstraction Layer,NAL)

网络抽象层存在于Portals的API以及library中,是Portals的重要组成部分。它可以提供对多种网络类型,如TCP/IP、Elan等的支持,将不同网络的差异进行屏蔽。实际上,NAL是两个虚类,其派生类由具体网络类型的驱动程序实现。

Portals的服务实例由四个组成部分。

Portals API库为应用程序提供Portals API,并且同API NAL进行交互。

Portals库提供了方法表,包括基本函数lib dispatch从API库中执行函数。Lib finalize负责为API库生成事件。Lib dispatch用来发现到达Packets的目的和目标。

NAL为API库提供一个方法表。其中一个是Forward方法。

Lib NAL是最后的组件。它向Portals Library分配API NAL的请求,具有几个其他的函数。它向Portals Library提供了几个方法:cb_send用来发送Packet;cb_write穿过保护域,向API域中的内存区域发送数据和事件。

从根本上来看,NAL主要负责发送和接收数据,以及NAL保护域上的内存管理和并发控制。

Infiniband

Infiniband是由IBTA(InfiniBand Trade Association,Infiniband贸易协会)制定的工业标准。它定义了一种新的服务器结点之间进行互联的网络标准,可以通过一个信息交叉网络 来简化并加速服务器与服务器之间的连接,其速度可以达到10Gb/s~30Gb/s。

Infiniband概述

在Infiniband网络中,结点之间通过通道适配器进行互联。通道适配器有两种,包括主机通道适配器(Host Channel Adapter,HCA)以及目标通道适配器(Target Channel Adapter,TCA)。整个系统可以通过HCA、TCA、交换机以及路由器组合在一起,构成一个快速网络。HCA和TCA可以提供一个无需CPU干预 的高可靠的点到点连接。HCA驻留在处理器节点,并提供从系统内存到InfiniBand网络的通路。它有一个可编程的直接内存访问(DMA)引擎。该引 擎具有特殊保护和地址翻译特性,从而使DMA操作可以在本地进行,或者通过另一个HCA或TCA远程进行。TCA驻留在I/O单元,并提供I/O设备(如 一个磁盘驱动器)或I/O网络(如以太网或光纤通道)与InfiniBand网络的连接。

交换机放置在通道适配器之间。它们使几个甚至几千个InfiniBand节点可以在任意位置进行互联。交换机对于结点而言是透明的,根据信息包中路由器报头的目的地地址,使信息包完整无损地经过网络到达目的结点。

在Infiniband中,数据沿着两个不同的方向流动,入站数据和出站数据分别位于不同的通道。InfiniBand不同的性能等级对应了Infiniband中实现2.5Gb/s的数据通道宽度,最高可达30Gb/s。

由于InfiniBand硬件从CPU卸载了大部分I/O通信任务,导致系统中多种通信任务可以同时进行,却没有相关的管理开销,这是与现有通信协议,如TCP/IP的一个主要不同之处。

Infiniband的通道适配器向结点提供的接口中使用了基于队列的模型。发送队列包括发送数据的指令,接收队列包括描述如何存放接收数据的指令。应用 程序可以对完成队列(Completion Queue)进行检查,以查看请求是否已经完成。Infiniband同时支持通道和内存语义。在通道语义中,使用Send/Receive进行数据的通 信。一个Receiver必须显示发送一个描述符来接收消息。在内存语义中,RDMA操作使得操作的发起者可以直接从对方结点中写入或者读取数据,而不需 要对方结点的干预。

Infiniband对IP的支持

为了能更好地支持现有的网络,Infiniband使用IPOIB提供了对IP网络的支持。IPOIB通过一个Link Driver同IP网络堆栈的底层进行交互,从而实现对IP数据的封装,同时在数据传输过程中使用IB的不可靠传输服务。

IPOIB驱动程序作为linux网络堆栈的一个二层网络驱动程序,主要功能之一是执行IP地址向Infiniband UD地址矢量的映射,并对多播成员进行管理。

当IP层需要把数据放到网络上时,它要从内部的同Link Driver相关邻居程序中获得硬件地址。如果目标IP的硬件地址未知,那么该程序将调用Link相关的地址解析协议来找到该地址。IPOIB的RFC定 义了一个将IPv4地址或者IPv6地址映射为IBA地址矢量的地址解析协议。这个协议由linux标准地址解析机制实现,同时具有一些额外的对 IPOIB驱动程序的“Shadow”支持。在得到硬件地址以后,IP层调用Link相关的Entry Point,将数据放到网络上。

当IPOIB驱动程序初始化时,创建一个内核net_device结构来保存IPOIB子网相关的状态和上下文,并在内核中注册一个网络适配器,所有相关 的通信由该适配器执行。当底层的Infiniband接口不再可用时,IPOIB将删除该网络适配器的实例,停止相关的工作。

以Infiniband构建Lustre文件系统

由于Infiniband在响应时间、传输速度上的优势,利用其构建高速分布式文件系统将极大地提高文件系统的性能。

由于Lustre的Portals目前还无法直接支持Infiniband NAL,可以利用Infiniband的IPOIB功能,在Lustre的Portals中使用TCP/IP NAL,从而达到间接利用Infiniband的效果。

在安装了Infiniband硬件以及驱动程序以后,利用IPOIB可以为系统提供一个新的网络接口,其地址以普通的IPv4地址的形式出现,与此同时,还可以为每个IPOIB地址配置一个主机名,利于Lustre使用。

完成每个结点上Infiniband及相关IPOIB配置后,再创建Lustre配置文件,每个结点以IPOIB的主机名来标识。将配置文件放到各个结点 都可以访问的地方,使用Lconf启动Lustre。当MDS及OST启动完成后,计算结点就可以加载客户端,完成Lustre在Infiniband的 部署。(E5)



Portals关系图



Portals NAL结构图



Lustre文件系统

Infiniband技术出现以后,就一直是业界研究的热点。Murali Rangarajan等人利用Infiniband构建了DAFS,吴杰生等人则利用Infiniband构建了PVFS。从上述两种结构来看,都验证了 Infiniband技术在分布式文件系统上可以成功应用。此外,又有人利用Infiniband网络实现了基于RDMA的MPI,Vijay Velusamy等人在Infiniband基础上建立了消息传递系统。

Lustre来源于卡耐基梅隆大学的Coda项目,由Cluster File System公司开发。Lustre针对传统分布式文件系统中存在的高性能、高可用性以及可扩展性问题,综合了开放标准以及linux操作系统,利用 linux操作系统提供标准的POSIX兼容文件系统,采用基于意图的分布式锁管理机制,以及元数据同存储数据相分离的方式,融合了传统分布式文件系统 (如AFS和Locus CFS)的特色和传统共享存储集群文件系统(如Zebra、Berkeley XFS、GPFS、Calypso、InfiniFile 和GFS)的设计思想,形成一个可靠的和网络无关的数据存储以及恢复方案。 (E5)



相关链接

基于Infiniband的Lustre性能测试

为了测试Lustre在Infiniband IPOIB连接上的性能,我们使用如下平台对Lustre进行测试,并同千兆以太网条件下的Lustre性能进行了对比。

客户端每台机器为双安腾1.4G CPU、8GB内存、RedHat Advanced Server 2.1、Lustre版本为1.0.4。OST端共有两台机器,每台机器均为AMD Opteron 1.8G CPU、内存4GB,可以运行两个OST服务。每个OST服务使用由两块SCSI磁盘构成的RAID 0。MDS端位于其中一台OST结点上。每台机器均有千兆网卡、Infiniband网卡。测试工具为Iozone。为了保证测试结果的准确性,减少内存 对测试的影响,每次测试过程中,客户端每次读写的测试文件大小为16GB。

1.网络速度

要测试整个系统的性能,首先要获取两种网络的速度。使用Netpipe测试两种网络类型的速度。

2.本地磁盘速度

使用Iozone测试RAID 0的本地写速度,文件系统为ext3,其中读为144769kB/s,写为132184kB/s。

3.测试结果

首先测试一台机器作为OST,分别测试Lustre在千兆以太网以及Infiniband IPOIB条件下从1到5个客户端情况下的性能。

在千兆以太网条件下,网络速度是限制Lustre速度的重要因素。随着客户端的增加,Lustre性能在逐渐提升。而在Infiniband IPOIB条件下,由于网络已经不再是限制Lustre性能的瓶颈,所以在1个客户端时,由于只有一个OST,其性能明显高于以太网条件下的数据。随着客 户端的不断增加,其聚合写性能随之缓慢上升。在读性能方面,随着客户端的不端增加,IPOIB条件下的聚合读性能是随之缓慢下降的。尽管如此,其性能仍然 要比千兆以太网条件下的性能高。

在多个OST情况下,Lustre的性能将随之发生变化。

由上面的测试结果可以看出,使用Infiniband IPOIB方式构建Lustre文件系统,写性能有很大提高,在4个OST情况下,4个客户端聚合写性能可以达到250MB/s,读性能可以达到230MB/s。

在千兆以太网条件下,4个客户端在4个OST上的聚合读带宽可以达到95MB/s,相同条件下聚合写带宽可以达到103MB/s。同以太网条件下相 比,Infiniband IPOIB条件下的Lustre性能有了巨大的提高, 4个客户端在4个OST上的聚合读带宽有230MB/s,聚合写带宽有250MB/s。测试结果验证了,Infiniband技术可以极大地提高 Lustre的性能。

在1个和两个OST条件下,Lustre的聚合读性能并不是随着客户端增加而增加的,只有在4个OST时,其聚合读性能随着客户端的增加而增加,这说明Lustre在大规模条件下更能体现其性能优势。

在写性能上,无论是随着OST的增加还是客户端的增加,Lustre的聚合写性能都在不断增长,这也表明了Lustre作为分布式文件系统所具有的可扩展性优势。 (E5)



单个OST写性能对比



单个OST读性能对比
阅读(4061) | 评论(0) | 转发(0) |
0

上一篇:RDMA技术分析

下一篇:高性能计算存储系统

给主人留下些什么吧!~~