LWN:The netfslib helper library

2027年新疆职业院校技能大赛“网络系统管理”A模块网络构建真题 2027年新疆职业院校技能大赛“网络系统管理”A模块——网络构建真题,仅供学习使用。 阅读详情

关注了就能看到更多这么棒的文章哦~

The netfslib helper library

By Jake Edge
May 16, 2022
LSFMM
DeepL assisted translation
https://lwn.net/Articles/894589/

有一个名为 netfslib 的新的网络文件系统 helper 函数库在 2022 年 Linux 存储、文件系统、内存管理和 BPF 峰会(LSFMM)上文件系统会议中有一个主题讨论。David Howells 开发了 netfslib,在一年前被合并到 5.13 中,他主持了这次会议。一些文件系统,如 AFS 和 Ceph,已经在使用 netfslib 提供的一些服务,而另一些则开始上手研究了。

Howells 直接开始介绍 netfslib 和它的一些功能,而没有对该库进行太多的 high-level 介绍。不过,他提出要在会议上讲这个话题的提案邮件中做了一些这方面的介绍:

在 Jeff Layton 的帮助下,我一直在开发一个库(在 fs/netfs/中),从而给网络文件系统提供一些支持功能。我们的想法是将虚拟机接口的常用功能,包括 request splitting、operation retrying、local cachiing、content encryption、bounce buffering 和 compression 都移到一个地方,从而方便各种文件系统来使用这些公共功能。

这也与 folios 主题有关联,因为现在的目的之一就是尽可能多地从文件系统中隐藏掉 folios/page 的概念,而不是提供 persistent iov iterator 来描述它可用的那些 buffer。

Goals

在会议上他说基本目标是将虚拟内存(VM)的处理从网络文件系统中分离出来,放到一个通用库中。该库位于内存管理子系统和文件系统之间,来处理所有的地址空间操作,也许 truncation 除外。所有的 folio 处理代码也将位于这个库中。local caching 也是在库里完成的,这使得 cache 可以更容易地使用多个 page 的 folio。

cedba3073af8afe6ffee08a2423b0d9c.png

[David Howells]

Netfslib 会支持内容加密(content encryption),这与传输加密(coontent encryption)不同;客户端可以在本地查看到文件的内容,而服务器不可以,因为内容都是加密过的。这意味着 local cache 中应该只有加密过的文件数据;客户端将在进行读取操作时来解密,在写入操作时再加密。他说,将解密的数据排除在 cache 之外,有助于确保丢失笔记本电脑之后不会被人访问到这些文件内容。

在同一个地方进行所有这些处理,然后让所有网络文件系统访问相同的服务,这样大家就容易一些。为了让内容加密这部分能发挥作用,他必须给 netfslib 增加 buffering 功能,这样它就可以处理读、修改和写这些操作了:它可以向文件服务器发出 read 请求,允许对数据进行修改,然后再写回来。他说,写不一定要使用 page cache 中的数据;该库可以从内存中直接向服务器进行大批量的写操作,然后从内存中删除数据。

他说,该库允许网络文件系统在其代码中摆脱所有关于 page 或 folio 的了解。该库使用了 hook 进行两种操作:异步读和写。这些 hook 被传递给 iov_iter 结构,它指向了使用各种机制所存储的数据,"也许在 bvec 中,也许在 XArray 中,也许在 page cache 中",文件系统不需要知道是哪种情况。因此,该库可以处理 direct I/O、encrypted direct I/O 和 buffered I/O(可能有 encryption);所有这些都可以正常工作,他说。

如果网络文件系统要支持内容加密,就必须提供两种功能:对 block 进行加密和解密的功能。目的是让那些希望使用 fscrypt 的文件系统(比如 Ceph 正在研究的这么做),可以简单地将 hook 指向 fscrypt。他说,fscrypt 信息会直接存储在 inode 里面。

除此之外,netfslib 还为 readahead 使用了一个 hook,可以支持那些具有复杂要求的文件系统。他举了 Ceph 的例子,它的文件有 2MB 的 block,这些 block 可能分散在不同的服务器上。readahead hook 可以在队列里放多个 block,可以是来自多个不同服务器的,然后一次性把所有这些 read 请求发出去。他说,这些也可以按顺序来发送,这是 CIFS 文件系统所需要的一个功能;该函数库事实上提供了一些基本的排队服务。

Other support?

Steve French 问压缩功能的支持情况;许多网络文件系统可以对网络数据进行压缩来减少所需的带宽。Howells 说,他正在努力支持这个功能。他说这有点棘手,因为压缩块的 size 通常比 page 或 folio 的 size 大。由于文件系统使用了多种不同的压缩方案,因此可能需要有针对压缩和解压缩分别使用 hook。

