ZFS 存储
ZFS 为您的 Unraid 系统带来高级的数据完整性、灵活的存储配置和高性能。本指南解释 ZFS 的核心概念,并引导您通过 Unraid WebGUI 直接管理 ZFS 池。无论您是部署新的 ZFS 存储还是整合现有的池,您都可以在这里获取启动所需的步骤和背景。
为什么选择 ZFS?
ZFS 是一种现代文件系统和卷管理器,旨在保护您的数据、预防损坏并简化存储管理。
使用 ZFS,您可以获得:
Unraid supports ZFS for any storage pool. You can create a new ZFS pool, import one from another system, or use Unraid’s unique hybrid ZFS setup: add a ZFS-formatted disk directly to the Unraid array (not a pool) and combine ZFS features with Unraid’s parity protection.
:::info[Example]
您可以在单个磁盘上使用 ZFS snapshots 和复制作为备份目标,或将快速 SSD ZFS 池复制到由 Unraid parity 保护的 ZFS 磁盘中的 array,以获得双重优势。
:::

The hybrid ZFS-in-array approach is helpful for specific backup or replication scenarios but is not a replacement for a full ZFS pool. ZFS disks in the array are managed individually; you do not get the combined performance, redundancy, or self-healing of a true multi-disk ZFS pool. For full ZFS functionality, always use dedicated ZFS pools.
池、vdevs 和冗余
一个 ZFS 池(称为“zpool”)由一个或多个 vdevs(虚拟设备)组成。在每个 vdev 内,多个物理盘通过某种冗余级别组合到一起。ZFS 在多个 vdev 上写入数据,但每个 vdev 负责自己的容错。
冗余总是针对每个 vdev 的。如果任何一个 vdev 失败,整个池将失败,即使其他 vdev 是健康的。请仔细规划您的 vdev!

创建一个 ZFS 池
- 停止array。
- 点击添加池。

- 为您的存储池选择一个名称(例如,
raptor)。 - 设置槽位数量以匹配您想要在主数据 vdev(s) 中的磁盘数量。
此初始槽位数量仅用于数据 vdev。支持 vdev(例如日志或缓存驱动器)可以在创建池后单独添加。

- 将磁盘分配到池中(磁盘顺序无关紧要)。

- 点击池名称(例如
raptor)以打开其配置屏幕。 - 将文件系统类型设置为
zfs或zfs-encrypted(用于 LUKS 加密)。

- 选择您的分配配置文件 - 这会决定您的池的冗余和性能。


- 如果需要,可以启用压缩(推荐用于大多数工作负载)。
- 点击完成,然后启动 array。
将 ZFS 磁盘添加到阵列(混合设置)
您可以将独立的 ZFS 磁盘添加到您的 Unraid array(而不是 ZFS 池)中,以结合 ZFS 功能和 Unraid 的 parity 保护。

- 在 文件系统 下,选 择
zfs或zfs-encrypted。

- 点击 应用。
- 启动 array,并在需要时让磁盘格式化。
选择分配配置文件
当您设置 ZFS 池时,您的分配配置文件将决定您的数据如何受到保护、池的性能以及其可扩展性。以下是一些简单的比较帮助您决定哪个配置文件适合您的需求:

