Debian Wheezy zfs-fuseファイルシステムにインストールし、1つのデータセット(「ストレージ/バックアップ」)で圧縮gzip-9を有効にしました。このデータセットで圧縮が有効になっていることを確認すると、「はい」と表示されます。
$: zfs get compression storage/backup
NAME PROPERTY VALUE SOURCE
storage/backup compression gzip-9 local
du -ah
ところで、圧縮があってもなくても圧縮率を確認してみるとsfx get compressratio
わかります。
よく圧縮されたファイル(テキストファイルなど)を含むすべてのファイルは、圧縮されていないファイルとまったく同じディスクサイズを占めます。
$: zfs get compressratio storage/backup
NAME PROPERTY VALUE SOURCE
stor/backup compressratio 1.00x -
なぜこれが起こるのですか?
zfs get all
データセットに関するいくつかの情報は次のとおりです。
compressratio 1.00x -
mounted yes -
quota none default
reservation none default
recordsize 128K default
mountpoint /storage/backup default
sharenfs off default
checksum on default
compression gzip-9 local
atime on default
devices on default
答え1
zfs-fuse
限られたIOが発生するとデータが30秒ごとに更新されるように見えますがcompressratio
、バックグラウンドIOまたは非常に大きなファイルがデータの更新を高速化する可能性があるため、更新をトリガーするもう1つの要因があります。
少し入れました。機能テストの重要事項。 1.00xで起動されたクリーンな(ファイルなし)ファイルシステムが必要です。
最初のテストでスクリプトが永久に一時停止すると、圧縮カウンタは更新されず、インストールに問題があります。
Debian wheezy マシンでスクリプトを実行します。
$ uname -a
Linux zfs-fuse 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686 GNU/Linux
結果は次のとおりです。
$ test_compression compress
Testing [compress]
Testing size [4096]
Waited 0 seconds for [compressratio_is_one]
4096 bytes made up of 1*4096 blocks
Waited 20 seconds for [compresstario_is_not_one]
1.12x
Testing size [16384]
Waited 30 seconds for [compressratio_is_one]
16384 bytes made up of 1*16384 blocks
Waited 30 seconds for [compresstario_is_not_one]
1.53x
Testing size [1048576]
Waited 30 seconds for [compressratio_is_one]
1048576 bytes made up of 1*131072 blocks
Waited 30 seconds for [compresstario_is_not_one]
31.44x
Testing size [33161216]
Waited 30 seconds for [compressratio_is_one]
33161216 bytes made up of 255*131072 blocks
Waited 0 seconds for [compresstario_is_not_one]
202.31x
カウンタの更新をトリガできる集中的なタスクをバックグラウンドで実行することで、通常これを約半分削減できます。
バックグラウンドで
$ while true; do touch somefile; rm somefile; done
その後、もう一度テストしてください。
$ test_compression compress
Testing [compress]
Testing size [4096]
Waited 0 seconds for [compressratio_is_one]
4096 bytes made up of 1*4096 blocks
Waited 5 seconds for [compresstario_is_not_one]
1.11x
Testing size [16384]
Waited 17 seconds for [compressratio_is_one]
16384 bytes made up of 1*16384 blocks
Waited 17 seconds for [compresstario_is_not_one]
1.50x
Testing size [1048576]
Waited 16 seconds for [compressratio_is_one]
1048576 bytes made up of 1*131072 blocks
Waited 10 seconds for [compresstario_is_not_one]
29.73x
Testing size [33161216]
Waited 0 seconds for [compressratio_is_one]
33161216 bytes made up of 244*131072 blocks
Waited 0 seconds for [compresstario_is_not_one]
201.35x
FreeBSDでは、約5秒ごとに更新されることに注目する価値があります。
$ test_compression giggidy/compress
Testing [giggidy/compress]
Testing size [4096]
Waited 0 seconds for [compressratio_is_one]
4096 bytes made up of 1*4096 blocks
Waited 4 seconds for [compresstario_is_not_one]
1.21x
Testing size [16384]
Waited 5 seconds for [compressratio_is_one]
16384 bytes made up of 1*16384 blocks
Waited 5 seconds for [compresstario_is_not_one]
1.91x
Testing size [1048576]
Waited 5 seconds for [compressratio_is_one]
1048576 bytes made up of 1*131072 blocks
Waited 5 seconds for [compresstario_is_not_one]
39.33x
Testing size [33161216]
Waited 5 seconds for [compressratio_is_one]
33161216 bytes made up of 1*131072 blocks
Waited 4 seconds for [compresstario_is_not_one]
114.25x
ボックスが入手できるようになったら、Solarisベースの例を追加します。