Amir Goldstein 问对目录缓存(directory caching)的支持情况。Howells 说,他有一些支持 AFS directory caching 的 patch,但 AFS 目录只是些被来回传递的 blob。他可以考虑增加 directory information caching,也就是从服务器上读取目录条目,并以某种标准格式来存储在本地。

Josef Bacik 问最终的目标是什么:是不是要替代掉 NFS、Ceph、CIFS 等的一堆代码?Howells 同意这是他的目标;Plan 9 文件系统(9P)是另一个目标,也已经有人跟他提到 FUSE 了。Goldstein 说,FUSE 是有价值的,确实应该进行转换。

Bacik 继续说,他想知道这项工作当前的状况。Howells 说,read helper 可以工作了 AFS、Ceph 和 9P 都在使用它们;他有针对 CIFS 的 patch 并经过测试,似乎没有什么性能影响。他正在研究 write helper 程序,除了 truncate 功能的支持外,基本上都可以正常工作了,这是下一步的问题了。write helper 可能会在下一个合并窗口添加到 mainline 上,尽管时间上可能有点紧张。Bacik 问总体目标是否是希望简化代码;Howells 说是的,他已经能够删除大约 8000 行代码。

Chuck Lever 问及对 direct placement of data 的支持情况;这对 CIFS、NFS 和 9P 很重要,所以他想知道 Howells 计划对 RDMA 传输做些什么。Howells 说,他还没有真正研究过这个问题,也没有硬件可以测试,不过他认为他会提出一些方案的。Lever 说,不需要硬件,因为在内核中有两个软件 RDMA 驱动程序,可以配合标准以太网卡一起使用。Howells 说他会研究一下这个问题,Lever 说他愿意来提供帮助;"这并不像你想象的那么糟糕"。Howells 笑着说。"这话我以前听过。"

在聊天中,Layton 说,他看不出 netfslib 有什么理由不能增加 RDMA 支持。Howells 说,当使用 page cache 进行 buffered read&write 操作时,netfslib 会将一个带有 page cache page 的 iov_iter 交给网络文件系统。同样地,direct I/O 读写也只是得到一个 iov_iter。理论上来说,网络文件系统需要去做那些基于这些 page 来完成 RDMA 读写所必须做的工作,他回应道。Layton 对此表示赞同。

Bacik 说,他认为 netfslib 的工作是一个良好的开端,尽管还有一些工作要做,比如 RDMA 和 FUSE 就需要不少时间来加以研究。将网络文件系统转换为使用 netfslib 可能是一个更紧迫的问题。Howells(以及会议室里的其他人)似乎都同意这一点。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

1e1b9e15f9a1ce6ef1021c43fc9ea317.png

Voltus功耗分析——读入Innovus数据/cpf/spef文件 检查的内容:物理库、时序库、网表、I/Os、tie-high&tie-low pins、电源/地pins。设计数据(LEF/DEF/netlist)、cpf文件、SPEF文件。方法二:定义每个 power/ground net's 电压。4.设计数据检查(design sanity check)方法一:读入.dat数据。方法二:读入def文件。方法一:读入CPF文件。 阅读详情

相关推荐

Mplus—随机截距交叉滞后模型(RI-CLPM)语法

随机截距交叉滞后模型RI-CLPM的Mplus语法。

m0_54401011的博客 2529

linux netfilter 分析,Linux Kernel Netfilter Helper 分析

