OpenZFS

跳转到:导航搜索

ZFS

ZFS 是由 Sun Microsystems 设计的组合文件系统和逻辑卷管理器。ZFS 的特性包括防止数据损坏、支持大容量存储、集成文件系统和卷管理的概念、快照和按写入克隆、持续完整性检查和自动修复、RAID-Z 和本机 NFSv4 ACL,并且可以进行非常精确的配置。Oracle 和 OpenZFS 项目的两个主要实现非常相似,使得 ZFS 在类 Unix 系统中得到广泛应用。(Wikipedia

ZFS、OpenZFS 和 ZFS on Linux

ZFS 最初由 Sun Microsystems 开发,旨在成为下一代文件系统。Oracle 收购了 Sun Microsystems,ZFS 变成了闭源。

OpenZFS 是一个由许多原始 ZFS 开发人员启动的项目,旨在创建 ZFS 的开源实现。它正在战略性地减少现有的平台相关差异,以便通过汇集 illumos、FreeBSD、Linux、macOS、NetBSD 和 Windows 平台以及构建在 OpenZFS 之上的各种公司的开发人员,从而简化源代码共享。

ZFS on Linux (ZoL) 是 OpenZFS 的实现,旨在在 Linux 环境中工作。

硬件考虑因素

单磁盘

ZFS 可以用于格式化单个磁盘或分区,以利用 ZFS 的强大快照和复制功能,而无需受益于 ZFS 的数据冗余功能。在这种情况下,ZFS 需要很少的内存资源,并且开销很小。它甚至可以在普通的笔记本电脑上很好地运行。

如果您打算仅在单个磁盘或分区上使用 ZFS 来受益于其快照和复制功能,您可能需要考虑使用 Btrfs,因为它通过 SnapperYaST 分区程序YaST 文件系统快照工具与 openSUSE 很好地集成。更多信息可以在 Snapper 文档中找到。

RAID-Z

当使用 RAID-Z 功能进行家庭和非关键用途时,请注意以下事项

  • 如果您的硬件支持,建议使用 ECC 内存。
  • 建议您的系统至少有 8GB 内存,如果系统负载较高,则最好为每个 TB 的数据阵列容量提供 1GB 内存。
  • 数据阵列的磁盘应大小相等,最好是相同制造商、型号和批次。

对于关键和企业客户,请阅读 ZFS 文档以获取更多信息和最佳实践建议。

ZFS 作为根文件系统

ZFS 目前最适合数据阵列。在 Linux 系统中使用 ZFS 作为根文件系统仍然是实验性的,只有 Ubuntu 最近在 19.10 版本中引入了实验性的根分区支持。openSUSE 尚不支持 ZFS 作为根文件系统。越来越多的用户成功地使用 Btrfs 作为根文件系统,并使用 ZFS 作为数据存储磁盘或阵列,以获得两者的优势。

安装

ZFS 包不可从标准存储库获得。在 [openSUSE Build Service] (OBS) 中维护的“文件系统工具”存储库包含 ZFS 以及许多更新的文件系统相关包。您可以通过 GUI 或命令行设置存储库并安装 ZFS。

在较新的系统(启用安全启动和锁定功能的系统)上,内核将拒绝加载未由安全启动信任的密钥签名的内核模块。由于 OpenZFS 不包含在官方存储库中,因此 zfs 模块使用 文件系统项目包签名密钥 签名,因此默认情况下内核将拒绝加载 zfs 模块(因为该密钥未受您的系统信任)。

为了注册签名密钥,请安装 zfs-ueficert 包并重新启动。zfs-ueficert 包包含 OpenZFS 内核模块的签名密钥,并将自动将密钥注册到 MOK 列表中,但您必须通过重新启动并响应引导加载程序的提示来批准注册。有关 UEFI 和 MOK 的更多信息,请参阅 openSUSE:UEFI。请注意,当项目签名密钥轮换时(大约每 2-3 年发生一次),您需要再次在启动时完成注册过程(但通过 zfs-ueficert 自动完成新密钥的注册请求)。

安装

访问 ZFS 下载页面 在 openSUSE 软件门户上,并选择您的 openSUSE 版本。您将看到图形化安装 ZFS 及其存储库或手动安装的选项。

ZFS 包由 文件系统项目 维护,不属于官方 openSUSE 项目。

外部链接

外部介绍和概述

外部教程

ZFS 最佳实践和调优

常见问题

modprobe: 服务拒绝密钥

症状

# modprobe zfs
modprobe: ERROR: could not insert 'zfs': Key was rejected by service

理由

zfs 内核模块的签名不受您的机器信任,并且您正在使用启用内核锁定的安全启动。

解决方案

您需要将文件系统项目的签名密钥注册为安全启动信任的密钥,以便内核信任该密钥。最简单的方法是安装 zfs-ueficert 包,它将自动使用 mokutil 注册密钥。但是,您需要在加载模块之前重新启动机器,因为密钥注册需要在启动时由引导加载程序手动批准。有关 mokutil 和安全启动密钥的更多信息,请参阅 openSUSE:UEFI

您还可以通过 下载文件系统项目的 SSL 证书 并直接使用 mokutil 手动注册密钥,但使用 zfs-ueficert 包的好处是,当项目密钥轮换时(大约每 2-3 年发生一次),密钥将自动注册,而手动过程可能会导致您错过轮换,并在重新启动后 ZFS 模块将再次无法加载。

另一种选择是禁用安全启动,但这可能会带来安全隐患。