GEFS on OpenBSD: 早期预览版

Hacker News Top 新闻

摘要

GEFS,一个安全可靠且支持快照的文件系统,其早期预览版已移植到 OpenBSD。该移植版本是实验性的,存在若干问题,但已开放供社区测试。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/15 17:56

# 'GEFS 在 OpenBSD 上的极早期预览' 来源:https://marc.info/?l=openbsd-tech&m=178948744271633&w=2 ``` [列表上一篇] [列表下一篇] [线程上一篇] [线程下一篇] 列表: openbsd-tech 主题: GEFS 在 OpenBSD 上的极早期预览 发件人: ori () eigenstate ! org 日期: 2026-09-15 15:45:05 消息ID: EBB049B251DCF60A8C9A0575F6FC7DC9 () eigenstate ! org [下载原始消息或正文] 在任何人提问之前:我*并非*提议在短期内将这个 合入主代码树。 这是什么 ---------- 那么,正如大家可能在 EuroBSD 上看到的,我已经有了一个 在 OpenBSD 上运行的、粗糙、有 bug、问题重重的 GEFS 预览版。这个移植版*尚未*准备好用于生产环境,尤其是在出错时,目前预计会发生数据丢失。 然而,该移植版已经达到了这样一个阶段:(除了一些例外)剩余的问题已被合理地理解,大家可以尝试去解决它们。 对于那些还没看过我演讲的人,GEFS 是我为 9front 编写的一个新的、崩溃安全的、支持快照和写时复制的文件系统,我正在将其移植到 OpenBSD。该文件系统的完整描述在这里: https://orib.dev/gefs.pdf 目前在内核中的代码量不到 9,000 行,但我预计随着时间的推移它会增加一些,因为还有大量功能缺失。 移植方法 ------- 我将其作为一个正式的、内核内的文件系统来处理,在 Plan 9 和 OpenBSD 之间保持数据结构和繁琐代码的相当同步,但代码本身是复制粘贴的。我的目标是它将继续保持相似,以便修复可以共享,但两个环境的需求意味着代码可能不会被移植,并且试图加入某种抽象层似乎是个坏主意。 问题 -------- 所以,在我看来,剩余问题中最主要的是: 一致性协议: 这对我来说是最大的未知数;对超级块的写入需要发生在快照中所有写入之后,但只要它是在数据块写入磁盘之后写入的,就是安全的。还有几个来自 9Front 的关于写入顺序的修复需要回移。 错误处理和移植带来的“脑损伤”: 错误处理大部分被注释掉了。我将不得不逐段检查错误处理路径并小心转换;我在 9front 上采用的错误处理方法对于 OpenBSD 是不可接受的。还有一些其他事情,比如使用了一些全局变量,这会阻止同时挂载多个实例。 用户空间工具: 至少,我认为让人们启动一个 9front 虚拟机来创建或 fsck 不是一个好的长期解决方案。快照管理及相关 ioctls 也将归入此类。 POSIX 严格要求: 这个系统是从非 POSIX 系统移植过来的,因此很可能有许多地方我们没有完全正确理解其约束条件。 回归测试: 有一个用于 Plan 9 的小型测试套件。但没有用于 OpenBSD 的。 硬链接: 易于实现,但需要逐个文件维护引用计数。 Kqueue: 易于实现,但需要逐个文件维护引用计数。 NFS: 有一些笨拙的钩子,不确定添加它们需要什么。 其他缺失部分: 诸如引导加载程序支持、添加引导环境、配额以及其他便利功能;这些都排在很后面。特别是配额,它将允许 LLVM 继续尝试增长到已知宇宙的规模,而我们无需为此预分配一个那么大的 /usr/obj。 我肯定忘记了一些。 目前:我还不打算修复 KNF(OpenBSD 代码风格);随着代码被修改,我会开始将其转换过来,但我倾向于在代码更接近上游合并之前,保持它更接近原始代码。 还有一些与 9front 和 OpenBSD 无关的非致命性问题,例如大文件删除缓慢;我有改进它们的想法。 获取方式 ---------- 作为一个补丁获取: https://orib.dev/gefs.diff Git 仓库在 shithub 上是隐藏的,服务器很小,如果人们从中克隆全新仓库会导致过载。相反,请从 github 获取初始仓库的副本,然后只拉取更新。 # 首先,从其他地方获取上游的副本 git clone https://github.com/openbsd/src cd src # 现在,添加我的服务器,并只获取差异 git remote add gefs git://shithub.us/ori/openbsd git fetch gefs git checkout -b gefs gefs/gefs 请注意,为了跟上 openbsd current,我会偶尔变基并强制推送该分支;提交 ID 将会改变。 [列表上一篇] [列表下一篇] [线程上一篇] [线程下一篇] ``` 配置 (https://marc.info/?q=configure)\|关于 (https://marc.info/?q=about)\|新闻 (https://marc.info/?q=news)\|[添加列表](mailto:[email protected]?subject=Add%20a%20list%20to%20MARC)\| 由KoreLogic (http://www.korelogic.com/) 赞助

相似文章

FatGid - FreeBSD 14.x 内核本地权限提升

Lobsters Hottest

FreeBSD 14.x 的 setcred(2) 系统调用中存在内核栈缓冲区溢出漏洞,允许任何无特权的本地用户将权限提升至 root,即使启用了 SMAP/SMEP 也不例外。该漏洞在稳定分支中尚未修复。

实验性 OpenBSD MAP-E CE 支持(反馈)

Lobsters Hottest

该项目提供补丁和脚本,用于向 OpenBSD 7.8 路由器添加实验性 MAP-E CE(RFC7597)支持,包括内核补丁和一个名为 maped 的配套应用程序。

NetBSD GSoC 2026:测试兼容性 Linux 系统调用

Lobsters Hottest

一份 Google Summer of Code 2026 项目报告详细介绍了使用 Linux Test Project 改进 NetBSD 的 Linux 兼容层测试的努力,包括编译测试、创建包和记录系统调用模拟。

评测:FreeBSD 上的 Sylve

Lobsters Hottest

对 Sylve 早期版本的评测,这是一款用于 FreeBSD 的开源 Web 管理工具,可简化 jails、虚拟机和 ZFS 数据集的管理。

FreeBSD ports 冻结

Lobsters Hottest

FreeBSD 冻结了其 ports 仓库,原因是某维护者意外提交了一个 150MB 的 Linux Copilot 二进制文件,导致 GitHub 镜像中断并引发许可问题。