找出原因为什么 Linux Ubuntu 中的 ZFS 文件系统成为用户的首选。从其先进的数据保护功能到可扩展性和灵活性,了解为什么 ZFS 被认为是卓越的。立即阅读以解锁 ZFS 的优势并优化您的 Linux Ubuntu 体验!
内容
- ZFS的优点
- 优点。它具有简化的管理模式。
- 优点。另一个优点与确保数据完整性有关。
- 优点。写时复制功能。
- 优点。该文件系统具有集成存储选项
- ZFS 限制
- 局限性。当其存储容量使用了80%或更多时,ZFS性能往往会严重下降。
- 局限性。没有机会减少存储池。
- 局限性。此外,更改冗余类型也存在限制。
- 在 Ubuntu 上安装 ZFS
- 如何创建 RAIDz
- 如何创建、回滚和删除 ZFS 快照
- 发送和接收 ZFS
- ZFS数据压缩
- 结论
- 问答
- 评论
ZFS或 Zettabyte 文件系统是一种特殊的文件系统,最初由 Sun Microsystems 为名为 Solaris 的操作系统创建。它支持海量数据,结合了文件系统、物理磁盘和卷管理器的概念,并为存储卷提供了简单的管理方法。
它是最初为 NAS 解决方案设计的下一代文件系统,具有更高的安全性、可靠性和性能。与许多其他系统不同,ZFS 是一个 128 位文件系统,提供几乎无限的容量。 ZFS 是一个获得 CDDL(通用开发和分发许可证)许可的开源项目。
| 特征 | 描述 |
|---|---|
| 支持大数据量 | ZFS 支持极大的数据量,允许存储高达 EB 的信息。 |
| 文件系统和卷管理的集成 | 结合文件系统和卷管理器,提供简化的磁盘空间管理。 |
| 即时快照 | 允许创建文件系统快照以快速恢复数据,而无需大量资源开销。 |
| 数据损坏保护 | 内置数据完整性验证机制,使用校验和来防止损坏。 |
| 数据冗余 (RAID-Z) | 通过内置 RAID-Z 功能提供各种级别的数据保护,防止丢失。 |
| 数据压缩 | 提供有效的数据压缩,有助于节省磁盘空间。 |
| 文件系统克隆 | 允许直接从快照创建克隆副本以进行测试或开发。 |
| 加密 | 支持数据加密,保护敏感信息。 |

如果你想使用ZFS“开箱即用”,你必须安装自由BSD或使用 illumos 内核的操作系统(illumos 是 OpenSolaris 内核的一个分支)。
如果你想使用ZFS乌班图,您需要手动添加支持功能 - 但这是一件非常容易的事情,并且涉及运行一些命令。我们稍后将详细探讨它,但现在让我们谈谈这个文件系统的优点和缺点。
前往查看

Linux Ubuntu 上的 ZFS 文件系统及其主要优势
谈到ZFS的优点,可以分为以下几点:
优点。它具有简化的管理模式。
它结合了卷、RAID 阵列和文件系统的管理。管理卷、冗余级别、文件系统、压缩比和安装点所需的只是几个命令。
这种方法还简化了监控,因为需要考虑的级别较少。
优点。另一个优点与确保数据完整性有关。
当写入一些数据时,也会计算并写入其校验和。随后,当读取数据时,再次验证校验和。如果校验和与读取的数据不匹配,ZFS 会识别出错误。之后,文件系统会尝试自动修复此类错误。
此外,ZFS 具有完美的可扩展性,可以添加新的存储设备、缓存管理选项等。
优点。写时复制功能。
在大多数文件系统中,数据在被覆盖时将永远丢失。另一方面,在 ZFS 中,新信息被写入不同的块。

写入操作完成后,文件系统元数据将更新以指向新信息。如果系统崩溃(或发生其他不幸事件),这有助于保留旧数据。
优点。该文件系统具有集成存储选项
复制——创建某物副本的过程。
重复数据删除——一种消除重复数据的重复副本并减少存储负载的技术。

压缩是一种可以节省磁盘空间并提高速度的选项,因为表示数据所需的位数会减少。
快照是整个数据的一致反映,代表数据在单个时间点存在的形式。

