深入理解Lustre文件系统-第12篇 Lustre磁盘文件系统:ldiskfs

【Lustre相关】应用部署-03-Lustre集群部署实践(软raid方案) 以实际项目作为案例,阐述lustre软raid集群部署过程,包含高可用配置方案介绍及常见配置文件解决方法 阅读详情

ldiskfs(有些时候被错误地称为Linux ext4文件系统)是对Linux ext3文件系统的打了很多补丁的一个版本,由Sun Microsystems公司开发和维护。ldiskfs是Linux ext3和ext4文件系统的超集。现在它只被Lustre文件系统用在服务器端,作为底层的本地文件系统。本节给出了对ldiskfs机器与ext3文件系统不同之处的简要介绍。

就各自的I/O路径而言,ext3和ldiskfs文件系统的不同之处如下所示:

  • 在ldiskfs里,分配/块查找是在索引节点锁取得后就预先完成了,而随后在I/O提交到磁盘的过程中,索引节点锁就被丢弃了。这极大地提高了I/O的并发性,因为索引节点只被锁了很短的一段时间。
  • 在ldiskfs中,分配是对整个RPC(1MB,或者换句话说,256×4KB块)一次性完成的,而不是像VFS所做的那样4KB一次。这个减少了许多重复搜索位图的开销,同时允许了更有效的extent查找。
  • 在ldiskfs中,现在写入是完全和客户端同步的(知道数据和元数据写入磁盘上才回复),但是这一点正在改变。在新开发的“异步提交”路径里,对任何事务,将在数据提交到磁盘后,在元数据提交之前,回复客户端。另外新的ROC(1.8)将在把写入页放入磁盘之前,放入告诉缓冲,为OSS端完全异步的写作准备。
  • 在Ldiskfs中,当前,日志刷新是在每个写RPC后强制执行的。

在ldiskfs中,和任意其他将被Lustre服务器使用的底层文件系统一样,下面列出的策略将影响IO路径。

  • 客户端控制的:正在发送中的RPC,RPC大小和每个OST的缓冲的脏数据。为了减少readmodify-write(?)操作,RPC大小最好是底层RAID分条大小的倍数。同时,RPC大小×正在发送中的RPC数×客户端总数,将需要考虑到连接的带宽和底层块设备的带宽,以避免大延迟和在竞争点的请求堆积。
  • 服务器控制的:IO线程数。当前,这个量限制了任意时刻后端设备的I/O量。
  • 分条策略。它决定了对一给定文件,有多少OST参与I/O。

12.1   内核补丁

ldiskfs和Lustre有赖于一组Linux内核补丁,它们不仅在ext3上添加了新的特性,而且提高了性能。下面的列表给出了一些对ldiskfs必要的内核补丁,虽然它们中的一些可能对特定使用实例并不必要(例如sd_iostats)。

  • jbd-2.6.10-jcberr.patch:日志回调补丁,允许在数据至少提交到日志中时,以last_committed回复客户端。这也意味这数据可以在脱离客户端支持的情况下从本地文件系统中恢复。
  • jbd-stats-2.6-sles10.patch:提供了关于事务大小、时间等数据。
  • iopen-misc-2.6.12.patch:为getattr-by-fid和恢复提供了open-by-inode。
  • dev_read_only-2.6-fc5.patch:为测试和在不阻塞在正在进行中的I/O的基础上进行OST/MDT的failback,放弃对块设备的写入。
  • sd_iostats-2.6-rhel5.patch:提供可选的SCSI设备数据。
  • blkdev_tunables-2.6-sles10.patch:允许通过快层提交更大的I/O。
  • i_filter_data.patch:允许从内存中的索引节点连到MDS/OSS数据。
  • quota-fix-oops-in-invalidate_dquots.patch:修补上游内核限额源码的bug。这个bug已经在2.6.17内核中修补好了。
  • jbd-journal-chksum-2.6-sles10.patch:提供了日志事务校验码以检测磁盘毁坏。

1.2   补丁:ext3到ldiskfs

