lustre学习笔记之基本知识

2022-08-17 12:22:08 浏览数 (1)

lustre介绍

  • lustre是一个开源、分布式、高性能的分布式存储。lustre广泛被HPC领域使用。lustre目前仅仅支持本地数据容错,在未来版本2.16推出会支持EC,做到数据容错。
  • lustre 运行在linux操作系统,采用了C/S的网络架构。lustre的整个软件栈是在linux内核实现,提供统一的文件系统命名空间。
lustre组件介绍
  • MGS MGT:MGS提供注册lustre server、lustre client以及lustre文件系统的配置信息。MGT是为MGS提供存储的storage target.
  • MDS MDT:MDS提供文件系统的统一命名空间。MDT是为MDS提供元数据存储的storage target.
  • OSS OST:OSS提供大容量数据存储的服务。OST是为OSS提供数据存储的storage target.
  • Clients:lustre client使用lnet挂在lustre文件系统。
  • Network:lustre是基于network的文件系统,所有的IO事务都是发送到网络后端处理。客户端没有本地持久存储也不会存储数据。lustre目前支持的网络有OPA、IB。
lustre服务介绍
  • lustre内部有三种不同的服务,分别是 management server/metadata server/object storage server。
  • management server提供lustre文件系统的注册、配置信息服务。management server需要一个容量小的存储来存储整个lustre文件系统的配置和注册信息
  • metadata server记录文件的namespace和inodes信息,同时维护整个lustre文件系统的索引信息,metadata server需要单独存储设备来存储整个lustre文件系统的文件的元数据信息
  • object storage server存储文件数据,每个文件被分割为多个objects,每个obejcts存储在不同的ost(lustre object storage 管理的磁盘设备)。
  • lustre把元数据和数据分开存储。每个文件元数据操作其中包括文件创建、删除、权限等操作请求到lustre的metadata server.metadata server提供文件系统的索引。metadata是以key-value的索引对象存储在文件的inode中,这些文件的元数据包括文件和目录名称、权限、block的位置、扩展属性等。
  • object storage server并发写文件到磁盘(ost),把每个文件切割为多个objects,存储在不同的ost中。
  • management server提供的服务用来追踪object storage server、client以及文件系统的配置
lustre 后端的文件系统介绍
  • lustre 的服务端和客户端都运行在linux kernel.lustre server可以选择ldisks和zfs两种ost后端存储。ldisk是从ext4进行优化的版本。lustre server如果选择了zfs,lustre客户端就不需要linux 内核的patch.
lustre处理IO处理流程
  • lustre 客户端提供虚拟文件系统和lustre server之间的接口。客户端软件是由不同的服务组成,每个客户端包括一个MGC、一个或者多个MDC、一个或者多个OSC服务。
  • MGC管理配置信息,MDC提交文件系统元数据请求到MDT.每个OSC像每个OST请求数据的读或者写。
  • LMV(logic metadata volume)聚合 MDC 并向客户端呈现单个逻辑元数据命名空间,提供跨所有 MDT 的透明访问,这样客户端看到的是统一的元数据命名空间。
  • LOV(localgin object volume)聚合OSC,并向客户端呈现单个统一的文件访问的地址空间。
lustre 文件系统架构介绍
  • 整体架构
  • server架构
lustre文件系统最小化部署组件
  • 1个MGS服务,同时MGT作为存储介质和MGS绑定
  • 1个或者多个MDS服务,对应的1个或者MDT和MDS绑定
  • 1个或者多个OSS服务,对应1个或者多个OST和OSS服务对应
  • MDT/MGT/OST都是以特性类型(ldiskfs/zfs)格式化的块设备
lustre文件系统高可用的最小组件
  • 2个MDS,MGS和MDS以failvoer配置运行。MGS服务运行在一个节点,MDS服务运行在另外一个节点。两个服务共享MGT和MDT volume
  • 2个OSS服务,2个OST以failover方式运行,共享ost volume
MGS和MGT
  • MGS是作为lustre全局的资源,扮演者注册lustre文件配置信息和服务状态的角色,不参与文件的操作。所有的lustre 服务组件在MGS启动时候注册,客户端挂载时候从MGS获取lustre文件系统的信息
  • 配置信息是存储在MGT上,每个MGT有特定的地址的MSG服务对应。
MDS和MDT
  • MDS是提供lustre的文件系统元数据服务。元数据是存储的设备叫做MDT.MDS服务整个文件系统的统一命名空间和文件布局。文件存储在哪里是由MDS决定的。lustre文件系统至少有一个MDT和MDS,当然可以配置多个MDT对应一个MDS。MDS是一个可扩展的服务,可以使用Distribute Namespace功能,可以把单一文件系统存储在多个MDT上。一般情况MGS和MDS是成对部署已达到高可用。
  • MDS存储和提供文件系统的命名空间,负责定义文件布局。
OSS和OST
  • 文件数据是以对象方式存储,每个文件被分割成固定大小的块存储在不同的ost上。
Object Storage Devies(OSDs)
  • lustre server运行在本地文件系统的存储叫做osd.目前lustre支持2种后端存储。一种是LDISKS,是从ext4文件系统优化而来,在原来的ext4中增加了很多功能。第二种是zfs,是从OpenZFS实现而来。zfs可以合并多个volume,提供单一文件系统功能。zfs是可扩展的文件系统,比较适合高密度的存储系统。
  • lustre中的mgt/mdt/ost可以采用不同的后端文件系统,比如mdt采用ldisks,ost采用zfs.