克隆是某物的相同副本。
ZFS 限制
然而,与任何其他文件系统一样,ZFS 也有一些缺点。
局限性。当其存储容量使用了80%或更多时,ZFS性能往往会严重下降。
对于许多文件系统来说,这是一个常见问题。当当前池占用了 80% 的可用存储空间时,您应该扩展池或将其迁移到容量更大的存储系统。
局限性。没有机会减少存储池。
添加设备或 vdev(代表虚拟设备)后,您无法从池中删除它们。
局限性。此外,更改冗余类型也存在限制。
除了将基于单个磁盘的池切换为镜像池之外,您无法更改冗余类型。选择冗余类型后,唯一的解决方案是销毁它并创建新的冗余,同时从备份或其他位置恢复数据。
在 Ubuntu 上安装 ZFS
现在我们以 Ubuntu 20.04 版本为例,探讨如何在 Linux 操作系统上安装 ZFS。
您需要终端进行安装,因此请按快捷键 Ctrl + Alt + T 将其打开。
然后运行这个命令:
$ sudo apt update复制
检查应用程序更新。输入命令时,系统会询问您root密码;键入它并按 Enter。

还有这个,用于安装:
$ sudo apt install zfsutils-linux复制

类型y确认安装命令并按 Enter。它启动软件安装过程。
要检查 ZFS 安装,请使用以下命令:
$ zfs –version复制

结果,将显示程序的版本。现在您可以使用 vdev(虚拟设备)创建存储池。

存储池是由一个或多个可以存储数据的虚拟设备组成的集合。 ZFS池,也称为Zpool,是该文件系统中的顶级数据容器。它用于创建一个或多个文件系统(数据集)或块设备(卷)。然后,这些文件系统和块设备就能够使用剩余的池空间。所有分区和格式化操作都将由ZFS 执行。

虚拟设备 (vdev) 可以由一个或多个物理设备组成。它可以是一个池或池的一部分,并且可以具有各种冗余级别 - 镜像、三向镜像、RAIDZ、RAIDZ-2 或 RAIDZ-3。
RAID-Z 是改进的 RAID-5 的实现。在 ZFS 中,它旨在克服经常影响传统 RAID-5 系统的写洞错误。 RAID-Z1 至少需要三个磁盘:两个用于数据存储,一个用于奇偶校验。
RAID-Z2 应至少有四个磁盘 - 两个用于存储,两个用于奇偶校验。

最后,对于 RAID-Z3,您至少需要两个磁盘用于存储,三个磁盘用于奇偶校验。

如何创建 RAIDz
现在让我们了解如何使用一组驱动器构建 RAID-Z 系统。首先,让我们决定应包含哪些驱动器。
使用 fdisk 实用程序查看连接了哪些驱动器,以及哪些驱动器适合您的用途。运行此命令以列出驱动器:
$ sudo fdisk -l复制
结果,您将看到一个驱动器列表,其中包含每个驱动器的详细信息。

出于说明目的,我将向您展示如何构建 RAID-Z1 – 它相当于带有一个奇偶校验驱动器的 RAID 5。其设计使您可以使用阵列并保持数据完整,即使其中一个驱动器发生故障也是如此。
我有三个硬盘,分别列为 /dev/sdd、/dev/sde 和 /dev/sdf。我将创建一个名为“zdata”的池。这是要使用的命令:
$ sudo zpool create ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf复制
$ sudo zpool create zdata raidz /dev/sdd /dev/sde /dev/sdf复制

如果出现错误,您可以运行此命令,在“zpool create”后添加 -f – 它会强制执行该命令。
$ sudo zpool create -f ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf复制
要查找安装点,请在创建池后运行命令 df -h:
$ df –h复制

该池安装在/zdata 中。要修改池的安装点,请使用以下语法:
$ sudo zfs set mountpoint =<path> <pool_name>复制
在此示例中,我使用 /var/pool 作为新的挂载点。
$ sudo zfs set mountpoint=/var/pool zdata复制
让我们检查一下新点:
$ df –h复制

您可以在存储池中创建目录。例如,让我们创建一个名为 mydata 的目录。
$ sudo zfs create zdata/mydata复制
要查看该系统中的所有 ZFS 存储池,请运行以下命令:
$ zpool list复制

要查看 ZFS 池中每个设备的配置和状态,请使用 status 命令。
$ zpool status复制
要查看事件并消除问题,还有一个命令:
$ sudo zpool events zdata –v复制

如果需要向 ZFS 存储池再添加一个硬盘,则应使用要添加的磁盘的名称运行此命令。
$ sudo zpool add zdata /dev/sdb复制
添加磁盘后,我们查看池状态:
$ zpool status复制

