ZFS の Compression ON/OFF のときの表示
ZFS のオプションに compression があり、これにより ZFS の層で自動的に圧縮してくれるという素敵機能なのですが、いつもサイズ表示が圧縮後なのかそうでないのかわからなくなるので、確認することにしました。初心者丸出しですが…。
まず、テスト用の ZFS を作ります。片方は圧縮 ON、片方は圧縮 OFF です。
# zfs create rpool/export/test/compress-on # zfs set compression=on rpool/export/test/compress-on # zfs create rpool/export/test/compress-off # zfs set compression=off rpool/export/test/compress-off
念のため確認すると以下のようになります。
# zfs list -o name,used,compression -r rpool/export/test NAME USED COMPRESS rpool/export/test 95K off rpool/export/test/compress-off 31K off rpool/export/test/compress-on 31K on
今度は、手元の Windows で 100MB ほどのダミーファイルを作ります。
fsutil file createnew dummy.dat 104857600
ちなみに、このファイルを ZIP で圧縮すると 101KB ほどになりました。圧縮のよく効くファイルです。
このファイルをそれぞれのディレクトリに置いて確認します。ちなみにもちろんですが dedup は OFF です。
zfs get
当然ですが、表示されるサイズは圧縮後です。めちゃめちゃ効いてますね、圧縮。
# zfs get -p name,used rpool/export/test/compress-off NAME PROPERTY VALUE SOURCE rpool/export/test/compress-off name rpool/export/test/compress-off - rpool/export/test/compress-off used 104905728 # zfs get -p name,used rpool/export/test/compress-on NAME PROPERTY VALUE SOURCE rpool/export/test/compress-on name rpool/export/test/compress-on - rpool/export/test/compress-on used 31744
du
du コマンドも圧縮後のサイズです。
# du -sh /export/test/* 100M /export/test/compress-off 2K /export/test/compress-on
ls
ls コマンドではファイルサイズが表示されました。
# ls -lR .: total 6 drwxr-xr-x 2 user root 3 4月 28日 16:13 compress-off drwxr-xr-x 2 user root 3 4月 28日 16:13 compress-on ./compress-off: total 204833 -rw-r--r-- 1 user staff 104857600 4月 28日 16:11 dummy.dat ./compress-on: total 1 -rw-r--r-- 1 user staff 104857600 4月 28日 16:11 dummy.dat
-s オプションでブロックサイズを表示すると、圧縮 ON の使用ブロックは 1 になりました。
# ls -lRs .: total 6 3 drwxr-xr-x 2 user root 3 4月 28日 16:13 compress-off 3 drwxr-xr-x 2 user root 3 4月 28日 16:13 compress-on ./compress-off: total 204833 204833 -rw-r--r-- 1 user staff 104857600 4月 28日 16:11 dummy.dat ./compress-on: total 1 1 -rw-r--r-- 1 user staff 104857600 4月 28日 16:11 dummy.dat
結論
- zfs コマンドや du コマンドでは圧縮後のサイズが表示される。
- ls ではファイルサイズそのものが表示される
よく考えたら当たり前ですね…(笑)