zfsで圧縮機能を試してみる
とりあえずこんな感じで3つほどファイルシステム作成して試してみた。
# zpool create -m /zdevel zpool0 da0s1 da0s2 da1s1 da1s2 # zfs create zpool0/hamaco # zfs create zpool0/jack # zfs create zpool0/rucifer
圧縮を有効にする
zfs setコマンドを使って圧縮機能を有効にする。
# zfs set compress=on zpool0/jack # zfs set compress=gzip zpool0/rucifer
compressには
5.5Mのファイルをコピーしてみる。
# cd /zdevel shana# time cp /usr/local/www/public/sample.bmp hamaco/ 0.006u 0.012s 0:00.01 100.0% 48+1892k 0+0io 0pf+0w shana# time cp /usr/local/www/public/sample.bmp jack/ 0.000u 0.016s 0:00.02 50.0% 32+1696k 0+0io 0pf+0w shana# time cp /usr/local/www/public/sample.bmp rucifer/ 0.005u 0.011s 0:00.01 100.0% 48+1892k 0+0io 0pf+0w
この程度だと圧縮してても速度は殆ど大差がない。
ディスク使用量を見てみる。
# zfs list NAME USED AVAIL REFER MOUNTPOINT zpool0 9.82M 1.93G 22K /zdevel zpool0/hamaco 5.52M 1.93G 5.52M /zdevel/hamaco zpool0/jack 2.51M 1.93G 2.51M /zdevel/jack zpool0/rucifer 1.65M 1.93G 1.65M /zdevel/rucifer shana# zfs get compressratio NAME PROPERTY VALUE SOURCE zpool0 compressratio 1.71x - zpool0/hamaco compressratio 1.00x - zpool0/jack compressratio 2.21x - zpool0/rucifer compressratio 3.37x -
ちゃんと圧縮されて保存されているみたい。compressratioで圧縮率が分かる。
速度比較
/dev/urandomを使って128MBのファイルを作成する。
shana# dd if=/dev/urandom of=hamaco/random.dat count=131072 bs=1024 131072+0 records in 131072+0 records out 134217728 bytes transferred in 10.760321 secs (12473394 bytes/sec) shana# dd if=/dev/urandom of=jack/random.dat count=131072 bs=1024 131072+0 records in 131072+0 records out 134217728 bytes transferred in 12.353089 secs (10865115 bytes/sec) shana# dd if=/dev/urandom of=rucifer/random.dat count=131072 bs=1024 131072+0 records in 131072+0 records out 134217728 bytes transferred in 23.177062 secs (5790972 bytes/sec)
圧縮率がよくなるにつれて、速度が低下しているのが分かる。
/dev/zeroで128MBのファイルを作ると、逆に圧縮しているほうが速くなる。
shana# dd if=/dev/zero of=hamaco/zero.dat count=131072 bs=1024 131072+0 records in 131072+0 records out 134217728 bytes transferred in 8.296105 secs (16178403 bytes/sec) shana# dd if=/dev/zero of=jack/zero.dat count=131072 bs=1024 131072+0 records in 131072+0 records out 134217728 bytes transferred in 4.481962 secs (29946200 bytes/sec) shana# dd if=/dev/zero of=rucifer/zero.dat count=131072 bs=1024 131072+0 records in 131072+0 records out 134217728 bytes transferred in 4.336304 secs (30952103 bytes/sec)
sharenfsも
#zfs set sharenfs=on {pool_name}
だけだと、動かないし……
時間のある時にでもOpenSolaris入れて試してみるか~