| 配置 | 冗余 | 性能 | 扩展 | 空间 效率 | 典型用例 | 每个 vdev 的推荐硬盘数量 |
|---|---|---|---|---|---|---|
| 条带 | 无 | 快,但风险大 | 增加更多磁盘 | 100% | 临时/临时存储 | 任意数量 |
| 镜像 | 1:1(RAID 1 样式) | 对于随机 I/O 表现出色 | 增加更多镜像 | 50% | 高性能,易于扩展 | 2 个硬盘(可以添加更多镜像) |
| RAIDZ1 | 每个 vdev 1 个盘 | 在处理大文件时速度快。不适合小文件或随机写入。 | 增加新的 vdev | 高 | 通用用途,1 盘容错 | 3-6 个硬盘(最多 8 个) |
| RAIDZ2 | 每个 vdev 2 个盘 | 与 Z1 类似,但写入略慢(额外的奇偶校验) | 增加新的 vdev | 中等 | 重要数据,2 盘容错 | 6-12 个硬盘(最多 14 个) |
| RAIDZ3 | 每个 vdev 3 个盘 | 与 Z2 类似,写入更多负担(最大安全性) | 增加新的 vdev | 低 | 任务关键型,3 盘容错 | 10-16 个硬盘(最多 20 个) |
:::tip[Optimizing 硬盘数量
表格上方推荐的硬盘数量对大多数用户都适用。为了获得更好的性能,您可以在这些范围内优化,通过选择数据盘数量(总硬盘数减去校验盘数)为 2 的幂次方(如 2、4、8、16)来实现。这有助于正确对齐数据条带,防止浪费空间和不均衡的 I/O。
优化配置示例:
- RAIDZ1: 3、5 或 9 个硬盘(数据盘 = 2、4 或 8)
- RAIDZ2: 4、6 或 10 个硬盘(数据盘 = 2、4 或 8)
- RAIDZ3: 5、9 或 17 个硬盘(数据盘 = 2、6 或 14)
请注意,这些优化是可选的 - 上述建议适用于大多数使用情况。
:::
- 选择 镜像 如果您想要最佳性能和易于、灵活的扩展,并且愿意使用更多磁盘空间来确保冗余。
- 选择 RAIDZ1/2/3 如果您想最大化可用空间并存储大文件,但要记住扩展的灵活性较低,随机写性能较差。
- 条带 只适用于非关键性、临时数据 - 如果任何磁盘故障,您将失去所有数据。
拓扑和扩展
您如何将磁盘分组到 vdevs 中会影响数据安全性和速度。

- 如果您将所有磁盘放入一个大型 RAIDZ2 vdev,您可以在不丢失数据的情况下丢失任意两个磁盘。然而,扩展意味着需要添 加另一个完整的 vdev。
- 如果将磁盘分割成多个较小的 RAIDZ1 vdev,您将获得更好的并行性能。请注意,如果同一 vdev 中有两个磁盘故障,您将失去整个池。
- ZFS 将数据跨 vdev 条带化,而不是单个磁盘,因此更多的 vdev 能够提升处理很多小文件或随机 I/O 的工作负载性能。
- 扩展一个 ZFS 容量池通常意味着添加一个新的相同布局的 vdev,而不仅仅是单个磁盘。
压缩和 RAM
Unraid 将 ZFS 支持 vdevs 称作子池。大多数用户不需要这些,但有经验的用户可能会使用:
ZFS 压缩是透明的 - 它在后台运行,在数据到达磁盘之前缩小数据。
这提供了两个主要优点:
- 减少磁盘使用量: 所需存储空间更少。
- 提高性能: 写入和读取较少数据可以导致更快的操作,特别是在现代 CPU 上。

ZFS RAM 神话 - 点击展开/折叠
导入其他系统创建的 ZFS 池
Unraid 可以轻松导入其他平台上创建的 ZFS 池。
如何导入 ZFS 池 - 点击展开/折叠
- 停止阵列: 确保您的 Unraid array 已停止。
- 添加新池: 点击 添加池。
- 分配所有驱动器:
- 将 数据槽位数量 设置为您的 ZFS 池中磁盘(包括数据 vdevs 和支持 vdevs)总数。
- 将每个驱动器分配到正确的插槽。
- 示例: 对于具有 4 个驱动器镜像 vdev 和 2 个驱动器 L2ARC vdev 的池,设置 6 个插槽并分配所有六个驱动器。
- 设置文件系统为 "Auto": 点击池名称(例如,
raptor)并将 文件系统 设置为 Auto。 - 完成并启动阵列: 点击 完成,然后启动 array。
导入后,强烈建议运行 scrub 以验证数据完整性。
- 点击池名(例如
raptor)以打开其配置。 - 在 池状态 下,检查状态并点击 Scrub。

支持 vdev(子池)
Unraid 将 ZFS 支持 vdevs 称作子池。大多数用户不需要这些,但有经验的用户可能会使用:

| 支持的 vdev(子池) | 描述 | 详细信息/示例 |
|---|---|---|
| 特殊 vdev | Store the appdata share for fast, responsive containers and databases. This supports snapshots for easy rollbacks and can also host |
