ZFS 不压缩文件并且所有设置看起来都正确

ZFS 不压缩文件并且所有设置看起来都正确

我最近创建了一个 ZFS 卷来测试其压缩功能。我将其与 ext4 卷进行了比较。创建新卷并打开压缩后,sudo zfs set compression=gzip postgres-zfs我将一个 ~3GB 文件从 ext4 卷复制到 ZFS 文件,但该文件在 ZFS 驱动器上的大小完全相同(我以前也ls -alh看到过这种情况)。我手动对文件进行了 gzip 压缩,以查看压缩应该是多少(我知道有不同的级别,但只是为了大致了解),仅使用gzip file文件大小就减少了一半。我的 ZFS 设置也显示压缩已打开:

# zfs get all
NAME          PROPERTY              VALUE                  SOURCE
postgres-zfs  type                  filesystem             -
postgres-zfs  creation              Thu Apr  5 17:17 2018  -
postgres-zfs  used                  1.54G                  -
postgres-zfs  available             143G                   -
postgres-zfs  referenced            1.54G                  -
postgres-zfs  compressratio         1.34x                  -
postgres-zfs  mounted               yes                    -
postgres-zfs  quota                 none                   default
postgres-zfs  reservation           none                   default
postgres-zfs  recordsize            128K                   default
postgres-zfs  mountpoint            /postgres-zfs          default
postgres-zfs  sharenfs              off                    default
postgres-zfs  checksum              on                     default
postgres-zfs  compression           gzip                   local
postgres-zfs  atime                 on                     default
postgres-zfs  devices               on                     default
postgres-zfs  exec                  on                     default
postgres-zfs  setuid                on                     default
postgres-zfs  readonly              off                    default
postgres-zfs  zoned                 off                    default
postgres-zfs  snapdir               hidden                 default
postgres-zfs  aclinherit            restricted             default
postgres-zfs  canmount              on                     default
postgres-zfs  xattr                 on                     default
postgres-zfs  copies                1                      default
postgres-zfs  version               5                      -
postgres-zfs  utf8only              off                    -
postgres-zfs  normalization         none                   -
postgres-zfs  casesensitivity       sensitive              -
postgres-zfs  vscan                 off                    default
postgres-zfs  nbmand                off                    default
postgres-zfs  sharesmb              off                    default
postgres-zfs  refquota              none                   default
postgres-zfs  refreservation        none                   default
postgres-zfs  primarycache          all                    default
postgres-zfs  secondarycache        all                    default
postgres-zfs  usedbysnapshots       0                      -
postgres-zfs  usedbydataset         1.54G                  -
postgres-zfs  usedbychildren        132K                   -
postgres-zfs  usedbyrefreservation  0                      -
postgres-zfs  logbias               latency                default
postgres-zfs  dedup                 off                    default
postgres-zfs  mlslabel              none                   default
postgres-zfs  sync                  standard               default
postgres-zfs  refcompressratio      1.34x                  -
postgres-zfs  written               1.54G                  -
postgres-zfs  logicalused           2.07G                  -
postgres-zfs  logicalreferenced     2.07G                  -
postgres-zfs  filesystem_limit      none                   default
postgres-zfs  snapshot_limit        none                   default
postgres-zfs  filesystem_count      none                   default
postgres-zfs  snapshot_count        none                   default
postgres-zfs  snapdev               hidden                 default
postgres-zfs  acltype               off                    default
postgres-zfs  context               none                   default
postgres-zfs  fscontext             none                   default
postgres-zfs  defcontext            none                   default
postgres-zfs  rootcontext           none                   default
postgres-zfs  relatime              on                     temporary
postgres-zfs  redundant_metadata    all                    default
postgres-zfs  overlay               off                    default

知道为什么这些数据没有被压缩存储吗?

答案1

数据是压缩的,只是操作系统本身无法通过常规命令识别压缩,因为当您访问文件时文件会被透明地解压缩。

在 ZFS 设置列表中,您会看到一个名为的条目compressratio,在您的例子中为 x1.34。这显示了文件的压缩效率(平均而言):
压缩尺寸*压缩率=未压缩大小

您还可以看到用过的逻辑使用,显示完整池的绝对压缩大小和绝对未压缩大小(尽管 logicalused 似乎与测试文件提到的文件大小不匹配)。

您可以找到有关这些值的更多信息这里

我还整理了一个包含所有命令及其输出内容的简短列表:

相关内容