如何在 Ubuntu 20.04 上配置 ZFS

ZFS俗称Z文件系统,主要是基于存储和冗余。 ZFS 的概念是在文件服务器的基础上开发的,其中高可用性和数据完整性是最关键的因素。 ZFS 使用通常称为 zpools 的虚拟存储池来处理大量数据的存储和管理。 在本文中,我们将了解如何安装 zfs 及其在技术环境中的常见用途。

先决条件

新鲜的 Ubuntu 20.04 服务器

sudo 特权非 root 用户帐户

安装

ZFS 的安装是一个简单的过程。 您可以使用命令行终端应用程序安装 ZFS 文件系统。 午餐命令行终端工具并执行以下命令。

$ sudo apt update
$ sudo apt install zfsutils-linux

在安装过程中,可能会提示您输入密码,请提供 sudo 密码并继续。

运行上述命令后,系统将要求您确认是否要继续安装。 按’y’并输入。 现在该软件包将安装在您的系统上。

要验证系统上 ZFS 的安装,请使用以下命令。

$ zfs --version

您将获得类似于以下内容的输出:

ZFS 基本用法和命令

安装 ZFS 后,现在您可以将硬盘与 ZFS 一起使用。 将新硬盘驱动器插入系统后,ZFS 会通过设备名称对其进行寻址。 例如类似于 /dev/sda 或类似的。 您可以使用 磁盘 命令行实用程序来检查可用的硬盘驱动器。

$ sudo fdisk -l

你会发现输出类似于:

如何创建和销毁 zpool

ZFS 使用将磁盘汇集在一起​​的概念。 创建池时可以使用各种 Raid 级别。 我们将创建的第一个池是 RAID 0 。 RAID 级别 0 的工作原理是将数据条带化到多个磁盘上。 当文件被写入存储池或从存储池读取时,所有磁盘都将开始工作以呈现该部分数据。 此级别的 RAID 为您的读写操作速度提供了速度提升,但它缺乏数据冗余。 磁盘上的任何关键问题或池中的磁盘故障都将导致数据完全丢失。

在这个 example我用过两个硬盘 /dev/sdb/dev/sdd 用于创建名为 测试池. 您可以对磁盘和池名称选择有自己的假设。 运行以下命令创建 zpool。

$ sudo zpool create test-pool /dev/sdb /dev/sdd

如果出现任何错误,您可以使用以下命令运行命令 -F 之后的选项 zpool 创建 强制执行命令的命令。

$ sudo zpool create -f test-pool /dev/sdb /dev/sdd

创建后,您可以使用以下命令查找挂载点:

$ df -h

从输出中,我们可以看到池安装在 /测试池。 您可以更改池的挂载点,使用以下语法。

$ sudo zfs set mountpoint =<path> <pool_name>

在这个 example, 我用过 /var/www 作为新的挂载点。 您可以对挂载点有自己的考虑。

$ sudo zfs set mountpoint=/var/www test-pool

使用以下命令验证新点。

$ df -h

您可以在存储池下创建目录。 在这个 example,我在存储池test-tool下创建了名为MySQL的目录。

$ sudo zfs create test-pool/mysql

运行以下命令查看系统上所有的 ZFS 存储池。

$ zpool list

要查找 ZFS 池中每个设备的配置和状态,请使用以下命令。

$ zpool status

要在出现任何问题时对 ZFS 存储池进行故障排除,请执行以下显示 zpool 事件的命令。 将 pool_name 替换为您的 ZFS 存储池。

$ sudo zpool events pool_name -v

如果要在 ZFS 存储池中添加另一个硬盘,可以使用以下命令。 在这个 example 我用了一个新硬盘 /dev/sdc 添加之前创建的 ZFS 存储池 test-pool。 您可以相应地选择您的硬盘和 zpool 名称。

$ sudo zpool add test-pool /dev/sdc

添加磁盘后,使用以下命令验证池:

$ zpool status

要销毁 ZFS 存储池,请使用您的有效池名称运行以下命令。

$ sudo zpool destroy pool_name

为了 example,

$ sudo zpool destroy test-pool

如何使用 ZFS 加密

创建 ZFS 存储池后,您可以使用以下命令对其启用加密。 为了这 example,我使用了之前创建的名为“test-pool”的 ZFS 池进行加密。 您可以相应地选择您的 ZFS 池。

$ sudo zfs create -o encryption=on -o keylocation=prompt -o keyformat=passphrase test-pool/encrypted

您将被要求输入两次密码。 Enter 您的密码并继续。

将在存储挂载点下创建一个新目录,并且该目录下的任何内容都将被加密。 每当系统重新启动时,您可能需要手动挂载数据集。 请记住在挂载加密数据集时使用 -l 标志。 系统将提示您输入密码,提供您用于加密池的密码,然后继续。

$ sudo zfs mount -l test-pool/encrypted
$ df -hT | grep zfs

如何获取、回滚和销毁 ZFS 快照

拍摄快照

在 ZFS 中创建快照是一个非常简单直接的过程。 您可以使用 zfs 快照 命令后跟快照的名称作为创建快照的参数。 在这个 example, 我用过 测试池/mysql 创建快照。 您可以相应地选择您的池名称和数据集。

$ sudo zfs snapshot test-pool/[email protected]

使用以下命令验证拍摄的快照:

$ zfs list -t snapshot

重命名快照

您还可以使用重命名快照名称 zfs 重命名 命令后跟快照名称。 在这个 example,快照名为“测试工具/[email protected]”改名为“测试池/[email protected]

快照回滚

可以使用命令回滚快照 zfs 回滚 使用快照名称恢复自特定快照以来所做的所有更改。 在这个 example, 测试池/mysql 文件系统回滚到周日快照。

$ sudo zfs rollback test-pool/[email protected]

回滚完成后,您可以验证目录中存在的文件。

结论

在本文中,我已经介绍了 zfs 的基本解释。 我们已经学习了如何创建 ZFS 存储池、如何销毁存储池以及指定挂载点。 此外,我们还获得了一些关于 zfs 池加密的基本概念,即拍摄快照并将快照回滚到最早版本的过程。 感谢您阅读本文。 反馈和建议将不胜感激。