Hacker News 中文摘要

RSS订阅

GEFS 登陆 OpenBSD:早期预览 -- GEFS on OpenBSD: A Early Preview

我暂时不打算将这段代码合入代码树。在EuroBSD会议上,我展示了一个运行在OpenBSD(OpenBSD)上的粗糙且问题众多的GEFS(GEFS)预览版本。该移植尚未生产就绪,目前预期会出现数据丢失,尤其在出错时。不过移植已进展到剩余问题基本明确的状态,人们可以着手探查。对于未观看演讲的人,GEFS(GEFS)是一种全新的崩溃安全、支持快照与写时复制的文件系统。

正文

有人问之前先说清楚:我暂时还不打算把它合进代码树。

这是什么

正如大家在 EuroBSD 上可能看到的,我搞出了一个粗糙、满是 bug、能在 OpenBSD 上运行的 GEFS 预览版。移植还不能用在生产环境,目前预期会丢数据,尤其是出错时。不过除个别外,剩下的问题都相当清楚了,大家可以试着折腾。

没看过我演讲的人听一下:GEFS 是我为 9front 写的崩溃安全、支持快照、写时复制的新文件系统,正往 OpenBSD 上搬。完整说明见 https://orib.dev/gefs.pdf。目前内核代码不到 9000 行,因还缺不少功能,估计以后会涨一些。

移植

做法是做一个正经的内核文件系统,让数据结构和繁琐代码在 Plan 9 与 OpenBSD 之间基本同步,但代码本身是复制粘贴的。目标是让两边“押韵”以便共享修复,但两环境需求不同,代码大概率无法直接移植,硬塞抽象层是坏主意。

问题

依我看,剩下的大问题有:

  • 一致性协议:这对我是个大未知项。超级块写入须在快照所有写入之后,只要块落盘后再写就安全。还有几个写入顺序的修复要从 9front 回植。
  • 错误处理和移植别扭:错误处理大部分被注释掉了,得逐路径小心转换;9front 的错误处理思路在 OpenBSD 上行不通。还有用了全局变量导致同时只能挂一个。
  • 用户态工具:让大家开 VM 跑 9front 来创建或 fsck 不是长久之计。快照管理及相关 ioctl 也在此列。
  • POSIX 细节:来源不是 POSIX 系统,许多约束可能没搞对。
  • 回归测试:Plan 9 有小套件,OpenBSD 还没有。
  • 硬链接:好实现,但需逐文件引用计数。
  • kqueue:好实现,也需逐文件引用计数。
  • NFS:有些丑陋钩子,不确定加什么才能支持。
  • 其他缺失:引导加载器、启动环境、配额等好东西排得很靠后。尤其配额能让 LLVM 继续膨胀而不用预分配超大 /usr/obj。

肯定还有漏说的。眼下我不改 KNF 代码风格,碰到的代码慢慢挪,但在快能上游前更想贴近原版。另有些与两者无关的非致命问题,如删大文件慢,我有改进思路。

如何获取

一个补丁在此: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

注意我会偶尔 rebase 并强推分支以跟上 openbsd current,commit id 会变。

评论

社区对 GEFS 文件系统的发布普遍抱持欢迎与期待,赞扬其轻量可靠,但少数人担忧错误处理代码被注释可能隐藏数据损坏风险,部分用户更关注其他候选方案。

认为 GEFS 是轻量且足够好的现代文件系统

  • 具备写时复制、快照和校验和,代码量小且许可宽松,资源占用低于 ZFS 而比传统 FFS 更可靠,多人期待移植到 Linux 及其他 BSD(较多人) > 它拥有写时复制、快照和数据校验和,足以媲美 ZFS 却更轻量、许可更宽松,希望能移植到更多系统(@yjftsjthsd-h)

认可作者工作并证实实际运行稳定

  • 作者修复 bug 迅速,9front 夜间构建已长期运行该文件系统,有用户连续运行十多天无崩溃,鼓励投入生产(较多人) > 我一直跟进并协助测试 9front 上的 gefs,官方夜间构建已使用许久,Ori 做得极为出色(@moody__)

质疑错误处理缺失将导致隐患

  • 论文提及错误处理大段被注释,意味着文件系统出错时可能无法报警或恢复,鉴于知名文件系统亦有数据丢失缺陷,对其正确性存疑(少数人) > 错误处理基本被注释掉了,恐怕文件系统损坏时我们也无从知晓(@jijji)

更期待 Hammer2 等其他文件系统方案

  • 部分用户表示尊重作者,但个人更关心 DragonFly BSD 的 Hammer2 移植到 OpenBSD,或希望对比 XFS 加完整性校验等现有组合(少数人) > 尊重作者的工作,但我更感兴趣的是 Hammer2 能移植到 OpenBSD(@tiffanyh)

有价值的补充

  • 技术资料:作者已发布 GEFS 论文,并在 EuroBSDCon 2026 与 NYC*BUG 2023 会议做过相关演讲,可供深入了解。
  • 现实痛点:有用户恰逢风暴断电导致 OpenBSD 的 FFS 损坏,凸显对健壮文件系统的需求。
  • 技术疑问:ZFS 因写时复制设计存在碎片且无原地整理手段,社区好奇 GEFS 如何缓解类似问题。