lustre文件系统简介
翻译为后端文件系统特有的请求
Lustre文件系统逻辑结构
Lustre文件系统逻辑结构
OST模块主要将来自客户端的请求进 行分发,其中的数据请求交给 OBDfilter模块处理;
OBDfilter模 块 主 要 实 现 Lustre 和 其 运行平台的高效通信,结合ldiskfs可 以提供应用层一般的文件操作接口
元数据服务器MDS
负责元数据服务,同时管理整个文件系统的命名空间 多个MDS之间共享访问一个MDT 每个MDT保存文件元数据对象,例如文件名称、目录结构和访问权
限等 Client 通 过 MDS 读 取 到 保 存 于 MDT 上 的 元 数 据
OSS 和Client
OSS负责客户端和物理存储之间的交互及数据的存储 ,向外提供数据的 I/O接口
服务器的数据 得到信息后,立即将后续的请求重定向到备份服务器
高能所的 Lustre 部署有四个特点: (1) 元数据服务器 MDS 分为主从,但是无法在线备份和容错; (2) 采用万兆以太网; (3) 没有采用分片存储,一个文件仅存储在一个 OST 上; (4) 存储设备采用廉价的SATA 盘,通过 RAID6 实现数据可靠性。
Lustre文件系统简介
分布式文件系统主要分为三大类:
网络文件系统(瓶颈在存储服务器端)
• NFS、Coda、Sprite LFS
存储区域网文件系统(瓶颈在元数据服务器)
• GPFS
基于对象的分布式文件系统
• Lustre、Google File System和 HDFS
什么是Lustre
基于对象存储的分布式文件系统 基于廉价的SATA磁盘驱动器构建超大规模存储集群,不需要专门的
元数据客户端MDC模块主要被Llite用来与元数据服务器进行 通信,为用户提供与各个元数据服务器进行命名空间操作交 互的元数据对象API接口;
OSC模块主要用来与对象存储设备进行文件数据I/O以及锁 服务的交互,每一个OSC都对应一个OST
Lustre文件系统逻辑结构
Lustre的分布式锁管理者(LDLM)
意图锁:用于文件元数据的访问,通过执行锁的意图减少元数据访问 所需的消息传递次数,从而减少每次操作的延迟
范围锁:保护细粒度的文件数据并发访问,为所tre在客户端的内存空间开辟一段缓存区,客户端把首次访问的文件对象保存 在自己的高速缓存中,尽量减少与服务器的交互次数,从而降低网络开销。
ldiskfs是Linux ext3和ext4文件系统 的超集,用在服务器端,作为底层的 本地文件系统
锁请求交由分布式锁管理器Ldlm处理, 获得文件的范围锁
客户端节点的Llite模块主要提供与支持标准可移植POSIX语 法的linux的VFS层相兼容的接口;
逻辑对象卷LOV模块主要通过其下层的对象存储客户端OSC 为Llite提供对象存储的API接口;
每个OSS管理一个或者多个OST,存储文件数据对象 Client通过OSS访问保存在OST上的文件数据 Client挂载了Lustre文件系统的任意节点,实现了可移植POSIX文件系
统接口 用户通过client可以透明的访问整个文件系统的数据
客户端与MDS之间进行元数据的交互、目录管理、文 件的打开和关闭、并发访问控制等。
硬件支持 支持大多数高速网络类型 高吞吐量、高扩展性和高性能 有效的数据管理机制、全局数据共享、失效替代和系统可快速配置等
功能
Lustre文件系统体系结构
元数据服务器 MDS(Meta Data Server) 对象存储服务器 OSS(Object Storage Server) 客户端(Client) 元数据目标设备MDT(Meta Data Target) 对象存储目标设备 OST(Object storage Target) 连接这些组件的高速网络
客户端执行文件读取操作时
1.向MDS发送元数据请求,获得元数据信息,并保存到客户端本地的高速缓存中; 2.客户端与相应的OST建立连接,将实际的文件数据读入高速缓存,应用程序再从高速缓存中执行 文件读取操作。
Lustre客户端缓存一致性问题
一致性问题解决方法
并发写造成的不一致:
采用分布式锁管理机制LDLM,通过对元数据加意图锁,对数据加范围锁,保证元数据并发操作的一 致性 对长期占有锁资源的进程,采用锁回调callback机制释放锁资源
读写读造成的不一致:
客户端对本地已经缓存过的文件进行再次访问时,仍需要与MDS进行一次交互获得最新的元数据信 息,之后再和本地缓存的元数据信息进行比对 如果一致就从本地缓存中读取文件数据,否则就与相应的OST建立连接重新获取文件数据
备份服务器Failover
Lustre系统中的每个节点(MDS/OST)一般都可以配置备份服务器 两个服务器采用共享磁盘存储的方式来存放数据 当服务器或网络连接发生失效时,就会导致客户端数据访问超时,客户端会查询备份
• 客户端与OSS之间进行文件数 据的交互,包括文件I/O锁操作 和数据的读写等。
LNET责将这些信息送到实际的网络传输线路中 PTR-RPC负责处理三部分之间的RPC请求与应答 MDS模块将客户端请求进行分发 元数据请求交由日志模块Journal处理,记录元数据操
作日志 将元数据操作由Fsfilt wrapper模块记录在后端存储端 锁请求交由Ldlm处理,获得文件的意图锁 Fsflit定义了一个一般性API,从而将Lustre特有的请求
谢谢!