ZFS

FreeBSD 14 确定延期

(最后修改: Development #FreeBSD #Release Engineering #OpenSSL

原定4月25日开始的code slush和KBI冻结并未发生,主要的原因是 OpenSSL 3.0 还未合并, 以及 OpenZFS 近期的一些可靠性问题。

其中,OpenSSL 3.0 由于对 API 的改动比较大,因此会导致一些 port 无法正常工作 (PR 258413)。 近期已经有一批 port 标记为与 OpenSSL 3.x 不兼容, 不过修掉这些可能会需要不少时间。

阅读全文… ( 本文约 519 字,阅读大致需要 2 分钟 )

用 poudriere 完成包管理

(最后修改: Development #jail #FreeBSD #Poudriere

由于使用的 port 的编译选项与官方的往往不一致(例如我非常讨厌 gnutlsavahi 这两个包,此外有时我希望使用一个和官方不太一样的 OpenLDAP 版本, 或者采用不同的编译选项等等),我之前一直是 portmaster(8) 的用户。 portmaster 是 Doug Barton 早年用 shell 脚本写的一个 portupgrade(1) 的替代品,和后者相比,它不需要使用数据库,并且充分利用了 shell 的任务管理功能实现了尽可能利用 CPU 的计算能力,我个人也从这个脚本中学到了不少 shell 脚本的技巧。

不过,使用 portmaster 需要在每一台机器上都有一份 ports tree,并且由于直接操作的是本地的生产环境, 因此对于比较基础的库,如 gettext 之类,或是在升级操作系统时, 由于升级时间较久导致出现问题的可能性相对要大一些。 另一方面,使用 port 来管理第三方软件意味着需要把联编过程中的所有依赖软件包全都都装到生产环境中, 有时这是非常不经济的,例如大部分时候运行环境并不需要完整的跨平台 LLVM,等等,而使用 port 安装的话, 每一个系统中都需要整体重新联编一遍。

我之前已经用过很长时间的 poudriere 了。 这是一款现代化的联编系统,它充分利用了 FreeBSD 的一系列特性,包括 ZFS 快照/克隆、 tmpfs、 jail 等等,支持交叉编译。除此之外它还支持使用 ccache 来减少重复编译,等等。 不过,线上的机器出于习惯^H^H懒惰导致的惯性一直还是在沿用之前采用 portmaster 来进行更新。

阅读全文… ( 本文约 2102 字,阅读大致需要 5 分钟 )

线上重做 FreeBSD GPT 引导分区

(最后修改: Development #FreeBSD #ZFS #gpart

记一笔。

我现在这台服务器已经用了蛮久(超过10年)了,刚刚安装的时候还是 FreeBSD 8.1 RC,一路升级到 FreeBSD 12.2。 前段时间因为工作比较忙,一直没顾上把它升级到 FreeBSD 13.0,今天总算是找了点时间来做升级。

总体上这次升级比预想的还要平稳一些,由于 FreeBSD 13.0 和 12.2 的内核接口变化不大,因此我也没按照正规的做法, 即升级内核、重启第一次、etcupdate、installworld,重启第二次、delete-old/delete-old-libs,而是在 installkernel 之后直接做了 etcupdate 和 installworld。

阅读全文… ( 本文约 2401 字,阅读大致需要 5 分钟 )

基于Asrock C2750D4I的全加密存储

(最后修改: Hardware #Encryption #FreeBSD #FreeNAS

去年第四季度的时候,在网上看到 华擎科技 推出了一款基于 Intel Atom C2750 SoC 的主板, Asrock C2750D4I,感觉很赞,于是立即和华擎科技取得了联系(当时这款主板还没进入量产),并着手开始了测试等工作。这张主板的重要特色包括:

  • mini-iTX尺寸
  • CPU支持Intel AES-NI,加密加速
  • 提供了两个千兆以太网口
  • 支持ECC内存(更重要的是,采用的是台式机和服务器常见的4x240-pin DDR3 DIMM规格,不像同类产品通常使用的是204-pin的SO-DIMM,这一点可以节省很多成本)
  • 提供了8个SATA III 6.0Gbps接口和4个SATA II 3.0Gbps接口
  • 支持IPMI并提供了独立网口

此处强行插入一条广告: 我厂 目前这一代的 FreeNAS Mini 采用了这张主板,组装好的产品可以通过 Amazon 购买,我厂每年都会将一部分利润捐给 FreeBSD 基金会,如果先 在 smile.amazon.com 注册支持 FreeBSD 基金会,并使用前述链接, Amazon 公司还会再捐出 0.5% 的金额给 FreeBSD 基金会

目前这张主板已经进入了量产阶段,因此也可以从其他零售渠道获得相关组件自行组装。

阅读全文… ( 本文约 1384 字,阅读大致需要 3 分钟 )

FreeBSD 10.0-RELEASE

(最后修改: Kernel #FreeBSD #FreeBSD 10.0 #Release Engineering

这是我加入 FreeBSD Release Engineering Team (re@) 之后,我们发布的第一个主要(X.0)版本。

这个版本对整个系统进行了大量的改进。其中的重要变化包括在基本系统中用 clang 取代了 gcc(所有 Tier-1平台)、新增了 unbound(用于取代BIND的部分功能,后者十分复杂,且支持计划经常与 FreeBSD 的发生冲突)、基本系统中提供了转码API iconv(3) (我在2010年指导的 Summer of Code项目)、使用了 PkgNG 包管理工具、BHyVe虚拟机、对于虚拟化支持的大幅改进(virtio(4)以及 Hyper-V支持)、ZFS新增了TRIM支持、ZFS的LZ4完整支持(我在去年新增的功能),等等。

阅读全文… ( 本文约 783 字,阅读大致需要 2 分钟 )

OpenZFS Developer Summit

(最后修改: Kernel #ZFS #conference #summit

今天去 San Francisco 的 Delphix 参加了 OpenZFS Developer Summit,今天这会太充实了,先记一笔。

ZFS Channel Program:目前的 ZFS 应用程序需要以多次系统调用来完成一项功能。为了实现原子性,用户态部分实现起来比较复杂,而且最终内核中的 sync task 可能会导致长时间的延迟。提出的解决方案是在 ZFS 内核部分引入一个 Lua 字节码解释器,用户态一次灌一个脚本进去,通过脚本逻辑实现原子性,从而减少上下文切换开销并极大地简化用户态部分。

阅读全文… ( 本文约 496 字,阅读大致需要 1 分钟 )