2011年2月20日日曜日

Solaris11 で ZFS Dedpue が想像以上に効く


このエントリーをはてなブックマークに追加


以前行ったNexentaでのDeDupe検証ではやり方がまずかったのかいまいち効果が見られなかった。これをSolaris11で再度試す。
参考>> Nexenta で ZFS De-Dupeを試す(うまくいかない)

Table of Contents
=================
1 テスト内容 
    1.1 CIFS経由でのDeDepe効果の確認 
    1.2 iscsi経由でzvolへのDeDupe効果の確認 
    1.3 zfs send -D での転送量削減効果の確認 
2 zpool で De-Dupe を有効にする。 
3 共有設定 
    3.1 CIFS領域 
    3.2 iscsi領域 
4 テスト結果 
    4.1 CIFS経由でのDeDepe効果 
    4.2 iscsi経由でzvolへのDeDupe効果 
    4.3 zfs send -D での転送量削減効果 
5 まとめ 
6 その他注意事項 

1 テスト内容 
^^^^^^^^^^^^^


1.1 CIFS経由でのDeDepe効果の確認 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   WindowsからBMPファイルを複数回書きこみ、DeDupe効果を確認する。Windows上で確認したファイルサイズ 528 MB (554,420,358 バイト)

1.2 iscsi経由でzvolへのDeDupe効果の確認 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Windowsからiscsiで領域をマウントし、上記と同じデータを書き込み、DeDupe効果を確認する。

1.3 zfs send -D での転送量削減効果の確認 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   CIFS領域に書きこんだデータをzfs send -D でファイルへダンプし、そのサイズを比較する。使うデータは上記と同じ。



2 zpool で De-Dupe を有効にする。 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  dedpueの効果はzpool単位で表示されるのでテスト用のプールを作成しておく。
  root@solaris11:~# zpool create dedupepl01 c7t2d0
  root@solaris11:~# zpool create dedupepl02 c7t3d0
  root@solaris11:~# zpool create dedupepl03 c7t4d0
  root@solaris11:~# zpool create dedupepl04 c7t5d0


  root@solaris11:~# zpool list
NAME         SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
  dedupepl01  9.94G   116K  9.94G     0%  1.00x  ONLINE  -
  dedupepl02  9.94G    77K  9.94G     0%  1.00x  ONLINE  -
  dedupepl03  9.94G  83.5K  9.94G     0%  1.00x  ONLINE  -
  dedupepl04  9.94G  83.5K  9.94G     0%  1.00x  ONLINE  -
dedupeをONにしてzfsを作成 root@solaris11:~# zfs create -o dedup=on dedupepl01/cifs01 root@solaris11:~# zfs create -o dedup=off dedupepl02/cifs02 root@solaris11:~# zfs create -V 9G -o dedup=on dedupepl03/iscsi01 root@solaris11:~# zfs create -V 9G -o dedup=off dedupepl04/iscsi02 root@solaris11:~# zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
  dedupepl01           124K  9.78G    32K  /dedupepl01
  dedupepl01/cifs01     31K  9.78G    31K  /dedupepl01/cifs01
  dedupepl02           124K  9.78G    32K  /dedupepl02
  dedupepl02/cifs02     31K  9.78G    31K  /dedupepl02/cifs02
  dedupepl03          9.28G   510M    31K  /dedupepl03
  dedupepl03/iscsi01  9.28G  9.78G    16K  -
  dedupepl04          9.28G   510M    31K  /dedupepl04
  dedupepl04/iscsi02  9.28G  9.78G    16K  -
root@solaris11:~# zfs get dedup
NAME                        PROPERTY  VALUE          SOURCE
  dedupepl01                  dedup     off            default
  dedupepl01/cifs01           dedup     on             local
  dedupepl02                  dedup     off            default
  dedupepl02/cifs02           dedup     off            local
  dedupepl03                  dedup     off            default
  dedupepl03/iscsi01          dedup     on             local
  dedupepl04                  dedup     off            default
  dedupepl04/iscsi02          dedup     off            local
3 共有設定 ^^^^^^^^^^^ 3.1 CIFS領域 ~~~~~~~~~~~~~ ファイル共有をするには以下の手順で準備をしてから、sharesmbをONすればOK 参考>> Nexenta で CIFSワークグループ共有を行う root@solaris11:~# zfs set sharesmb=on dedupepl01/test01 root@solaris11:~# zfs set sharesmb=on dedupepl02/test02 3.2 iscsi領域 ~~~~~~~~~~~~~~ こちらのエントリーを参照 参考>> Solaris11 + COMSTAR で iSCSIホストの構築 root@solaris11:~# stmfadm create-lu /dev/zvol/rdsk/dedupepl03/iscsi01
Logical unit created: 600144F061018A0000004D6076B10001
root@solaris11:~# stmfadm create-lu /dev/zvol/rdsk/dedupepl04/iscsi02
Logical unit created: 600144F061018A0000004D6076B60002
root@solaris11:~# stmfadm list-lu
LU Name: 600144F061018A0000004D6076B10001
   LU Name: 600144F061018A0000004D6076B60002
