2017年2月16日木曜日

FreeBSD 11のzfsで圧縮を有効にする

以前、zfsの圧縮の設定としてgzip-5がよいようだ書いているWWWページを紹介しました。
ZFSの圧縮機能 
http://www.sakashita-net.jp/2016/10/zfs.html
そこで、このWWWページで紹介されているlz4とgzip-5で圧縮率などを確かめてみました。

まずlz4に設定します。zkona20というプールを使います。
# zfs get compression zkona20
NAME     PROPERTY     VALUE     SOURCE
zkona20  compression  off       local
# zfs set compression=lz4 zkona20
# zfs get compression zkona20
NAME     PROPERTY     VALUE     SOURCE
zkona20  compression  lz4       local
# zfs get compressratio zkona20
NAME     PROPERTY       VALUE  SOURCE
zkona20  compressratio  1.00x  -

#
この時点では圧縮率は1.00倍です。ここに約16GBのファイルを書き込みます。
# du -sh /disk/kona/zkona10/ZKONA20
16G /disk/kona/zkona10/ZKONA20
# time cp -r /disk/kona/zkona10/ZKONA20/00BACKUP .
real 1m18.919s
user 0m0.029s
sys 0m8.482s
# zfs get compressratio zkona20
NAME PROPERTY VALUE SOURCE
zkona20 compressratio 1.67x -
#
圧縮率は1.67倍、4TBのHDDに6TBぐらいのファイルを置くことができそうです。次にgzip-5です。
# zfs set compression=gzip-5 zkona20
# zfs get compression zkona20
NAME     PROPERTY     VALUE     SOURCE
zkona20  compression  gzip-5    local

# zfs get compressratio zkona20
NAME     PROPERTY       VALUE  SOURCE
zkona20  compressratio  1.00x  -
# time cp -r /disk/kona/zkona10/ZKONA20/00BACKUP .
real    1m22.083s
user    0m0.033s
sys     0m4.165s
# zfs get compressratio zkona20
NAME     PROPERTY       VALUE  SOURCE
zkona20  compressratio  1.92x  -
#
こんどの圧縮率は1.92倍でした。別の32GBのファイルを書き込んだ場合の圧縮率は1.82倍だったので、 4TBのHDDに7TBぐらいのファイルを置けそうです。

gzip-5の圧縮を使った場合のCPUへの負荷はロードアベレージで4ほどでした。全部の8スレッドのCPUなので、能力の半分ぐらいというところでしょうか。lz4だと1.1から1.5でgzip-5に比べるとかなり低いです。

ふだんから使うファイルシステムで圧縮機能を使うならlz4、データのバックアップ用のファイルシステムでCPUの負荷に余裕があるならgzip-5というところでしょうか。