前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lustre学习笔记之基本知识

lustre学习笔记之基本知识

作者头像
用户4700054
发布2022-08-17 12:22:08
2.9K0
发布2022-08-17 12:22:08
举报
文章被收录于专栏:存储内核技术交流

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预留。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 存储内核技术交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lustre介绍
    • lustre组件介绍
      • lustre服务介绍
        • lustre 后端的文件系统介绍
          • lustre处理IO处理流程
            • lustre 文件系统架构介绍
              • MGS服务介绍
                • MDS服务介绍
                  • OSS服务介绍
                    • Lustre Client介绍
                      • Lustre Inodes介绍
                        • lustre 扩展属性介绍
                          • lustre 文件布局
                            • lustre FID介绍
                            相关产品与服务
                            文件存储
                            文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档