水曜日 11 04, 2009
水曜日 11 04, 2009
直前に書いたzfs dedup ですが、 早速社内の人が試した結果がきました。 とっても単純な試験ですが、とてもわかりやすい検証結果となっています。 ビルド#128はまだありませんので、開発途中のビルドからbfuをしたそうです。 最初dfとかzfs listみてもdedupの効果がわからずとまどったようですが、zpool listでちゃんとわかるということです。
$ zfs list NAME USED AVAIL REFER MOUNTPOINT lacieusb 166K 293G 21K /lacieusb ... $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 310K 298G 0% 1.00x ONLINE - ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- ...
$ zfs create lacieusb/test1 $ zfs create lacieusb/test2 $ zfs create lacieusb/test3
$ cd /lacieusb/test1 $ dd if=/dev/urandom of=testfile bs=1024 count=1000000 $ sum testfile 36236 2000000 testfile $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 981M 297G 0% 1.00x ONLINE - ... $ zfs list NAME USED AVAIL REFER MOUNTPOINT lacieusb 980M 292G 25K /lacieusb lacieusb/test1 977M 292G 977M /lacieusb/test1 lacieusb/test2 21K 292G 21K /lacieusb/test2 lacieusb/test3 21K 292G 21K /lacieusb/test3 ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 1 7.63K 977M 977M 977M 7.63K 977M 977M 977M Total 7.63K 977M 977M 977M 7.63K 977M 977M 977M dedup = 1.00, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.00 ...
zfs listでは普通に領域を消費しているように見えますが、 zpool listではほぼ1GBの消費にとどまっているのが確認できます。$ sum /usr/tmp/testfile 36236 2000000 /usr/tmp/testfile $ cp -fpr testfile /lacieusb/test2/ $ sum /lacieusb/test2/testfile 36236 2000000 /lacieusb/test2/testfile $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 983M 297G 0% 2.00x ONLINE - rpool 228G 168G 59.9G 73% 1.00x ONLINE - ... $ zfs list NAME USED AVAIL REFER MOUNTPOINT lacieusb 1.91G 291G 25K /lacieusb lacieusb/test1 977M 291G 977M /lacieusb/test1 lacieusb/test2 977M 291G 977M /lacieusb/test2 lacieusb/test3 21K 291G 21K /lacieusb/test3 ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 2 7.63K 977M 977M 977M 15.3K 1.91G 1.91G 1.91G Total 7.63K 977M 977M 977M 15.3K 1.91G 1.91G 1.91G dedup = 2.00, compress = 1.00, copies = 1.00, dedup * compress / copies = 2.00 ...
$ cp /lacieusb/test2/testfile /lacieusb/test3 $ ls -la 合計 2001617 drwxr-xr-x 2 root root 3 11月 4日 16:50 ./ drwxr-xr-x 5 root root 5 11月 4日 16:21 ../ -rw-r--r-- 1 root root 1024000000 11月 4日 16:50 testfile $ zfs list NAME USED AVAIL REFER MOUNTPOINT lacieusb 2.87G 290G 25K /lacieusb lacieusb/test1 977M 290G 977M /lacieusb/test1 lacieusb/test2 977M 290G 977M /lacieusb/test2 lacieusb/test3 977M 290G 977M /lacieusb/test3 ... $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 983M 297G 0% 3.00x ONLINE - rpool 228G 168G 59.9G 73% 1.00x ONLINE - ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 2 7.63K 977M 977M 977M 22.9K 2.86G 2.86G 2.86G Total 7.63K 977M 977M 977M 22.9K 2.86G 2.86G 2.86G dedup = 3.00, compress = 1.00, copies = 1.00, dedup * compress / copies = 3.00
1MBしか増えていませんので、ファイル単位ではなくblock単位であることが確認できます。$ ls -al -rw-r--r-- 1 root root 1024000000 11月 4日 17:02 testfile $ sum testfile 36791 2000000 testfile $ zpool list NAME SIZE USED AVAIL CAP DEDUP HEALTH ALTROOT lacieusb 298G 984M 297G 0% 3.99x ONLINE - rpool 228G 168G 59.9G 73% 1.00x ONLINE - ... $ zdb -S lacieusb Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 1 1 128K 128K 128K 1 128K 128K 128K 2 1 128K 128K 128K 3 384K 384K 384K 4 7.63K 977M 977M 977M 30.5K 3.81G 3.81G 3.81G Total 7.63K 977M 977M 977M 30.5K 3.81G 3.81G 3.81G ... dedup = 4.00, compress = 1.00, copies = 1.00, dedup * compress / copies = 4.00