For the complete documentation index, see llms.txt. This page is also available as Markdown.

The Daemon’s Dozen——FreeBSD 12.0 简介

作者:Michael W Lucas

自 FreeBSD 11.0 发布大约两小时后,我们就一直在急切等待 FreeBSD 12.0。这里我将查看一些新功能、移除的功能以及即将到来的变化,先从存储开始。

ZFS 用户可能熟悉 beadm(8) 软件包,这个启动环境管理程序。我们之前在 FreeBSD 期刊上介绍过它。FreeBSD 现在包含 bectl(8),一个启动环境控制程序。它保留了大部分 beadm(8) 语法,让你可以创建、激活、列出和销毁启动环境。此外,它允许你挂载未使用的启动环境,并从这些启动环境创建 jail。我用 jail 排查过有问题的启动环境,因此这是对基本系统的有益补充。

许多人使用 GELI 加密磁盘。正确进行硬盘加密很棘手,但 GELI 在笔记本被盗时大大降低了暴露机密数据的风险。不过,GELI 在拥有许多硬盘的系统上使用起来很痛苦。每个磁盘需要单独配置。在 FreeBSD 12.0 中,GELI 现在可以同时配置多个磁盘,只要它们使用相同的加密密钥,缓解了管理此类机器的系统管理员的烦恼。另外,在 GELI 领域,安装程序现在可以在从 UEFI 启动的主机上加密磁盘。

FreeBSD 的 GEOM 系统让你完全按照应用程序、硬件和环境所需的方式将存储变换堆叠在一起。如果你想要一个单独的大型条带化和加密存储阵列,你可以将磁盘条带化然后加密——或者你可以单独加密每个磁盘然后条带化。GEOM 赋予你力量。当然,问题出在你试图弄清楚自己用这种力量做了什么的时候。新的 geom -t 命令显示主机的 GEOM 堆栈。

geom -t
Geom                 Class       Provider
ada0                 DISK        ada0
ada0                 DEV
ada0                 PART        ada0p1
ada0p1               DEV
ada0p1               LABEL       gpt/gptboot0
gpt/gptboot0         DEV
ada0                 PART        ada0p2
ada0p2               DEV
swap                 SWAP
ada0                 PART        ada0p3
ada0p3               DEV
zfs::vdev            ZFS::VDEV

你可以轻松看到提供者和消费者如何堆叠在一起,什么放在哪里,以及应用于一切的标签。

类似地,如果你想查看特定 GEOM 容器的所有信息,使用新的 geom -p 命令。这里我告诉 GEOM 倾吐关于 da2p1 的一切。

一些存储变化不那么明显。TRIM 请求用于告诉 SSD 或内存文件系统某个块不再使用。FreeBSD 12.0 批处理和合并这些请求,减少磁盘 I/O。你会在整个版本中看到数十个这样的小幅性能增强。

不过,FreeBSD 12.0 有一个主要的存储新功能:并行 NFS(pNFS)服务器。并行 NFS 可以大幅提升 NFS 性能,但需要支持 pNFS 的客户端。FreeBSD 的 NFS 客户端支持 pNFS。不过,这是一个全新功能,与其告诉你立即部署,我更鼓励你在自己的环境中彻底测试它。pNFS 还需要 NFSv4,因此如果你仍在使用旧版 NFS,是时候考虑升级了。

NFS 涉及网络,接下来让我们谈谈网络。

FreeBSD 12.0 内核默认启用虚拟网络栈 VIMAGE,允许你使用多个路由表。你现在可以让主机使用其标准路由表,但仅为在该主机上运行的 jail 创建新的路由表。此外,你现在可以在 jail 中使用 PF,PF 的 HFSC 流量整形现在可以处理高达 100 Gbs。

八位 10Mbs 网卡已不再足够流行,FreeBSD 不再支持,它们在内核中的存在阻碍了当前功能的开发。纯 10Mbs 网卡的驱动程序,如 lmc、ixgb 和 nxge,都已从当前内核中移除。许多 10/100 Mbs 网卡驱动程序,如 ed、ep、pcn 等,已弃用,并计划在 FreeBSD 13.0 中移除。二十年前,我是 NE2000 兼容网卡的忠实粉丝。它们基本上坚不可摧。问题是那是二十年前的事了。是时候买一块新网卡了。

FreeBSD 长期以来一直存在视频驱动程序问题。显卡的推出频率高于 FreeBSD 版本。用户明智地希望使用新显卡的所有花哨功能,当两个月的 FreeBSD 不支持那些驱动程序时会感到沮丧。FreeBSD 通过从基本操作系统中移除高级视频驱动程序并将其改为 Ports 解决了这个问题。Ports 比基本系统组件更容易更新,这意味着用户可以获得加速视频和 3D 支持以及他们想要的所有其他花哨功能。安装 drm-kmod 软件包以获取最新视频驱动程序,并查看 https://wiki.freebsd.org/Graphics 上的 FreeBSD Graphics Wiki 了解如何使用它。

如果需要从 last(1)lastlogin(8) 提取信息,这些程序现在支持 libxo。尝试 last --libxo xml 获取输出示例,并使用你组织的标准 XML 工具收集所需信息。

还有许多其他新功能和细节。引导加载程序现在包含 Lua 而不是 Forth,因此所有 Lua 黑客都可以自定义启动过程。一些较旧的标准设备驱动程序经过改进。虽然控制台以前能以比我阅读更快的速度显示文本,但 vt(4) 驱动程序现在运行速度比 FreeBSD 11.0 中快四倍。ntpd(8)mandoc(1) 等贡献程序已升级。随机数生成器 random(4) 经过现代化改造,集成的 OpenSSL 将获得数年支持。默认分页器现在是 less(1)newsyslogd(8) 忽略 setuid 和可执行日志文件——理应如此。

FreeBSD 12.0 有许多较小的增强、改进和调整。真的,看到所有这些的最好方式是安装它,看看会发生什么。我一直很满意。我想你也会的。


Michael W Lucas 自 1980 年代起使用 BSD。他最近的书是《Absolute FreeBSD》第三版。在 https://mwl.io 了解更多。

最后更新于