Lustre存储集群架构详解:体系结构、组件与I/O机制
Lustre存储集群架构详解:体系结构、组件与I/O机制
Lustre是一个高性能的分布式文件系统,广泛应用于高性能计算(HPC)集群中。它支持Linux系统,并提供符合POSIX标准的UNIX文件系统接口。Lustre以其出色的可扩展性和性能而闻名,能够支持成千上万个客户端系统,提供PB级的存储容量和GB/sec级别的I/O吞吐量。本文将详细介绍Lustre的体系结构、特点、组件以及存储和I/O机制。
Lustre可以做什么
Lustre主要用于集群存储架构,特别是在高性能计算领域。它能够支持大规模的集群环境,提供高容量存储和高性能I/O。Lustre的体系结构核心是Lustre文件系统,它支持Linux系统,并提供符合POSIX标准的UNIX文件系统接口。
许多高性能计算站点使用Lustre作为全局文件系统,服务多个集群。Lustre文件系统具有良好的扩展能力和性能,能够简化存储管理,避免数据复制的需求。此外,Lustre还支持动态添加服务器,以实现容量和性能的扩展。
虽然Lustre在许多工作环境中都能良好运作,但它并不适合所有应用场景。例如,在对等使用模式下,如果客户端和服务器运行在同一节点并共享存储,Lustre可能无法提供足够的数据复制功能,导致节点故障时数据无法访问。
Lustre的特点
Lustre的可扩展性体现在多个维度,包括客户端节点数量、磁盘存储和带宽。其性能和可扩展性依赖于可用的磁盘和网络带宽,以及系统中的服务器处理能力。Lustre可以部署在各种架构上,并且能够扩展到远超当前生产系统中观察到的规模和性能。
以下是Lustre的一些关键特性:
可扩展性:
客户端:100-100,000个
OSS:4-500个,最高可达4000个
MDS:支持1+1冗余配置
性能:
客户端:单客户端2GB/s I/O,文件系统240GB/s I/O
OSS:最高5GB/s吞吐量
MDS:最高35,000/s创建操作,100,000/s元数据操作
其他重要功能包括:
- 性能增强的ext4文件系统:Lustre使用增强版的ext4文件系统(ldiskfs)来存储数据和元数据。
- POSIX兼容性:支持完整的POSIX标准,大多数操作都是原子性的。
- 高性能异构网络:支持多种高性能网络,包括RDMA和Infiniband。
- 高可用性:提供主动/主动和主动/被动故障切换机制,支持多种高可用性整合方案。
- 安全性:支持TCP连接限制和访问控制列表(ACL)。
- 基于对象的架构:支持存储架构的升级,不影响客户端。
- 细粒度锁定机制:分布式锁管理器(DLM)确保数据一致性。
- 配额管理:支持用户和组配额。
- 灾难恢复工具:提供分布式文件系统检查工具(lfsck)。
- 内部监控和检测:提供多种性能监控和调优机制。
- 开源许可:基于GPL 2.0许可。
Lustre的组件
Lustre的软件安装主要包括管理服务器(MGS)、Lustre文件系统组件以及Lustre网络(LNET)。基本配置如图1-1所示:
管理服务器(MGS)
MGS负责存储集群配置信息,并为其他Lustre组件提供信息。每个Lustre目标和客户端都会与MGS交互以获取配置信息。MGS最好拥有独立的存储空间,以便独立管理。虽然MDS可以与MGS共享存储,但推荐使用独立存储以提高管理效率。
Lustre文件系统组件
Lustre文件系统由以下主要组件构成:
- 元数据服务器(MDS):存储元数据,如文件名、目录、权限和文件布局。
- 元数据目标(MDT):存储文件元数据,每个文件系统至少包含一个MDT。MDT可以共享存储,但同一时间只能由一个MDS访问。
- 对象存储服务器(OSS):提供文件I/O服务,通常每个OSS包含2-8个OST,每个OST容量可达16TB。
- 对象存储目标(OST):存储用户文件数据,每个文件可以分布在多个OST上。
- Lustre客户端:运行Lustre客户端软件,用于安装和访问Lustre文件系统。
客户端软件包括管理客户端(MGC)、元数据客户端(MDC)和多个对象存储客户端(OSCS)。逻辑对象卷(LOV)聚合所有OST的访问,使客户端看到一个统一的命名空间。
Lustre网络(LNET)
LNET是自定义的网络API,负责处理元数据和文件I/O数据的通信。LNET支持多种网络类型,并提供故障转移能力。
Lustre集群
Lustre集群可以扩展到数百个OSS系统和数千个客户端。OSS系统之间的共享存储增强了故障转移能力。更多信息请参阅第3章:Lustre故障转移。
Lustre的存储和I/O机制
在Lustre文件系统中,每个文件与一个或多个OST对象关联,如图1-3所示。每个对象存储一部分文件数据,文件数据可以条带化分布在多个OST上(使用RAID0模式)。
当客户端打开文件时,MDS会将文件布局信息发送给客户端,客户端直接与相关OSS进行I/O操作,如图1-4所示。
Lustre的可用带宽由OSS系统的总带宽和磁盘存储带宽的最小值决定。文件系统空间等于所有OST的可用空间之和。
Lustre文件系统和条带化
Lustre支持在多个OST之间条带化数据,用户可以配置每个文件的条带数、条带大小和使用的OST。条带化可以提高性能和存储利用率。每个文件的条带数称为stripe_count,条带大小称为stripe_size。
条带化机制如图1-5所示,文件数据可以分布在多个OST上,支持稀疏文件和不同大小的条带。
Lustre支持最多160个对象的条带化,每个对象最大2TB,因此最大文件大小可达320TB。I/O带宽可以聚合多达160个服务器的带宽。