为什么选择 ZFS?探索它对 Linux Ubuntu 系统的影响

找出原因为什么 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 等文件系统。
用户友好的界面易于使用的界面,带有数据恢复分步向导。