LWN:新的容器文件系统PuzzleFS!

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

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

The PuzzleFS container filesystem

By Jonathan Corbet
September 25, 2023
Kangrejos
ChatGPT translation
https://lwn.net/Articles/945320/

差不多去年的时候,发布了一些旨在支持容器工作负载(container workload)的新文件系统类型。PuzzleFS是Ariel Miculas在2023年Kangrejos聚会上提出的一个新的选手,但它具有一些自己的特点,包括一种新颖的压缩机制和使用Rust编写的实现。

关于PuzzleFS,Miculas介绍说,这是一个不可变(immutable因此也就是只读的)文件系统,与Open Container Initiative (OCI) v2 image specification的设计目标相符。它使用内容定义进行分块(content-defined chunking 稍后会详细讨论),并且使用内容寻址(content-addressed)的数据存储,文件数据和元数据(metadata)分开存储。该项目由Tycho Andersen于2021年启动,旨在创建atomfs的后续继任者。

他说,OCI图像规范的第一个版本存在许多问题,其中许多问题在Aleksa Sarai于2019年发布的博客文章中描述。这些问题的根源都是来自依赖tar存档来保存文件系统中的层。Tar,事实证明,不适合解决容器文件系统问题。

他说,tar的格式定义很差。它没有索引;而是只有一个直接导向内容的标头(header)。使用的压缩机制意味着文件系统镜像不可寻址;因此,即使只提取一个小文件,也必须解压整个文件系统。没有针对重复数据的优化;即使是小的更改也意味着重新下载整个文件系统,尽管分成多个layer在一定程度上解决了这个问题。它是与机器相关的,因为不同系统上的目录条目可能以不同的顺序显示。缺乏一致性的表现实行(canonical representation)已经引出了许多扩展,其中许多扩展解决了相同的问题。

PuzzleFS旨在解决这些问题。文件系统镜像本身由一组放置在底层文件系统上的文件组成。与OCI镜像格式一样,存在一个顶级 index.json 文件,其中包含一组标签,每个标签代表某一个版本的文件系统,并指向一个清单文件(manifest file)。清单文件又指向镜像配置和存储在实际镜像层中的数据。其他所有内容都存储为 blobs/sha256 目录中的一组blob。

文件系统中的大多数数据都被分成可变大小的块(chunk),以内容的SHA256哈希作为文件名来存储为blob。这个分块动作本身是使用FastCDC算法进行的,该算法查找"切割点(cut points)",把数据流分为不同大小的blob。任何一个特定的流(例如文件的内容)都可以分成五个或五十个块,这取决于如何确定这些切割点;然后,每个块都以不同的blob方式落在 blobs/sha256 下,并将其哈希添加到清单中。

切割点算法本身使用滑动窗口技术。数据被逐字节地遍历,然后计算最后48字节(例如)的哈希。如果该哈希的N个最低有效字节为零,则找到了一个切割点;到那个点的数据被分开存储为一个单独的blob,并且过程重新开始。

这个算法具有一些有趣的特性,也许最引人注目的是它的去重和压缩能力。由于每个块都使用其哈希作为文件名进行存储,因此多个文件共享的块将自动共享。在传统方案中,对文件的更新将导致整个新文件都要重新被存储;这一点尤其在插入或删除几个字节的情况下尤为明显。在内容定义的块划分中,插入一个字节将只导致包含更改的块产生变化,而文件的其余部分将包含相同的块,尽管可能位于不同的偏移位置。

这一实验的结果可以通过Miculas进行的实验来观察。他从Docker Hub下载了十个不同版本的Ubuntu 22.04;它们在原始形式下需要766MB的存储空间。将它们放入带有压缩的OCI镜像格式中将其大小减小到282MB。相反,将它们全部放入PuzzleFS实例中,将大小减小到130MB—都没有使用压缩。添加压缩将整个大小缩减到53MB,相比原始大小节省了93%。

PuzzleFS的一个目标是始终提供文件系统的规范表示(canonical representation)。因此,比如就定义了生成源的遍历顺序,目录和扩展属性都按字典顺序排序。还有另一个目标是希望支持直接挂载(direct mounting)。在基于tar的格式中,必须首先将文件提取出来,存放到磁盘上,从而导致在mount镜像之前有一个短暂窗口可能出现内容被更改的情况。因此,无法保证内核看到的文件与tar存档中的文件相同。PuzzleFS没有这个提取步骤,因此不存在这个问题。