除了上述列出来的补丁外,ldiskfs还需要一些对ext3源码上所做的,用于增加性能和功能的补丁。下面的列表给出了ldiskfs文件系统所需的补丁。

  • ext3-wantedi-2.6-rhel4.patch:允许了通过号码来创建特定索引节点,用于恢复。假设客户端的进行了一个打开/创建,并且得到了来自服务器的带有特定索引节点号的回复。让我们假设此时,服务器崩溃了,然而创建还没有反映到磁盘上去,所以该信息丢失了。在服务器重启并进入恢复后,客户端重新连接上,并再次发送它的打开/创建请求,其中给定了上次由服务器传达的索引节点号。在Lustre 2.0中,这个过程将不需要了,因为那是使用的将是另外一组Lustre 索引节点号而不是对应实际的磁盘上的索引节点号。在服务器端提供的由Lustre 索引节点号到实际盘上索引节点号将消除对这个补丁的依赖。 iopen-2.6-fc5.patch:允许了通过号码查找索引节点。一般,查找文件需要全路径,但是Lustre在它的协议里没有这个功能。当查找时,只有父索引节点号和孩子名,正常情况下,这就够了。但是如果Lustre处于恢复模式,所有先前的查找步骤都丢失了,Lustre需要一个找到父索引节点号的方法。这个补丁提供了这个功能。这各问题在ext3中不存在,因为文件系统是本地的,在崩溃的时候,所有东西都挂了,而在恢复(或者重启)的时候,所有的查找功能从根文件开始。
  • ext3-map_inode_page-2.6-suse.patch:为快读/写操作稍后进行的I/O提交分配数据块。这个补丁创建了一个API,可以用来map Lustrefsfilt层的inode_page函数。Lustre需要这个补丁,因为它预先分配块,提高了元数据性能。

接着五个补丁可以分为一组,因为它们于ext3文件系统之上提供了extent格式的能力。他们也在Linux ext4文件系统中使用。ext3文件系统按照块来寻址文件,每块在索引节点里有4字节的记录,里面记录了指明实际数据存储位置的块号。对于长文件,这导致了在索引节点中存储了许多块信息,这是非常低效的。而extent概念定义了分配给大文件使用的,作为单一实体的一个块区间。块区间里块的最大为128MB。这是由于每128MB就有一个块保存了下个128MB的配给位图。这个情况的唯一例外是空洞(hole),一个空洞,不管它有多大,可以以一个extent来标识。对于包含下列补丁的Lustre中的一个非常大的文件,它将会有多个extent,每个extent大小是128MB减去4KB,其中4KB用来存储位图,此位图用来映射大小为128MB 的extent组。extent概念提高了性能,因为:它不仅减少了分配时间,而且,例如,在unlink文件的时候,只需要提供关于该文件的,用来确定extent的信息。

  • ext3-extents-2.6.16-sles10.patch:
  • ext3-extents-fixes-2.6.9-rhel4.patch:
  • ext3-extents-multiblock-directio-2.6.9-rhel4.patch:
  • ext3-extents-search-2.6.9-rhel4.patch:
  • ext3-extents-sanity-checks.patch:

接下来两个补丁为ldiskfs文件系统提供了一个多块(multi-block,mballoc)分配者。它们也用在Linux ext4文件系统中。此时需要澄清的是,extent和mballoc分配时完全无关的。当分配一个extent时,会分配一组连续的块。让我们假设这个extent的第一个块开始于x,而最后一个块石x+y。下一个将要分配给同一个文件的extent可能是也可能不是以x+y+1开始,但是在任意一种情况下,新快将会分配为一组连续的块。这样,当寻址这两组可能不相邻的磁盘块时,我们需要提供他们的extent信息,而不是对它们一个块一个块地寻址。mballoc则是用一次调研分配所需数量的(很有可能连续的)块。

  • ext3-mballoc3-core.patch:
  • ext3-mballoc3-sles10.patch:
  • ext3-nlinks-2.6.9.patch:允许在一个给定目录下创建超过32,000个子目录。这是通过在i_nlink(15比特)溢出时(如果子目录大于32,000个),设置它为1的方法实现的(也用在Linux ext4文件系统里)。
  • ext3-ialloc-2.6.patch:为避开满载的组(即跳过满载的组),改变了OST的索引节点分配策略。在每个索引节点组的开始,有一个位图,表明哪些组被完全用光了,哪些组被部分使用了,哪些组是空闲的。超级块包含一些关于在不同的索引节点组中有多少索引节点空闲的信息。这个补丁给出一个索引节点组的信息:在该组里面是否有空闲索引节点,而不要完整扫描这个组。
  • ext3-disable-write-bar-by-default-2.6-sles10.patch:在日志中关闭写路障(barrier),该路障导致了缓冲刷新。
  • ext3-uninit-2.6-sles10.patch:提供未初始化的块组,以提高e2fsck性能(也用在Linux ext4文件系统中)。
  • ext3-nanosecond-2.6-sles10.patch:为索引节点提供了纳秒级别的时间戳解决方案(也用在Linux ext4文件系统中)。
  • ext3-inode-version-2.6-sles10.patch:为基于版本的恢复提供了盘上索引节点版本(也用在Linux ext4文件系统中)。
  • ext3-mmp-2.6-sles10.patch:听过多次挂载保护,用以防止在LinuxHigh-Avaliabilty (HA)环境中的两次挂载。
  • ext3-fiemap-2.6-sles10.patch:提供文件extent映射API(有效的分段fragmentation报告)(也用在Linux ext4文件系统中)。
  • ext3-block-bitmap-validation-2.6-sles10.patch:确定磁盘上的位图是正常的,以防止级联毁坏(cascadingcorruption)(也用在Linuxext4文件系统中)。
  • ext3-get-raid-stripe-from-sb.patch:在ext3超级块中存储RAID布局,以优化分配(供分配者使用,信息是由mkfs写入的)也用在Linuxext4文件系统中)。
本文章欢迎转载,请保留原始博客链接http://blog.youkuaiyun.com/fsdev/article
Win11 24H2共享访问被禁?深入聊聊SMB签名和‘不安全的来宾登录’那点事 本文深入解析Win11 24H2共享访问故障,探讨SMB签名的安全机制与‘不安全的来宾登录’问题。提供从注册表修改到组策略配置的多层次解决方案,特别针对家庭网络和打印机共享场景给出实用建议,帮助用户在安全与便利之间找到平衡。 阅读详情

相关推荐

国产HDMI2.0芯片GSV2011怎么选?手把手教你用它设计音视频采集卡(附FPGA/海思对接指南)

本文详细解析国产HDMI2.0芯片GSV2011在音视频采集卡设计中的应用,涵盖芯片选型、硬件设计要点及与FPGA/海思平台的对接指南。GSV2011凭借4K@60Hz支持、音频提取嵌入功能和高集成度,成为音视频设备的核心选择,助力开发者快速实现高性能采集卡设计。

weixin_30181209的博客 332

存储调研:Lustre并行文件系统体系结构

Lustre架构是一种集群存储体系结构,其核心组件就是Lustre文件系统。该文件系统可在Linux操作系统上运行,并提供了符合POSIX标准的UNIX文件系统接口。

渡江客涂鸦板 4762

pi/4QPSK调制解调原理

文章目录1. π/4\pi/4π/4QPSK 信号的调制原理2. 匹配滤波器与成形滤波器 1. π/4\pi/4π/4QPSK 信号的调制原理 减小相位突变量的QPSK由偏置键控QPSK(OK-QPSK)和 π/4\pi/4π/4偏置的QPSK( π/4\pi/4π/4QPSK)。由于 π/4\pi/4π/4QPSK是用差分相位编码产生的(因此也叫做 π/4\pi/4π/4DQPSK),能有效地进行差分解调和鉴频器解调,在一些不易提取相干载波的场合很有用。 在常规的QPSK中,输入数据经过串/并变换后,分成

gemengxia的博客 2万+

