Zfs
ZFS 不壓縮文件並且所有設置看起來都正確
我最近創建了一個 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 =未壓縮大小
您還可以看到used和logicalused,它們顯示了完整池的絕對壓縮大小和絕對未壓縮大小(儘管 logicalused 似乎與提到的測試文件的文件大小不匹配)。
您可以在此處找到有關這些值的更多資訊
我還整理了一個包含所有命令及其輸出內容的簡短列表:
ls
:顯示文件的未壓縮大小,但顯示文件夾的壓縮大小zfs get used <pool>
:顯示池中所有文件的壓縮空間zfs get logicalused <pool>
:顯示池中所有文件將使用的未壓縮空間zfs get compressratio <pool>
:顯示池的平均壓縮率du -h --apparent-size
:顯示給定文件/文件夾的未壓縮大小du -h
:顯示給定文件/文件夾的壓縮大小