数据完整性通常都是一个重要目标。在这种情况下,无法使用dm-verity来保护整个卷;虽然文件系统是不可变的,但底层数据存储不是,因为需要能够添加新版本或layer从而添加新数据。因此,fs-verity用于验证数据存储中各个文件的完整性。在挂载特定镜像时,将提供所关注清单的哈希以供 mount 进行验证。

该项目背后的一个重要目标是避免内存安全性错误。因此,文件系统实现已用Rust编写。他说,这个选择已经从开发过程中消除了很多痛苦。

目前已经有一个可用的FUSE实现,以及一个处于概念验证状态的内核实现。内核部分依赖于一组正在分别开发的文件系统接口抽象,这些抽象应该在某个时候要合入mainline。还需要一些其他工作从而使其他依赖项(包括用于元数据存储的Cap'n Proto库)达到适合内核的状态。工作正在进行中;感兴趣的人可以在此存储库中找到当前的代码。

Miculas没有讨论的一个话题是PuzzleFS与composefs之间的相似之处,它们具有一些相似的目标。Composefs在进入主线内核方面遇到了一些困难—尽管有其他一些更改仍在进行中,有望能给出帮助。PuzzleFS具有一些composefs不具备的功能;这些是否足以使其进入上游路径更容易,目前尚不清楚。

更多信息和关于磁盘格式的详细信息,请参阅此演讲幻灯片。

[感谢Linux基金会支持我们参加此活动。]

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

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

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

format,png

从零上手HiAgent:构建能听懂指令的智能体框架实战指南 智能体(Agent)作为人工智能领域的重要范式,正从传统的预设流程自动化转向以目标驱动的自主规划与执行。其核心原理在于利用大语言模型(LLM)作为决策大脑,通过任务规划、工具调用与记忆机制,将模糊的自然语言指令转化为可执行的工作流。这一技术显著提升了人机协作的效率和自然度,其价值在自动化办公、数据分析与智能流程编排等场景中尤为突出。本文聚焦于HiAgent这一具体框架,深入解析其作为智能体开发平台的核心架构,涵盖规划器、执行器、工具集等关键组件,并提供从环境配置、自定义工具开发到复杂任务链构建的完整工程实践 阅读详情

相关推荐

数据分析:美团大赛的具体案例制作

在数据集中,存在三个变量的经纬度数据,分别是商家的经纬度数据('sender_lng', 'sender_lat'),顾客的经纬度数据('recipient_lng', 'recipient_lat')和骑手的经纬度数据('grab_lng', 'grab_lat')。根据结果可知,平台订单创建时间的中位数为2022-10-21 02:59:01,平台订单创建时间的众数为2022-10-19 03:29:41、2022-10-23 03:29:47,与直方图相符。接下来,我们对是否为预定订单变量进行分析。

m0_68269346的博客 2495

四路 CAN 转 4G 网关

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

S2003120416的博客 160

深入解析TMC2209 UART寄存器配置:从基础指令到高级参数调优

本文深入解析TMC2209 UART寄存器配置,从基础指令到高级参数调优,涵盖电流控制、微步细分等关键设置。通过实战案例和优化技巧,帮助开发者高效配置步进电机驱动,提升系统性能和稳定性。特别介绍了UART通信协议和CRC校验实现,确保数据传输可靠性。

tequila的博客 1159

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

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

2503_94545876的博客 513

vivado下ECO操作-不重新综合实现修改属性并生成.bit

ECO即engineer change order,即工程变更指令,可以对设计做局部小改动并只对改动部分重新布局布线并生成.bit。在一个工程动辄编译几个小时情况下,可以在调试中节省大量时间。比如我们在调试中,需要改变时钟占空比或者相位,需要改变寄存器初值等等,此时用ECO暂时改动,待验证后在重新编译无疑是最有效率的方法。 实现ECO通常有两种方式,一是通过vivado界面完成,另一种方法就是tcl脚本。所有的ECO操作都可以通过tcl操作完成,有的操作用vivado界面无法完成,只能通过tcl。以下主要

4656

从零搭建Obsidian智能知识库:Ollama本地模型与Copilot插件实战指南

本文详细介绍了如何从零搭建Obsidian智能知识库,结合Ollama本地模型与Copilot插件实现高效知识管理。通过本地部署AI助手,用户可以在保证隐私安全的同时,快速检索和整理笔记,提升工作效率。文章涵盖硬件准备、Ollama部署、插件配置及实战技巧,适合需要高效知识管理的专业人士。

weixin_29230773的博客 631

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

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

diansandaosilaodanan的博客 374

【文献阅读:信道估计】Deep Residual Learning Meets OFDM Channel Estimation

基于深度学习的信道估计技术

weixin_43178683的博客 1753

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

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

2502_91473995的博客 287

机器学习实战1-四种算法对比对客户信用卡还款情况进行预测与模型评估

大家好,我是微学AI,今天给大家带来一个机器学习实战案例:利用机器学习的四种算法对比对客户信用卡还款情况进行分类。信用卡又叫贷记卡,是由商业银行或信用卡公司对信用合格的消费者发行的信用证明。现在的年轻人,特别是80后,90后甚至00后到喜欢超前消费,每个人名下多多少少都有至少一张信用卡,有些人由于过度超前消费,导致下个月无法还款导致的逾期,这样会对个人征信产生影响,今天我们就来分析分析具有哪些特性的人会有信用卡逾期的可能。

微学AI的博客 4710

TI单芯片毫米波雷达1642代码走读(〇)——总纲

前言 近年来,自动驾驶行业发展如火如荼,雷达技术也逐渐从军工封闭圈走向了开放的市场。 毫米波雷达具有全天候探测能力,特别是在雨雪雾天气以及夜间都能可靠工作,并且探测距离相对其他车载传感器非常远,对运动目标非常敏感,价格还低廉,这些特性都使其成为自动驾驶感知层面不可或缺的一环。 现如今的雷达已经不仅仅局限于测距测速测角等传统的功能,雷达技术正在从感知走向认知、从宽带走向超宽带、从二维走向三维四维、从相控阵走向数字阵列、从单通道走向MIMO、从独立工作走向分布式协同、从分立组件走向射频数字一体化。MIMO

3万+

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

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

2301_78967866的博客 414

工业激光器核心参数详解与选型实战:从理论到产线落地(五)

本文深入解析了脉冲激光加工的三大核心参数——脉宽、重复频率和脉冲能量的协同作用机制。通过公式推导和产线案例,揭示了参数设置对加工良率的关键影响:1. 脉宽决定热影响区大小,缩短脉宽可显著提升加工精度;2. 重复频率影响加工速度和热积累效应,需平衡效率与质量;3. 脉冲能量决定材料去除量,过大易导致加工缺陷。文中以ABS塑料打标、模具清洗和微孔钻孔为例,展示了参数优化如何将良率从65%提升至99%,并提供了不同应用场景的参数选型表和调试技巧,强调峰值功率比平均功率更具决定性作用。

weixin_44520581的博客 2421

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

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

ESDWAN的博客 789

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

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

AlibabaApple的博客 95

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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的博客 335

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

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

2501_93388101的博客 354

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

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

wuwangzhiduoshao的博客 299

物联网通信协议全景梳理

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

weixin_67448099的博客 453

python如何编通讯程序

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

2601_96798011的博客 175

五个压测工具简介

本文对比五款主流性能测试工具: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

秋招学习笔记 day109

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

m0_57222081的博客 183

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

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

yuyijun222的博客 137

HART转Modbus TCP网关支持仪表故障诊断信息同步上传

某精细化工企业通过部署远创智控YC-HART-TCP-1协议转换网关,破解HART阀门定位器与TCP上位机协议异构难题,实现阀门开度、状态数据实时上传与远程精准调控。项目打通控阀数据孤岛,消除人工调校误差,提升工艺稳定性与产品良品率;依托智能预警与数据归档,实现故障提前发现与工艺持续优化,显著提高运维效率与数字化水平,为精细化工智能化升级提供高性价比解决方案。

2401_83539075的博客 176
上一篇: LWN:使用rseq()来帮助完成用户空间自旋锁!
下一篇: LWN:重新审视内核的多种抢占模型!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值