Zfs

ZFS 不壓縮文件並且所有設置看起來都正確

  • April 6, 2018

我最近創建了一個 ZFS 卷來測試它的壓縮能力。我將它與 ext4 卷並排比較。在創建新卷並打開壓縮後,sudo zfs set compression=gzip postgres-zfs我將 ~3GB 文件從 ext4 卷複製到 ZFS 文件,但該文件在 ZFS 驅動器上的大小完全相同(我曾經ls -alh看到過)。我手動壓縮了文件以查看壓縮應該是什麼(我知道有不同的級別,但只是為了獲得一個大概)並且僅使用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

知道為什麼這些數據沒有被壓縮儲存嗎?

數據被壓縮,只是作業系統本身無法通過普通命令辨識壓縮,因為文件在訪問時被透明地解壓縮。

在該 ZFS 設置列表中,您會看到一個名為 的條目compressratio,在您的情況下為 x1.34。這顯示了文件的壓縮效率(平均):

壓縮大小* compressratio =未壓縮大小

您還可以看到usedlogicalused,它們顯示了完整池的絕對壓縮大小和絕對未壓縮大小(儘管 logicalused 似乎與提到的測試文件的文件大小不匹配)。

您可以在此處找到有關這些值的更多資訊

我還整理了一個包含所有命令及其輸出內容的簡短列表:

引用自:https://serverfault.com/questions/906285