最后是可用于删除 ZFS 存储池的最后一个命令。
$ sudo zpool destroy zdata复制
如何创建、回滚和删除 ZFS 快照
该文件系统允许您创建池的快照。
快照是在某个时刻创建的文件系统的只读时间点副本。您可以创建整个数据集或池的快照。快照包含文件系统的原始版本以及创建此快照后所做的所有更改。换句话说,它是差异的只读副本。
要创建快照,请使用命令 – zfs snapshot,后跟快照名称。在此示例中,我使用 zdata/mydata 创建快照。
$ sudo zfs snapshot zdata/mydata@snap1复制
使用以下命令检查快照:
$ zfs list -t snapshot复制

如有必要,可以重命名快照:
sudo zfs rename zdata/mydata@snap1 zdata/mydata@snap2复制
您可以通过回滚快照来取消更改。但是,这意味着您将丢失创建快照后发生的所有更改。
要返回到某个快照,请使用某个快照的名称运行 zfs rollback 命令。这将取消创建快照后在此目录中执行的所有操作。
$ sudo zfs rollback test-pool/mydata@snap1复制

该命令会将系统回滚到某个日期。
回滚操作完成后,您可以检查目录中是否存在创建快照后删除的文件。
发送和接收 ZFS
快照可以保存到文件中,然后恢复它,这非常适合创建备份或通过网络(例如使用 SSH)发送副本来复制文件系统。
“发送”命令发送文件系统快照,该快照可以重定向到文件或流中的另一台计算机。 “receive”命令接收此类流并将快照副本写回 ZFS 文件系统。
例如,让我们使用以下命令再创建一个快照并将其保存到文件中:
sudo zfs snapshot -r zdata/mydata@snap3复制
sudo zfs send zdata/mydata@snap2> ~/mydata-snap.zfs复制

然后让我们用另一个命令恢复它:
sudo zfs receive -F zdata/mydata-copy < ~/mydata-snap.zfs复制

使用其他脚本,您可以配置文件系统以自动创建快照并通过 SSH 协议将它们发送到服务器。
更多阅读:基本设置:在 Linux Ubuntu 上使用 Dovecot 安装和配置 Postfix 邮件服务器!
ZFS数据压缩
正如我之前提到的,ZFS 允许您自动压缩数据。考虑到当今CPU的计算能力,这个选项非常有用,因为数据量的减少意味着物理上要读写的数据更少,从而导致输入/输出操作更快。 ZFS 提供了多种压缩方法。默认选项是 lz4(lzjb 的高性能替代品),与 lzjb 相比,它提供更快的压缩和提取速度,同时使用更高的压缩比。要更改压缩比,请使用以下命令:
sudo zfs set compression=gzip-9 zdata复制
或者甚至使用另一个命令更改压缩类型:
sudo zfs set compression=lz4 zdata复制
您可以使用以下命令检查当前使用的压缩比:
sudo zfs get compressratio复制

最安全的选择是 lz4,因为它比其他选项快得多,同时保留了非常好的性能水平。
结论
综合考虑,ZFS 显然是一个可以为您提供广泛机会的文件系统。它不仅可以让您以非常有效和创新的方式管理数据,而且如果出现紧急情况,它还可以在不中断您工作的情况下恢复数据。更重要的是,如果出现系统错误或故障,整个系统可以通过快照功能轻松恢复,因此您只需回滚到某个时刻的状态即可。
如果您遇到 ZFS 和 RAID-Z 数据丢失的任何问题,请尝试 Hetman RAID Recovery。它肯定会帮助您从 ZFS 文件系统中恢复意外删除的文件,或访问存储在损坏的 RAID-Z 阵列中的数据。如果您的信息因错误、格式化、覆盖或其他常见的数据丢失情况而消失,那么该程序将派上用场。
| 特征 | 描述 |
|---|---|
| RAID 阵列支持 | 该程序支持各种 RAID 阵列类型,包括 RAID 0、RAID 1、RAID 5、RAID 10 和自定义配置。 |
| 自动参数检测 | 自动检测阵列参数,例如块大小、磁盘顺序和其他关键特征。 |
| 数据恢复 | 能够从损坏或删除的 RAID 阵列中恢复数据,以及在配置错误或故障后进行恢复。 |
| 文件预览 | 允许在恢复之前预览文件以评估质量并验证数据。 |
| 文件系统支持 | 支持 FAT、NTFS、ReFS、HFS+、Ext2/3/4、XFS、ZFS 等文件系统。 |
| 用户友好的界面 | 易于使用的界面,带有数据恢复分步向导。 |