root@solaris11:~# stmfadm add-view 600144F061018A0000004D6076B10001 root@solaris11:~# stmfadm add-view 600144F061018A0000004D6076B60002 root@solaris11:~# itadm create-target
Target iqn.1986-03.com.sun:02:e944f591-3fcd-cdc7-d442-daeedbda09d7 successfully created
4 テスト結果 ^^^^^^^^^^^^^ 4.1 CIFS経由でのDeDepe効果 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ # zpool list
dedupepl01(dedup=on)dedupepl02(dedup=off)
COUNTALLOCFREECAPDEDUPALLOCFREECAPDEDUP
0116K9.94G0%1.00x77K9.94G0%1.00x
1245M9.70G2%2.18x532M9.42G5%1.00x
2246M9.70G2%4.37x1.04G8.90G10%1.00x
3247M9.70G2%6.55x1.56G8.38G15%1.00x
4249M9.69G2%8.74x2.08G7.86G20%1.00x
5249M9.69G2%10.92x2.60G7.34G26%1.00x
6252M9.69G2%13.11x3.12G6.82G31%1.00x
7252M9.69G2%15.30x3.63G6.30G36%1.00x
8253M9.69G2%17.48x4.15G5.78G41%1.00x
9254M9.69G2%19.67x4.67G5.26G47%1.00x
10256M9.69G2%21.85x5.19G4.75G52%1.00x
11258M9.69G2%24.04x5.71G4.23G57%1.00x
12260M9.68G2%26.23x6.23G3.71G62%1.00x
# zfs list
dedupepl01/cifs01dedupepl02/cifs02
COUNTUSEDAVAILREFERUSEDAVAILREFER
031K9.78G31K31K9.78G31K
1532M9.54G532M532M9.26G532M
21.04G9.53G1.04G1.04G8.74G1.04G
31.56G9.52G1.56G1.56G8.22G1.56G
42.08G9.51G2.08G2.08G7.71G2.08G
52.60G9.50G2.60G2.60G7.19G2.60G
63.11G9.49G3.11G3.11G6.67G3.11G
73.63G9.48G3.63G3.63G6.15G3.63G
84.15G9.47G4.15G4.15G5.63G4.15G
94.67G9.46G4.67G4.67G5.11G4.67G
105.19G9.46G5.19G5.19G4.59G5.19G
115.71G9.45G5.71G5.71G4.07G5.71G
126.23G9.44G6.23G6.23G3.55G6.23G
4.2 iscsi経由でzvolへのDeDupe効果 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # zpool list
dedupepl03(dedup=on)dedupepl04(dedup=off)
COUNTALLOCFREECAPDEDUPALLOCFREECAPDEDUP
183.5K9.94G0%1.00x83.5K9.94G0%1.00x
2228M9.72G2%2.81x606M9.35G5%1.00x
3247M9.70G2%5.06x1.12G8.82G11%1.00x
4254M9.69G2%7.36x1.64G8.30G16%1.00x
5263M9.68G2%9.61x2.16G7.77G21%1.00x
6272M9.67G2%11.83x2.63G7.31G26%1.00x
7291M9.65G2%13.99x3.14G6.80G31%1.00x
8289M9.66G2%16.15x3.73G6.21G37%1.00x
9298M9.65G2%18.24x4.22G5.72G42%1.00x
10305M9.64G3%20.32x4.76G5.18G47%1.00x
11314M9.63G3%22.33x5.29G4.64G53%1.00x
12322M9.62G3%24.29x5.83G4.11G58%1.00x
# zfs list
dedupepl03/iscsi01dedupepl04/iscsi02
COUNTUSEDAVAILREFERUSEDAVAILREFER
19.28G9.78G16K9.28G9.78G16K
29.28G9.55G606M9.28G9.19G606M
39.28G9.53G1.12G9.28G8.67G1.12G
49.28G9.51G1.64G9.28G8.14G1.64G
59.28G9.50G2.16G9.28G7.62G2.16G
69.28G9.48G2.69G9.28G7.15G2.63G
79.28G9.46G3.21G9.28G6.62G3.16G
89.28G9.45G3.73G9.28G6.06G3.72G
99.28G9.43G4.26G9.28G5.56G4.22G
109.28G9.41G4.78G9.28G5.02G4.76G
119.28G9.40G5.30G9.28G4.49G5.29G
129.28G9.38G5.83G9.28G3.96G5.83G
4.3 zfs send -D での転送量削減効果 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dedup=ondedup=off
zfs sendzfs send -Dzfs sendzfs send -D
gzip offgzip ongzip offgzip ongzip offgzip ongzip offgzip on
初回 532M305M244M141M532M305M244M141M
差分1回目532M305M244M141M532M305M244M141M
差分2回目532M305M244M141M532M305M244M141M
5 まとめ ^^^^^^^^^ 非常に良好な結果が得られた。 今回は試さなかったが、これに compression=on を設定すれば更に領域削減効果は大きくなりそう。 注意点としては、send -D の効き方くらい。あまり転送量が減らない。一回当たりの転送量はDオプション、圧縮で減らせるが、転送する元データは減っていない。 小規模で使うならDataDomainの置き換えが可能な気がする。正式リリースが待ち遠しい。 6 その他注意事項 ^^^^^^^^^^^^^^^^^ 1. すでにデータが入っているZFSでdedup=onにしても重複排除は行われない。この場合はいったんデータをmvして戻す、元ファイルの名前を変えて、コピーするなどの手順が必要になる。 2. 上とは逆にすでにdedup=on されているzfsで、dedup=offにしても元に戻らない。 3. 現時点でdedupeの効果はzpool単位でしか確認できない。

0 件のコメント:

コメントを投稿