25.5 更新 ZFS 的 zpool
更新 zpool
FreeBSD 的大版本之间,ZFS 的版本通常会发生变化,例如从 14.3 升级到 15.0 时,zpool 的版本也会随之升级。
警告
请准备好备份和应急 CD 以应对意外情况,因为旧版本系统内置的 ZFS 无法兼容新版 ZFS 文件系统的功能集。
验证版本
查看当前系统版本
# freebsd-version -kru
15.0-RELEASE
15.0-RELEASE
15.0-RELEASE查看 ZFS/zpool 相关版本
# zpool version
2.4.0-rc4-FreeBSD_g099f69ff5
zfs-kmod-2.4.0-rc4-FreeBSD_g099f69ff5警告
这意味着任何 ZFS 版本低于 2.4.0-rc4 的操作系统在升级后可能无法启动。
进行更新
由于在升级前无法充分利用 ZFS 的新功能,下面将进行升级操作:
根据系统提示信息:
状态:存储池上有一些支持的且已请求的功能尚未启用。存储池仍然可以使用,但部分功能不可用。
操作:使用
zpool upgrade启用所有功能。在完成后,未支持这些功能的软件可能无法再访问该存储池。详细信息请参见zpool-features(7)。
确实需要进行更新,但更新后旧系统可能无法再启动。
我们预览一下有哪些功能会被更新:
可以看到,除了带有 * 的功能需要手动启用外,其余功能在升级后将默认启用。
警告
zpool upgrade并不能实际启用这些特性,仅用于预览可启用的功能。要执行更新,必须同时指定存储池名称,例如zpool upgrade zroot。参见 'zpool status' gives confusing suggestion with 'zpool upgrade'。思考题
有贡献者认为上面 issue 关联的修补 PR 是琐碎的,无关紧要的细枝末节,甚至以每行不得超出 80 字符的客观理由予以拒绝,可问题在于无数人都被这种“小事”浪费了不止一个小时的时间。你怎样理解对于文字力量的忽视,其代价究竟是什么?
现在让我们来真正升级看看:
显示所有 ZFS 池的当前状态及健康信息:
一如既往。
附录:启用那些需要手动启用的特性
如果你还希望手动启用一些功能:
这说明可以手动启用 dynamic_gang_header,接下来查询 ZFS 池中该特性的状态:
该特性确实未启用,下面在 zroot 池上启用 dynamic_gang_header 特性:
再看看 zroot 池中 dynamic_gang_header 特性的当前状态:
检查当前可升级的 ZFS 池及其支持的特性:
重写引导(仅 BIOS 传统引导需要)
警告
bootfs属性是在 ZFS 上引导 FreeBSD 的关键标志,忽略此提示可能不会立即出问题,但一旦出现问题将导致系统无法启动,因此建议按照提示重写boot code。(为什么这么建议?因为我炸了)。如果系统中不存在 freebsd-boot 分区,则无需执行以下操作。
列出系统中所有磁盘及其分区表信息:
找到类型为 freebsd-boot 的分区,这里分区序号为 1,对应以下命令中的 -i 选项,然后进行 bootcode 重写:
可以再次列出所有 ZFS 池的状态及详细信息:
最后更新于