在 Linux 上使用文件压缩创建 ZFS 文件系统

举报
Tiamo_T 发表于 2022/10/06 08:24:51 2022/10/06
【摘要】 ZFS 文件系统在 Linux 上得到了更广泛的认可。 在 ZFS 中,您可以在文件系统级别启用压缩。这将以压缩格式存储数据,这将节省大量磁盘空间。 在本文中,我们将解释如何从 ZFS 存储池创建文件系统并在 ZFS 上启用压缩。

ZFS 文件系统在 Linux 上得到了更广泛的认可。

在 ZFS 中,您可以在文件系统级别启用压缩。这将以压缩格式存储数据,这将节省大量磁盘空间。

在本文中,我们将解释如何从 ZFS 存储池创建文件系统并在 ZFS 上启用压缩。

在本系列的第一部分,我们解释了ZFS 的基础知识,以及如何在 linux 上安装 ZFS。我们还创建了一个 ZFS 池。

创建 ZFS 文件系统

首先,使用 zfs list 命令查看当前所有的 ZFS 文件系统,如下所示。在此示例中,我们当前有一个 ZFS 文件系统。

# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
mypool       170K  5.84G    30K  /mypool
mypool/fs1    30K  5.84G    30K  /mypool/fs1

现在,使用 zfs create 命令创建一个新的 ZFS 文件系统。

# zfs set quota=1G mypool/fs1

如下所示,新的 ZFS 文件系统现已成功创建。


# zfs 列表
使用的名称 AVAIL REFER MOUNTPOINT
mypool 170K 5.84G 30K /mypool
mypool/fs1 30K 5.84G 30K /mypool/fs1

设置 ZFS 报价和预订

创建 ZFS 文件系统时,默认情况下它会占用池中的所有空间。因此,您必须为文件系统指定配额和预留。

要设置报价,请使用 zfs set 命令,如下所示。在这里,我们将此文件系统的配额指定为 1GB。

# zfs 设置配额=1G mypool/fs1

接下来,设置文件系统的预留。在这个例子中,fs1 在 5.59G 中保留了 256M,这样没有人可以使用这个空间,如果有可用空间,它也可以根据我们设置的配额扩展到 1G。

# zfs set reservation=256M mypool/fs1

# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
mypool       256M  5.59G  32.5K  /mypool
mypool/fs1    30K  1024M    30K  /mypool/fs1

创建 ZFS 备用挂载点

除了使用“mypool/fs1”名称来安装它,您还可以使用您希望文件系统的任何名称设置替代安装点。

例如,以下命令会将挂载点设置为“/testmnt”,而不是“mypool/fs1”。

# zfs set mountpoint=/testmnt mypool/fs1

正如我们从以下输出中看到的,第一列 NAME 表示 ZFS 文件系统的真实名称。最后一列 MOUNTPOINT 表示我们在上面创建的替代挂载点。

# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
mypool       256M  5.59G  32.5K  /mypool
mypool/fs1    30K  1024M    30K  /testmnt

当您执行 df 命令时,您将看到如下所示的替代挂载点。

# df -h
Filesystem                  Size  Used Avail Use% Mounted on
..
mypool                      5.6G  128K  5.6G   1% /mypool
mypool/fs1                  1.0G  128K  1.0G   1% /testmnt

在 ZFS 文件系统上启用压缩

要在 ZFS 数据集上设置压缩,您可以设置压缩属性,如下所示。设置此属性后,将压缩存储在此 ZFS 文件系统上的所有大文件。

# zfs set compression=lzjb mypool/fs1

以下是有效的压缩属性:

  • on
  • off
  • lzjb
  • gzip
  • gzip[1-9]
  • zle

您也可以在现有文件系统上启用压缩。在这种情况下,压缩将仅应用于新的和修改的数据;并且任何现有数据都将保持未压缩状态。

验证 ZFS 压缩

在以下示例中,我们已将 61M 的 tar 文件复制到安装在 /testmnt 下的 ZFS 文件系统 mypool/fs1。

# ls -lh /testmnt/test.tar
-rw-r--r--. 1 root root 61M Nov 11 09:44 /testmnt/test.tar

如果您从 zfs list 命令查看 USED 空间的总大小,您将看到仅消耗了 20.9M 空间,这表明压缩已打开并正在工作。

# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
mypool       256M  5.59G  32.5K  /mypool
mypool/fs1  20.9M  1003M  20.9M  /testmnt

您还可以使用以下命令获取压缩比。

# zfs get compressratio mypool/fs1
NAME        PROPERTY       VALUE  SOURCE
mypool/fs1  compressratio  2.90x  -

除了压缩之外,ZFS 文件系统还有几个高级特性。在 ZFS 系列的下一篇文章中,我们将讨论如何获取 ZFS 克隆和快照。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。