[Lustre] 基于ldiskfs存储类型的源码编译

本文详细介绍如何编译后端存储类型为ldiskfs的lustre源码,并制作离线安装包。

分布式存储随笔 1921

AI中台系统设计方案探讨

集成JupyterLab、低代码建模工具(如H2O.ai)、预训练模型库(Hugging Face、PaddleHub)。:通过REST/gRPC接口封装AI能力(如OCR、语音识别),支持流量控制与鉴权(如Kong、Apigee)。:服务注册发现(Consul)、熔断降级(Hystrix)、监控告警(Prometheus+Grafana)。:分布式存储(如HDFS、Ceph)与对象存储(如S3、OSS),支持海量数据高速读写。加密传输(TLS)、动态脱敏(如数据掩码)、访问控制(RBAC)。

reset2021的博客 1033

AnyLogic 建立谢林模型

AnyLogic 建立谢林模型说明创建一个新模型创建代理人群体和离散空间双击 people 前的图标,编辑 Person设置 Agent 的形状(Person)在模型中启用离散时间,实现代理行为点击 Person,进行编辑点击运行按钮效果图 说明 我们将把 Schelling 的模型实现为一个基于离散空间/离散时间的代理模型。空间代表一个城市,每个单元格代表一个房子。 agent 是人,是两种颜色:黄色和红色。 最初,人是随机分布在城市中的。人比房子少,所以总是有一个人可能会移动。 这个模型中的 agent

qq_45642410的博客 2577

Linux常用操作

1.查看磁盘使用情况 [root@izuf ~]# fdisk -l Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (m...

weixin_44347152的博客 927

0 基础学前端:100 天拿 offer 实战课(第 16 天)—— JS 数组高级方法:数据处理效率翻倍,代码更简洁

方法名核心作用回调函数返回值返回结果适用场景map数据转换转换后的新元素新数组(长度与原数组一致)格式转换、新增字段、生成 DOM 字符串filter数据筛选true(保留)/false(过滤)新数组(符合条件的元素)筛选符合条件的元素(如未完成计划、今天的评论)reduce数据汇总新的累加值任意类型(数字、对象等)求和、计数、分组、多数据汇总find查找元素true(匹配)/false(不匹配)第一个匹配的元素 /undefined。

苏打水.X的博客 134

Ubuntu 下编译安装 Lustre

在 ubuntu 下编译安装 lustre

outsider 2626

化工设备应力分析软件:STAAD.Pro二次开发_(24).非线性分析技术

在STAAD.Pro 中,可以通过命令。

kkchenjj的博客 661

beegfs源码分析

BeeGFS的客户端是由一个内核模块和两个系统服务组成的,这里咱们主要分析内核模块。由于BeeGFS的目录树解析,是在父目录DEntry里找子目录或文件DEntry,逐级迭代完成的,所以在Mount文件系统时,须要从管理节点获取根元数据节点的ID,而后再向根元数据节点查询根目录的DEntry的信息,为后续的目录解析打下基础。获取类似/data/beeond/data/dentries/38/51/root/#fSiDs#/文件fileId的父路径。1.1 FileID的生成。Session网络消息。

wfzy的博客 1913

【Lustre相关】功能实践-01-Lustre集群部署配置

io500是针对存储性能评测的一个权威国际排行榜,主要包括带宽和元数据性能测试部分,共计十二项严苛的场景测试,该基准使用大文件的读/写带宽和小文件读/写/查询性能来衡量存储性能,这些性能也是影响大数据分析、人工智能、高性能计算的关键因素。 Lustre是一个开源高性能并行文件系统,专注于HPC高性能并行计算场景,几乎占据io500榜单三分之一的位置。 本文主要介绍Lustre集群架构及部署配置说明

Luxf0的博客 6609

EMS案例:BMS传导发射超标整改案例

