用户4700054
lustre学习笔记之基本知识
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
用户4700054
社区首页
>
专栏
>
lustre学习笔记之基本知识
lustre学习笔记之基本知识
用户4700054
关注
发布于 2022-08-17 12:22:08
发布于 2022-08-17 12:22:08
4.3K
0
举报
文章被收录于专栏:
存储内核技术交流
存储内核技术交流
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
删除
文件存储
存储
node.js
unix
html
本文分享自
存储内核技术交流
微信公众号,
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
文件存储
存储
node.js
unix
html
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
目录
lustre介绍
lustre组件介绍
lustre服务介绍
lustre 后端的文件系统介绍
lustre处理IO处理流程
lustre 文件系统架构介绍
MGS服务介绍
MDS服务介绍
OSS服务介绍
Lustre Client介绍
Lustre Inodes介绍
lustre 扩展属性介绍
lustre 文件布局
lustre FID介绍
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