Lustre File System
历史
Lustre是HP,Intel,Cluster File System公司联合美国能源部开发的Linux集群并行文件系统。它来源于卡耐基梅隆大学的NASD项目研究工作。Lustre文件系统2003年推出了1.0版,目前已经推出了1.4.7的发布版本。
Lustre在美国能源部(U.S.Department of Energy:DOE)、Lawrence Livermore 国家实验室,Los
Alamos国家实验室,Sandia 国家实验室,Pacific
Northwest国家实验室的高性能计算系统中已得到了初步的应用,IBM正在研制的Blue
Gene系统也将采用Lustre文件系统实现其高性能存储。HP公司的“StorageWorks Scalable File Share”(HP
SFS,可扩展文件共享),是首款采用Lustre技术的商业化产品。
作为首个开源的基于对象存储设备的分布式并行文件系统,Lustre可以说是性能优异,并被越来越广泛的应用。
系统架构
图1 Lustre的系统架构
Lustre
是一个透明的全局文件系统,客户端可以透明地访问集群文件系统中的数据,而无需知道这些数据的实际存储位置。其结构如图1所示,Lustre由客户端,两
个MDS(一个运行,一个备份)和OST设备池,通过高速的以太网或QWS Net(QUALCOMM Wireless
Systems)所构成。Lustre最多可以支持多达10000个客户端;两个MDS采用共享存储设备的Active-Standby方式的容错机制;
存储设备跟普通的,基于块的IDE存储设备不同,是基于对象的智能存储设备。
客户端在需要访问文件系统的文件数据时,先访问MDS,获取文件相关的元数据信息,然后就直接和相关的OST通信,取得文件的实际数据。
客户端通过网络读取服务器上的数据,存储服务器负责实际文件系统的读写操作以及存储设备的连接,元数据服务器负责文件系统目录结构、文件权限和文件的扩展属性以及维护整个文件系统的数据一致性和响应客户端的请求。由于Lustre采
用元数据和存储数据相分离的技术,可以充分分离计算和存储资源,使得客户端计算机可以专注于用户和应用程序的请求;存储服务器和元数据服务器专注于读、传
输和写数据。存储服务器端的数据备份和存储配置以及存储服务器扩充等操作不会影响到客户端,存储服务器和元数据服务器均不会成为性能瓶颈。
Lustre 的全局命名空间为文件系统的所有客户端提供了一个有效的全局唯一的目录树。全局目录树消除了在客户端的配置信息,并且在配置信息更新时仍然保持有效。
运行机制
图2 Lustre三个组成部分间的关系
Lustre文件系统是个高度模块化的系统,主要由三个部分组成:客户端(Client)、对象存储服务器(Object Storage
Target,OST)和元数据服务器(MetaData
Server,MDS)。三个组成部分除了各自的独特功能外,相互之间共享诸如锁、请求处理、消息传递等模块。为了提高 Lustre
文件系统的性能,通常 Client、OST 和 MDS 是分离,当然这些子系统也能运行在同一个系统中。
客户端:通过标准的POSIX接口向用户提供对文件系统的访问。对于客户端而言。Client同OST进行文件数据的交互,包括文件数据的读写、对象属性的改动等;同MDS进行元数据的交互,包括目录管理、命名空间管理等。
OST:在Lustre中,OST负责实际数据的存储,处理所有客户端和物理存储之间的交互。这种存储是基于对象(Object
-based)的,OST将所有的对象数据放到物理存储设备上,并完成对每个对象的管理。OST和实际的物理存储设备之间通过设备驱动程式来实现交互。通
过驱动程式的作用,Lustre能继承新的物理存储技术及文件系统,实现对物理存储设备的扩展。为了满足高性能计算系统的需要,Lustre针对大文件的
读写进行了优化,为集群系统提供较高的I/O吞吐率。存储在OST上的文件能是普通文件,也能是复制文件。Lustre同时还将数据条块化,再把数据分配
到各个存储服务器上,提供了比传统 SAN 的“块共享”更为灵活和可靠的共享访问方式。当某个存储节点出现故障时,客户端仍然能够通过
MDS:在Lustre中,元数据的管理由MDS负责。MDS负责向客户端提供整个文件系统的元数据,管理整个文件系统的命名空间,维护整
个文件系统的目录结构、用户权限,并负责维护文件系统的数据一致性。通过MDS的文件和目录访问管理,Lustre能控制客户端对文件系统中文件的创建、
删除、修改及对目录的创建、删除、修改等访问控制。通过MDS,客户端得到数据所在的OST,并和其建立连接,此后的读写操作就在客户端同OST之间进
行,除非有对命名空间的修改,将不再同MDS有关系,这样就降低了MDS的负载。在多个客户端的情况下,由于有多个OST存在,上述的工作模式就把对文件
系统的访问转换为并行操作,从而能较好地提高性能。在Lustre中,客户端使用写回式Cache来确保元数据的一致性。Lustre系统能设置两个
MDS服务器,其中一个作为备份。两个服务器采用共享存储的方式来存放元数据。当某个MDS出现故障后,备份服务器能接管其服务,确保系统的正常运行。
Lustre打算将来实现多元数据服务器来提高元数据处理的性能和可扩展性。
图3 一个简单mkdir的过程
如图3所示,Lustre中的“mkdir”命令的执行需要经过如下几个步骤:客户端首先向MDS申请“mkdir”操作,MDS先锁定该操作的父目录,并添加目录,成功后把目录锁返还给客户端,然后客户端再和具体的文件服务器通信,创建相关的目录
Lustre File System
错误恢复
Lustre在设计上考虑了对网格环境的支持,一方面他考虑了文件系统的安全性策略,包括认证、授权和文件内容加密三个方面;另一方面他考虑在管理和系统
状态监视方面和网格的结合,其设置信息和状态信息采用XML格式,提供通过LDAP(Light-Weight Directory Access
Protocol)接口操纵设置信息,而且能支持通过SNMP来获取和修改这些信息。
图4 MDS错误恢复
Lustre在设计时也充分考虑了系统故障时的错误恢复情况,如图4所示,系统正常运行时,存在一台前台的活跃MDS服务器和一台备用MDS服务器。当前
台运行的MDS服务器出现故障时,客户端会通过查询LDAP服务器,自动转而连接备用MDS服务器,从而使系统重新恢复正常运行。
性能总结
从初步的测试看,Lustre的性能和可扩展性能说都是相当优秀。以下是Lustre的并发写文件的速率和并发创建文件的速率和当今应用的主流文件系统的对比。
能说,在文件系统的主要性能指标方面,Lustre都大幅的超越对手(GoogleFS是单个公司的产品,无法加入比较),实现了可靠性的,可用性的,可
扩展性的,可管理性的,高性能的,海量的,分布式的数据存储,并且能够按照应用需求的不同提供不同的服务,如不同的应用、不同的客户端环境、不同的性能
等,真正实现了按需服务。
阅读(10747) | 评论(2) | 转发(0) |