linux netfilter 与helper相关的hook:点击(此处)折叠或打开{.hook = ipv4_conntrack_in,.owner = THIS_MODULE,.pf = PF_INET,.hooknum = NF_IP_PRE_ROUTING,.priority = NF_IP_PRI_CONNTRACK,}{.hook = ipv4_conntrack_help,.owne...

weixin_30356433的博客 222

四、SVN客户端tortoiseSVN的基本功能介绍

档案浏览器(Repo-browser) 鼠标右键–>tortoiseSVN->版本库浏览器 输入版本库URL地址,进入如菜单界面 版本库浏览器支持SVN及http两种最常用的通信协议 SVN服务器访问方式 方法 模式 访问方法 File:// 直接版本库访问(本地磁盘) http:// 通过配置subversion的WEB服务器的WEBDAV协议 http...

也许是我送你哦 1011

四路 CAN 转 4G 网关

SG‑CAN‑4G‑410 为**四路隔离 CAN 转 4G 工业网关**,把 CAN2.0A/B 报文封装成 TCP/UDP 报文,通过 4G 无线网络实现 CAN 总线远程监控、远程控制。四路 CAN 相互独立;以太网仅用于本地配置,不做业务数据传输;支持移动 / 联通 / 电信 4G 网络。

S2003120416的博客 159

BrainVision Recorder 和 BrainVision Analyzer 2.2 安装

本篇为《EEG处理》系列博客的第二篇,该系列博客主要记录EEG信号处理的学习过程中的软件安装和学习过程,方便以后查阅。本篇为BrainVision Recorder 和 BrainVision Analyzer 2.2 的安装过程。 BrainVision Recorder 和 BrainVision Analyzer 2.2 安装安装前奏Brain Vision Analyzer分析软件 安装Brain Vision Recorder记录软件 安装推荐几款个人使用的科研软件 安装前奏 Brain V

梁小憨憨的博客 5059

Skiplist,B,B+tree,LSM tree

SkipList 理解(如何实现): 即使是有序的链表,查找的时间复杂度也是O(n),但链表不能随机访问所以不适用于二分查找,使得查找的时间复杂度为O(logn)。 于是将有序链表和二分查找结合得到了SkipList,类似于二叉搜索树,这是一种以空间换时间的算法,通过在每个节点中增加向前的指针,从而提升查找效率(如下图所示)。 一开始如a所示,是一个有序的链表,时间复杂度O(n)。随后建立了e所示的SkipList,从最顶层往下查找,可以跳过许多元素,减少查找次数。 ​

weixin_45875458的博客 947

汽车电子标定与测量的核心基石XCP协议

控制逻辑(算法)与标定参数(数据)。如果每次优化参数都要修改源码、重新编译并刷写Flash,整个研发周期的效率将趋近于零。标定(Calibration)技术正是为了解决这一痛点而生。它允许工程师在ECU运行过程中,动态观察内部变量(测量,Measurement),并在不中断运行的前提下实时修改控制变量(标定,Calibration)。在这一领域,XCP(Universal Measurement and Calibration Protocol,通用测量与标定协议)是公认的行业标准与核心基石。

diansandaosilaodanan的博客 374

AUTOSAR系统服务篇 - BswM的使用

本文档是对4.0.3版及更高版本的AUTOSAR模式管理应用的介绍。其主要目的是为AUTOSAR的用户和开发人员提供基于示例的AUTOSAR模式管理不同方面的详细概述,这些示例在文中进行了解释。本文中的代码清单共同构成了示例ECU的配置。第2章解释了基础的模式管理概念,例如一般的模式、如何实现模式切换、模式管理者和模式用户的角色等。其次介绍了应用模式管理和基础软件模式管理的依赖关系,两者密切相关。基础软件模式管理器是AUTOSAR R4.0中的中央模式管理模块。它具有很高的可配置性。

IOT2017的博客 846

【计算机网络】断点续传是怎么做到的:从 Range 请求到分片上传的完整机制

断点续传在下载侧靠的是 HTTP 现成的 Range 协议,Content-Range 保证偏移对得上,If-Range 防止文件变更导致的错误拼接;上传侧没有标准,需要自己设计 init/part/complete 三段式交互,核心是让服务端记住“哪些块已经收下”,从而把失败粒度从整个文件降到单个分片。 这套机制可以迁移到任何长耗时操作的设计上。判断方法很简单:先问失败粒度是多少。如果一次操作失败就得从头再来,那它迟早会在生产环境里出问题——传输、批量导入、数据迁移、长事务,都是同一个道理。把大操作切成

2503_94545876的博客 513

20 硬件工程师笔面试高频考点真题解析——寄存器

摘要: 寄存器是由多个边沿触发的D触发器组成的多位存储单元,用于同步时序电路中的数据暂存、隔离毛刺、跨时钟域同步等。选型需考虑位宽、触发方式(边沿/电平)、异步控制、电气参数等。核心时序参数包括建立时间(Tsu)、保持时间(Thold)和时钟输出延迟(Tco)。寄存器广泛应用于时序逻辑、流水线分割、毛刺消除、跨时钟域同步及计数分频等场景。同步复位依赖时钟边沿,时序易收敛但需时钟支持;异步复位独立于时钟,上电可靠但需注意亚稳态风险。

XU157303764的博客 1342

120、ISP 驱动架构解析:从 V4L2 请求到 ISP 硬件的配置下发流程

本文以实际案例解析ISP驱动架构的V4L2到硬件配置下发流程。作者通过一个因内存共享导致画面闪烁的bug案例,详细剖析了用户空间参数通过V4L2结构体传递、驱动层拆包与硬件寄存器映射、时序同步机制等关键环节。特别强调深拷贝、dirty flag增量更新、shadow register等实现要点,并给出多路并发隔离、寄存器写入失败等典型问题的排查方法。文章建议开发者深入理解参数到寄存器的转换过程,推荐通过debugfs实时监控寄存器状态,避免过度依赖自动调试工具。全文以实践为导向,对ISP驱动开发具有直接指导

sundong_81的博客 159

SD-WAN 与传统企业组网方式有什么区别?六个维度分析技术差异与适用场景

SD-WAN 与传统组网区别,主要体现在网络管理模式、链路调度能力、可视化水平以及多站点扩展方式上。传统组网技术成熟、架构灵活,对于站点较少、业务简单、网络结构稳定的企业来说,仍然具有较高的实用价值。SD-WAN 则通过软件定义和集中化管理,为多站点网络管理、链路质量监测和业务流量调度提供了另一种技术实现方式。两者并不存在绝对的替代关系。在实际网络建设中,也可以根据不同业务和网络区域采用混合架构。

ESDWAN的博客 789

企业AI数据资产评估的自动化工具:AI应用架构师的使用指南

在AI驱动的企业数字化转型中,数据资产是支撑模型训练、业务决策的核心燃料。然而,80%的AI项目失败源于数据问题——低质量数据导致模型偏差、未评估的风险引发合规危机、价值不明确的数据浪费资源。手动数据资产评估效率低、易出错,无法满足规模化AI应用需求。本文将以AI应用架构师的视角,拆解企业数据资产评估的核心逻辑,用"餐厅选食材"的生活化比喻解释复杂概念,结合自动化工具的技术原理与实战案例,教你如何从0到1搭建数据资产评估体系。无论是数据质量检测、价值量化还是风险防控,你都能找到可落地的工具方案与实践步骤。

2502_91592937的博客 1629

【Linux网络】TCP 服务器并发处理多客户端:从 fork 分发到双重 fork 彻底消灭僵尸进程

拆解 TCP 服务器并发演进链:fork 分发连接、SIGCHLD 循环回收僵尸、双重 fork 交孙进程给 init 收养,并给出模型选型与线上排错对照。

2301_78967866的博客 414

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 287

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

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

网口ps端--基础知识--调试(1)--deepseek

你现在卡住,是因为这每一层(硬件、驱动、lwIP 协议、IP 地址)中,只要有一层不对,网口就不通。物理层:看灯。灯亮说明线没问题,PHY 没死。MAC 驱动层:看串口打印。有没有打印出Link Speed?如果卡在自协商,说明你的 PHY 驱动还没配好。lwIP 协议层:如果底层通了,IP 也配对了,你调用udp_recv注册了回调函数,当电脑发来 UDP 包时,lwIP 会自动把数据包拆开,送到你的回调函数里。你之前一直在改,就是一直在死磕第 1 层和第 2 层。

AlibabaApple的博客 95

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

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

Windows syslog日志服务器搭建与模拟器对接

二 HCL 华三模拟器连接HOST直接让路由器接口UP。1.下载visualsyslog 日志服务器软件。4.7 日志服务器可以看到年份为2026年。2.2 华三路由器配置并执行日志服务器。2.4 华三路由器可以与日志服务器互通。3.2 日志服务器可以实时查看日志。3.4 日志服务器可以实时看到日志。4.6 路由器配置日志显示年份。五 日志服务器查看日志存放位置。4.5 日志服务器查看到日志。2.3 华三路由器接口UP。4.3 日志服务器清掉日志。路由器本地日志显示年份成功。4.在桌面生成快捷方式。

huainingning的博客 246

HTTP、SSE、WebSocket、Socket.IO:实时通信方案深度对比与选型指南

HTTP 是基础,是整个 Web 的底座;SSE 是单向推送的轻量最优解;WebSocket 是高性能双向实时通信的底层标准;Socket.IO 是一套降低开发门槛、抹平环境差异的上层框架。技术选型永远不是“哪个技术更酷”,而是匹配业务的实时性、交互方向、网络环境、团队维护成本。简单需求优先轻方案,复杂双向实时再上 WebSocket;如果追求快速落地、兼容各种奇葩网络,Socket.IO 是很好的选择。

changshuaihua001的博客 333

Linux网络编程:TCP多线程远程命令执行与线程池改造

前面已经实现了 TCP Echo Server,并且通过多进程和多线程解决了多个客户端连接的问题。不过目前服务器的业务还是比较简单,客户端发送什么,服务器就返回什么。这次在原来的多线程服务器上继续做一些改动,实现一个简单的远程命令执行功能。这次主要学习了两个内容。第一个是多线程远程命令执行。通过 Command 类封装命令的接收、检查、执行和结果返回,并使用 set 对允许执行的命令进行限制。第二个是线程池版本的 TCP Echo Server。通过和std::bind。

2501_93388101的博客 354

计算机毕业论文系统测试怎么写:从测试用例设计到对比实验,让“工作量“看得见

本文系统阐述计算机毕业论文中“系统测试”章节的撰写方法,涵盖功能测试用例设计(等价类、边界值、判定表)、性能测试压测方案与关键指标(平均响应时间、P99、吞吐量)、对比实验设计原则及评价指标选取。强调通过量化数据、阶梯加压曲线、瓶颈定位与多维度对比,真实展现研究工作量与技术深度,提供可直接套用的测试用例表与实验方案模板,助力论文脱颖而出。

wuwangzhiduoshao的博客 299

python如何编通讯程序

通讯程序需要处理IP地址和端口。IP地址用于标识网络上的设备,端口用于标识设备上的服务。编写通讯程序时,需要选择合适的端口号并确保它不与其他服务冲突。此外

2601_96798011的博客 175

物联网通信协议全景梳理

本文系统梳理物联网通信协议体系,按分层架构(接入、网络、传输、应用层)解析主流协议特性与选型逻辑。核心观点:接入层决定连接方式,应用层决定数据交互模式,两者可灵活组合。关键建议:资源受限用CoAP+BLE/Zigbee;大规模云接入选MQTT+WiFi/NB-IoT;长距离低功耗用LoRa/NB-IoT;智能家居优先Matter over Thread/WiFi;实时交互用WebSocket;安全通信优选DTLS/QUIC。最终实现“按需选型,协同高效”的物联网通信设计。

weixin_67448099的博客 452

五个压测工具简介

本文对比五款主流性能测试工具:JMeter(开源全能,适合接口与复杂业务压测)、sysbench(数据库基准调优标杆,轻量高效)、ab(极简HTTP压测,快速摸底)、LoadRunner(商业企业级,支持复杂场景与特殊协议)、mysqlslap(MySQL内置,快速验证并发能力)。各具优势,适用于不同场景,开发者可根据需求选择。

呆萌很的博客 178

reqrio协议指纹库ja3 ja4

HTTP 层的行为参数看起来琐碎,但每一条都是可比对的信号:Header 的名称大小写与排列顺序、Cookie 的存储与携带策略、重定向的跟随层数与跨域处理、压缩算法的支持范围(gzip、Deflate、Brotli、Zstd)、请求体的编码方式(表单、JSON、文本、二进制、Base64、十六进制、URL 编码)。更进一步的是流式模型——把 HTTP/1.1、HTTP/2、HTTP/3 的处理统一成同一种“流”,可以同时发出多个请求,再按需接收响应,这对需要精细控制时序的采集场景很有价值。

2603_96485347的博客 267

财务共享中心与每刻档案:从集中处理到资料统一利用

采购付款的链路通常更长,可能涉及合同、订单、验收、发票、付款申请、银行回单和会计凭证。因此,档案建设不能只把文件导出到同一个目录,还应根据可靠的业务编号和会计信息,保留申请、审批、原始资料、付款和凭证之间的联系。企业可以先选择业务量大、资料来源较稳定的费用报销或采购付款场景,梳理单据、凭证和原始资料的对应关系,再逐步覆盖更多法人、业务类型和资料来源。对形成时间不同的资料,应规划接收、补充和关联方式。费用报销中,员工提交申请和电子发票,业务负责人审批,共享中心审核并进行会计处理,付款后还可能产生银行资料。

yuyijun222的博客 137

秋招学习笔记 day109

在三次握手阶段,首先初始状态下,是 close 的服务端进入 listen 状态,然后客户端是发送一个序号以及 SYN 标志,然后进入 SYN_SENT 阶段,服务端收到之后发送一个 ACK,它 ACK 是客户端发的序号加一,然后发送 ACK 标志,以及自己的 SYN 标志。SYN 进入 SYN_RECEIVE 阶段之后,客户端收到服务端的确认之后,返回最后的确认和 SYN,这时候可以写数据,这时候客户端进入 ESTABLISHED 的状态,然后服务端收到确认后也是一样的。但是事实上,不知道就是不知道。

m0_57222081的博客 183
上一篇: LWN:改进内存管理相关的文档!
下一篇: LWN:针对direct-map碎片的解决方案!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值