MGS服务介绍
  • MGS管理lustre文件系统客户端和服务端配置以及对应组件配置调整
  • 每个新server和client组件都需要在MGS启动时候注册
  • server和client从MGS获取lustre文件的挂载和配置信息
  • MGS可以服务一个或者多个lustre文件系统
MDS服务介绍
  • 每个lustre文件系统可以有一个或者多个mds服务
  • 维护lustre文件系统的元数据,主要是文件的元数据,包括文件的owner、group、filename、links、ctime、mtime、extended attribute。同时也包括lustre每个文件对应的file identfier
  • 元数据数存储在MDT上,一个lustre文件系统可以有一个或者多个MDS,当配置多个MDS时候需要使用DNE(distribute namespace feature).一个lustre文件系统最多可以配置4096个MDT.这里需要注意的是当MDT由于损坏而导致不可用时候,lustre文件系统也是处于不可用状态。
OSS服务介绍
  • OSS提供可扩展大规模的数据存储服务。OSS在OST和网络之间进行数据搬运,期间OSS把OST上数据通过传输到客户端,同时提供管理read/write系统调用。每一个OSS可以共享多个OST,通常情况下OST所在的硬件存储设备都采用raid6(8 2)达到容错,这是一个通用的配置。
  • 文件数据存储是以字节数组的数据对象形式存储,单个lustre文件系统最多可以有8150个ost volume。
Lustre Client介绍
  • lustre客户端把元数据、对象存储合并为单一的POSIX 文件系统对外提供服务,以挂载lustre文件系统的形式存在。
  • 所有客户端的IO都是通过RPC方式请求MDS和OSS.
Lustre Client 介绍
  • lustre采用C/S模式的架构,每个连接都会有发送者和接受者。
  • lustre客户端有三个子模块分别是MGC/MDC/OSC。MGC处理MGS的RPC请求。lustre有多少个MGS,每个客户端就会有多少个MGC。MDC处理MDS的RPC请求,每个客户端都会以一个MDC对应一个MDT形式运行。OSC是管理单个OST的RPC请求。
  • 当客户端lookup一个文件名称,一个RPC请求发送给MDS获得锁,如果是读就获取look-up intent;如果是写则创建intent.然后MDS给客户端返回一个lock和请求文件的所有元数据和该文件的布局属性。文件的布局信息包含了该文件在所有OST的文件数据、访问该这些数据的方式。文件布局信息允许客户端和OST直接访问数据。每个文件文件在lustre都会有一个唯一布局。
  • 如果文件是写入的文件,MDS申请OST的数据对象,在文件第一次打开的时候。MDS发送RPC请求给OSS申请OST 的数据对象。
  • 所有文件和数据对象在lustre文件系统都会有一个128个字节的文件ID(FID).FID用来唯一标识一个文件的数据对象。FID针对每个数据对象在OST和MDT中都是唯一的。
  • 当客户端发起一个client,客户端首先请求MGS获取lustre文件系统信息,包括文件系统的root,这些都存储在MDT0.客户端连接MDS,然后挂载整个lustre文件系统。
Lustre Inodes介绍
  • lustre indes就是MDT上的inodes.默认的inode是2K。zfs的inode会比默认大些。后端是ldiskfs的MDT,能存储inode的数量的上限是4亿,但是以zfs为后端的MDT没有这个限制。
  • lustre inodes存储了所有文件的元数据,这些inodes包括uid、gid、权限、扩展属性。扩展属性又包括了每个文件位于的ost、object id。针对ldiskfs的MDT,在做MDT格式化时候能存储的inodes数量就确定了。在默认的情况下每个inode占用2K的字节。MDT inode申请和OST的数据对象申请都是在第一次格式化时候做好。
lustre 扩展属性介绍
  • Layout EA是扩展属性作为文件元数据的一部分存储在MDT上,这些信息包括论文一个文件存储在一个或者多个OST的位置,Layout EA是lustre inode的一部分,内部使用FID来标识。扩展属性包括了一个文件的在所有OST上的文件FID列表。Layout EA指向1个或者多个OST的数据对象。如果Layout EA指向一个对象,这个文件数据全部存储在这个对象。如果Layout EA指向一个或者多个数据对象,那么文件数据被分割为多个数据对象存储在不同的OST上
  • 当客户端想读数据或者写文件,首先需要获取文件的所有数据对象的FID,每个FID包括文件数据在每个OST上的布局信息。然后客户端根据文件布局信息直接后后端的OST进行IO操作。
lustre 文件布局
  • 每个文件在lustre中都有一个文件布局,是有一个或者多个数对象组成。文件布局是由MDS决定。lustre高性能的因素之一就是数据跨多个OST是采用round-robin的算法。用户可以配置文件分割的数据对象的个数、分割的大小。文件分割成固定大小的这种方式可以提供单个文件的访问带宽。单个文件的stripe的数据对象的个数叫做stripe_count.
  • 单个文件最大的stripe_count是2000.
lustre FID介绍
  • lustre中的FID提供128bit的文件标识。在128 bit中64bit用来定位后端存储包括OST和MDT.32bit代表OID,是数据对象的序号,32bit预留。

0 人点赞