BMS作为新能源汽车的关键部件,其EMC性能直接影响整车的安全性和可靠性。本文通过一个实际的传导发射整改案例,详细展示了从问题定位、分析到解决方案实施的全过程。希望这些经验能够为从事类似产品设计的工程师提供有价值的参考,在未来的产品开发中避免类似问题,设计出更加可靠、稳定的BMS产品。EMC设计是一门结合理论与实践的艺术,只有通过不断积累经验、深入理解电磁场理论,并紧密结合实际应用场景,才能在复杂的电磁环境中设计出鲁棒性强的电子产品。

m0_56451176的博客 272

Lustre文件系统介绍

Lustre架构是用于集群的存储架构。Lustre架构的核心组件是Lustre文件系统,它在Linux操作系统上得到支持,并提供了一个符合POSIX *标准的UNIX文件系统接口。Lustre存储架构用于许多不同类型的集群。它以支持世界上许多最大的拥有数万个客户端系统、pb (PiB)存储和每秒数百GB (GB/sec)的I/O吞吐量的高性能计算(HPC)集群而闻名,许多HPC站点使用Lustre文件系统作为站点范围的全局文件系统,为几十个集群提供服务。

fakerth的博客 4659

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Lustre(ldiskfs)编译与包安装

注:重启后基于【4.18.0-425.3.1.el8_lustre.x86_64】内核编译lustre。

weixin_41558221的博客 1043

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深入理解Lustre文件系统-第9篇 Portal RPC

Portal RPC为如下内容提供了基础机制: 通过输入口发送请求,接受请求 通过输出口接收和处理请求,发送请求 执行块数据传输 错误恢复 9.1客户端接口 我们将首先探讨Portal RPC的接口,而不深入到实现细节中。我们将用LDLM的发送机制作为例子。对这个实例,LDLM向客户端发送一个阻塞ASTRPC(ldlm_server_blocking_ast),该客户端是一个给定的锁...

hududumo 345

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

[Lustre] 基于ldiskfs存储的单机集群部署

本文详细介绍如何在almalinux8.9上部署基于ldiskfs的lustre单机集群。

分布式存储随笔 1694

Lustre客户端挂载失败报错

查看/var/log/messages日志,发现出现OST0001等待OST0002分配序列号的报错。修改lustre格式化硬盘时,OST或者MDT的index参数值,让它从0开始。

qq_56776641的博客 880

五大主流分布式存储技术对比分析,你 pick 哪一种?| 争议

【摘要】本文拟通过对Ceph、HDFS、Swift、GFS、Luster等几种主流的分布式存储技术实现原理的阐述,并总结其各自的特点和合适的使用场景,以帮助架构师在进行存储架构规划时,选择合适的存储技术。 【作者】范永清,高级工程师,现就职于厦门银行信息技术部,目前主要负责厦门银行技术架构设计。 存储根据其类型,可分为块存储,对象存储和文件存储。在主流的分布式存储技术中,H...

弱水三千12138的博客 2万+

Linux命令之fdisk

fdisk fdisk [选项] <disk> 改变分区表 fdisk [选项] –l <disk> 列出所有分区表 fdisk –s <partition(分区编号)> 以分区块为单位,给出指定分区的大小   这是一个创建和维护分区的命令,兼容DOS类型的分区表、BSD或SUN类型的磁盘列表。注意fdisk不支持2T以上的硬盘分区,此时需要使用...

weixin_30319153的博客 184

Linux磁盘分区的详细步骤(图解linux分区命令使用方法)

前言 磁盘是怎么分区的在文章后面会谈到,先谈一下Linux文件系统的简单操作。不过在阅读本文之前,我假定读者们对Linux的磁盘与文件系统以及目录树已经有了初步的了解。 重要说明:完整的分区流程请结合另外一篇文章可以更好的进行--传送门 操作文件系统 介绍操作文件系统的几个命令。 查看磁盘/目录树 一、df命令查看磁盘的分区和已经使用量 解释下输出的第一行中某些字段的含义: 文...

LengYueQiuHan的博客 4179
上一篇: 文件系统开发手记-第1篇 文件系统开发的八大苦处
下一篇: 深入理解Lustre文件系统-第13篇 未来的工作
存储李希
博客等级 码龄15年 418粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值