HeadlinesBriefing HeadlinesBriefing.com

Uberblok:ZFS 内部机制互动博物馆

Hacker News •
×

存储领域始终面临着同样的敌人:说谎的磁盘、被截断的写入,以及更新过程中途发生的崩溃。ZFS 用一系列核心思想来应对它们,而 Uberblok 这座互动博物馆——由一位资深存储工程师打造——则直接依据实现这些思想的代码,带领读者逐个展厅地参观。每一段动画都对应 Open ZFS zfs-2.4.4 的代码行(冻结于提交 71a9f9578616),每一段代码摘录都链接回源代码。作者将 ZFS 视为该领域最令人赞叹的工程杰作,之所以构建这个项目,是为了向它致敬,并更深入地理解其内部机制,同时欢迎熟悉代码的读者指出错误。

博物馆的第一个展厅是“大厅”,展示的是 uberblock——一条记录整个存储池根节点的小型记录。它包含一个事务组编号 ub_txg,以及一个块指针 ub_rootbp,通过后者可以访问所有其他块。每块磁盘都带有四个标签,每个标签包含一个 128 KiB 的 uberblock 环。新的 uberblock 从不覆盖之前的那个,而是写入第 N mod 槽位数 的槽位。导入时,ZFS 会读取每一个槽位,并保留有效且事务组编号最高的 uberblock。

后续展厅涵盖项目的发展历史、树结构,以及写时复制、校验和与自我修复如何在无需 fsck 的情况下保持存储池一致性;事务组在打开、静默和同步状态之间的流转;以及包括镜像、raidz、draid、日志、缓存和特殊设备在内的 vdev 层次结构。博物馆还通过动态图示讲解 RAID-Z、快照、ARC、metaslab、ZIL 以及 send/receive。

该项目可通过 uberblok.storagebits.workers.dev 访问,源代码位于 GitHub 的 algotitanhq/uberblok。

来源: Hacker News · 由HeadlinesBriefing整理摘要